From 9a03d2ac98d1c7267a1fdf20b686c82008acdfd2 Mon Sep 17 00:00:00 2001 From: Zur3l <90565581+Zur3l@users.noreply.github.com> Date: Sat, 11 Jul 2026 16:00:28 -0400 Subject: [PATCH] Decomp IsSameMove --- asm/include/main_02015090.inc | 470 - asm/include/main_020151C8.inc | 473 + asm/main_02015090.s | 20495 -------------------------------- asm/main_020151C8.s | 20461 +++++++++++++++++++++++++++++++ include/main_0201514C.h | 10 + main.lsf | 2 + src/main_0201514C.c | 19 + 7 files changed, 20965 insertions(+), 20965 deletions(-) create mode 100644 asm/include/main_020151C8.inc create mode 100644 asm/main_020151C8.s create mode 100644 include/main_0201514C.h create mode 100644 src/main_0201514C.c diff --git a/asm/include/main_02015090.inc b/asm/include/main_02015090.inc index cc74c7bf..f8e3962a 100644 --- a/asm/include/main_02015090.inc +++ b/asm/include/main_02015090.inc @@ -1,473 +1,3 @@ #pragma once -.public AUDIO_COMMANDS_BUFFER -.public AddObjToUngroupedOamObjs -.public BagHasExclusiveItemTypeForMonster -.public ClearGroupedOamObjsAndGroups -.public CopyAndInterleave -.public CopyAndInterleave0 -.public CopyAttributesToOam -.public CopyColorToPaletteDataRgba -.public CopyStringFromId -.public DC_FlushRange -.public DUNGEON_MOVE_TABLES -.public Debug_FatalError -.public Debug_GetDebugFlag -.public Debug_Print -.public Debug_Print0 -.public DirectoryFileMngr_GetDirectoryFileSize -.public DirectoryFileMngr_LoadDirectoryFile -.public DirectoryFileMngr_OpenDirectoryFile -.public DseBgm_IsPlaying -.public DseBgm_Load -.public DseBgm_SetFades -.public DseBgm_SetSignalCallback -.public DseBgm_Stop -.public DseBgm_Unload -.public DseDriver_ConfigureHeap -.public DseDriver_Init -.public DseDriver_LoadDefaultSettings -.public DseSe_GetUsedBankIDs -.public DseSe_HasPlayingInstances -.public DseSe_Load -.public DseSe_Play -.public DseSe_Stop -.public DseSe_StopAll -.public DseSe_Unload -.public DseSequence_GetParameter -.public DseSwd_IsBankLoading -.public DseSwd_LoadBank -.public DseSwd_LoadMainBank -.public DseSwd_LoadWaves -.public DseSwd_Unload -.public DungeonGoesUp -.public DungeonSwapIdxToId -.public ENTITIES -.public EnqueueRender3dTexture -.public FileClose -.public FileGetSize -.public FileRom_HandleOpen -.public FileRom_HandleRead -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public FileRom_Veneer_FileInit -.public FillPaletteDataRgba -.public G3i_LookAt_ -.public G3i_OrthoW_ -.public GXS_BeginLoadBGExtPltt -.public GXS_BeginLoadOBJExtPltt -.public GXS_EndLoadBGExtPltt -.public GXS_EndLoadOBJExtPltt -.public GX_BeginLoadBGExtPltt -.public GX_BeginLoadOBJExtPltt -.public GX_BeginLoadTex -.public GX_BeginLoadTexPltt -.public GX_EndLoadBGExtPltt -.public GX_EndLoadOBJExtPltt -.public GX_EndLoadTex -.public GX_EndLoadTexPltt -.public GX_LoadTex -.public GX_LoadTexPltt -.public GetAbility -.public GetAbilityString -.public GetActiveRosterIndex -.public GetActiveTeamMember -.public GetActorMatchingStorageId -.public GetCurrentBagCapacity -.public GetDsFirmwareUserSettingsVeneer -.public GetExecuteSpecialEpisodeType -.public GetGameMode -.public GetIqSkillStringId -.public GetItemMoveId16 -.public GetItemNameFormatted -.public GetMainTeamName -.public GetMonsterGender -.public GetMonsterGenderVeneer -.public GetMoveActualAccuracy -.public GetMoveBasePowerFromId -.public GetMoveName -.public GetNameString -.public GetNbFloors -.public GetNbFloorsPlusOne -.public GetResolvedPerformanceProgressFlag -.public GetStringFromFileVeneer -.public GetTeamMember -.public GetTypeStringId -.public GroupOamObjs -.public InitOamInfo -.public IqSkillFlagTest -.public LANGUAGE_INFO_DATA -.public LoadFileFromRom -.public LoadScriptVariableValue -.public LoadScriptVariableValueAtIndex -.public LoadScriptVariableValueString -.public LoadStringFile -.public MOVE_ACCURACY_STARS_TABLE -.public MOVE_POWER_STARS_TABLE -.public MTi_CpuClear32 -.public MTi_CpuCopy32 -.public MarkPaletteDataAsNeedingUpdate -.public MaybeGetFormattedItemName -.public MemAlloc -.public MemArenaAlloc -.public MemFree -.public MemLocateSet -.public MemLocateUnset -.public MemZero -.public MemZero32 -.public Memcpy32 -.public MultiplyByFixedPoint -.public NewRender3dQuadrilateral -.public NewRender3dRectangle -.public NewRender3dTexture -.public NewRender3dTiling -.public OBJ_GRAPHICS_CONTROLS_PTR -.public PointsToZero -.public RENDER_3D -.public RENDER_3D_FUNCTIONS_64 .public Rand16Bit -.public Render3dProcessQueue -.public ResumeBgm -.public Rgb8ToRgb5 -.public SND_Init -.public SetShouldCopyToOam -.public Snd_LockChannel -.public Snd_UnlockChannel -.public StringFromId -.public StrncpySimpleNoPadSafe -.public TEAM_MEMBER_TABLE_PTR -.public UnloadFile -.public WAN_TABLE -.public ZInit8 -.public _02098EA8 -.public _02098EE0 -.public _02098F60 -.public _02098F78 -.public _02098F90 -.public _02098FA8 -.public _02098FBC -.public _02098FC0 -.public _02098FC8 -.public _0209901C -.public _02099020 -.public _02099024 -.public _02099028 -.public _0209902C -.public _02099080 -.public _02099110 -.public _02099124 -.public _02099138 -.public _02099140 -.public _0209915C -.public _0209916C -.public _0209918C -.public _020991C8 -.public _020991F0 -.public _02099210 -.public _02099224 -.public _02099240 -.public _0209939C -.public _020993B4 -.public _020993D0 -.public _020993E8 -.public _02099404 -.public _02099404_EU -.public _02099418 -.public _02099434 -.public _02099448 -.public _02099464 -.public _02099470 -.public _0209947C -.public _0209948C -.public _0209949C -.public _020994B0 -.public _020994C0 -.public _020994D8 -.public _02099500 -.public _02099514 -.public _02099528 -.public _0209953C -.public _02099554 -.public _0209956C -.public _02099584 -.public _0209958C -.public _02099594 -.public _020995BC -.public _020995D0 -.public _020995E8 -.public _020995F8 -.public _0209960C -.public _02099620 -.public _02099634 -.public _02099644 -.public _02099650 -.public _02099660 -.public _02099684 -.public _020996A4 -.public _020996C0 -.public _020996D8 -.public _020996E0 -.public _02099714 -.public _0209971C -.public _02099720 -.public _020997A4 -.public _020997B4 -.public _020997E4 -.public _0209990C -.public _0209995C -.public _020999AC -.public _020999B0 -.public _020999C8 -.public _020999CC -.public _020999D0 -.public _020999D4 -.public _020999D8 -.public _020999E4 -.public _020999F0 -.public _020999F4 -.public _020999F8 -.public _020999FC -.public _02099A00 -.public _02099A04 -.public _02099A08 -.public _02099A10 -.public _02099A14 -.public _02099A18 -.public _02099A1C -.public _02099A24 -.public _02099A28 -.public _02099A2C -.public _02099A30 -.public _02099A34 -.public _02099A38 -.public _02099A40 -.public _02099A44 -.public _02099A5C -.public _02099A64 -.public _02099A70 -.public _02099A74 -.public _02099A7C -.public _02099A84 -.public _02099A8C -.public _02099A98 -.public _02099AA0 -.public _02099AA4 -.public _02099AAC -.public _02099AB8 -.public _02099AC0 -.public _02099AC8 -.public _02099AD0 -.public _02099AD4 -.public _02099AE0 -.public _02099AF0 -.public _02099AF8 -.public _02099B04 -.public _02099B10 -.public _02099B18 -.public _02099B24 -.public _02099B2C -.public _02099B34 -.public _02099B40 -.public _02099B48 -.public _02099B50 -.public _02099B58 -.public _02099B60 -.public _02099B6C -.public _02099B74 -.public _02099B7C -.public _02099B8C -.public _02099B9C -.public _02099BA8 -.public _02099BB0 -.public _02099BBC -.public _02099BC4 -.public _02099BCC -.public _02099BD4 -.public _02099BDC -.public _02099BE4 -.public _02099BEC -.public _02099BF0_EU -.public _02099BF4 -.public _02099BFC -.public _02099C04_EU -.public _02099C0C -.public _02099C14 -.public _02099C1C -.public _02099C24 -.public _02099C2C -.public _02099C34 -.public _02099C44 -.public _02099C4C -.public _02099C54 -.public _02099C5C -.public _02099C68 -.public _02099C70 -.public _02099C78 -.public _02099C84 -.public _02099CA0 -.public _02099CA4 -.public _02099CAC -.public _02099CB8 -.public _02099CC4 -.public _02099D0C -.public _02099D10 -.public _02099D1C -.public _02099D2C -.public _02099D3C -.public _02099D50 -.public _02099D54 -.public _02099D64 -.public _02099D74 -.public _02099D84 -.public _02099D8C -.public _02099D90 -.public _02099DA0 -.public _02099DB0 -.public _02099DC0 -.public _02099DD0 -.public _02099DEC -.public _02099E08 -.public _02099E18 -.public _02099E20 -.public _02099E40 -.public _02099E64_EU -.public _0209A230_EU -.public _0209A2D4_EU -.public _0209A2F4_EU -.public _020AF6E8 -.public _020AF6F0 -.public _020AF6F8 -.public _020AF700 -.public _020AF710 -.public _020AF714 -.public _020AF720 -.public _020AF721 -.public _020AF722 -.public _020AF760 -.public _020AF76C -.public _020AF77C -.public _020AF780 -.public _020AF784 -.public _020AF798 -.public _020AF7AC -.public _020AF7C0 -.public _020AF7E4 -.public _020AF890 -.public _020AF96C -.public _020AFA48 -.public _020AFB24 -.public _020AFB28 -.public _020AFB4C -.public _020AFB6C -.public _020AFC28 -.public _020AFC30 -.public _020AFC3C -.public _020AFC50 -.public _020AFC64 -.public _020AFC6C -.public _020AFC70 -.public _020AFCE4 -.public _020B05AC_EU -.public _020B05B0_EU -.public _020B05BC_EU -.public _020B05C0_EU -.public _020B05D4_EU -.public _020B05D8_EU -.public _022A4BE8 -.public _022A4BEC -.public _022A4C00 -.public _022A4C28 -.public _022A4E50 -.public _022A4E58 -.public _022A4E7C -.public _022A4E84 -.public _022A4E8C -.public _022A4EA4 -.public _022A4EAC -.public _022A4EB4 -.public _022A4EC4 -.public _022A4ECC -.public _022A4EF4 -.public _022A4EFC -.public _022A4F38 -.public _022A5038 -.public _022A5048 -.public _022A504C -.public _022A5068 -.public _022A5268 -.public _022A5468 -.public _022A5969 -.public _022A596A -.public _022A5970 .public _s32_div_f -.public _u32_div_f -.public ov10_022BDADC -.public ov10_022C2528 -.public sprintf -.public strcat -.public strcmp -.public strcpy -.public strlen -.public strncmp -.public strstr -.public sub_01FF8F04 -.public sub_02002778 -.public sub_020027E8 -.public sub_02002A9C -.public sub_02002C40 -.public sub_02002CAC -.public sub_02002CB4 -.public sub_02002D14 -.public sub_02002E98 -.public sub_02002ECC -.public sub_02002F34 -.public sub_02002F7C -.public sub_02002F98 -.public sub_02002FB4 -.public sub_0200302C -.public sub_020030FC -.public sub_02003AB0 -.public sub_02006220 -.public sub_020063A0 -.public sub_020063D4 -.public sub_0200A124 -.public sub_0200A174 -.public sub_0200A180 -.public sub_0200A184 -.public sub_0200A29C -.public sub_0200A2B4 -.public sub_0200A478 -.public sub_0200A510 -.public sub_0200A5F8 -.public sub_0200A618 -.public sub_0200B330 -.public sub_0200B3C0 -.public sub_0200B3D4 -.public sub_0200B3FC -.public sub_0200B768 -.public sub_02025480 -.public sub_020257FC -.public sub_0204E530 -.public sub_0204F6F8 -.public sub_0204F77C -.public sub_02053D1C -.public sub_020564B0 -.public sub_02058C30 -.public sub_0206549C -.public sub_02065B14 -.public sub_02065BF0 -.public sub_02065CD8 -.public sub_0206A90C -.public sub_0206AA5C -.public sub_0206AB98 -.public sub_0206ABB0 -.public sub_0206AD4C -.public sub_0206ADA0 -.public sub_0206ADB8 -.public sub_0206BA5C -.public sub_0206C36C -.public sub_0206C39C -.public sub_0206C620 -.public sub_0206C6BC -.public sub_0206C754 -.public sub_0206F5C8 -.public vsprintf diff --git a/asm/include/main_020151C8.inc b/asm/include/main_020151C8.inc new file mode 100644 index 00000000..cc74c7bf --- /dev/null +++ b/asm/include/main_020151C8.inc @@ -0,0 +1,473 @@ +#pragma once +.public AUDIO_COMMANDS_BUFFER +.public AddObjToUngroupedOamObjs +.public BagHasExclusiveItemTypeForMonster +.public ClearGroupedOamObjsAndGroups +.public CopyAndInterleave +.public CopyAndInterleave0 +.public CopyAttributesToOam +.public CopyColorToPaletteDataRgba +.public CopyStringFromId +.public DC_FlushRange +.public DUNGEON_MOVE_TABLES +.public Debug_FatalError +.public Debug_GetDebugFlag +.public Debug_Print +.public Debug_Print0 +.public DirectoryFileMngr_GetDirectoryFileSize +.public DirectoryFileMngr_LoadDirectoryFile +.public DirectoryFileMngr_OpenDirectoryFile +.public DseBgm_IsPlaying +.public DseBgm_Load +.public DseBgm_SetFades +.public DseBgm_SetSignalCallback +.public DseBgm_Stop +.public DseBgm_Unload +.public DseDriver_ConfigureHeap +.public DseDriver_Init +.public DseDriver_LoadDefaultSettings +.public DseSe_GetUsedBankIDs +.public DseSe_HasPlayingInstances +.public DseSe_Load +.public DseSe_Play +.public DseSe_Stop +.public DseSe_StopAll +.public DseSe_Unload +.public DseSequence_GetParameter +.public DseSwd_IsBankLoading +.public DseSwd_LoadBank +.public DseSwd_LoadMainBank +.public DseSwd_LoadWaves +.public DseSwd_Unload +.public DungeonGoesUp +.public DungeonSwapIdxToId +.public ENTITIES +.public EnqueueRender3dTexture +.public FileClose +.public FileGetSize +.public FileRom_HandleOpen +.public FileRom_HandleRead +.public FileRom_InitDataTransfer +.public FileRom_StopDataTransfer +.public FileRom_Veneer_FileInit +.public FillPaletteDataRgba +.public G3i_LookAt_ +.public G3i_OrthoW_ +.public GXS_BeginLoadBGExtPltt +.public GXS_BeginLoadOBJExtPltt +.public GXS_EndLoadBGExtPltt +.public GXS_EndLoadOBJExtPltt +.public GX_BeginLoadBGExtPltt +.public GX_BeginLoadOBJExtPltt +.public GX_BeginLoadTex +.public GX_BeginLoadTexPltt +.public GX_EndLoadBGExtPltt +.public GX_EndLoadOBJExtPltt +.public GX_EndLoadTex +.public GX_EndLoadTexPltt +.public GX_LoadTex +.public GX_LoadTexPltt +.public GetAbility +.public GetAbilityString +.public GetActiveRosterIndex +.public GetActiveTeamMember +.public GetActorMatchingStorageId +.public GetCurrentBagCapacity +.public GetDsFirmwareUserSettingsVeneer +.public GetExecuteSpecialEpisodeType +.public GetGameMode +.public GetIqSkillStringId +.public GetItemMoveId16 +.public GetItemNameFormatted +.public GetMainTeamName +.public GetMonsterGender +.public GetMonsterGenderVeneer +.public GetMoveActualAccuracy +.public GetMoveBasePowerFromId +.public GetMoveName +.public GetNameString +.public GetNbFloors +.public GetNbFloorsPlusOne +.public GetResolvedPerformanceProgressFlag +.public GetStringFromFileVeneer +.public GetTeamMember +.public GetTypeStringId +.public GroupOamObjs +.public InitOamInfo +.public IqSkillFlagTest +.public LANGUAGE_INFO_DATA +.public LoadFileFromRom +.public LoadScriptVariableValue +.public LoadScriptVariableValueAtIndex +.public LoadScriptVariableValueString +.public LoadStringFile +.public MOVE_ACCURACY_STARS_TABLE +.public MOVE_POWER_STARS_TABLE +.public MTi_CpuClear32 +.public MTi_CpuCopy32 +.public MarkPaletteDataAsNeedingUpdate +.public MaybeGetFormattedItemName +.public MemAlloc +.public MemArenaAlloc +.public MemFree +.public MemLocateSet +.public MemLocateUnset +.public MemZero +.public MemZero32 +.public Memcpy32 +.public MultiplyByFixedPoint +.public NewRender3dQuadrilateral +.public NewRender3dRectangle +.public NewRender3dTexture +.public NewRender3dTiling +.public OBJ_GRAPHICS_CONTROLS_PTR +.public PointsToZero +.public RENDER_3D +.public RENDER_3D_FUNCTIONS_64 +.public Rand16Bit +.public Render3dProcessQueue +.public ResumeBgm +.public Rgb8ToRgb5 +.public SND_Init +.public SetShouldCopyToOam +.public Snd_LockChannel +.public Snd_UnlockChannel +.public StringFromId +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public UnloadFile +.public WAN_TABLE +.public ZInit8 +.public _02098EA8 +.public _02098EE0 +.public _02098F60 +.public _02098F78 +.public _02098F90 +.public _02098FA8 +.public _02098FBC +.public _02098FC0 +.public _02098FC8 +.public _0209901C +.public _02099020 +.public _02099024 +.public _02099028 +.public _0209902C +.public _02099080 +.public _02099110 +.public _02099124 +.public _02099138 +.public _02099140 +.public _0209915C +.public _0209916C +.public _0209918C +.public _020991C8 +.public _020991F0 +.public _02099210 +.public _02099224 +.public _02099240 +.public _0209939C +.public _020993B4 +.public _020993D0 +.public _020993E8 +.public _02099404 +.public _02099404_EU +.public _02099418 +.public _02099434 +.public _02099448 +.public _02099464 +.public _02099470 +.public _0209947C +.public _0209948C +.public _0209949C +.public _020994B0 +.public _020994C0 +.public _020994D8 +.public _02099500 +.public _02099514 +.public _02099528 +.public _0209953C +.public _02099554 +.public _0209956C +.public _02099584 +.public _0209958C +.public _02099594 +.public _020995BC +.public _020995D0 +.public _020995E8 +.public _020995F8 +.public _0209960C +.public _02099620 +.public _02099634 +.public _02099644 +.public _02099650 +.public _02099660 +.public _02099684 +.public _020996A4 +.public _020996C0 +.public _020996D8 +.public _020996E0 +.public _02099714 +.public _0209971C +.public _02099720 +.public _020997A4 +.public _020997B4 +.public _020997E4 +.public _0209990C +.public _0209995C +.public _020999AC +.public _020999B0 +.public _020999C8 +.public _020999CC +.public _020999D0 +.public _020999D4 +.public _020999D8 +.public _020999E4 +.public _020999F0 +.public _020999F4 +.public _020999F8 +.public _020999FC +.public _02099A00 +.public _02099A04 +.public _02099A08 +.public _02099A10 +.public _02099A14 +.public _02099A18 +.public _02099A1C +.public _02099A24 +.public _02099A28 +.public _02099A2C +.public _02099A30 +.public _02099A34 +.public _02099A38 +.public _02099A40 +.public _02099A44 +.public _02099A5C +.public _02099A64 +.public _02099A70 +.public _02099A74 +.public _02099A7C +.public _02099A84 +.public _02099A8C +.public _02099A98 +.public _02099AA0 +.public _02099AA4 +.public _02099AAC +.public _02099AB8 +.public _02099AC0 +.public _02099AC8 +.public _02099AD0 +.public _02099AD4 +.public _02099AE0 +.public _02099AF0 +.public _02099AF8 +.public _02099B04 +.public _02099B10 +.public _02099B18 +.public _02099B24 +.public _02099B2C +.public _02099B34 +.public _02099B40 +.public _02099B48 +.public _02099B50 +.public _02099B58 +.public _02099B60 +.public _02099B6C +.public _02099B74 +.public _02099B7C +.public _02099B8C +.public _02099B9C +.public _02099BA8 +.public _02099BB0 +.public _02099BBC +.public _02099BC4 +.public _02099BCC +.public _02099BD4 +.public _02099BDC +.public _02099BE4 +.public _02099BEC +.public _02099BF0_EU +.public _02099BF4 +.public _02099BFC +.public _02099C04_EU +.public _02099C0C +.public _02099C14 +.public _02099C1C +.public _02099C24 +.public _02099C2C +.public _02099C34 +.public _02099C44 +.public _02099C4C +.public _02099C54 +.public _02099C5C +.public _02099C68 +.public _02099C70 +.public _02099C78 +.public _02099C84 +.public _02099CA0 +.public _02099CA4 +.public _02099CAC +.public _02099CB8 +.public _02099CC4 +.public _02099D0C +.public _02099D10 +.public _02099D1C +.public _02099D2C +.public _02099D3C +.public _02099D50 +.public _02099D54 +.public _02099D64 +.public _02099D74 +.public _02099D84 +.public _02099D8C +.public _02099D90 +.public _02099DA0 +.public _02099DB0 +.public _02099DC0 +.public _02099DD0 +.public _02099DEC +.public _02099E08 +.public _02099E18 +.public _02099E20 +.public _02099E40 +.public _02099E64_EU +.public _0209A230_EU +.public _0209A2D4_EU +.public _0209A2F4_EU +.public _020AF6E8 +.public _020AF6F0 +.public _020AF6F8 +.public _020AF700 +.public _020AF710 +.public _020AF714 +.public _020AF720 +.public _020AF721 +.public _020AF722 +.public _020AF760 +.public _020AF76C +.public _020AF77C +.public _020AF780 +.public _020AF784 +.public _020AF798 +.public _020AF7AC +.public _020AF7C0 +.public _020AF7E4 +.public _020AF890 +.public _020AF96C +.public _020AFA48 +.public _020AFB24 +.public _020AFB28 +.public _020AFB4C +.public _020AFB6C +.public _020AFC28 +.public _020AFC30 +.public _020AFC3C +.public _020AFC50 +.public _020AFC64 +.public _020AFC6C +.public _020AFC70 +.public _020AFCE4 +.public _020B05AC_EU +.public _020B05B0_EU +.public _020B05BC_EU +.public _020B05C0_EU +.public _020B05D4_EU +.public _020B05D8_EU +.public _022A4BE8 +.public _022A4BEC +.public _022A4C00 +.public _022A4C28 +.public _022A4E50 +.public _022A4E58 +.public _022A4E7C +.public _022A4E84 +.public _022A4E8C +.public _022A4EA4 +.public _022A4EAC +.public _022A4EB4 +.public _022A4EC4 +.public _022A4ECC +.public _022A4EF4 +.public _022A4EFC +.public _022A4F38 +.public _022A5038 +.public _022A5048 +.public _022A504C +.public _022A5068 +.public _022A5268 +.public _022A5468 +.public _022A5969 +.public _022A596A +.public _022A5970 +.public _s32_div_f +.public _u32_div_f +.public ov10_022BDADC +.public ov10_022C2528 +.public sprintf +.public strcat +.public strcmp +.public strcpy +.public strlen +.public strncmp +.public strstr +.public sub_01FF8F04 +.public sub_02002778 +.public sub_020027E8 +.public sub_02002A9C +.public sub_02002C40 +.public sub_02002CAC +.public sub_02002CB4 +.public sub_02002D14 +.public sub_02002E98 +.public sub_02002ECC +.public sub_02002F34 +.public sub_02002F7C +.public sub_02002F98 +.public sub_02002FB4 +.public sub_0200302C +.public sub_020030FC +.public sub_02003AB0 +.public sub_02006220 +.public sub_020063A0 +.public sub_020063D4 +.public sub_0200A124 +.public sub_0200A174 +.public sub_0200A180 +.public sub_0200A184 +.public sub_0200A29C +.public sub_0200A2B4 +.public sub_0200A478 +.public sub_0200A510 +.public sub_0200A5F8 +.public sub_0200A618 +.public sub_0200B330 +.public sub_0200B3C0 +.public sub_0200B3D4 +.public sub_0200B3FC +.public sub_0200B768 +.public sub_02025480 +.public sub_020257FC +.public sub_0204E530 +.public sub_0204F6F8 +.public sub_0204F77C +.public sub_02053D1C +.public sub_020564B0 +.public sub_02058C30 +.public sub_0206549C +.public sub_02065B14 +.public sub_02065BF0 +.public sub_02065CD8 +.public sub_0206A90C +.public sub_0206AA5C +.public sub_0206AB98 +.public sub_0206ABB0 +.public sub_0206AD4C +.public sub_0206ADA0 +.public sub_0206ADB8 +.public sub_0206BA5C +.public sub_0206C36C +.public sub_0206C39C +.public sub_0206C620 +.public sub_0206C6BC +.public sub_0206C754 +.public sub_0206F5C8 +.public vsprintf diff --git a/asm/main_02015090.s b/asm/main_02015090.s index 807d6467..0e5069c5 100644 --- a/asm/main_02015090.s +++ b/asm/main_02015090.s @@ -57,20498 +57,3 @@ _02015130: strb r2, [r6, r1] ldmia sp!, {r4, r5, r6, pc} arm_func_end sub_02015090 - - arm_func_start IsSameMove -IsSameMove: ; 0x0201514C - stmdb sp!, {r4, lr} - ldrb r2, [r1] - tst r2, #1 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r4, #0 - mov ip, r4 - mov lr, #1 - b _020151B8 -_0201517C: - ldrb r2, [r0, r4, lsl #3] - tst r2, #1 - movne r2, lr - moveq r2, ip - tst r2, #0xff - beq _020151C0 - add r2, r0, r4, lsl #3 - ldrh r3, [r1, #4] - ldrh r2, [r2, #4] - cmp r3, r2 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r2, r4, #1 - mov r2, r2, lsl #0x10 - mov r4, r2, asr #0x10 -_020151B8: - cmp r4, #4 - blt _0201517C -_020151C0: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end IsSameMove - - arm_func_start GetMoveCategory -GetMoveCategory: ; 0x020151C8 - ldr r2, _020151E0 ; =DUNGEON_MOVE_TABLES - mov r1, #0x1a - ldr r2, [r2, #8] - mla r1, r0, r1, r2 - ldrb r0, [r1, #3] - bx lr - .align 2, 0 -_020151E0: .word DUNGEON_MOVE_TABLES - arm_func_end GetMoveCategory - - arm_func_start GetPpIncrease -GetPpIncrease: ; 0x020151E4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r0, r1 - mov r1, #0x39 - mov r6, #0 - bl IqSkillFlagTest - cmp r0, #0 - orrne r0, r6, #0x100 - movne r0, r0, lsl #0x10 - movne r6, r0, lsr #0x10 - mov r0, r4 - mov r1, #0 - bl GetAbility - mov r5, r0 - mov r0, r4 - mov r1, #1 - bl GetAbility - mov r3, r0 - mov r1, r4 - mov r2, r5 - mov r0, #0x4a - bl BagHasExclusiveItemTypeForMonster - cmp r0, #0 - orrne r0, r6, #0x200 - movne r0, r0, lsl #0x10 - movne r6, r0, lsr #0x10 - mov r0, r4 - mov r1, #0 - bl GetAbility - mov r5, r0 - mov r0, r4 - mov r1, #1 - bl GetAbility - mov r3, r0 - mov r1, r4 - mov r2, r5 - mov r0, #0x4b - bl BagHasExclusiveItemTypeForMonster - cmp r0, #0 - orrne r0, r6, #0x400 - movne r0, r0, lsl #0x10 - movne r6, r0, lsr #0x10 - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GetPpIncrease - - arm_func_start OpenWaza -OpenWaza: ; 0x02015294 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _020152EC ; =_020AF6E8 - mov r4, r0 - ldr r0, _020152F0 ; =_020AF700 - ldr r1, [r1, r4, lsl #2] - add r0, r0, r4, lsl #3 - mov r2, #0 - bl LoadFileFromRom - ldr r1, _020152F0 ; =_020AF700 - add r0, sp, #0 - ldr r1, [r1, r4, lsl #3] - bl HandleSir0Translation - ldr r3, [sp] - ldr r1, _020152F4 ; =_020AF6F8 - ldr r2, [r3] - ldr r0, _020152F8 ; =_020AF6F0 - str r2, [r1, r4, lsl #2] - ldr r1, [r3, #4] - str r1, [r0, r4, lsl #2] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020152EC: .word _020AF6E8 -_020152F0: .word _020AF700 -_020152F4: .word _020AF6F8 -_020152F8: .word _020AF6F0 - arm_func_end OpenWaza - - arm_func_start SelectWaza -SelectWaza: ; 0x020152FC - ldr r1, _0201531C ; =_020AF6F8 - ldr r2, _02015320 ; =_020AF6F0 - ldr r3, [r1, r0, lsl #2] - ldr r1, _02015324 ; =DUNGEON_MOVE_TABLES - ldr r0, [r2, r0, lsl #2] - str r3, [r1, #8] - str r0, [r1] - bx lr - .align 2, 0 -_0201531C: .word _020AF6F8 -_02015320: .word _020AF6F0 -_02015324: .word DUNGEON_MOVE_TABLES - arm_func_end SelectWaza - - arm_func_start sub_02015328 -sub_02015328: ; 0x02015328 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, r1 - mov r0, #0x40 - mov r1, #0 - mov r5, r2 - mov r4, r3 - bl MemAlloc - ldr r2, _02015500 ; =_020AF710 - mov r1, #0x40 - str r0, [r2] - bl MemZero - ldr r0, _02015500 ; =_020AF710 - ldr r2, [sp, #0x28] - ldr r1, _02015504 ; =_020AF714 - ldr r0, [r0] - ldr r1, [r1, r2, lsl #2] - add r0, r0, #0x1c - mov r2, #0 - bl LoadFileFromRom - ldr r0, _02015500 ; =_020AF710 - ldr r1, [r0] - add r0, r1, #0x10 - ldr r1, [r1, #0x1c] - bl HandleSir0Translation - ldr r0, _02015500 ; =_020AF710 - ldr r1, [sp, #0x28] - ldr ip, [r0] - ldrsh r3, [sp, #0x24] - ldr r2, [ip, #0x10] - cmp r1, #2 - ldr r2, [r2, #4] - str r2, [ip, #0x2c] - ldr r2, [r0] - str r5, [r2, #8] - ldr r2, [r0] - str r4, [r2, #0xc] - ldr r2, [r0] - strh r3, [r2, #0x30] - mov r2, #0 - bne _02015454 - ldr r1, _02015508 ; =_02098F60 - add r0, sp, #0 - bl LoadFileFromRom - ldr r0, _02015500 ; =_020AF710 - ldr r1, [sp] - ldr r0, [r0] - add r0, r0, #0x14 - bl HandleSir0Translation - ldr r0, _02015500 ; =_020AF710 - ldrsh r4, [sp, #0x24] - ldr r0, [r0] - ldr r2, [r0, #0x14] - mov r1, r4 - bl sub_0201614C - add r0, sp, #0 - bl UnloadFile - ldr r1, _0201550C ; =_02098F78 - add r0, sp, #0 - mov r2, #0 - bl LoadFileFromRom - ldr r0, _02015500 ; =_020AF710 - ldr r1, [sp] - ldr r0, [r0] - add r0, r0, #0x14 - bl HandleSir0Translation - ldr r0, _02015500 ; =_020AF710 - add r1, r4, #1 - ldr r0, [r0] - ldr r2, [r0, #0x14] - bl sub_0201614C - add r0, sp, #0 - bl UnloadFile - b _020154CC -_02015454: - cmp r1, #1 - ldr r0, [r0] - bne _02015470 - ldr r1, _02015510 ; =_02098F90 - add r0, r0, #0x24 - bl LoadFileFromRom - b _0201547C -_02015470: - ldr r1, _02015514 ; =_02098FA8 - add r0, r0, #0x24 - bl LoadFileFromRom -_0201547C: - ldr r0, _02015500 ; =_020AF710 - ldr r0, [r0] - ldr r1, [r0, #0x24] - add r0, r0, #0x14 - bl HandleSir0Translation - ldr r0, _02015500 ; =_020AF710 - ldrsh r4, [sp, #0x24] - ldr r0, [r0] - ldr r2, [r0, #0x14] - mov r1, r4 - bl sub_0201614C - ldr r0, _02015500 ; =_020AF710 - ldr r2, _02015518 ; =_020AF720 - ldr r0, [r0] - add r1, r4, #1 - bl sub_0201614C - ldr r0, _02015500 ; =_020AF710 - ldr r0, [r0] - add r0, r0, #0x24 - bl UnloadFile -_020154CC: - ldr r0, _02015500 ; =_020AF710 - ldrsh r3, [sp, #0x20] - ldr r2, [r0] - mov r1, #0 - str r7, [r2] - ldr r2, [r0] - str r6, [r2, #4] - ldr r2, [r0] - strh r3, [r2, #0x32] - ldr r0, [r0] - strb r1, [r0, #0x3c] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02015500: .word _020AF710 -_02015504: .word _020AF714 -_02015508: .word _02098F60 -_0201550C: .word _02098F78 -_02015510: .word _02098F90 -_02015514: .word _02098FA8 -_02015518: .word _020AF720 - arm_func_end sub_02015328 - - arm_func_start sub_0201551C -sub_0201551C: ; 0x0201551C - stmdb sp!, {r3, lr} - ldr r0, _0201556C ; =_020AF710 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrb r0, [r0, #0x3c] - cmp r0, #0 - beq _02015540 - bl sub_02015EB4 -_02015540: - ldr r0, _0201556C ; =_020AF710 - ldr r0, [r0] - add r0, r0, #0x1c - bl UnloadFile - ldr r0, _0201556C ; =_020AF710 - ldr r0, [r0] - bl MemFree - ldr r0, _0201556C ; =_020AF710 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201556C: .word _020AF710 - arm_func_end sub_0201551C - - arm_func_start sub_02015570 -sub_02015570: ; 0x02015570 - ldr r0, _02015584 ; =_020AF710 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x3c] - bx lr - .align 2, 0 -_02015584: .word _020AF710 - arm_func_end sub_02015570 - - arm_func_start sub_02015588 -sub_02015588: ; 0x02015588 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _020155F4 ; =_020AF710 - mov r1, #0x6000 - ldr r2, [r0] - ldrsh r0, [r2, #0x32] - ldr r2, [r2] - add r0, r2, r0, lsl #5 - bl MemZero32 - ldr r0, _020155F4 ; =_020AF710 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _020155EC - bl sub_02015EB4 - ldr r1, _020155F8 ; =_02098EA8 - ldr r0, _020155F4 ; =_020AF710 - ldr r2, [r1, #4] - ldr r1, [r1] - ldr r0, [r0] - str r1, [sp] - str r2, [sp, #4] - ldr r0, [r0, #4] - add r1, sp, #0 - bl sub_0200B3C0 -_020155EC: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020155F4: .word _020AF710 -_020155F8: .word _02098EA8 - arm_func_end sub_02015588 - - arm_func_start sub_020155FC -sub_020155FC: ; 0x020155FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x104 - bl StringFromId - mov r8, #0 - mov r7, r0 - mov sb, r8 - mov r6, r8 - add r5, sp, #4 - mov fp, #0x100 - mov r4, r8 -_02015624: - ldrb r0, [r7, r8] - cmp r0, #0 - beq _02015698 - mov r0, r5 - mov r1, fp - mov r3, #0x440 - str r6, [sp] - add r2, r7, r8 - bl PreprocessString - strb r4, [r5, r0] - add r8, r8, r0 - ldrb sl, [r7, r8] - cmp sl, #0 - beq _02015690 - ldr r1, _020156A8 ; =_02098FBC - mov r2, #3 - add r0, r7, r8 - bl strncmp - cmp r0, #0 - bne _02015684 - ldr r0, _020156A8 ; =_02098FBC - bl strlen - add r8, r8, r0 - b _02015690 -_02015684: - cmp sl, #0xd - cmpne sl, #0xa - addeq r8, r8, #1 -_02015690: - add sb, sb, #1 - b _02015624 -_02015698: - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020156A8: .word _02098FBC - arm_func_end sub_020155FC - - arm_func_start sub_020156AC -sub_020156AC: ; 0x020156AC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - cmp r1, #0 - beq _02015780 - ldr r3, _02015788 ; =_020AF710 - mov r2, r0, asr #2 - ldr r6, [r3] - add r2, r0, r2, lsr #29 - ldrsh r5, [r6, #0x32] - mov r2, r2, asr #3 - mov r4, r0, lsr #0x1f - rsb r3, r4, r0, lsl #29 - ldr r6, [r6] - add r5, r5, r2, lsl #5 - mov r0, #0 - add r3, r4, r3, ror #29 - add r5, r6, r5, lsl #5 - add r3, r5, r3, lsl #2 - mov r4, r0 - and r5, r1, #0xf -_020156FC: - mov r1, r4, lsl #2 - add r4, r4, #1 - cmp r4, #8 - orr r0, r0, r5, lsl r1 - blt _020156FC - mov r1, #0 -_02015714: - add r1, r1, #1 - cmp r1, #0x20 - str r0, [r3], #0x20 - blt _02015714 - ldr r7, _02015788 ; =_020AF710 - mov r6, #0 - ldr r0, [r7] - add r4, sp, #0 - ldrsh r0, [r0, #0x32] - add r0, r0, r2, lsl #5 - mov r0, r0, lsl #0x10 - str r2, [sp, #4] - mov r5, r0, asr #0x10 -_02015748: - ldr r0, [r7] - str r6, [sp] - ldrsh r2, [r0, #0x30] - ldr r0, [r0, #4] - mov r1, r4 - add r2, r2, #1 - orr r2, r5, r2, lsl #12 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl sub_0200B3FC - add r6, r6, #1 - cmp r6, #0x20 - add r5, r5, #1 - blt _02015748 -_02015780: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02015788: .word _020AF710 - arm_func_end sub_020156AC - - arm_func_start sub_0201578C -sub_0201578C: ; 0x0201578C -#ifdef EUROPE -#define SUB_0201578C_STACK_OFFSET 4 -#else -#define SUB_0201578C_STACK_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2f8 - sub sp, sp, #0x400 - ldr r5, [sp, #0x720] - mov r4, #0 - str r5, [sp, #0x720] - str r0, [sp, #4] - str r1, [sp, #8] - mov r7, r2 - str r3, [sp, #0xc] - str r4, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] -_020157B8: - ldr r0, [sp, #0xc] - ldrb r0, [r0, r4] - cmp r0, #0 - beq _02015CF8 - ldr r1, [sp, #0xc] - add r0, sp, #0x500 - mov r5, #0 - add r2, r1, r4 - add r0, r0, #0xf8 - mov r1, #0x100 - mov r3, #0x440 - str r5, [sp] - bl PreprocessString - add r1, sp, #0x500 - add r1, r1, #0xf8 - mov r2, r5 - strb r2, [r1, r0] - add r4, r4, r0 - ldr r0, [sp, #0xc] - ldrb r5, [r0, r4] - cmp r5, #0 - beq _02015844 - ldr r1, _02015D08 ; =_02098FBC - add r0, r0, r4 - mov r2, #3 - bl strncmp - cmp r0, #0 - bne _02015838 - ldr r0, _02015D08 ; =_02098FBC - bl strlen - add r4, r4, r0 - b _02015844 -_02015838: - cmp r5, #0xd - cmpne r5, #0xa - addeq r4, r4, #1 -_02015844: - ldr r0, [sp, #0x720] - cmp r0, #2 - bne _0201586C - add r0, sp, #0x500 - add r0, r0, #0xf8 - bl sub_020161CC - rsb r0, r0, #0x100 - add r0, r0, r0, lsr #31 - mov r5, r0, asr #1 - b _02015888 -_0201586C: - cmp r0, #1 - ldrne r5, [sp, #8] - bne _02015888 - add r0, sp, #0x500 - add r0, r0, #0xf8 - bl sub_020161CC - rsb r5, r0, #0x100 -_02015888: - add r0, r7, #0xa - str r0, [sp, #0x10] - ldr r1, [sp, #0x10] - mov r2, r0, asr #2 - mov r3, r0, lsr #0x1f - add r2, r1, r2, lsr #29 - rsb r1, r3, r1, lsl #29 - add r1, r3, r1, ror #29 - mov r0, r7, lsr #0x1f - rsb r3, r0, r7, lsl #29 - add r0, r0, r3, ror #29 - str r0, [sp, #0x3c + SUB_0201578C_STACK_OFFSET] - mov r0, r2, asr #3 - mov r6, r7, asr #2 - str r1, [sp, #0x34 + SUB_0201578C_STACK_OFFSET] - add r1, r7, r6, lsr #29 - str r0, [sp, #0x30 + SUB_0201578C_STACK_OFFSET] - mov r0, r1, asr #3 - add r6, sp, #0x500 - str r0, [sp, #0x38 + SUB_0201578C_STACK_OFFSET] - add r6, r6, #0xf8 - b _02015CD8 -#ifdef EUROPE -_020158E0: - ldrb r0, [r6], #1 - cmp r0, #0x23 - str r0, [sp, #0x18] - addeq r5, r5, #8 - beq _02015CD8 - cmp r0, #0x20 - addeq r5, r5, #6 - beq _02015CD8 - cmp r0, #0x5b - bne _02015B14 - mov r0, #1 - str r6, [sp, #0x44] - str r0, [sp, #0x1c] - mov r1, r0 -_020159C0: - ldrb r0, [r6], #1 - cmp r0, #0x5d - beq _020159E0 - cmp r0, #0x3a - addeq r0, sp, #0x44 - streq r6, [r0, r1, lsl #2] - addeq r1, r1, #1 - b _020159C0 -_020159E0: - ldr r0, [sp, #0x44] - ldr r1, _02015DEC ; =_02099404_EU - bl StrcmpTagVeneer - cmp r0, #0 - beq _02015A0C - ldr r0, [sp, #0x48] - bl sub_0202380C_EU - str r0, [sp, #0x18] - mov r0, #0 - str r0, [sp, #0x1c] - b _02015B08 -_02015A0C: - ldr r0, [sp, #0x44] - ldr r1, _02015D0C ; =_02098FC0 - bl StrcmpTagVeneer - cmp r0, #0 - beq _02015B08 - ldr r0, [sp, #0x48] - bl AtoiTagVeneer - ldr r0, [sp, #0x4c] - bl AtoiTagVeneer - ldr r1, _02015D10 ; =_020AF710 - add ip, r5, #2 - ldr r1, [r1] - ldr r8, [sp, #0x10] - ldrsh r3, [r1, #0x32] - mov r1, ip, asr #2 - add r1, ip, r1, lsr #29 - mov r2, r1, asr #3 - ldr r1, [sp, #0x34] - mov r0, r0, lsl #0x10 - add r1, r2, r1, lsl #5 - add r2, r3, r1 - ldr r1, [sp, #4] - add r2, r1, r2, lsl #5 - ldr r1, [sp, #0x38] - add sb, r2, r1, lsl #2 - mov r1, #0 - str r1, [sp, #0x20] -_02015A78: - mov sl, sb - mov lr, #0 - b _02015AD0 -_02015A84: - add r1, ip, lr - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #29 - add r1, r2, r1, ror #29 - ldr r2, _02015D14 ; =_02098EE0 - add lr, lr, #8 - add r3, r2, r1, lsl #4 - ldr r1, [r2, r1, lsl #4] - ldr r2, [sl] - ldr fp, [r3, #8] - bic r1, r1, #0 - orr r1, r2, r1, lsl fp - str r1, [sl] - ldr r1, [r3, #4] - ldr r2, [sl, #0x20]! - ldr r3, [r3, #0xc] - bic r1, r1, #0 - orr r1, r2, r1, lsr r3 - str r1, [sl] -_02015AD0: - cmp lr, r0, asr #16 - blt _02015A84 - add r8, r8, #1 - mov r2, r8, lsr #0x1f - rsb r1, r2, r8, lsl #29 - adds r1, r2, r1, ror #29 - ldr r1, [sp, #0x20] - add sb, sb, #4 - add r1, r1, #1 - addeq sb, sb, #0x3e0 - str r1, [sp, #0x20] - cmp r1, #2 - blt _02015A78 - add r5, r5, r0, asr #16 -_02015B08: - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _02015CD8 -_02015B14: - ldr r0, [sp, #0x18] - bl sub_02025480 - bl sub_0201628C - mov sl, #0 - add r1, sp, #0x400 - add r1, r1, #0xd8 - ldr r3, [r0] - str r1, [sp, #0x24] - mov r8, sl - mov sb, sl -_02015B3C: - ldrb r2, [r3], #1 - add r1, sp, #0x58 - add r1, r1, sb - mov fp, r2, asr #4 - and ip, fp, #0xf - add fp, sp, #0x58 - strb ip, [fp, sb] - and r2, r2, #0xf - add sb, sb, #2 - strb r2, [r1, #1] - cmp sb, #0x240 - blt _02015B3C -_02015B6C: - cmp r8, #0x240 - bge _02015BFC - add r1, sp, #0x58 - ldrb r1, [r1, sl] - add r3, sl, #1 - mov sl, r3 - tst r1, #8 - and r1, r1, #7 - mov sb, #0 - beq _02015BF0 - add r2, sp, #0x58 - ldrb r2, [r2, r3] - add sl, r3, #1 - and r3, r2, #0xff - b _02015BC0 -_02015BA8: - add r2, sp, #0x298 - strb r3, [r2, r8] - add r8, r8, #1 - cmp r8, #0x240 - bge _02015B6C - add sb, sb, #1 -_02015BC0: - cmp sb, r1 - blt _02015BA8 - b _02015B6C -_02015BCC: - add r2, sp, #0x58 - ldrb r3, [r2, sl] - add r2, sp, #0x298 - add sl, sl, #1 - strb r3, [r2, r8] - add r8, r8, #1 - cmp r8, #0x240 - bge _02015B6C - add sb, sb, #1 -_02015BF0: - cmp sb, r1 - blt _02015BCC - b _02015B6C -_02015BFC: - mov fp, #0 -_02015C00: - ldr r1, [sp, #0x24] - str r1, [sp, #0x14] - add r1, r1, #4 - str r1, [sp, #0x24] - add r1, sp, #0x298 - add ip, r1, fp - ldrb r3, [r1, fp] - ldrb r1, [ip, #2] - ldrb r2, [ip, #1] - and sl, r3, #0xf - mov r1, r1, lsl #8 - and r8, r1, #0xf00 - ldrb r1, [ip, #5] - mov r2, r2, lsl #4 - and sb, r2, #0xf0 - mov r1, r1, lsl #0x14 - ldrb r3, [ip, #3] - ldrb r2, [ip, #4] - and lr, r1, #0xf00000 - ldrb r1, [ip, #7] - ldrb ip, [ip, #6] - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #0x1c - mov ip, ip, lsl #0x18 - mov r3, r3, lsl #0xc - add fp, fp, #8 - and r1, r1, #0xf0000000 - and ip, ip, #0xf000000 - orr r1, r1, ip - and r2, r2, #0xf0000 - orr r1, lr, r1 - and r3, r3, #0xf000 - orr r1, r2, r1 - orr r1, r3, r1 - orr r1, r8, r1 - orr r1, sb, r1 - orr r2, sl, r1 - ldr r1, [sp, #0x14] - cmp fp, #0x240 - str r2, [r1] - blt _02015C00 - ldrb lr, [r0, #6] - ldr r0, _02015D10 ; =_020AF710 - add r8, sp, #0x400 - ldr r1, [r0] - mov r0, r5, asr #2 - add r0, r5, r0, lsr #29 - ldrsh r3, [r1, #0x32] - mov r1, r0, asr #3 - ldr r0, [sp, #0x3c] - mov r2, r7 - add r0, r1, r0, lsl #5 - add r1, r3, r0 - ldr r0, [sp, #4] - add r8, r8, #0xd8 - add r1, r0, r1, lsl #5 - ldr r0, [sp, #0x40] - add r3, r1, r0, lsl #2 - mov r1, r5, lsr #0x1f - rsb r0, r1, r5, lsl #29 - add r1, r1, r0, ror #29 - ldr r0, _02015D14 ; =_02098EE0 - add sb, r0, r1, lsl #4 - mov r0, #0 - str r0, [sp, #0x28] -_02015D04: - mov r0, #0 - mov sl, r3 - str r0, [sp, #0x2c] -_02015D10_EU: - ldr r1, [r8] - cmp r1, #0 - beq _02015D4C - ldr r0, [sl] - ldr ip, [sb] - ldr fp, [sb, #8] - and ip, r1, ip - orr r0, r0, ip, lsl fp - str r0, [sl] - ldr ip, [sl, #0x20] - ldr fp, [sb, #4] - ldr r0, [sb, #0xc] - and r1, r1, fp - orr r0, ip, r1, lsr r0 - str r0, [sl, #0x20] -_02015D4C: - ldr r0, [sp, #0x2c] - add r8, r8, #4 - add r0, r0, #1 - add sl, sl, #0x20 - str r0, [sp, #0x2c] - cmp r0, #3 - blt _02015D10_EU - add r2, r2, #1 - mov r1, r2, lsr #0x1f - rsb r0, r1, r2, lsl #29 - adds r0, r1, r0, ror #29 - ldr r0, [sp, #0x28] - add r3, r3, #4 - add r0, r0, #1 - addeq r3, r3, #0x3e0 - str r0, [sp, #0x28] - cmp r0, #0x18 - blt _02015D04 - ldr r0, [sp, #0x18] - add r5, r5, lr - cmp r0, #0x7e -#else -_020158E0: - ldrb r8, [r6], #1 - cmp r8, #0x23 - addeq r5, r5, #8 - beq _02015CD8 - cmp r8, #0x20 -#ifdef JAPAN - addeq r5, r5, #0xc -#else - addeq r5, r5, #6 -#endif - beq _02015CD8 - cmp r8, #0x5b - bne _02015A2C - str r6, [sp, #0x44] - mov r1, #1 -_0201590C: - ldrb r0, [r6], #1 - cmp r0, #0x5d - beq _0201592C - cmp r0, #0x3a - addeq r0, sp, #0x44 - streq r6, [r0, r1, lsl #2] - addeq r1, r1, #1 - b _0201590C -_0201592C: - ldr r0, [sp, #0x44] - ldr r1, _02015D0C ; =_02098FC0 - bl StrcmpTagVeneer - cmp r0, #0 - beq _02015CD8 - ldr r0, [sp, #0x48] - bl AtoiTagVeneer - ldr r0, [sp, #0x4c] - bl AtoiTagVeneer - ldr r1, _02015D10 ; =_020AF710 - add ip, r5, #2 - ldr r1, [r1] - ldr r8, [sp, #0x10] - ldrsh r3, [r1, #0x32] - mov r1, ip, asr #2 - add r1, ip, r1, lsr #29 - mov r2, r1, asr #3 - ldr r1, [sp, #0x30] - mov r0, r0, lsl #0x10 - add r1, r2, r1, lsl #5 - add r2, r3, r1 - ldr r1, [sp, #4] - add r2, r1, r2, lsl #5 - ldr r1, [sp, #0x34] - add sb, r2, r1, lsl #2 - mov r1, #0 - str r1, [sp, #0x18] -_02015998: - mov sl, sb - mov lr, #0 - b _020159F0 -_020159A4: - add r1, ip, lr - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #29 - add r1, r2, r1, ror #29 - ldr r2, _02015D14 ; =_02098EE0 - add lr, lr, #8 - add r3, r2, r1, lsl #4 - ldr r1, [r2, r1, lsl #4] - ldr r2, [sl] - ldr fp, [r3, #8] - bic r1, r1, #0 - orr r1, r2, r1, lsl fp - str r1, [sl] - ldr r1, [r3, #4] - ldr r2, [sl, #0x20]! - ldr r3, [r3, #0xc] - bic r1, r1, #0 - orr r1, r2, r1, lsr r3 - str r1, [sl] -_020159F0: - cmp lr, r0, asr #16 - blt _020159A4 - add r8, r8, #1 - mov r2, r8, lsr #0x1f - rsb r1, r2, r8, lsl #29 - adds r1, r2, r1, ror #29 - ldr r1, [sp, #0x18] - add sb, sb, #4 - add r1, r1, #1 - addeq sb, sb, #0x3e0 - str r1, [sp, #0x18] - cmp r1, #2 - blt _02015998 - add r5, r5, r0, asr #16 - b _02015CD8 -_02015A2C: -#ifdef JAPAN - tst r8, #0x80 - beq _02015A24 - ldrb r0, [r6] - cmp r0, #0 - orrne r8, r0, r8, lsl #8 - ldr r0, _02015D10_JP ; =0x00008140 - addne r6, r6, #1 - cmp r8, r0 - addeq r5, r5, #0xc - beq _02015CD8 -_02015A24: -#endif - mov r0, r8 - bl sub_02025480 - bl sub_0201628C - mov ip, #0 - add r1, sp, #0x400 - add r1, r1, #0xd8 - ldr sb, [r0] - str r1, [sp, #0x1c] - mov sl, ip - mov fp, ip -_02015A54: - ldrb r3, [sb], #1 - add r1, sp, #0x58 - add lr, r1, fp - mov r1, r3, asr #4 - and r2, r1, #0xf - add r1, sp, #0x58 - strb r2, [r1, fp] - and r1, r3, #0xf - add fp, fp, #2 - strb r1, [lr, #1] - cmp fp, #0x240 - blt _02015A54 -_02015A84: - cmp sl, #0x240 - bge _02015B14 - add r1, sp, #0x58 - ldrb r1, [r1, ip] - add r3, ip, #1 - mov ip, r3 - tst r1, #8 - and r1, r1, #7 - mov sb, #0 - beq _02015B08 - add r2, sp, #0x58 - ldrb r2, [r2, r3] - add ip, r3, #1 - and r3, r2, #0xff - b _02015AD8 -_02015AC0: - add r2, sp, #0x298 - strb r3, [r2, sl] - add sl, sl, #1 - cmp sl, #0x240 - bge _02015A84 - add sb, sb, #1 -_02015AD8: - cmp sb, r1 - blt _02015AC0 - b _02015A84 -_02015AE4: - add r2, sp, #0x58 - ldrb r3, [r2, ip] - add r2, sp, #0x298 - add ip, ip, #1 - strb r3, [r2, sl] - add sl, sl, #1 - cmp sl, #0x240 - bge _02015A84 - add sb, sb, #1 -_02015B08: - cmp sb, r1 - blt _02015AE4 - b _02015A84 -_02015B14: - mov fp, #0 -_02015B18: - ldr r1, [sp, #0x1c] - str r1, [sp, #0x14] - add r1, r1, #4 - str r1, [sp, #0x1c] - add r1, sp, #0x298 - add ip, r1, fp - ldrb r3, [r1, fp] - ldrb r1, [ip, #2] - ldrb r2, [ip, #1] - and sl, r3, #0xf - mov r1, r1, lsl #8 - and r1, r1, #0xf00 - str r1, [sp, #0x40] - ldrb r1, [ip, #5] - mov r2, r2, lsl #4 - and sb, r2, #0xf0 - mov r1, r1, lsl #0x14 - ldrb r3, [ip, #3] - ldrb r2, [ip, #4] - and lr, r1, #0xf00000 - ldrb r1, [ip, #7] - ldrb ip, [ip, #6] - mov r2, r2, lsl #0x10 - mov r1, r1, lsl #0x1c - mov ip, ip, lsl #0x18 - mov r3, r3, lsl #0xc - add fp, fp, #8 - and r1, r1, #0xf0000000 - and ip, ip, #0xf000000 - orr r1, r1, ip - and r2, r2, #0xf0000 - orr r1, lr, r1 - and r3, r3, #0xf000 - orr r1, r2, r1 - orr r2, r3, r1 - ldr r1, [sp, #0x40] - cmp fp, #0x240 - orr r1, r1, r2 - orr r1, sb, r1 - orr r2, sl, r1 - ldr r1, [sp, #0x14] - str r2, [r1] - blt _02015B18 - ldrb r0, [r0, #6] - add r3, sp, #0x400 - mov lr, r7 - str r0, [sp, #0x20] - ldr r0, _02015D10 ; =_020AF710 - add r3, r3, #0xd8 - ldr r1, [r0] - mov r0, r5, asr #2 - add r0, r5, r0, lsr #29 - ldrsh r2, [r1, #0x32] - mov r1, r0, asr #3 - ldr r0, [sp, #0x38] - add r0, r1, r0, lsl #5 - add r1, r2, r0 - ldr r0, [sp, #4] - add r1, r0, r1, lsl #5 - ldr r0, [sp, #0x3c] - add r2, r1, r0, lsl #2 - mov r1, r5, lsr #0x1f - rsb r0, r1, r5, lsl #29 - add r1, r1, r0, ror #29 - ldr r0, _02015D14 ; =_02098EE0 - add sb, r0, r1, lsl #4 - mov r0, #0 - str r0, [sp, #0x24] -_02015C28: - mov r0, #0 - mov sl, r2 - str r0, [sp, #0x28] -_02015C34: - ldr r1, [r3] - cmp r1, #0 - beq _02015C70 - ldr r0, [sl] - ldr ip, [sb] - ldr fp, [sb, #8] - and ip, r1, ip - orr r0, r0, ip, lsl fp - str r0, [sl] - ldr ip, [sl, #0x20] - ldr fp, [sb, #4] - ldr r0, [sb, #0xc] - and r1, r1, fp - orr r0, ip, r1, lsr r0 - str r0, [sl, #0x20] -_02015C70: - ldr r0, [sp, #0x28] - add r3, r3, #4 - add r0, r0, #1 - add sl, sl, #0x20 - str r0, [sp, #0x28] - cmp r0, #3 - blt _02015C34 - add lr, lr, #1 - mov r1, lr, lsr #0x1f - rsb r0, r1, lr, lsl #29 - adds r0, r1, r0, ror #29 - ldr r0, [sp, #0x24] - add r2, r2, #4 - add r0, r0, #1 - addeq r2, r2, #0x3e0 - str r0, [sp, #0x24] - cmp r0, #0x18 - blt _02015C28 - ldr r0, [sp, #0x20] - cmp r8, #0x7e - add r5, r5, r0 -#endif - ldreqb r0, [r6] - cmpeq r0, #0x32 - ldreqb r0, [r6, #1] - cmpeq r0, #0x37 - addeq r6, r6, #2 -_02015CD8: - ldrb r0, [r6] - cmp r0, #0 - bne _020158E0 - ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] - add r7, r7, #0x18 - add r0, r0, #1 - str r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] - b _020157B8 -_02015CF8: - ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] - add sp, sp, #0x2f8 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02015D08: .word _02098FBC -#ifdef EUROPE -_02015DEC: .word _02099404_EU -#endif -_02015D0C: .word _02098FC0 -_02015D10: .word _020AF710 -_02015D14: .word _02098EE0 -#ifdef JAPAN -_02015D10_JP: .word 0x00008140 -#endif - arm_func_end sub_0201578C - - arm_func_start sub_02015D18 -sub_02015D18: ; 0x02015D18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r5, r1 - mov r4, r2 - mov r1, #0 - mov r6, r4 - str r1, [sp, #4] - str r5, [sp, #8] - b _02015D60 -_02015D3C: - ldrb r1, [r2], #1 - cmp r1, #0x7e - strb r1, [r6], #1 - bne _02015D60 - ldrb r1, [r2] - cmp r1, #0x32 - ldreqb r1, [r2, #1] - cmpeq r1, #0x37 - addeq r2, r2, #2 -_02015D60: - ldrb r1, [r2] - cmp r1, #0 - bne _02015D3C - mov r1, #0 - strb r1, [r6] - str r3, [sp] - ldr r2, _02015E40 ; =_020AF710 - mov r1, r0 - ldr r0, [r2] - mov r2, r5 - ldr r0, [r0] - mov r3, r4 - bl sub_0201578C - mov r1, r5, asr #2 - add r2, r5, r1, lsr #29 - mov r7, r0 - mov r1, #0x18 - mul r0, r7, r1 - add r0, r0, r2, asr #3 - add r3, r0, #7 - mov r0, r3, asr #2 - add r0, r3, r0, lsr #29 - mov r0, r0, asr #3 - mov sb, r2, asr #3 - bl _s32_div_f - ldr fp, _02015E40 ; =_020AF710 - mov sl, r1 - ldr r0, [fp] - mov r4, #0 - ldrsh r0, [r0, #0x32] - add r0, r0, sb, lsl #5 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - b _02015E2C -_02015DE8: - mov r5, #0 - add r8, sb, r4 -_02015DF0: - ldr r0, [fp] - str r5, [sp, #4] - str r8, [sp, #8] - ldrsh r2, [r0, #0x30] - ldr r0, [r0, #4] - add r1, sp, #4 - orr r2, r6, r2, lsl #12 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl sub_0200B3FC - add r5, r5, #1 - cmp r5, #0x20 - add r6, r6, #1 - blt _02015DF0 - add r4, r4, #1 -_02015E2C: - cmp r4, sl - blt _02015DE8 - mov r0, r7 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02015E40: .word _020AF710 - arm_func_end sub_02015D18 - - arm_func_start sub_02015E44 -sub_02015E44: ; 0x02015E44 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl StringFromId - mov r2, r0 - mov r1, r4 - mov r0, #0 - mov r3, #2 - bl sub_02015D18 - ldmia sp!, {r4, pc} - arm_func_end sub_02015E44 - - arm_func_start sub_02015E6C -sub_02015E6C: ; 0x02015E6C - stmdb sp!, {r3, lr} - ldr r0, _02015EB0 ; =_020AF710 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _02015E88 - bl sub_0200B330 -_02015E88: - ldr r0, _02015EB0 ; =_020AF710 - ldr r1, [r0] - ldr r0, [r1, #8] - cmp r0, #0 - beq _02015EA4 - bl sub_0200A174 - ldmia sp!, {r3, pc} -_02015EA4: - ldr r0, [r1, #0xc] - bl MarkPaletteDataAsNeedingUpdate - ldmia sp!, {r3, pc} - .align 2, 0 -_02015EB0: .word _020AF710 - arm_func_end sub_02015E6C - - arm_func_start sub_02015EB4 -sub_02015EB4: ; 0x02015EB4 - stmdb sp!, {r3, lr} - ldr r0, _02015EE4 ; =_020AF710 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0200B3D4 - ldr r0, _02015EE4 ; =_020AF710 - ldr r0, [r0] - ldr r0, [r0, #4] - bl sub_0200B330 - ldmia sp!, {r3, pc} - .align 2, 0 -_02015EE4: .word _020AF710 - arm_func_end sub_02015EB4 - - arm_func_start sub_02015EE8 -sub_02015EE8: ; 0x02015EE8 - stmdb sp!, {r3, lr} - ldr r1, _02015F14 ; =_020AF710 - ldr r2, [r1] - ldr r1, [r2, #8] - cmp r1, #0 - ldmneia sp!, {r3, pc} - mov r1, r0, lsl #0x10 - ldr r0, [r2, #0xc] - mov r1, r1, lsr #0x10 - bl sub_0200A618 - ldmia sp!, {r3, pc} - .align 2, 0 -_02015F14: .word _020AF710 - arm_func_end sub_02015EE8 - - arm_func_start sub_02015F18 -sub_02015F18: ; 0x02015F18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r4, _02015FD4 ; =_020AF710 - mov r6, #0 - ldr r0, [r4] - add r5, sp, #0 - ldr r0, [r0, #8] - mov r8, #0x10 - cmp r0, #0 - beq _02015F88 - ldr r7, _02015FD8 ; =_020AFC70 -_02015F44: - ldr r0, [r4] - mov r2, r6, lsl #0x10 - ldr r0, [r0, #8] - mov r1, r5 - mov r2, r2, lsr #0x10 - bl sub_0200A2B4 - ldr r0, [r7] - mov r3, r6, lsl #0x10 - mov r1, r5 - mov r2, r8 - add r0, r0, #0xcc - mov r3, r3, asr #0x10 - bl sub_0201E380 - add r6, r6, #1 - cmp r6, #0x100 - blt _02015F44 - b _02015FCC -_02015F88: - ldr r7, _02015FD8 ; =_020AFC70 -_02015F8C: - ldr r0, [r4] - mov r2, r6, lsl #0x10 - ldr r0, [r0, #0xc] - mov r1, r5 - mov r2, r2, lsr #0x10 - bl sub_0200A5F8 - ldr r0, [r7] - mov r3, r6, lsl #0x10 - mov r1, r5 - mov r2, r8 - add r0, r0, #0xcc - mov r3, r3, asr #0x10 - bl sub_0201E380 - add r6, r6, #1 - cmp r6, #0x100 - blt _02015F8C -_02015FCC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02015FD4: .word _020AF710 -_02015FD8: .word _020AFC70 - arm_func_end sub_02015F18 - - arm_func_start sub_02015FDC -sub_02015FDC: ; 0x02015FDC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, #0 - mov r3, r2, asr #2 - add r2, r2, r3, lsr #29 - mov ip, r5 - mov lr, r5 - b _0201602C -_02015FF8: - mov r6, lr - add r8, r1, r5, lsl #10 -_02016000: - mov r7, ip - add r4, r8, r6, lsl #2 -_02016008: - ldr r3, [r4], #0x20 - add r7, r7, #1 - cmp r7, #0x20 - str r3, [r0], #4 - blt _02016008 - add r6, r6, #1 - cmp r6, #8 - blt _02016000 - add r5, r5, #1 -_0201602C: - cmp r5, r2, asr #3 - blt _02015FF8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_02015FDC - - arm_func_start sub_02016038 -sub_02016038: ; 0x02016038 - ldr ip, _02016048 ; =sub_0201E050 - add r1, r1, #0x10000 - mov r3, #0 - bx ip - .align 2, 0 -_02016048: .word sub_0201E050 - arm_func_end sub_02016038 - - arm_func_start sub_0201604C -sub_0201604C: ; 0x0201604C - stmdb sp!, {r3, lr} - add r1, r1, #0x10000 - str r1, [r0, #0x20] - mov ip, #0 - strh ip, [r0, #0x16] - mov r1, #8 - strh ip, [r0, #0x18] - mov ip, #0x100 - mov r1, r1, lsl r3 - strh ip, [r0, #0x1a] - strh r1, [r0, #0x1c] - ldrh lr, [r0, #0x14] - mov ip, r3, lsl #0x1d - ldr r1, _02016110 ; =_020AF710 - bic r3, lr, #7 - orr r3, r3, #5 - strh r3, [r0, #0x14] - ldrh lr, [r0, #0x14] - ldr r3, _02016114 ; =_020AFC70 - bic lr, lr, #0x38 - orr ip, lr, ip, lsr #26 - strh ip, [r0, #0x14] - ldrh ip, [r0, #0x14] - bic ip, ip, #0xc0 - strh ip, [r0, #0x14] - ldrh ip, [r0, #0x14] - bic ip, ip, #0x700 - orr ip, ip, #0x300 - strh ip, [r0, #0x14] - ldrh ip, [r0, #0x14] - bic ip, ip, #0x1800 - strh ip, [r0, #0x14] - ldrh ip, [r0, #0x14] - bic ip, ip, #0x6000 - strh ip, [r0, #0x14] - ldrh ip, [r0, #0x14] - orr ip, ip, #0x8000 - strh ip, [r0, #0x14] - ldr r1, [r1] - ldr r3, [r3] - ldrsh r1, [r1, #0x30] - ldr r3, [r3, #0xe0] - add r1, r2, r1 - mov r1, r1, lsl #0x14 - mov r1, r1, asr #0x10 - add r1, r1, #0x1000 - add r1, r3, r1, lsl #1 - str r1, [r0, #0x24] - ldmia sp!, {r3, pc} - .align 2, 0 -_02016110: .word _020AF710 -_02016114: .word _020AFC70 - arm_func_end sub_0201604C - - arm_func_start sub_02016118 -sub_02016118: ; 0x02016118 - ldr r2, _02016140 ; =_020AF720 - ldr r3, _02016144 ; =_020AF721 - ldrb ip, [r2, r1, lsl #2] - ldr r2, _02016148 ; =_020AF722 - strb ip, [r0, #0x2c] - ldrb r3, [r3, r1, lsl #2] - strb r3, [r0, #0x2d] - ldrb r1, [r2, r1, lsl #2] - strb r1, [r0, #0x2e] - bx lr - .align 2, 0 -_02016140: .word _020AF720 -_02016144: .word _020AF721 -_02016148: .word _020AF722 - arm_func_end sub_02016118 - - arm_func_start sub_0201614C -sub_0201614C: ; 0x0201614C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldr r0, [r6, #8] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - mov r7, #0 - beq _0201619C -_0201616C: - add r0, r7, r5, lsl #4 - mov r1, r0, lsl #0x10 - ldr r0, [r6, #8] - mov r1, r1, lsr #0x10 - add r2, r4, r7, lsl #2 - bl sub_0200A29C - add r7, r7, #1 - cmp r7, #0x10 - blt _0201616C - ldr r0, [r6, #8] - bl sub_0200A174 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0201619C: - add r0, r7, r5, lsl #4 - mov r1, r0, lsl #0x10 - ldr r0, [r6, #0xc] - mov r1, r1, lsr #0x10 - add r2, r4, r7, lsl #2 - bl CopyColorToPaletteDataRgba - add r7, r7, #1 - cmp r7, #0x10 - blt _0201619C - ldr r0, [r6, #0xc] - bl MarkPaletteDataAsNeedingUpdate - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0201614C - - arm_func_start sub_020161CC -sub_020161CC: ; 0x020161CC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 -#ifdef JAPAN - mov r5, r0 - mov r4, #0 - b _02016294 -_020161DC: - ldrb r0, [r5], #1 - cmp r0, #0x23 - addeq r4, r4, #8 - beq _02016294 - cmp r0, #0x20 - addeq r4, r4, #0xc - beq _02016294 - cmp r0, #0x5b - bne _02016258 - str r5, [sp] - mov r2, #1 - add r0, sp, #0 -_0201620C: - ldrb r1, [r5], #1 - cmp r1, #0x5d - beq _02016228 - cmp r1, #0x3a - streq r5, [r0, r2, lsl #2] - addeq r2, r2, #1 - b _0201620C -_02016228: - ldr r0, [sp] - ldr r1, _02016288 ; =_02098FC0_JP - bl StrcmpTagVeneer - cmp r0, #0 - beq _02016294 - ldr r0, [sp, #4] - bl AtoiTagVeneer - ldr r0, [sp, #8] - bl AtoiTagVeneer - mov r0, r0, lsl #0x10 - add r4, r4, r0, asr #16 - b _02016294 -_02016258: - tst r0, #0x80 - beq _02016280 - ldrb r1, [r5] - cmp r1, #0 - orrne r0, r1, r0, lsl #8 - ldr r1, _020162B0_JP ; =0x00008140 - addne r5, r5, #1 - cmp r0, r1 - addeq r4, r4, #0xc - beq _02016294 -_02016280: - bl sub_02025480 - bl sub_0201628C - cmp r0, #0 - ldrneb r0, [r0, #6] - addne r4, r4, r0 -_02016294: - ldrb r0, [r5] - cmp r0, #0 - bne _020161DC - mov r0, r4 -#else - mov r4, r0 - mov r5, #0 - b _02016270 -_020161E0: - ldrb r0, [r4], #1 - cmp r0, #0x23 - addeq r5, r5, #8 - beq _02016270 - cmp r0, #0x20 - addeq r5, r5, #6 - beq _02016270 - cmp r0, #0x5b - bne _0201625C - str r4, [sp] - mov r2, #1 - add r0, sp, #0 -_02016210: - ldrb r1, [r4], #1 - cmp r1, #0x5d - beq _0201622C - cmp r1, #0x3a - streq r4, [r0, r2, lsl #2] - addeq r2, r2, #1 - b _02016210 -_0201622C: - ldr r0, [sp] - ldr r1, _02016288 ; =_02098FC0 - bl StrcmpTagVeneer - cmp r0, #0 - beq _02016270 - ldr r0, [sp, #4] - bl AtoiTagVeneer - ldr r0, [sp, #8] - bl AtoiTagVeneer - mov r0, r0, lsl #0x10 - add r5, r5, r0, asr #16 - b _02016270 -_0201625C: - bl sub_02025480 - bl sub_0201628C - cmp r0, #0 - ldrneb r0, [r0, #6] - addne r5, r5, r0 -_02016270: - ldrb r0, [r4] - cmp r0, #0 - bne _020161E0 - mov r0, r5 -#endif - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02016288: .word _02098FC0 -#ifdef JAPAN -_020162B0_JP: .word 0x00008140 -#endif - arm_func_end sub_020161CC - - arm_func_start sub_0201628C -sub_0201628C: ; 0x0201628C - stmdb sp!, {r3, lr} - ldr r1, _020162FC ; =_020AF710 - mov lr, #0 - ldr r1, [r1] - ldr r2, [r1, #0x10] - ldr r1, [r1, #0x2c] - ldr r3, [r2] - sub ip, r1, #1 - b _020162DC -_020162B0: - add r1, lr, ip - add r1, r1, r1, lsr #31 - mov r2, r1, asr #1 - add r1, r3, r2, lsl #3 - ldrh r1, [r1, #4] - cmp r0, r1 - moveq lr, r2 - beq _020162E4 - cmp r1, r0 - addlt lr, r2, #1 - movge ip, r2 -_020162DC: - cmp lr, ip - blt _020162B0 -_020162E4: - add r2, r3, lr, lsl #3 - ldrh r1, [r2, #4] - cmp r1, r0 - addne r2, r3, #8 - mov r0, r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_020162FC: .word _020AF710 - arm_func_end sub_0201628C - - arm_func_start sub_02016300 -sub_02016300: ; 0x02016300 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - ldr r4, [sp, #0x20] - ldr lr, _0201636C ; =_020AF760 - ldrsh ip, [sp, #0x18] - str r4, [lr] - ldrsh r4, [sp, #0x1c] - str ip, [sp] - mov ip, #0x14 - str r4, [sp, #4] - ldr r4, [lr] - ldr lr, _02016370 ; =_0209901C - mul ip, r4, ip - ldr ip, [lr, ip] - str ip, [sp, #8] - bl sub_02015328 - ldr r1, _0201636C ; =_020AF760 - mov r0, #0x14 - ldr r2, [r1] - ldr r1, _02016374 ; =_02099020 - mul r0, r2, r0 - ldr r0, [r1, r0] - cmp r0, #0 - beq _02016364 - blx r0 -_02016364: - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201636C: .word _020AF760 -_02016370: .word _0209901C -_02016374: .word _02099020 - arm_func_end sub_02016300 - - arm_func_start sub_02016378 -sub_02016378: ; 0x02016378 - stmdb sp!, {r3, lr} - ldr ip, _020163A4 ; =_020AF760 - mov r3, #0x14 - ldr lr, [ip] - ldr ip, _020163A8 ; =_02099024 - mul r3, lr, r3 - ldr r3, [ip, r3] - cmp r3, #0 - ldmeqia sp!, {r3, pc} - blx r3 - ldmia sp!, {r3, pc} - .align 2, 0 -_020163A4: .word _020AF760 -_020163A8: .word _02099024 - arm_func_end sub_02016378 - - arm_func_start sub_020163AC -sub_020163AC: ; 0x020163AC - stmdb sp!, {r3, lr} - ldr r1, _020163DC ; =_020AF760 - mov r0, #0x14 - ldr r2, [r1] - ldr r1, _020163E0 ; =_02099028 - mul r0, r2, r0 - ldr r0, [r1, r0] - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020163DC: .word _020AF760 -_020163E0: .word _02099028 - arm_func_end sub_020163AC - - arm_func_start sub_020163E4 -sub_020163E4: ; 0x020163E4 - stmdb sp!, {r3, lr} - ldr r1, _02016414 ; =_020AF760 - mov r0, #0x14 - ldr r2, [r1] - ldr r1, _02016418 ; =_0209902C - mul r0, r2, r0 - ldr r0, [r1, r0] - cmp r0, #0 - beq _0201640C - blx r0 -_0201640C: - bl sub_0201551C - ldmia sp!, {r3, pc} - .align 2, 0 -_02016414: .word _020AF760 -_02016418: .word _0209902C - arm_func_end sub_020163E4 - - arm_func_start sub_0201641C -sub_0201641C: ; 0x0201641C - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02015588 - mov r1, r4 - mov r0, #3 - mov r2, #0 - bl sub_0204F6F8 - mov r4, r0 - bl sub_02015570 - mov r0, r4 - bl sub_020155FC - mov r1, #0x18 - mul r1, r0, r1 - rsb r0, r1, #0xc0 - mov r1, r4 - mov r0, r0, asr #1 - bl sub_02015E44 - bl sub_02015E6C - ldmia sp!, {r4, pc} - arm_func_end sub_0201641C - - arm_func_start sub_02016468 -sub_02016468: ; 0x02016468 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x100 - mov r4, r1 - mov r5, r0 - bl sub_02015588 - bl sub_02015570 - add r0, sp, #0 - mov r1, r4 - bl strcpy - mov r1, r5 - mov r0, #0 - add r2, sp, #0 - mov r3, #2 - bl sub_02015D18 - bl sub_02015E6C - add sp, sp, #0x100 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02016468 - - arm_func_start sub_020164AC -sub_020164AC: ; 0x020164AC - stmdb sp!, {r3, lr} - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0x90 - add r0, r0, #0xb000 - bl MemZero - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0x30c0 - add r0, r0, #0x8000 - bl MemZero - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0xf0 - add r0, r0, #0xb000 - bl MemZero - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0x60 - add r0, r0, #0xb000 - bl MemZero - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0x30 - add r0, r0, #0xb000 - bl MemZero - ldr r0, _02016544 ; =_020AF760 - mov r1, #0x30 - ldr r0, [r0, #4] - add r0, r0, #0x120 - add r0, r0, #0xb000 - bl MemZero - ldmia sp!, {r3, pc} - .align 2, 0 -_02016544: .word _020AF760 - arm_func_end sub_020164AC - - arm_func_start sub_02016548 -sub_02016548: ; 0x02016548 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x104 - ldrb r4, [sp, #0x118] - mov ip, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp r4, #0 - add r0, sp, #4 - mov r1, ip - beq _020165C8 - mov r2, r5 - bl sub_020175F8 - bl sub_02015570 - add r2, sp, #4 - mov r0, #0 - mov r1, #0x20 - mov r3, #2 - bl sub_02015D18 - mov r1, r6 - mov r0, #0x3b - bl sub_020156AC - mov r1, r7 - add r0, sp, #4 - bl strcpy - mov r0, #0 - mov r1, #0x52 - add r2, sp, #4 - mov r3, #2 - bl sub_02015D18 - bl sub_02015E6C - b _02016768 -_020165C8: - mov r2, r5 - bl sub_020175F8 - mov r2, #2 - ldr r0, _02016770 ; =_020AF760 - str r2, [sp] - ldr r0, [r0, #4] - add r3, sp, #4 - mov r1, r7 - bl sub_0201770C - bl sub_020164AC - ldr r0, _02016770 ; =_020AF760 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - str r1, [r0, #0x150] - bl sub_0201F36C - ldr r1, _02016770 ; =_020AF760 - ldr r1, [r1, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x90] - bl sub_0201F36C - ldr r2, _02016770 ; =_020AF760 - ldr r1, [r2, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0xc0] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldrsh r0, [r0, #0x90] - bl sub_0201F324 - mov r1, #0 - mov r4, r0 - strb r1, [r4, #0x3c] - mov r2, r1 - mov r3, #2 - bl sub_0201604C - ldrsh r0, [r4, #0x1a] - mov r2, #0x20 - mov r1, #0xa - add r0, r0, r0, lsr #31 - mov r0, r0, lsl #0xf - mov r0, r0, asr #0x10 - strh r0, [r4] - strh r2, [r4, #2] - strb r1, [r4, #0x3e] - strh r0, [r4, #8] - mov r0, #0 - strh r0, [r4, #0xa] - mov r0, #0x21 - strh r0, [r4, #0x2a] - ldr r0, _02016770 ; =_020AF760 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - ldrsh r0, [r0, #0xc0] - bl sub_0201F324 - mov r4, r0 - mov r1, #0x1000 - mov r2, #0 - mov r3, #4 - bl sub_0201604C - ldrsh r0, [r4, #0x1a] - mov r3, #0 - mov r1, #0x52 - add r0, r0, r0, lsr #31 - mov r0, r0, lsl #0xf - mov r2, r0, asr #0x10 - strb r3, [r4, #0x3c] - strh r2, [r4] - strh r1, [r4, #2] - mov r0, #0xa - strb r0, [r4, #0x3e] - strh r2, [r4, #8] - strh r3, [r4, #0xa] - mov r0, #0x21 - cmp r5, #0 - strh r0, [r4, #0x2a] - beq _02016760 - bl sub_0201F36C - ldr r2, _02016770 ; =_020AF760 - ldr r1, [r2, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x60] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldrsh r0, [r0, #0x60] - bl sub_0201F324 - mov r1, #2 - strb r1, [r0, #0x3c] - mov r1, #0 - strh r1, [r0] - mov r1, #0x3b - strh r1, [r0, #2] - mov r1, #0x100 - strh r1, [r0, #4] - mov r1, #1 - strh r1, [r0, #6] - mov r2, #0xa - mov r1, r6 - strb r2, [r0, #0x3e] - mov r2, #0x21 - strh r2, [r0, #0x2a] - bl sub_02016118 - b _02016768 -_02016760: - mov r0, #0x80 - bl sub_02015EE8 -_02016768: - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02016770: .word _020AF760 - arm_func_end sub_02016548 - - arm_func_start sub_02016774 -sub_02016774: ; 0x02016774 - stmdb sp!, {r3, lr} - mov r3, #0 - str r3, [sp] - bl sub_02016548 - ldmia sp!, {r3, pc} - arm_func_end sub_02016774 - - arm_func_start sub_02016788 -sub_02016788: ; 0x02016788 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x100 - mov r3, r0 - mov r5, r1 - mov r4, r2 - add r0, sp, #0 - mov r1, r3 - mov r2, #0 - bl sub_020175F8 - bl sub_02015570 - add r2, sp, #0 - mov r0, #0 - mov r1, #0x20 - mov r3, #2 - bl sub_02015D18 - mov r1, r4 - mov r0, #0x3b - bl sub_020156AC - mov r1, r5 - add r0, sp, #0 - bl strcpy - mov r0, #0 - mov r1, #0x52 - add r2, sp, #0 - mov r3, #2 - bl sub_02015D18 - bl sub_02015E6C - add sp, sp, #0x100 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02016788 - - arm_func_start sub_020167FC -sub_020167FC: ; 0x020167FC - stmdb sp!, {r3, lr} - mov ip, #0 - mov r3, #1 - str ip, [sp] - bl sub_02016548 - ldmia sp!, {r3, pc} - arm_func_end sub_020167FC - - arm_func_start sub_02016814 -sub_02016814: ; 0x02016814 - stmdb sp!, {r4, lr} - ldr r0, _02016880 ; =0x0000B160 - mov r1, #0 - bl MemAlloc - ldr r2, _02016884 ; =_020AF760 - ldr r1, _02016880 ; =0x0000B160 - str r0, [r2, #4] - bl MemZero - bl sub_0201F2E4 - ldr r0, _02016884 ; =_020AF760 - mov r1, #0x1000 - ldr r4, [r0, #4] - add r0, r4, #0x6000 - bl MemZero - add r0, r4, #0x7000 - mov r1, #0x4000 - bl MemZero - add r0, r4, #0xb000 - mov r1, #0x20 - bl MemZero - bl sub_02015F18 - ldr r0, _02016884 ; =_020AF760 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - str r1, [r0, #0x20] - ldmia sp!, {r4, pc} - .align 2, 0 -_02016880: .word 0x0000B160 -_02016884: .word _020AF760 - arm_func_end sub_02016814 - - arm_func_start sub_02016888 -sub_02016888: ; 0x02016888 - stmdb sp!, {r3, lr} - ldr r0, _020168C4 ; =_020AF760 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x100 - bl sub_02015EE8 - bl sub_0201F2E4 - ldr r0, _020168C4 ; =_020AF760 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _020168C4 ; =_020AF760 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020168C4: .word _020AF760 - arm_func_end sub_02016888 - - arm_func_start sub_020168C8 -sub_020168C8: ; 0x020168C8 - stmdb sp!, {r4, lr} - ldr r0, _02016934 ; =0x0000B160 - mov r1, #0 - bl MemAlloc - ldr r2, _02016938 ; =_020AF760 - ldr r1, _02016934 ; =0x0000B160 - str r0, [r2, #4] - bl MemZero - bl sub_0201F2E4 - ldr r0, _02016938 ; =_020AF760 - mov r1, #0x1000 - ldr r4, [r0, #4] - add r0, r4, #0x6000 - bl MemZero - add r0, r4, #0x7000 - mov r1, #0x4000 - bl MemZero - add r0, r4, #0xb000 - mov r1, #0x20 - bl MemZero - bl sub_02015F18 - ldr r0, _02016938 ; =_020AF760 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - str r1, [r0, #0x20] - ldmia sp!, {r4, pc} - .align 2, 0 -_02016934: .word 0x0000B160 -_02016938: .word _020AF760 - arm_func_end sub_020168C8 - - arm_func_start sub_0201693C -sub_0201693C: ; 0x0201693C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x104 - mov r3, r0 - mov r4, r1 - mov r6, r2 - add r0, sp, #4 - mov r1, r3 - mov r2, #1 - bl sub_020175F8 - mov r2, #2 - ldr r0, _02016BB4 ; =_020AF760 - str r2, [sp] - ldr r0, [r0, #4] - add r3, sp, #4 - mov r1, r4 - bl sub_0201770C - bl sub_020164AC - ldr r0, _02016BB4 ; =_020AF760 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - str r1, [r0, #0x150] - bl sub_0201F36C - ldr r1, _02016BB4 ; =_020AF760 - ldr r1, [r1, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x90] - bl sub_0201F36C - ldr r1, _02016BB4 ; =_020AF760 - ldr r1, [r1, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0xc0] - bl sub_0201F36C - ldr r2, _02016BB4 ; =_020AF760 - ldr r1, [r2, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x60] - ldr r1, [r2, #4] - add r0, r1, #0x90 - add r5, r0, #0xb000 - add r0, r1, #0xb000 - ldrsh r0, [r0, #0x90] - bl sub_0201F324 - mov r1, #0 - mov r4, r0 - strb r1, [r4, #0x3c] - mov r2, r1 - mov r3, #2 - bl sub_0201604C - ldrsh r0, [r4, #0x1a] - mov r2, #0x20 - mov r1, #1 - add r0, r0, r0, lsr #31 - mov r3, r0, asr #1 - rsb r0, r3, #0 - strh r0, [r4] - strh r2, [r4, #2] - strb r1, [r4, #0x3e] - strh r3, [r4, #8] - mov r0, #0 - strh r0, [r4, #0xa] - mov r0, #0x21 - strh r0, [r4, #0x2a] - ldrsh r0, [r4] - mov r2, #0x6000 - mov r1, #0xff00 - mov r0, r0, lsl #8 - str r0, [r5, #4] - ldrsh r3, [r4, #2] - ldr r0, _02016BB4 ; =_020AF760 - mov r3, r3, lsl #8 - str r3, [r5, #8] - str r2, [r5, #0xc] - ldr r2, [r5, #8] - str r2, [r5, #0x10] - str r1, [r5, #0x24] - ldr r1, [r0, #4] - add r0, r1, #0x30c0 - add r5, r0, #0x8000 - add r0, r1, #0xb000 - ldrsh r0, [r0, #0xc0] - bl sub_0201F324 - mov r1, #0x1000 - mov r2, #0 - mov r3, #2 - mov r4, r0 - bl sub_0201604C - ldrsh r0, [r4, #0x1a] - mov r2, #0 - mov r1, #0x52 - add r0, r0, r0, lsr #31 - mov r3, r0, asr #1 - strb r2, [r4, #0x3c] - add r0, r3, #0x100 - strh r0, [r4] - strh r1, [r4, #2] - mov r0, #1 - strb r0, [r4, #0x3e] - strh r3, [r4, #8] - strh r2, [r4, #0xa] - mov r0, #0x21 - strh r0, [r4, #0x2a] - ldrsh r0, [r4] - mov r2, #0xa000 - mov r1, #0xff00 - mov r0, r0, lsl #8 - str r0, [r5, #4] - ldrsh r3, [r4, #2] - ldr r0, _02016BB4 ; =_020AF760 - mov r3, r3, lsl #8 - str r3, [r5, #8] - str r2, [r5, #0xc] - ldr r2, [r5, #8] - str r2, [r5, #0x10] - str r1, [r5, #0x24] - ldr r1, [r0, #4] - add r0, r1, #0xb000 - add r1, r1, #0x60 - ldrsh r0, [r0, #0x60] - add r5, r1, #0xb000 - bl sub_0201F324 - mov r4, r0 - mov r1, #2 - strb r1, [r4, #0x3c] - mvn r1, #0xff - strh r1, [r4] - mov r1, #0x3b - strh r1, [r4, #2] - mov r1, #0x100 - strh r1, [r4, #4] - mov r1, #1 - strh r1, [r4, #6] - strb r1, [r4, #0x3e] - mov r2, #0x21 - mov r1, r6 - strh r2, [r4, #0x2a] - bl sub_02016118 - ldrsh r1, [r4] - mov r2, #0x1800 - mov r0, #0xff00 - mov r1, r1, lsl #8 - str r1, [r5, #4] - ldrsh r4, [r4, #2] - ldr r1, _02016BB4 ; =_020AF760 - mov r3, #0x100 - mov r4, r4, lsl #8 - str r4, [r5, #8] - str r2, [r5, #0x14] - str r0, [r5, #0x24] - ldr r0, [r1, #4] - mov r2, #0x10 - add r0, r0, #0xb000 - str r3, [r0, #0x154] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - str r2, [r0, #0x20] - add sp, sp, #0x104 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02016BB4: .word _020AF760 - arm_func_end sub_0201693C - - arm_func_start sub_02016BB8 -sub_02016BB8: ; 0x02016BB8 - stmdb sp!, {r3, lr} - ldr r0, _02016BEC ; =_020AF760 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0201F2E4 - ldr r0, _02016BEC ; =_020AF760 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02016BEC ; =_020AF760 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02016BEC: .word _020AF760 - arm_func_end sub_02016BB8 - - arm_func_start sub_02016BF0 -sub_02016BF0: ; 0x02016BF0 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02016EA8 ; =_020AF760 - ldr r1, [r0, #4] - cmp r1, #0 - beq _02016EA0 - add r2, r1, #0xb000 - ldrsh r0, [r2, #0x60] - add r1, r1, #0x60 - add r6, r1, #0xb000 - ldr r5, [r2, #0x154] - bl sub_0201F324 - ldrb r1, [r6, #0x28] - mov r4, r0 - cmp r1, #1 - beq _02016C44 - cmp r1, #2 - beq _02016C78 - cmp r1, #3 - moveq r0, #0 - streqb r0, [r6, #0x28] - b _02016C94 -_02016C44: - ldr r1, [r6, #4] - ldr r0, [r6, #0x14] - adds r0, r1, r0 - str r0, [r6, #4] - bmi _02016C94 - ldrb r2, [r6, #0x28] - mov r1, #0 - mov r0, #0x2d - add r2, r2, #1 - strb r2, [r6, #0x28] - str r1, [r6, #4] - str r0, [r6, #0x2c] - b _02016C94 -_02016C78: - ldr r1, [r6, #0x2c] - sub r0, r1, #1 - str r0, [r6, #0x2c] - cmp r1, #0 - ldreqb r0, [r6, #0x28] - addeq r0, r0, #1 - streqb r0, [r6, #0x28] -_02016C94: - ldr r2, [r6, #4] - mov r1, r5 - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - mov r0, r0, asr #8 - strh r0, [r4] - ldr r2, [r6, #0x24] - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - mov r0, r0, asr #8 - bl MultiplyByFixedPoint - ldr r1, _02016EA8 ; =_020AF760 - strb r0, [r4, #0x2f] - ldr r0, [r1, #4] - mov r2, #0 - add r1, r0, #0xb000 - add r0, r0, #0x90 - ldr r1, [r1, #0x154] - add r0, r0, #0xb000 - bl sub_020177AC - ldr r2, _02016EA8 ; =_020AF760 - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldr r3, [r0, #0x94] - mov r1, r3, asr #7 - add r1, r3, r1, lsr #24 - mov r1, r1, asr #8 - cmp r1, #0x80 - blt _02016D48 - mov r1, #0 - str r1, [r0, #0xa4] - ldr r0, [r2, #4] - mov r1, #0x8000 - add r0, r0, #0xb000 - str r1, [r0, #0x94] - ldr r4, [r2, #4] - add r0, r4, #0xb000 - ldrsh r0, [r0, #0x90] - bl sub_0201F324 - add r1, r4, #0xb000 - ldr r2, [r1, #0x94] - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r1, r1, asr #8 - strh r1, [r0] -_02016D48: - ldr r0, _02016EA8 ; =_020AF760 - ldr r2, [r0, #4] - add r0, r2, #0xb000 - ldrsh r0, [r0, #0xc0] - add r1, r2, #0x90 - add r2, r2, #0x30c0 - add r5, r1, #0xb000 - add r4, r2, #0x8000 - bl sub_0201F324 - ldr r1, [r5, #4] - ldr r2, _02016EA8 ; =_020AF760 - rsb r3, r1, #0x10000 - mov r1, r3, asr #7 - add r1, r3, r1, lsr #24 - str r3, [r4, #4] - mov r1, r1, asr #8 - strh r1, [r0] - ldr r0, [r2, #4] - add r1, r0, #0xb000 - ldr r3, [r1, #0x20] - cmp r3, #0x14 - bhi _02016DCC - subs r0, r3, #0x10 - addpl pc, pc, r0, lsl #2 - b _02016DC0 -_02016DAC: ; jump table - b _02016DE0 ; case 0 - b _02016E00 ; case 1 - b _02016E38 ; case 2 - b _02016E64 ; case 3 - b _02016E84 ; case 4 -_02016DC0: - cmp r3, #0 - beq _02016DD8 - b _02016E98 -_02016DCC: - cmp r3, #0xff - beq _02016E90 - b _02016E98 -_02016DD8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02016DE0: - mov r0, #1 - strb r0, [r1, #0x88] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldr r1, [r0, #0x20] - add r1, r1, #1 - str r1, [r0, #0x20] - b _02016E98 -_02016E00: - ldrb r0, [r1, #0x88] - cmp r0, #0 - bne _02016E98 - mov r3, #1 - strb r3, [r1, #0xb8] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - strb r3, [r0, #0xe8] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldr r1, [r0, #0x20] - add r1, r1, #1 - str r1, [r0, #0x20] - b _02016E98 -_02016E38: - ldrb r0, [r1, #0xb8] - cmp r0, #2 - bne _02016E98 - mov r0, #0x3c - str r0, [r1, #0x150] - ldr r0, [r2, #4] - add r0, r0, #0xb000 - ldr r1, [r0, #0x20] - add r1, r1, #1 - str r1, [r0, #0x20] - b _02016E98 -_02016E64: - ldr r2, [r1, #0x94] - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - mov r0, r0, asr #8 - cmp r0, #0x80 - addge r0, r3, #1 - strge r0, [r1, #0x20] - b _02016E98 -_02016E84: - mov r0, #0xff - str r0, [r1, #0x20] - b _02016E98 -_02016E90: - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02016E98: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02016EA0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02016EA8: .word _020AF760 - arm_func_end sub_02016BF0 - - arm_func_start sub_02016EAC -sub_02016EAC: ; 0x02016EAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - bl sub_020168C8 - ldr r0, _02017128 ; =0x00000A7C - mov r1, #0 - bl MemAlloc - ldr r2, _0201712C ; =_020AF760 - ldr r1, _02017128 ; =0x00000A7C - str r0, [r2, #8] - bl MemZero - ldr r0, _02017130 ; =WAN_TABLE - ldr r1, _02017134 ; =_02099110 - ldr r0, [r0] - mov r2, #0 - bl LoadWanTableEntry - ldr r1, _0201712C ; =_020AF760 - ldr r2, _02017130 ; =WAN_TABLE - ldr r3, [r1, #8] - ldr r1, _02017138 ; =_02099124 - strh r0, [r3, #0x94] - ldr r0, [r2] - mov r2, #0 - bl LoadWanTableEntry - ldr r1, _0201712C ; =_020AF760 - ldr r1, [r1, #8] - strh r0, [r1, #0x96] - bl sub_02015F18 - ldr r0, _0201712C ; =_020AF760 - ldr r0, [r0, #8] - add r0, r0, #0x98 - bl InitAnimationControlWithSet__0201C0B0 - ldr r0, _0201712C ; =_020AF760 - ldr r1, [r0, #8] - add r0, r1, #0x98 - ldrsh r1, [r1, #0x94] - bl SetSpriteIdForAnimationControl - mov r0, #1 - str r0, [sp] - mov r2, #0 - str r2, [sp, #4] - str r2, [sp, #8] - ldr r0, _0201712C ; =_020AF760 - str r2, [sp, #0xc] - ldr r0, [r0, #8] - mov r1, #0xc - mov r3, #0x100 - add r0, r0, #0x98 - bl SetAnimationForAnimationControl - ldr r0, _0201712C ; =_020AF760 - mov r4, #0xd0 - ldr r2, [r0, #8] - mov r3, #0x6a - strh r4, [r2, #0xb4] - ldr r2, [r0, #8] - mov r1, #0 - strh r3, [r2, #0xb6] - ldr r0, [r0, #8] - add r0, r0, #0x98 - bl sub_0201D12C - ldr r0, _0201712C ; =_020AF760 - ldr r5, _0201713C ; =_02098FC8 - ldr r7, [r0, #8] - mov sb, #0 - add r6, r7, #0x114 - mov fp, #1 -_02016FB0: - mov r0, #0x7c - mla r8, sb, r0, r6 - mov r0, r8 - bl InitAnimationControlWithSet__0201C0B0 - ldrsh r1, [r7, #0x94] - mov r0, r8 - bl SetSpriteIdForAnimationControl - mov r0, #0xc - mul r4, sb, r0 - add sl, r5, r4 - bl Rand16Bit - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #25 - str fp, [sp] - add r0, r1, r0, ror #25 - stmib sp, {r0, fp} - mov r0, #0 - str r0, [sp, #0xc] - ldr r1, [r5, r4] - mov r0, r8 - mov r2, #0 - mov r3, #0x100 - bl SetAnimationForAnimationControl - ldr r1, [sl, #4] - mov r0, r8 - strh r1, [r8, #0x1c] - ldr r2, [sl, #8] - mov r1, #0 - strh r2, [r8, #0x1e] - bl sub_0201D12C - add sb, sb, #1 - cmp sb, #7 - blt _02016FB0 - ldr r0, _0201712C ; =_020AF760 - ldr r4, _02017140 ; =_02099080 - ldr r7, [r0, #8] - mov sb, #0 - add r0, r7, #0x7c - add r6, r0, #0x400 - mov r5, #0x40 - mov fp, #0xc -_02017054: - mov r0, #0x7c - mla r8, sb, r0, r6 - mov r0, r8 - bl InitAnimationControlWithSet__0201C0B0 - ldrsh r1, [r7, #0x96] - mov r0, r8 - bl SetSpriteIdForAnimationControl - strh r5, [r8, #0x38] - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - mul r0, sb, fp - mov r2, #0 - ldr r1, [r4, r0] - add sl, r4, r0 - mov r0, r8 - mov r3, r2 - bl SetAnimationForAnimationControl - ldr r0, [sl, #4] - cmp sb, #6 - strh r0, [r8, #0x1c] - ldr r0, [sl, #8] - strh r0, [r8, #0x1e] - blt _020170D8 - add r3, r7, sb, lsl #2 - ldr r2, [r3, #0xa34] - mov r0, r8 - mov r1, #0 - str r2, [r3, #0xa4c] - bl sub_0201D12C - b _020170FC -_020170D8: - bl Rand16Bit - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #28 - add r2, r1, r0, ror #28 - add r1, r7, sb, lsl #2 - str r2, [r1, #0xa4c] - mov r0, r8 - mov r1, #1 - bl sub_0201D12C -_020170FC: - add sb, sb, #1 - cmp sb, #0xc - blt _02017054 - mov r0, #2 - bl sub_0206AA5C - bl sub_0206AB98 - bl sub_0206ABB0 - mov r0, #0x2d - bl sub_0206ADA0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02017128: .word 0x00000A7C -_0201712C: .word _020AF760 -_02017130: .word WAN_TABLE -_02017134: .word _02099110 -_02017138: .word _02099124 -_0201713C: .word _02098FC8 -_02017140: .word _02099080 - arm_func_end sub_02016EAC - - arm_func_start sub_02017144 -sub_02017144: ; 0x02017144 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x104 - mov r2, r0 - mov r4, r1 - mov r1, r2 - add r0, sp, #4 - mov r2, #1 - bl sub_020175F8 - mov r1, #0 - str r1, [sp] - ldr r0, _02017310 ; =_020AF760 - add r3, sp, #4 - ldr r0, [r0, #4] - mov r1, r4 - mov r2, #2 - bl sub_0201770C - bl sub_020164AC - ldr r0, _02017310 ; =_020AF760 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - str r1, [r0, #0x150] - bl sub_0201F36C - ldr r1, _02017310 ; =_020AF760 - ldr r1, [r1, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x90] - bl sub_0201F36C - ldr r1, _02017310 ; =_020AF760 - ldr r1, [r1, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0xc0] - bl sub_0201F36C - ldr r2, _02017310 ; =_020AF760 - ldr r1, [r2, #4] - add r1, r1, #0xb000 - strh r0, [r1, #0x60] - ldr r1, [r2, #4] - add r0, r1, #0x90 - add r5, r0, #0xb000 - add r0, r1, #0xb000 - ldrsh r0, [r0, #0x90] - bl sub_0201F324 - mov r1, #0 - mov r4, r0 - strb r1, [r4, #0x3c] - sub r2, r1, #0x100 - strh r2, [r4] - mov r2, #0x20 - strh r2, [r4, #2] - mov r2, #1 - strb r2, [r4, #0x3e] - mov r3, #0x21 - strh r3, [r4, #0x2a] - mov r3, #2 - bl sub_0201604C - ldrsh r0, [r4] - mov r2, #0x2000 - mov r1, #0xff00 - mov r0, r0, lsl #8 - str r0, [r5, #4] - ldrsh r3, [r4, #2] - ldr r0, _02017310 ; =_020AF760 - mov r3, r3, lsl #8 - str r3, [r5, #8] - str r2, [r5, #0xc] - ldr r2, [r5, #8] - str r2, [r5, #0x10] - str r1, [r5, #0x24] - ldr r1, [r0, #4] - add r0, r1, #0x30c0 - add r5, r0, #0x8000 - add r0, r1, #0xb000 - ldrsh r0, [r0, #0xc0] - bl sub_0201F324 - mov r4, r0 - mov r2, #0 - strb r2, [r4, #0x3c] - mov r1, #0x180 - strh r1, [r4] - mov r1, #0x52 - strh r1, [r4, #2] - mov r1, #0x80 - strh r1, [r4, #8] - strh r2, [r4, #0xa] - mov r1, #0x21 - strh r1, [r4, #0x2a] - mov r1, #1 - strb r1, [r4, #0x3e] - mov r1, #0x1000 - mov r3, #2 - bl sub_0201604C - ldrsh r1, [r4] - mov r2, #0x8000 - mov r0, #0xff00 - mov r1, r1, lsl #8 - str r1, [r5, #4] - ldrsh r4, [r4, #2] - ldr r1, _02017310 ; =_020AF760 - mov r3, #0x100 - mov r4, r4, lsl #8 - str r4, [r5, #8] - str r2, [r5, #0xc] - ldr r4, [r5, #8] - mov r2, #0x10 - str r4, [r5, #0x10] - str r0, [r5, #0x24] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - str r3, [r0, #0x154] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - str r2, [r0, #0x20] - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02017310: .word _020AF760 - arm_func_end sub_02017144 - - arm_func_start sub_02017314 -sub_02017314: ; 0x02017314 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r0, _02017588 ; =_020AF760 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0201757C - bl sub_0206ADB8 - bl sub_0206AD4C - cmp r0, #0 - bne _0201757C - ldr r0, _02017588 ; =_020AF760 - mov r2, #1 - ldmib r0, {r3, r4} - add r1, r3, #0xb000 - add r0, r3, #0x90 - ldr r1, [r1, #0x154] - add r0, r0, #0xb000 - bl sub_020177AC - ldr r0, _02017588 ; =_020AF760 - mov r2, #1 - ldr r0, [r0, #4] - add r1, r0, #0xb000 - add r0, r0, #0x30c0 - ldr r1, [r1, #0x154] - add r0, r0, #0x8000 - bl sub_020177AC - ldr r1, _02017588 ; =_020AF760 - ldr r5, [r1, #4] - add r0, r5, #0xb000 - ldr r3, [r0, #0x20] - cmp r3, #0x13 - bhi _020173BC - subs r2, r3, #0x10 - addpl pc, pc, r2, lsl #2 - b _020173B0 -_020173A0: ; jump table - b _020173D0 ; case 0 - b _020173FC ; case 1 - b _02017438 ; case 2 - b _02017464 ; case 3 -_020173B0: - cmp r3, #0 - beq _020173C8 - b _020174A8 -_020173BC: - cmp r3, #0xff - beq _020174A0 - b _020174A8 -_020173C8: - mov r0, #0 - b _02017580 -_020173D0: - mov r2, #1 - strb r2, [r0, #0xb8] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - strb r2, [r0, #0xe8] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - ldr r1, [r0, #0x20] - add r1, r1, #1 - str r1, [r0, #0x20] - b _020174A8 -_020173FC: - ldr r1, [r0, #0xd4] - cmp r1, #0 - ldrne r0, [r0, #0xa4] - cmpne r0, #0 - bne _020174A8 - add r0, r5, #0xb000 - ldr r2, [r0, #0x20] - ldr r1, _02017588 ; =_020AF760 - add r2, r2, #1 - str r2, [r0, #0x20] - ldr r0, [r1, #4] - mov r1, #0x14 - add r0, r0, #0xb000 - str r1, [r0, #0x150] - b _020174A8 -_02017438: - ldr r2, [r0, #0x150] - sub r2, r2, #1 - str r2, [r0, #0x150] - ldr r0, [r1, #4] - add r0, r0, #0xb000 - ldr r1, [r0, #0x150] - cmp r1, #0 - ldreq r1, [r0, #0x20] - addeq r1, r1, #1 - streq r1, [r0, #0x20] - b _020174A8 -_02017464: - add r0, r4, #0x98 - bl sub_0201CF5C - add r0, r4, #0x98 - bl sub_0201D1B0 - cmp r0, #0 - bne _020174A8 - ldr r0, _02017588 ; =_020AF760 - mov r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0xb000 - ldr r2, [r0, #0x20] - add r2, r2, #1 - str r2, [r0, #0x20] - strb r1, [r4, #0x478] - b _020174A8 -_020174A0: - mov r0, #2 - b _02017580 -_020174A8: - ldrb r0, [r4, #0x478] - cmp r0, #0 - beq _020174D4 - mov r7, #0 - add r6, r4, #0x114 - mov r5, #0x7c -_020174C0: - mla r0, r7, r5, r6 - bl sub_0201CF5C - add r7, r7, #1 - cmp r7, #7 - blt _020174C0 -_020174D4: - mov r8, #0 - add r0, r4, #0x7c - add r7, r0, #0x400 - mov fp, r8 - mov r6, #1 - mov r5, #0x7c -_020174EC: - add r1, r4, r8, lsl #2 - ldr r0, [r1, #0xa4c] - cmp r0, #0 - bne _02017560 - mla sb, r8, r5, r7 - mov r0, sb - bl sub_0201D1B0 - cmp r0, #0 - bne _02017554 - ldrsh sl, [sb, #0x78] - cmp sl, #0 - beq _02017554 - and r0, sl, #1 - cmp r0, #1 - mov r0, sb - addeq sl, sl, #1 - bl sub_0201C108 - str fp, [sp] - str fp, [sp, #4] - str r6, [sp, #8] - mov r0, sb - mov r1, sl - mov r2, fp - mov r3, fp - str fp, [sp, #0xc] - bl SetAnimationForAnimationControl -_02017554: - mov r0, sb - bl sub_0201CF5C - b _02017568 -_02017560: - sub r0, r0, #1 - str r0, [r1, #0xa4c] -_02017568: - add r8, r8, #1 - cmp r8, #0xc - blt _020174EC - mov r0, #1 - b _02017580 -_0201757C: - mov r0, #0 -_02017580: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02017588: .word _020AF760 - arm_func_end sub_02017A00 - - arm_func_start sub_0201758C -sub_0201758C: ; 0x0201758C - stmdb sp!, {r3, lr} - ldr r0, _020175F0 ; =_020AF760 - ldr r1, [r0, #8] - cmp r1, #0 - beq _020175E4 - ldr r0, _020175F4 ; =WAN_TABLE - ldrsh r1, [r1, #0x94] - ldr r0, [r0] - bl DeleteWanTableEntryVeneer - ldr r0, _020175F0 ; =_020AF760 - ldr r1, _020175F4 ; =WAN_TABLE - ldr r2, [r0, #8] - ldr r0, [r1] - ldrsh r1, [r2, #0x96] - bl DeleteWanTableEntryVeneer - ldr r0, _020175F0 ; =_020AF760 - ldr r0, [r0, #8] - bl MemFree - ldr r0, _020175F0 ; =_020AF760 - mov r1, #0 - str r1, [r0, #8] - bl ov10_022BDADC -_020175E4: - bl sub_0206BA5C - bl sub_02016BB8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020175F0: .word _020AF760 -_020175F4: .word WAN_TABLE - arm_func_end sub_0201758C - - arm_func_start sub_020175F8 -sub_020175F8: ; 0x020175F8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x80 -#ifdef JAPAN - mov r8, r0 - cmp r2, #0 - movne r7, #0x3a - mov sb, r1 - mvn r0, #0 - moveq r7, #0x38 - cmp sb, r0 - beq _02017708 - mov r0, sb - mov r1, #0x64 - add r4, sp, #0 - bl _u32_div_f - and r6, r0, #0xff - mov r0, sb - mov r1, #0xa - bl _u32_div_f - and r5, r0, #0xff - mov r0, sb - mov r1, #0xa - bl _u32_div_f - cmp r6, #0 - and r2, r1, #0xff - addne r0, r6, #0x4f - movne r1, #0x82 - strneb r1, [r4] - strneb r0, [r4, #1] - addne r4, r4, #2 - cmp r5, #0 - beq _020176B4 - mov r0, #0x82 - strb r0, [r4] - add r0, r5, #0x4f - strb r0, [r4, #1] - add r4, r4, #2 - b _020176CC_JP -_020176B4: - cmp r6, #0 - movne r0, #0x82 - strneb r0, [r4] - addne r0, r5, #0x4f - strneb r0, [r4, #1] - addne r4, r4, #2 -_020176CC_JP: - mov r0, #0x82 - strb r0, [r4] - add r2, r2, #0x4f - strb r2, [r4, #1] - mov r2, #0 - add r0, sp, #0x40 - mov r1, r7 - strb r2, [r4, #2] - bl GetStringFromFileVeneer - ldr r1, _020176DC ; =_02099138 - add r2, sp, #0x40 - add r3, sp, #0 - mov r0, r8 - bl SprintfStatic__020176E4 - b _020176CC -_02017708: - add r0, sp, #0 - mov r1, #0x39 - bl GetStringFromFileVeneer - add r0, sp, #0x40 - mov r1, r7 - bl GetStringFromFileVeneer - ldr r1, _020176DC ; =_02099138 - add r2, sp, #0x40 - add r3, sp, #0 - mov r0, r8 -#else - cmp r2, #0 - ldrne r5, _020176D4 ; =0x00000171 - mov r6, r0 - mov sb, r1 - mvn r0, #0 - ldreq r5, _020176D8 ; =0x0000016F - cmp sb, r0 - beq _020176B0 - mov r0, sb - mov r1, #0x64 - add r4, sp, #0 - bl _u32_div_f - and r8, r0, #0xff - mov r0, sb - mov r1, #0xa - bl _u32_div_f - and r7, r0, #0xff - mov r0, sb - mov r1, #0xa - bl _u32_div_f - cmp r8, #0 - addne r0, r8, #0x30 - strneb r0, [r4], #1 - cmp r7, #0 - addne r0, r7, #0x30 - and r1, r1, #0xff - strneb r0, [r4], #1 - bne _0201767C - cmp r8, #0 - addne r0, r7, #0x30 - strneb r0, [r4], #1 -_0201767C: - add r2, r1, #0x30 - strb r2, [r4] - mov r2, #0 - add r0, sp, #0x40 - mov r1, r5 - strb r2, [r4, #1] - bl GetStringFromFileVeneer - ldr r1, _020176DC ; =_02099138 - add r2, sp, #0x40 - add r3, sp, #0 - mov r0, r6 - bl SprintfStatic__020176E4 - b _020176CC -_020176B0: - add r0, sp, #0x40 - mov r1, #0x170 - bl GetStringFromFileVeneer - ldr r1, _020176E0 ; =_02099140 - add r2, sp, #0x40 - mov r0, r6 -#endif - bl SprintfStatic__020176E4 -_020176CC: - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -#ifdef JAPAN -_020176DC: .word _02099138 -#else -_020176D4: .word 0x00000171 -_020176D8: .word 0x0000016F -_020176DC: .word _02099138 -_020176E0: .word _02099140 -#endif - arm_func_end sub_020175F8 - - arm_func_start SprintfStatic__020176E4 -SprintfStatic__020176E4: ; 0x020176E4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__020176E4 - - arm_func_start sub_0201770C -sub_0201770C: ; 0x0201770C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r1, #0x6000 - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl MemZero - ldr r2, [sp, #0x18] - mov r1, #0 - mov r0, r7 - str r2, [sp] - mov r2, r1 - mov r3, r4 - bl sub_0201578C - add r0, r7, #0x6000 - mov r1, r7 - mov r2, #0x20 - bl sub_02015FDC - add r0, r7, #0x6000 - mov r1, #0 - mov r2, #0x1000 - bl sub_02016038 - mov r0, r7 - mov r1, #0x6000 - bl MemZero - str r5, [sp] - mov r3, r6 - mov r0, r7 - mov r1, #0 - mov r2, r1 - bl sub_0201578C - add r0, r7, #0x7000 - mov r1, r7 - mov r2, #0x80 - bl sub_02015FDC - add r0, r7, #0x7000 - mov r1, #0x1000 - mov r2, #0x4000 - bl sub_02016038 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0201770C - - arm_func_start sub_020177AC -sub_020177AC: ; 0x020177AC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldrsh r0, [r6] - mov r5, r1 - mov r7, r2 - bl sub_0201F324 - ldrb r1, [r6, #0x28] - mov r4, r0 - cmp r1, #1 - beq _020177E8 - cmp r1, #2 - beq _02017848 - cmp r1, #3 - beq _02017858 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020177E8: - cmp r7, #0 - mov r3, #0x80 - beq _02017820 - mov r0, #0 - str r0, [sp] - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - add r0, r6, #0x14 - bl ov10_022C2528 - cmp r0, #0 - ldrneb r0, [r6, #0x28] - addne r0, r0, #1 - strneb r0, [r6, #0x28] - b _02017868 -_02017820: - str r3, [sp] - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - add r0, r6, #0x14 - bl ov10_022C2528 - cmp r0, #0 - ldrneb r0, [r6, #0x28] - addne r0, r0, #1 - strneb r0, [r6, #0x28] - b _02017868 -_02017848: - cmp r5, #0 - addeq r0, r1, #1 - streqb r0, [r6, #0x28] - b _02017868 -_02017858: - mov r0, #0xff - strb r0, [r6, #0x28] - mov r0, #0 - str r0, [r6, #0x14] -_02017868: - ldr r2, [r6, #4] - ldr r0, [r6, #0x14] - mov r1, r5 - add r2, r2, r0 - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - str r2, [r6, #4] - mov r0, r0, asr #8 - strh r0, [r4] - ldr r2, [r6, #0x24] - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - mov r0, r0, asr #8 - bl MultiplyByFixedPoint - strb r0, [r4, #0x2f] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_020177AC - - arm_func_start sub_020178A8 -sub_020178A8: ; 0x020178A8 - stmdb sp!, {r4, r5, r6, r7, lr} -#ifdef EUROPE - sub sp, sp, #0x254 - mov r4, r1 - and r1, r4, #0xff - mov r7, r0 - bl sub_0204F77C - mov r5, r0 - cmp r5, r7 - and r6, r4, #0xff - beq _020179BC - bl GetNbFloors - cmp r0, #1 - moveq r6, #0 -_020179BC: - mov r1, r7 - and r2, r4, #0xff - mov r0, #2 - bl sub_0204F6F8 - mov r4, r0 - add r0, sp, #4 - bl InitPreprocessorArgs - mov r0, r5 - bl DungeonGoesUp - cmp r0, #0 - movne r2, r6 - rsbeq r2, r6, #0 - ldr r1, _020179FC ; =_020AF76C - add r0, sp, #0x54 - str r2, [sp, #0x28] - bl SprintfStatic__02017A40 - add r5, sp, #4 - add r0, sp, #0x154 - add r2, sp, #0x54 - mov r1, #0x100 - mov r3, #0 - str r5, [sp] - bl PreprocessString - bl sub_02015570 - cmp r6, #0 - mov r0, r4 - beq _02017A70 - bl sub_020155FC - mov r1, #0x18 - mul r1, r0, r1 - add r0, r1, #0x38 - rsb r5, r0, #0xc0 - mov r0, r5, asr #1 - mov r1, r4 - bl sub_02015E44 - sub r1, r0, #1 - mov r0, #0x18 - mul r0, r1, r0 - add r0, r0, r5, asr #1 - add r1, r0, #0x20 - add r2, sp, #0x154 - mov r0, #0 - mov r3, #2 - bl sub_02015D18 - b _02017A8C -_02017A70: - bl sub_020155FC - mov r1, #0x18 - mul r1, r0, r1 - rsb r0, r1, #0xc0 - mov r1, r4 - mov r0, r0, asr #1 - bl sub_02015E44 -_02017A8C: - bl sub_02015E6C - add sp, sp, #0x254 -#else - sub sp, sp, #0x104 - mov r5, r1 - and r1, r5, #0xff - mov r7, r0 - bl sub_0204F77C - mov r6, r0 - cmp r6, r7 - and r4, r5, #0xff - beq _020178DC - bl GetNbFloors - cmp r0, #1 - moveq r4, #0 -_020178DC: - mov r1, r7 - and r2, r5, #0xff - mov r0, #2 - bl sub_0204F6F8 - mov r5, r0 - mov r0, r6 - bl DungeonGoesUp - cmp r0, #0 - ldrne r0, _020179FC ; =_020AF76C - ldrne r7, [r0] - ldreq r0, _020179FC ; =_020AF76C - ldreq r7, [r0, #4] - cmp r4, #0xa - blo _02017954 - mov r0, r4 - mov r1, #0xa - bl _s32_div_f - mov r6, r0 - mov r0, r4 - mov r1, #0xa - bl _s32_div_f - add r1, r1, #0x30 - ldr r0, _020179FC ; =_020AF76C - str r1, [sp] - ldr r1, [r0, #8] - add r0, sp, #4 - mov r2, r7 - add r3, r6, #0x30 - bl SprintfStatic__02017A40 - b _0201797C -_02017954: - cmp r4, #0 - moveq r0, #0 - streqb r0, [sp, #4] - beq _0201797C - ldr r1, _020179FC ; =_020AF76C - add r0, sp, #4 - ldr r1, [r1, #0xc] - mov r2, r7 - add r3, r4, #0x30 - bl SprintfStatic__02017A40 -_0201797C: - bl sub_02015570 - cmp r4, #0 - mov r0, r5 - beq _020179D4 - bl sub_020155FC - mov r1, #0x18 - mul r1, r0, r1 - add r0, r1, #0x38 - rsb r4, r0, #0xc0 - mov r0, r4, asr #1 - mov r1, r5 - bl sub_02015E44 - sub r1, r0, #1 - mov r0, #0x18 - mul r0, r1, r0 - add r0, r0, r4, asr #1 - add r1, r0, #0x20 - add r2, sp, #4 - mov r0, #0 - mov r3, #2 - bl sub_02015D18 - b _020179F0 -_020179D4: - bl sub_020155FC - mov r1, #0x18 - mul r1, r0, r1 - rsb r0, r1, #0xc0 - mov r1, r5 - mov r0, r0, asr #1 - bl sub_02015E44 -_020179F0: - bl sub_02015E6C - add sp, sp, #0x104 -#endif - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -#ifdef EUROPE -_020179FC: .word _0209958C -#else -_020179FC: .word _020AF76C -#endif - arm_func_end sub_020178A8 - - arm_func_start sub_02017A00 -sub_02017A00: ; 0x02017A00 - stmdb sp!, {r3, lr} - bl sub_02015570 - ldr r1, _02017A1C ; =0x000044BD - mov r0, #0x3e - bl sub_02015E44 - bl sub_02015E6C - ldmia sp!, {r3, pc} - .align 2, 0 -#if defined(EUROPE) -_02017A1C: .word 0x000044BF -#elif defined(JAPAN) -_02017A1C: .word 0x0000076D -#else -_02017A1C: .word 0x000044BD -#endif - arm_func_end sub_02017A00 - - arm_func_start sub_02017A20 -sub_02017A20: ; 0x02017A20 - stmdb sp!, {r3, lr} - bl sub_02015570 -#ifdef JAPAN - mov r0, #0x3e - add r1, r0, #0x730 -#else - ldr r1, _02017A3C ; =0x000044BE - mov r0, #0x3e -#endif - bl sub_02015E44 - bl sub_02015E6C - ldmia sp!, {r3, pc} - .align 2, 0 -#if defined(EUROPE) -_02017A3C: .word 0x000044C0 -#elif !defined(JAPAN) -_02017A3C: .word 0x000044BE -#endif - arm_func_end sub_02017A20 - - arm_func_start SprintfStatic__02017A40 -SprintfStatic__02017A40: ; 0x02017A40 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02017A40 - - arm_func_start sub_02017A68 -sub_02017A68: ; 0x02017A68 - ldr r0, _02017A7C ; =_022A4BE8 - mov r1, #0 - strh r1, [r0, #2] - strh r1, [r0] - bx lr - .align 2, 0 -_02017A7C: .word _022A4BE8 - arm_func_end sub_02017A68 - - arm_func_start sub_02017A80 -sub_02017A80: ; 0x02017A80 - ldr r0, _02017AAC ; =_022A4BE8 - ldrsh r1, [r0, #2] - cmp r1, #0 - subgt r1, r1, #1 - strgth r1, [r0, #2] - ldr r0, _02017AAC ; =_022A4BE8 - ldrsh r1, [r0] - cmp r1, #0 - subgt r1, r1, #1 - strgth r1, [r0] - bx lr - .align 2, 0 -_02017AAC: .word _022A4BE8 - arm_func_end sub_02017A80 - - arm_func_start sub_02017AB0 -sub_02017AB0: ; 0x02017AB0 - stmdb sp!, {r3, lr} - bl StopBgmCommand - bl sub_02018118 - bl sub_02018278 - mov r0, #0x3f00 - bl sub_02018428 - ldmia sp!, {r3, pc} - arm_func_end sub_02017AB0 - - arm_func_start sub_02017ACC -sub_02017ACC: ; 0x02017ACC - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02017F28 - mov r0, r4 - bl sub_02018158 - ldr r0, _02017AFC ; =0x000003E6 - mov r1, r4 - bl sub_02018460 - mov r1, r4 - mov r0, #0x3f00 - bl sub_02018460 - ldmia sp!, {r4, pc} - .align 2, 0 -_02017AFC: .word 0x000003E6 - arm_func_end sub_02017ACC - - arm_func_start sub_02017B00 -sub_02017B00: ; 0x02017B00 - ldr ip, _02017B08 ; =sub_02017D80 - bx ip - .align 2, 0 -_02017B08: .word sub_02017D80 - arm_func_end sub_02017B00 - - arm_func_start sub_02017B0C -sub_02017B0C: ; 0x02017B0C - ldr ip, _02017B14 ; =sub_02017DE8 - bx ip - .align 2, 0 -_02017B14: .word sub_02017DE8 - arm_func_end sub_02017B0C - - arm_func_start sub_02017B18 -sub_02017B18: ; 0x02017B18 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02017D80 - ldr r1, _02017B54 ; =0x000003E7 - cmp r4, r1 - bne _02017B40 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - b _02017B4C -_02017B40: - cmp r0, r4 - moveq r0, #1 - movne r0, #0 -_02017B4C: - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02017B54: .word 0x000003E7 - arm_func_end sub_02017B18 - - arm_func_start PlayBgmByIdVeneer -PlayBgmByIdVeneer: ; 0x02017B58 - ldr ip, _02017B60 ; =PlayBgmById - bx ip - .align 2, 0 -_02017B60: .word PlayBgmById - arm_func_end PlayBgmByIdVeneer - - arm_func_start PlayBgmByIdVolumeVeneer -PlayBgmByIdVolumeVeneer: ; 0x02017B64 - ldr ip, _02017B6C ; =PlayBgmByIdVolume - bx ip - .align 2, 0 -_02017B6C: .word PlayBgmByIdVolume - arm_func_end PlayBgmByIdVolumeVeneer - - arm_func_start sub_02017B70 -sub_02017B70: ; 0x02017B70 - ldr ip, _02017B78 ; =StopBgmCommand - bx ip - .align 2, 0 -_02017B78: .word StopBgmCommand - arm_func_end sub_02017B70 - - arm_func_start sub_02017B7C -sub_02017B7C: ; 0x02017B7C - ldr ip, _02017B84 ; =sub_02017F28 - bx ip - .align 2, 0 -_02017B84: .word sub_02017F28 - arm_func_end sub_02017B7C - - arm_func_start sub_02017B88 -sub_02017B88: ; 0x02017B88 - ldr ip, _02017B90 ; =sub_02017F64 - bx ip - .align 2, 0 -_02017B90: .word sub_02017F64 - arm_func_end sub_02017B88 - - arm_func_start sub_02017B94 -sub_02017B94: ; 0x02017B94 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02017FBC - ldr r1, _02017BD0 ; =0x000003E7 - cmp r4, r1 - bne _02017BBC - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - b _02017BC8 -_02017BBC: - cmp r0, r4 - moveq r0, #1 - movne r0, #0 -_02017BC8: - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02017BD0: .word 0x000003E7 - arm_func_end sub_02017B94 - - arm_func_start sub_02017BD4 -sub_02017BD4: ; 0x02017BD4 - ldr ip, _02017BDC ; =sub_02018024 - bx ip - .align 2, 0 -_02017BDC: .word sub_02018024 - arm_func_end sub_02017BD4 - - arm_func_start sub_02017BE0 -sub_02017BE0: ; 0x02017BE0 - ldr ip, _02017BE8 ; =sub_020180A0 - bx ip - .align 2, 0 -_02017BE8: .word sub_020180A0 - arm_func_end sub_02017BE0 - - arm_func_start sub_02017BEC -sub_02017BEC: ; 0x02017BEC - ldr ip, _02017BF4 ; =sub_02018118 - bx ip - .align 2, 0 -_02017BF4: .word sub_02018118 - arm_func_end sub_02017BEC - - arm_func_start sub_02017BF8 -sub_02017BF8: ; 0x02017BF8 - ldr ip, _02017C00 ; =sub_02018158 - bx ip - .align 2, 0 -_02017C00: .word sub_02018158 - arm_func_end sub_02017BF8 - - arm_func_start sub_02017C04 -sub_02017C04: ; 0x02017C04 - ldr ip, _02017C0C ; =sub_02018194 - bx ip - .align 2, 0 -_02017C0C: .word sub_02018194 - arm_func_end sub_02017C04 - - arm_func_start IsMePlaying -IsMePlaying: ; 0x02017C10 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_020181E0 - ldr r1, _02017C4C ; =0x000003E6 - cmp r4, r1 - bne _02017C38 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - b _02017C44 -_02017C38: - cmp r0, r4 - moveq r0, #1 - movne r0, #0 -_02017C44: - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02017C4C: .word 0x000003E6 - arm_func_end IsMePlaying - - arm_func_start sub_02017C50 -sub_02017C50: ; 0x02017C50 - ldr ip, _02017C58 ; =PlayMeById - bx ip - .align 2, 0 -_02017C58: .word PlayMeById - arm_func_end sub_02017C50 - - arm_func_start sub_02017C5C -sub_02017C5C: ; 0x02017C5C - ldr ip, _02017C64 ; =sub_02018278 - bx ip - .align 2, 0 -_02017C64: .word sub_02018278 - arm_func_end sub_02017C5C - - arm_func_start sub_02017C68 -sub_02017C68: ; 0x02017C68 - ldr ip, _02017C70 ; =sub_020182AC - bx ip - .align 2, 0 -_02017C70: .word sub_020182AC - arm_func_end sub_02017C68 - - arm_func_start sub_02017C74 -sub_02017C74: ; 0x02017C74 - ldr ip, _02017C7C ; =PlaySeByIdVolume - bx ip - .align 2, 0 -_02017C7C: .word PlaySeByIdVolume - arm_func_end sub_02017C74 - - arm_func_start PlaySeByIdVolumeWrapper -PlaySeByIdVolumeWrapper: ; 0x02017C80 - ldr ip, _02017C8C ; =PlaySeByIdVolume - mov r1, #0x100 - bx ip - .align 2, 0 -_02017C8C: .word PlaySeByIdVolume - arm_func_end PlaySeByIdVolumeWrapper - - arm_func_start sub_02017C90 -sub_02017C90: ; 0x02017C90 - ldr ip, _02017C98 ; =sub_0201831C - bx ip - .align 2, 0 -_02017C98: .word sub_0201831C - arm_func_end sub_02017C90 - - arm_func_start sub_02017C9C -sub_02017C9C: ; 0x02017C9C - ldr ip, _02017CA4 ; =sub_020183A0 - bx ip - .align 2, 0 -_02017CA4: .word sub_020183A0 - arm_func_end sub_02017C9C - - arm_func_start sub_02017CA8 -sub_02017CA8: ; 0x02017CA8 - ldr ip, _02017CB0 ; =sub_020183E4 - bx ip - .align 2, 0 -_02017CB0: .word sub_020183E4 - arm_func_end sub_02017CA8 - - arm_func_start sub_02017CB4 -sub_02017CB4: ; 0x02017CB4 - ldr ip, _02017CBC ; =sub_02018428 - bx ip - .align 2, 0 -_02017CBC: .word sub_02018428 - arm_func_end sub_02017CB4 - - arm_func_start sub_02017CC0 -sub_02017CC0: ; 0x02017CC0 - ldr ip, _02017CC8 ; =sub_02018460 - bx ip - .align 2, 0 -_02017CC8: .word sub_02018460 - arm_func_end sub_02017CC0 - - arm_func_start PlaySeVolumeWrapper -PlaySeVolumeWrapper: ; 0x02017CCC - ldr r1, _02017CE4 ; =_0209915C - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - ldr ip, _02017CE8 ; =PlaySeByIdVolume - mov r1, #0x100 - bx ip - .align 2, 0 -_02017CE4: .word _0209915C -_02017CE8: .word PlaySeByIdVolume - arm_func_end PlaySeVolumeWrapper - - arm_func_start sub_02017CEC -sub_02017CEC: ; 0x02017CEC - stmdb sp!, {r3, lr} - ldr r2, _02017D18 ; =_022A4BE8 - ldrsh r0, [r2] - cmp r0, #0 - ldmgtia sp!, {r3, pc} - ldr r0, _02017D1C ; =0x00003F05 - mov r3, #3 - mov r1, #0x100 - strh r3, [r2] - bl PlaySeByIdVolume - ldmia sp!, {r3, pc} - .align 2, 0 -_02017D18: .word _022A4BE8 -_02017D1C: .word 0x00003F05 - arm_func_end sub_02017CEC - - arm_func_start sub_02017D20 -sub_02017D20: ; 0x02017D20 - stmdb sp!, {r3, lr} - bl sub_020184CC - bl sub_02018B50 - ldr r2, _02017D74 ; =0x000003E7 - ldr r0, _02017D78 ; =_022A4BEC - mov r1, #0 - strh r2, [r0] - strh r2, [r0, #2] - strh r1, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - strh r1, [r0, #0xa] - sub r1, r2, #1 - strh r1, [r0, #0xc] - mov r1, #0x3f00 - strh r1, [r0, #0x10] - bl sub_02018C0C - ldr r0, _02017D7C ; =_020AF77C - mov r1, #1 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02017D74: .word 0x000003E7 -_02017D78: .word _022A4BEC -_02017D7C: .word _020AF77C - arm_func_end sub_02017D20 - - arm_func_start sub_02017D80 -sub_02017D80: ; 0x02017D80 - stmdb sp!, {r3, lr} - bl sub_02019824 - ldr r2, _02017DAC ; =0x000003E7 - cmp r0, r2 - ldreq r1, _02017DB0 ; =_022A4BEC - moveq r0, r2 - streqh r2, [r1] - ldrne r0, _02017DB0 ; =_022A4BEC - streqh r2, [r1, #2] - ldrneh r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02017DAC: .word 0x000003E7 -_02017DB0: .word _022A4BEC - arm_func_end sub_02017D80 - - arm_func_start sub_02017DB4 -sub_02017DB4: ; 0x02017DB4 - stmdb sp!, {r3, lr} - bl sub_02019824 - ldr r2, _02017DE0 ; =0x000003E7 - cmp r0, r2 - ldreq r1, _02017DE4 ; =_022A4BEC - moveq r0, r2 - streqh r2, [r1] - ldrne r0, _02017DE4 ; =_022A4BEC - streqh r2, [r1, #2] - ldrneh r0, [r0, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_02017DE0: .word 0x000003E7 -_02017DE4: .word _022A4BEC - arm_func_end sub_02017DB4 - - arm_func_start sub_02017DE8 -sub_02017DE8: ; 0x02017DE8 - ldr ip, _02017DF0 ; =IsSongOver - bx ip - .align 2, 0 -_02017DF0: .word IsSongOver - arm_func_end sub_02017DE8 - - arm_func_start PlayBgmById -PlayBgmById: ; 0x02017DF4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02017E68 ; =0x000003E7 - mov r5, r0 - cmp r5, r1 - ldrne r0, _02017E6C ; =_022A4BEC - ldrneh r0, [r0, #2] - cmpne r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - bl sub_02018B50 - ldr r1, _02017E6C ; =_022A4BEC - mov r2, #0x100 - strh r5, [r1] - strh r5, [r1, #2] - mov r0, #3 - strh r2, [r1, #4] - bl AllocAudioCommand - mov r4, r0 - mov r0, #3 - strh r5, [r4, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r1, #0 - moveq r1, #0x100 - strh r1, [r4, #6] - mov r1, #0 - mov r0, r4 - strh r1, [r4, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02017E68: .word 0x000003E7 -_02017E6C: .word _022A4BEC - arm_func_end PlayBgmById - - arm_func_start PlayBgmByIdVolume -PlayBgmByIdVolume: ; 0x02017E70 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _02017EE0 ; =0x000003E7 - mov r6, r0 - cmp r6, r3 - ldrne r0, _02017EE4 ; =_022A4BEC - mov r5, r1 - ldrneh r0, [r0, #2] - mov r4, r2 - cmpne r6, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_02018B50 - ldr r1, _02017EE4 ; =_022A4BEC - mov r0, #3 - strh r6, [r1] - strh r6, [r1, #2] - strh r4, [r1, #4] - bl AllocAudioCommand - mov r7, r0 - mov r0, #3 - strh r6, [r7, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r4, #0 - strh r4, [r7, #6] - mov r0, r7 - strh r5, [r7, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02017EE0: .word 0x000003E7 -_02017EE4: .word _022A4BEC - arm_func_end PlayBgmByIdVolume - - arm_func_start StopBgmCommand -StopBgmCommand: ; 0x02017EE8 - stmdb sp!, {r3, lr} - bl sub_02018B50 - ldr r0, _02017F20 ; =0x000003E7 - ldr r1, _02017F24 ; =_022A4BEC - mov r2, #0 - strh r0, [r1] - strh r0, [r1, #2] - mov r0, #5 - strh r2, [r1, #4] - bl AllocAudioCommand - mov r1, #0 - strh r1, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r3, pc} - .align 2, 0 -_02017F20: .word 0x000003E7 -_02017F24: .word _022A4BEC - arm_func_end StopBgmCommand - - arm_func_start sub_02017F28 -sub_02017F28: ; 0x02017F28 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02018B50 - ldr r2, _02017F5C ; =0x000003E7 - ldr r0, _02017F60 ; =_022A4BEC - mov r1, #0 - strh r2, [r0, #2] - strh r1, [r0, #4] - mov r0, #5 - bl AllocAudioCommand - strh r4, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r4, pc} - .align 2, 0 -_02017F5C: .word 0x000003E7 -_02017F60: .word _022A4BEC - arm_func_end sub_02017F28 - - arm_func_start sub_02017F64 -sub_02017F64: ; 0x02017F64 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _02017FA8 ; =_022A4BEC - ldr r2, _02017FAC ; =0x000003E7 - ldrh r3, [r3, #2] - mov r5, r0 - mov r4, r1 - cmp r3, r2 - ldmeqia sp!, {r3, r4, r5, pc} - bl sub_02018B50 - ldr r1, _02017FA8 ; =_022A4BEC - mov r0, #6 - strh r4, [r1, #4] - bl AllocAudioCommand - strh r4, [r0, #6] - strh r5, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02017FA8: .word _022A4BEC -_02017FAC: .word 0x000003E7 - arm_func_end sub_02017F64 - - arm_func_start sub_02017FB0 -sub_02017FB0: ; 0x02017FB0 - ldr ip, _02017FB8 ; =sub_02019D04 - bx ip - .align 2, 0 -_02017FB8: .word sub_02019D04 - arm_func_end sub_02017FB0 - - arm_func_start sub_02017FBC -sub_02017FBC: ; 0x02017FBC - stmdb sp!, {r3, lr} - bl sub_02019D58 - ldr r2, _02017FE8 ; =0x000003E7 - cmp r0, r2 - ldreq r1, _02017FEC ; =_022A4BEC - moveq r0, r2 - streqh r2, [r1, #6] - ldrne r0, _02017FEC ; =_022A4BEC - streqh r2, [r1, #8] - ldrneh r0, [r0, #6] - ldmia sp!, {r3, pc} - .align 2, 0 -_02017FE8: .word 0x000003E7 -_02017FEC: .word _022A4BEC - arm_func_end sub_02017FBC - - arm_func_start sub_02017FF0 -sub_02017FF0: ; 0x02017FF0 - stmdb sp!, {r3, lr} - bl sub_02019D58 - ldr r2, _0201801C ; =0x000003E7 - cmp r0, r2 - ldreq r1, _02018020 ; =_022A4BEC - moveq r0, r2 - streqh r2, [r1, #6] - ldrne r0, _02018020 ; =_022A4BEC - streqh r2, [r1, #8] - ldrneh r0, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201801C: .word 0x000003E7 -_02018020: .word _022A4BEC - arm_func_end sub_02017FF0 - - arm_func_start sub_02018024 -sub_02018024: ; 0x02018024 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02018098 ; =0x000003E7 - mov r5, r0 - cmp r5, r1 - ldrne r0, _0201809C ; =_022A4BEC - ldrneh r0, [r0, #8] - cmpne r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - bl sub_02018B50 - ldr r1, _0201809C ; =_022A4BEC - mov r2, #0x100 - strh r5, [r1, #6] - strh r5, [r1, #8] - mov r0, #7 - strh r2, [r1, #0xa] - bl AllocAudioCommand - mov r4, r0 - mov r0, #3 - strh r5, [r4, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r1, #0 - moveq r1, #0x100 - strh r1, [r4, #6] - mov r1, #0 - mov r0, r4 - strh r1, [r4, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02018098: .word 0x000003E7 -_0201809C: .word _022A4BEC - arm_func_end sub_02018024 - - arm_func_start sub_020180A0 -sub_020180A0: ; 0x020180A0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _02018110 ; =0x000003E7 - mov r6, r0 - cmp r6, r3 - ldrne r0, _02018114 ; =_022A4BEC - mov r5, r1 - ldrneh r0, [r0, #8] - mov r4, r2 - cmpne r6, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_02018B50 - ldr r1, _02018114 ; =_022A4BEC - mov r0, #7 - strh r6, [r1, #6] - strh r6, [r1, #8] - strh r4, [r1, #0xa] - bl AllocAudioCommand - mov r7, r0 - mov r0, #3 - strh r6, [r7, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r4, #0 - strh r4, [r7, #6] - mov r0, r7 - strh r5, [r7, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02018110: .word 0x000003E7 -_02018114: .word _022A4BEC - arm_func_end sub_020180A0 - - arm_func_start sub_02018118 -sub_02018118: ; 0x02018118 - stmdb sp!, {r3, lr} - bl sub_02018B50 - ldr r0, _02018150 ; =0x000003E7 - ldr r1, _02018154 ; =_022A4BEC - mov r2, #0 - strh r0, [r1, #6] - strh r0, [r1, #8] - mov r0, #9 - strh r2, [r1, #0xa] - bl AllocAudioCommand - mov r1, #0 - strh r1, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r3, pc} - .align 2, 0 -_02018150: .word 0x000003E7 -_02018154: .word _022A4BEC - arm_func_end sub_02018118 - - arm_func_start sub_02018158 -sub_02018158: ; 0x02018158 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02018B50 - ldr r2, _0201818C ; =0x000003E7 - ldr r0, _02018190 ; =_022A4BEC - mov r1, #0 - strh r2, [r0, #8] - strh r1, [r0, #0xa] - mov r0, #9 - bl AllocAudioCommand - strh r4, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r4, pc} - .align 2, 0 -_0201818C: .word 0x000003E7 -_02018190: .word _022A4BEC - arm_func_end sub_02018158 - - arm_func_start sub_02018194 -sub_02018194: ; 0x02018194 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _020181D8 ; =_022A4BEC - ldr r2, _020181DC ; =0x000003E7 - ldrh r3, [r3, #8] - mov r5, r0 - mov r4, r1 - cmp r3, r2 - ldmeqia sp!, {r3, r4, r5, pc} - bl sub_02018B50 - ldr r1, _020181D8 ; =_022A4BEC - mov r0, #0xa - strh r4, [r1, #0xa] - bl AllocAudioCommand - strh r4, [r0, #6] - strh r5, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020181D8: .word _022A4BEC -_020181DC: .word 0x000003E7 - arm_func_end sub_02018194 - - arm_func_start sub_020181E0 -sub_020181E0: ; 0x020181E0 - stmdb sp!, {r3, lr} - bl sub_0201A19C - ldr r1, _02018204 ; =0x000003E6 - cmp r0, r1 - ldreq r0, _02018208 ; =_022A4BEC - streqh r1, [r0, #0xc] - ldrne r0, _02018208 ; =_022A4BEC - ldrh r0, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_02018204: .word 0x000003E6 -_02018208: .word _022A4BEC - arm_func_end sub_020181E0 - - arm_func_start PlayMeById -PlayMeById: ; 0x0201820C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02018270 ; =0x000003E6 - mov r5, r0 - cmp r5, r1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0xd - ldmhiia sp!, {r3, r4, r5, pc} - bl sub_02018B50 - ldr r1, _02018274 ; =_022A4BEC - mov r0, #0xb - strh r5, [r1, #0xc] - bl AllocAudioCommand - mov r4, r0 - mov r0, #3 - strh r5, [r4, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r1, #0 - moveq r1, #0x100 - strh r1, [r4, #6] - mov r1, #0 - mov r0, r4 - strh r1, [r4, #8] - bl SendAudioCommand - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02018270: .word 0x000003E6 -_02018274: .word _022A4BEC - arm_func_end PlayMeById - - arm_func_start sub_02018278 -sub_02018278: ; 0x02018278 - stmdb sp!, {r3, lr} - bl sub_02018B50 - ldr r2, _020182A4 ; =0x000003E6 - ldr r1, _020182A8 ; =_022A4BEC - mov r0, #0xc - strh r2, [r1, #0xc] - bl AllocAudioCommand - mov r1, #0 - strh r1, [r0, #8] - bl SendAudioCommand - ldmia sp!, {r3, pc} - .align 2, 0 -_020182A4: .word 0x000003E6 -_020182A8: .word _022A4BEC - arm_func_end sub_02018278 - - arm_func_start sub_020182AC -sub_020182AC: ; 0x020182AC - ldr ip, _020182B4 ; =sub_0201A480 - bx ip - .align 2, 0 -_020182B4: .word sub_0201A480 - arm_func_end sub_020182AC - - arm_func_start PlaySeByIdVolume -PlaySeByIdVolume: ; 0x020182B8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - ldr r1, _02018318 ; =_0209916C - mov r2, r6 - mov r3, r5 - mov r0, #8 - bl Debug_Print - cmp r6, #0x3f00 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0xd - cmp r5, #0x100 - movhi r5, #0x100 - bl sub_02018A78 - mov r4, r0 - mov r0, #4 - strh r6, [r4, #4] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r5, #0 - mov r0, r4 - strh r5, [r4, #8] - bl SendAudioCommand2 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02018318: .word _0209916C - arm_func_end PlaySeByIdVolume - - arm_func_start sub_0201831C -sub_0201831C: ; 0x0201831C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r0 - mov r6, r2 - mov r7, r1 - mov r5, r3 - str r6, [sp] - ldr r1, _0201839C ; =_0209918C - mov r2, r8 - mov r3, r7 - mov r0, #8 - str r5, [sp, #4] - bl Debug_Print - cmp r8, #0x3f00 - beq _02018394 - mov r0, #0xe - cmp r6, #0x100 - movhi r6, #0x100 - bl sub_02018A78 - mov r4, r0 - strh r8, [r4, #4] - mov r0, #4 - strh r7, [r4, #6] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r6, #0 - strh r6, [r4, #8] - mov r0, r4 - strh r5, [r4, #0xa] - bl SendAudioCommand2 -_02018394: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201839C: .word _0209918C - arm_func_end sub_0201831C - - arm_func_start sub_020183A0 -sub_020183A0: ; 0x020183A0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r4, r2 - mov r5, r1 - ldr r1, _020183E0 ; =_020991C8 - mov r2, r6 - mov r3, r4 - mov r0, #8 - bl Debug_Print - mov r0, #0x10 - bl sub_02018A78 - strh r6, [r0, #4] - strh r5, [r0, #6] - strh r4, [r0, #8] - bl SendAudioCommand2 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020183E0: .word _020991C8 - arm_func_end sub_020183A0 - - arm_func_start sub_020183E4 -sub_020183E4: ; 0x020183E4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r4, r2 - mov r5, r1 - ldr r1, _02018424 ; =_020991F0 - mov r2, r6 - mov r3, r4 - mov r0, #8 - bl Debug_Print - mov r0, #0x11 - bl sub_02018A78 - strh r6, [r0, #4] - strh r5, [r0, #6] - strh r4, [r0, #0xa] - bl SendAudioCommand2 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02018424: .word _020991F0 - arm_func_end sub_020183E4 - - arm_func_start sub_02018428 -sub_02018428: ; 0x02018428 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, _0201845C ; =_02099210 - mov r2, r4 - mov r0, #8 - bl Debug_Print - mov r0, #0xf - bl sub_02018A78 - strh r4, [r0, #4] - mov r1, #0 - strh r1, [r0, #6] - bl SendAudioCommand2 - ldmia sp!, {r4, pc} - .align 2, 0 -_0201845C: .word _02099210 - arm_func_end sub_02018428 - - arm_func_start sub_02018460 -sub_02018460: ; 0x02018460 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, _02018498 ; =_02099224 - mov r2, r5 - mov r3, r4 - mov r0, #8 - bl Debug_Print - mov r0, #0xf - bl sub_02018A78 - strh r5, [r0, #4] - strh r4, [r0, #6] - bl SendAudioCommand2 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02018498: .word _02099224 - arm_func_end sub_02018460 - - arm_func_start sub_0201849C -sub_0201849C: ; 0x0201849C - ldr ip, _020184A4 ; =sub_0201906C - bx ip - .align 2, 0 -_020184A4: .word sub_0201906C - arm_func_end sub_0201849C - - arm_func_start sub_020184A8 -sub_020184A8: ; 0x020184A8 - ldr ip, _020184B0 ; =sub_02019260 - bx ip - .align 2, 0 -_020184B0: .word sub_02019260 - arm_func_end sub_020184A8 - - arm_func_start sub_020184B4 -sub_020184B4: ; 0x020184B4 - ldr ip, _020184BC ; =sub_0201929C - bx ip - .align 2, 0 -_020184BC: .word sub_0201929C - arm_func_end sub_020184B4 - - arm_func_start sub_020184C0 -sub_020184C0: ; 0x020184C0 - ldr ip, _020184C8 ; =sub_020192D0 - bx ip - .align 2, 0 -_020184C8: .word sub_020192D0 - arm_func_end sub_020184C0 - - arm_func_start sub_020184CC -sub_020184CC: ; 0x020184CC - stmdb sp!, {r3, lr} - bl InitSoundSystem - ldr r0, _020185CC ; =_020AF7C0 - bl sub_02002C40 - ldr r0, _020185D0 ; =_022A4C00 - mov r1, #0x11 - bl sub_02002F34 - ldr r0, _020185D4 ; =_022A4C28 - mov r1, #0x11 - bl sub_02002F34 - mov r1, #0x10 - ldr r0, _020185D8 ; =_020AF7E4 - mov r2, r1 - bl sub_02002A9C - mov r2, #0 - ldr r1, _020185DC ; =AUDIO_COMMANDS_BUFFER - mov r0, r2 -_02018510: - add r2, r2, #1 - cmp r2, #0x10 - str r0, [r1], #0x20 - blt _02018510 - ldr r0, _020185E0 ; =_020AF780 - ldr r1, _020185E4 ; =0x00000701 - ldr r0, [r0, #0x34] - bl MemAlloc - ldr r2, _020185E0 ; =_020AF780 - ldr r1, _020185E4 ; =0x00000701 - str r0, [r2, #0x30] - ldr r0, [r2, #0xc] - bl MemAlloc - ldr r2, _020185E0 ; =_020AF780 - ldr r1, _020185E4 ; =0x00000701 - str r0, [r2, #8] - ldr r0, [r2, #0x20] - bl MemAlloc - ldr r2, _020185E0 ; =_020AF780 - ldr r1, _020185E8 ; =_020AF7AC - str r0, [r2, #0x1c] - ldr r0, _020185EC ; =_020AF96C - mov r2, #0 - bl sub_02002778 - ldr r0, _020185F0 ; =_020AFA48 - ldr r1, _020185F4 ; =_020AF784 - mov r2, #0 - bl sub_02002778 - ldr r0, _020185F8 ; =_020AF890 - ldr r1, _020185FC ; =_020AF798 - mov r2, #0 - bl sub_02002778 - ldr r0, _020185CC ; =_020AF7C0 - bl sub_02002E98 - ldr r0, _020185EC ; =_020AF96C - bl sub_020027E8 - ldr r0, _020185CC ; =_020AF7C0 - bl sub_02002CB4 - ldr r0, _020185CC ; =_020AF7C0 - mov r1, #8 - bl sub_02002CAC - ldr r0, _020185CC ; =_020AF7C0 - bl sub_02002E98 - mov r1, #1 - ldr r0, _020185E0 ; =_020AF780 - strb r1, [r0, #1] - ldmia sp!, {r3, pc} - .align 2, 0 -_020185CC: .word _020AF7C0 -_020185D0: .word _022A4C00 -_020185D4: .word _022A4C28 -_020185D8: .word _020AF7E4 -_020185DC: .word AUDIO_COMMANDS_BUFFER -_020185E0: .word _020AF780 -_020185E4: .word 0x00000701 -_020185E8: .word _020AF7AC -_020185EC: .word _020AF96C -_020185F0: .word _020AFA48 -_020185F4: .word _020AF784 -_020185F8: .word _020AF890 -_020185FC: .word _020AF798 - arm_func_end sub_020184CC - - arm_func_start sub_02018600 -sub_02018600: ; 0x02018600 - stmdb sp!, {r3, lr} - bl ManipBgmPlayback - ldr r0, _02018624 ; =_020AFA48 - bl sub_020027E8 - ldr r0, _02018628 ; =_020AF890 - bl sub_020027E8 -_02018618: - bl sub_02003AB0 - bl ManipBgmPlayback - b _02018618 - .align 2, 0 -_02018624: .word _020AFA48 -_02018628: .word _020AF890 - arm_func_end sub_02018600 - - arm_func_start sub_0201862C -sub_0201862C: ; 0x0201862C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, #1 - ldr sl, _020187F0 ; =_022A4C28 - ldr sb, _020187F4 ; =_022A4C00 - ldr r4, _020187F8 ; =_020AF780 - mov r6, #2 - mov r5, #0 - add r8, sp, #0 - mov r7, fp -_02018650: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl sub_02002F98 - ldr r0, [sp] - ldr r0, [r0] - cmp r0, #1 - ldreqb r0, [r4, #1] - beq _02018650 - mov r0, r6 - bl Debug_GetDebugFlag - cmp r0, #0 - bne _020187D0 - ldr r1, [sp] - ldr r0, [r1] - cmp r0, #0x11 - addls pc, pc, r0, lsl #2 - b _020187D0 -_02018698: ; jump table - b _020187D0 ; case 0 - b _020187D0 ; case 1 - b _020186E0 ; case 2 - b _020186E0 ; case 3 - b _020186E0 ; case 4 - b _020186E0 ; case 5 - b _020186E0 ; case 6 - b _020186E0 ; case 7 - b _020186E0 ; case 8 - b _020186E0 ; case 9 - b _020186E0 ; case 10 - b _020186E0 ; case 11 - b _020186E0 ; case 12 - b _020186F0 ; case 13 - b _020186F0 ; case 14 - b _02018790 ; case 15 - b _020186F0 ; case 16 - b _020186F0 ; case 17 -_020186E0: - mov r0, sl - mov r2, fp - bl sub_02002F7C - b _02018650 -_020186F0: - ldrh r0, [r1, #4] - bl sub_0201AAA0 - cmp r0, #0 - bne _02018714 - ldr r1, [sp] - mov r0, sl - mov r2, #1 - bl sub_02002F7C - b _02018650 -_02018714: - ldr r3, [sp] - ldr r0, [r3] - sub r0, r0, #0xd - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _020187D0 -_0201872C: ; jump table - b _02018740 ; case 0 - b _02018750 ; case 1 - b _020187D0 ; case 2 - b _02018768 ; case 3 - b _0201877C ; case 4 -_02018740: - ldrh r0, [r3, #4] - ldrh r1, [r3, #8] - bl PlaySe - b _020187D0 -_02018750: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrh r2, [r3, #8] - ldrsh r3, [r3, #0xa] - bl PlaySeFullSpec - b _020187D0 -_02018768: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrh r2, [r3, #8] - bl SeChangeVolume - b _020187D0 -_0201877C: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrsh r2, [r3, #0xa] - bl SeChangePan - b _020187D0 -_02018790: - ldrh r0, [r1, #4] - cmp r0, #0x3f00 - beq _020187BC - bl sub_0201AAA0 - cmp r0, #0 - beq _020187BC - ldr r1, [sp] - ldrh r0, [r1, #4] - ldrh r1, [r1, #6] - bl StopSe - b _020187D0 -_020187BC: - ldr r1, [sp] - mov r0, sl - mov r2, #1 - bl sub_02002F7C - b _02018650 -_020187D0: - ldr r0, _020187FC ; =_020AF7C0 - bl sub_02002CB4 - ldr r1, [sp] - ldr r0, _020187FC ; =_020AF7C0 - str r5, [r1] - ldr r1, _02018800 ; =_020AF7E4 - bl sub_02002ECC - b _02018650 - .align 2, 0 -_020187F0: .word _022A4C28 -_020187F4: .word _022A4C00 -_020187F8: .word _020AF780 -_020187FC: .word _020AF7C0 -_02018800: .word _020AF7E4 - arm_func_end sub_0201862C - - arm_func_start sub_02018804 -sub_02018804: ; 0x02018804 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 -_0201880C: - ldr r0, _02018A64 ; =_022A4C28 - add r1, sp, #0 - mov r2, #1 - bl sub_02002F98 - ldr r3, [sp] - ldr r0, [r3] - cmp r0, #0x11 - addls pc, pc, r0, lsl #2 - b _02018A40 -_02018830: ; jump table - b _02018A40 ; case 0 - b _02018A40 ; case 1 - b _02018878 ; case 2 - b _02018880 ; case 3 - b _020188B4 ; case 4 - b _02018900 ; case 5 - b _0201890C ; case 6 - b _0201891C ; case 7 - b _02018950 ; case 8 - b _0201899C ; case 9 - b _020189A8 ; case 10 - b _020189B8 ; case 11 - b _020189D0 ; case 12 - b _020189DC ; case 13 - b _020189F0 ; case 14 - b _02018A0C ; case 15 - b _02018A1C ; case 16 - b _02018A30 ; case 17 -_02018878: - bl SoundDriverReset - b _02018A40 -_02018880: - ldr r4, _02018A68 ; =0x000003E6 - b _0201888C -_02018888: - bl sub_02003AB0 -_0201888C: - bl sub_0201A19C - cmp r0, r4 - bne _02018888 - ldr r2, [sp] - ldrh r0, [r2, #4] - ldrh r1, [r2, #8] - ldrh r2, [r2, #6] - bl PlayBgm - bl sub_02003AB0 - b _02018A40 -_020188B4: - ldr r4, _02018A68 ; =0x000003E6 - b _020188C0 -_020188BC: - bl sub_02003AB0 -_020188C0: - bl sub_0201A19C - cmp r0, r4 - bne _020188BC - ldr r4, _02018A6C ; =0x000003E7 - b _020188D8 -_020188D4: - bl sub_02003AB0 -_020188D8: - bl sub_02019824 - cmp r0, r4 - bne _020188D4 - ldr r2, [sp] - ldrh r0, [r2, #4] - ldrh r1, [r2, #8] - ldrh r2, [r2, #6] - bl PlayBgm - bl sub_02003AB0 - b _02018A40 -_02018900: - ldrh r0, [r3, #8] - bl StopBgm - b _02018A40 -_0201890C: - ldrh r0, [r3, #8] - ldrh r1, [r3, #6] - bl ChangeBgm - b _02018A40 -_0201891C: - ldr r4, _02018A68 ; =0x000003E6 - b _02018928 -_02018924: - bl sub_02003AB0 -_02018928: - bl sub_0201A19C - cmp r0, r4 - bne _02018924 - ldr r2, [sp] - ldrh r0, [r2, #4] - ldrh r1, [r2, #8] - ldrh r2, [r2, #6] - bl PlayBgm2 - bl sub_02003AB0 - b _02018A40 -_02018950: - ldr r4, _02018A68 ; =0x000003E6 - b _0201895C -_02018958: - bl sub_02003AB0 -_0201895C: - bl sub_0201A19C - cmp r0, r4 - bne _02018958 - ldr r4, _02018A6C ; =0x000003E7 - b _02018974 -_02018970: - bl sub_02003AB0 -_02018974: - bl sub_02019D58 - cmp r0, r4 - bne _02018970 - ldr r2, [sp] - ldrh r0, [r2, #4] - ldrh r1, [r2, #8] - ldrh r2, [r2, #6] - bl PlayBgm2 - bl sub_02003AB0 - b _02018A40 -_0201899C: - ldrh r0, [r3, #8] - bl StopBgm2 - b _02018A40 -_020189A8: - ldrh r0, [r3, #8] - ldrh r1, [r3, #6] - bl ChangeBgm2 - b _02018A40 -_020189B8: - ldrh r0, [r3, #4] - ldrh r1, [r3, #8] - ldrh r2, [r3, #6] - bl PlayME - bl sub_02003AB0 - b _02018A40 -_020189D0: - ldrh r0, [r3, #8] - bl StopME - b _02018A40 -_020189DC: - ldrh r0, [r3, #4] - ldrh r1, [r3, #8] - bl PlaySe - bl sub_02003AB0 - b _02018A40 -_020189F0: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrh r2, [r3, #8] - ldrsh r3, [r3, #0xa] - bl PlaySeFullSpec - bl sub_02003AB0 - b _02018A40 -_02018A0C: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - bl StopSe - b _02018A40 -_02018A1C: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrh r2, [r3, #8] - bl SeChangeVolume - b _02018A40 -_02018A30: - ldrh r0, [r3, #4] - ldrh r1, [r3, #6] - ldrsh r2, [r3, #0xa] - bl SeChangePan -_02018A40: - ldr r0, _02018A70 ; =_020AF7C0 - bl sub_02002CB4 - ldr r2, [sp] - mov r3, #0 - ldr r0, _02018A70 ; =_020AF7C0 - ldr r1, _02018A74 ; =_020AF7E4 - str r3, [r2] - bl sub_02002ECC - b _0201880C - .align 2, 0 -_02018A64: .word _022A4C28 -_02018A68: .word 0x000003E6 -_02018A6C: .word 0x000003E7 -_02018A70: .word _020AF7C0 -_02018A74: .word _020AF7E4 - arm_func_end sub_02018804 - - arm_func_start sub_02018A78 -sub_02018A78: ; 0x02018A78 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _02018AD8 ; =_020AF7C0 - ldr r1, _02018ADC ; =_020AF7E4 - bl sub_02002D14 - mov r1, #0 - ldr r4, _02018AE0 ; =AUDIO_COMMANDS_BUFFER - b _02018AC0 -_02018A98: - ldr r0, [r4] - cmp r0, #0 - bne _02018AB8 - ldr r0, _02018AD8 ; =_020AF7C0 - str r5, [r4] - bl sub_02002E98 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} -_02018AB8: - add r1, r1, #1 - add r4, r4, #0x20 -_02018AC0: - cmp r1, #0x10 - blt _02018A98 - ldr r0, _02018AD8 ; =_020AF7C0 - bl sub_02002E98 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02018AD8: .word _020AF7C0 -_02018ADC: .word _020AF7E4 -_02018AE0: .word AUDIO_COMMANDS_BUFFER - arm_func_end sub_02018A78 - - arm_func_start SendAudioCommand2 -SendAudioCommand2: ; 0x02018AE4 - stmdb sp!, {r4, lr} - ldr r1, _02018B3C ; =_022A4C00 - mov r4, r0 - ldr r2, [r1, #0x24] - ldr r0, [r1, #0x14] - cmp r2, r0 - bne _02018B0C - ldr r0, _02018B40 ; =_022A4C00 - ldr r1, _02018B44 ; =_02099240 - bl sub_02002FB4 -_02018B0C: - ldr r0, _02018B48 ; =_020AF7C0 - bl sub_02002CB4 - ldr r1, _02018B4C ; =_020AF780 - mov r2, #1 - ldr r0, _02018B48 ; =_020AF7C0 - strb r2, [r1] - bl sub_02002E98 - ldr r0, _02018B40 ; =_022A4C00 - mov r1, r4 - mov r2, #1 - bl sub_02002F7C - ldmia sp!, {r4, pc} - .align 2, 0 -_02018B3C: .word _022A4C00 -_02018B40: .word _022A4C00 -_02018B44: .word _02099240 -_02018B48: .word _020AF7C0 -_02018B4C: .word _020AF780 - arm_func_end SendAudioCommand2 - - arm_func_start sub_02018B50 -sub_02018B50: ; 0x02018B50 - ldr ip, _02018B60 ; =sub_02002D14 - ldr r0, _02018B64 ; =_020AF7C0 - ldr r1, _02018B68 ; =_020AF7E4 - bx ip - .align 2, 0 -_02018B60: .word sub_02002D14 -_02018B64: .word _020AF7C0 -_02018B68: .word _020AF7E4 - arm_func_end sub_02018B50 - - arm_func_start AllocAudioCommand -AllocAudioCommand: ; 0x02018B6C - mov r3, #0 - ldr r2, _02018BA4 ; =AUDIO_COMMANDS_BUFFER - b _02018B94 -_02018B78: - ldr r1, [r2] - cmp r1, #0 - streq r0, [r2] - moveq r0, r2 - bxeq lr - add r3, r3, #1 - add r2, r2, #0x20 -_02018B94: - cmp r3, #0x10 - blt _02018B78 - mov r0, #0 - bx lr - .align 2, 0 -_02018BA4: .word AUDIO_COMMANDS_BUFFER - arm_func_end AllocAudioCommand - - arm_func_start SendAudioCommand -SendAudioCommand: ; 0x02018BA8 - stmdb sp!, {r4, lr} - ldr r1, _02018BF8 ; =_022A4C00 - mov r4, r0 - ldr r2, [r1, #0x24] - ldr r0, [r1, #0x14] - cmp r2, r0 - bne _02018BD0 - ldr r0, _02018BFC ; =_022A4C00 - ldr r1, _02018C00 ; =_02099240 - bl sub_02002FB4 -_02018BD0: - ldr r1, _02018C04 ; =_020AF780 - mov r2, #1 - ldr r0, _02018C08 ; =_020AF7C0 - strb r2, [r1] - bl sub_02002E98 - ldr r0, _02018BFC ; =_022A4C00 - mov r1, r4 - mov r2, #1 - bl sub_02002F7C - ldmia sp!, {r4, pc} - .align 2, 0 -_02018BF8: .word _022A4C00 -_02018BFC: .word _022A4C00 -_02018C00: .word _02099240 -_02018C04: .word _020AF780 -_02018C08: .word _020AF7C0 - arm_func_end SendAudioCommand - - arm_func_start sub_02018C0C -sub_02018C0C: ; 0x02018C0C - ldr ip, _02018C1C ; =sub_02002ECC - ldr r0, _02018C20 ; =_020AF7C0 - ldr r1, _02018C24 ; =_020AF7E4 - bx ip - .align 2, 0 -_02018C1C: .word sub_02002ECC -_02018C20: .word _020AF7C0 -_02018C24: .word _020AF7E4 - arm_func_end sub_02018C0C - - arm_func_start InitSoundSystem -InitSoundSystem: ; 0x02018C28 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x50 - ldr r0, _02018E44 ; =_020AFB28 - bl sub_02002C40 - ldr r0, _02018E44 ; =_020AFB28 - mov r1, #4 - bl sub_02002CAC - bl SND_Init - ldr r0, _02018E48 ; =0x0000FFFF - mov r1, #0 - bl Snd_LockChannel - add r0, sp, #0x10 - bl DseDriver_LoadDefaultSettings - mov r0, #0x10000 - mov r1, #2 - bl MemAlloc - ldr r2, _02018E4C ; =_022A4E50 - mov r1, #0x3c000 - str r0, [r2] - mov r0, #0 - mov r2, #0x14 - mov r3, #2 - bl MemArenaAlloc - ldr r1, _02018E4C ; =_022A4E50 - mov r2, #0x10000 - str r0, [r1, #4] - ldr r1, [r1] - add r0, sp, #0x10 - bl DseDriver_ConfigureHeap - add r0, sp, #0x10 - mov r1, #0 - mov r2, #4 - bl sub_0206C36C - add r0, sp, #0x10 - mov r1, #0 - mov r2, #0xf - bl sub_0206C39C - add r0, sp, #0x10 - bl DseDriver_Init - ldr r1, _02018E50 ; =_0209939C - add r0, sp, #8 - bl sub_02019314 - mov r1, #0 - ldr r0, [sp, #8] - mov r2, r1 - bl DseSwd_LoadBank - mov r1, r0 - ldr r2, _02018E54 ; =_022A4E58 - ldr r0, _02018E58 ; =_020993B4 - str r1, [r2, #0x80] - bl Debug_Print0 - ldr r1, _02018E5C ; =_020993D0 - add r0, sp, #8 - bl sub_02019314 - ldr r0, [sp, #8] - bl DseSe_Load - mov r1, r0 - ldr r0, _02018E54 ; =_022A4E58 - str r1, [r0, #0x7c] - ldr r0, _02018E60 ; =_020993E8 - bl Debug_Print0 - ldr r1, _02018E64 ; =_02099404 - add r0, sp, #0 - bl sub_02019314 - mov r1, #0 - ldr r0, [sp] - mov r2, r1 - bl DseSwd_LoadBank - mov r1, r0 - ldr r2, _02018E54 ; =_022A4E58 - ldr r0, _02018E68 ; =_02099418 - str r1, [r2, #0x8c] - bl Debug_Print0 - ldr r1, _02018E6C ; =_02099434 - add r0, sp, #0 - bl sub_02019314 - ldr r0, [sp] - bl DseSe_Load - mov r1, r0 - ldr r2, _02018E54 ; =_022A4E58 - ldr r0, _02018E70 ; =_02099448 - str r1, [r2, #0x88] - bl Debug_Print0 - ldr r0, _02018E54 ; =_022A4E58 - mov r2, #0 - str r2, [r0, #0xc4] - str r2, [r0, #0x18] - str r2, [r0, #0x1c] - str r2, [r0, #0x44] - ldr r1, _02018E74 ; =0x000003E7 - str r2, [r0, #0x64] - strh r1, [r0, #0x20] - strh r1, [r0, #0x48] - sub r1, r1, #1 - strh r1, [r0, #0x68] - str r2, [r0, #0x94] - mov r1, #0x3f00 - strh r1, [r0, #0x98] - strh r1, [r0, #0x9a] - ldr r0, _02018E78 ; =_022A4E7C - bl ZInit8 - ldr r0, _02018E7C ; =_022A4E84 - bl ZInit8 - ldr r0, _02018E80 ; =_022A4E8C - bl ZInit8 - ldr r0, _02018E84 ; =_022A4EA4 - bl ZInit8 - ldr r0, _02018E88 ; =_022A4EAC - bl ZInit8 - ldr r0, _02018E8C ; =_022A4EB4 - bl ZInit8 - ldr r0, _02018E90 ; =_022A4EC4 - bl ZInit8 - ldr r0, _02018E94 ; =_022A4ECC - bl ZInit8 - ldr r0, _02018E98 ; =_022A4EF4 - bl ZInit8 - ldr r4, _02018E9C ; =_022A4EFC - mov r5, #0 -_02018E04: - add r0, r4, r5, lsl #3 - bl ZInit8 - add r5, r5, #1 - cmp r5, #4 - blt _02018E04 - mov r1, #0 - ldr r0, _02018EA0 ; =_020AFB4C - mov r2, r1 - mov r3, r1 - bl DseSwd_LoadMainBank - ldr r1, _02018E54 ; =_022A4E58 - str r0, [r1, #4] - ldr r0, _02018E44 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02018E44: .word _020AFB28 -_02018E48: .word 0x0000FFFF -_02018E4C: .word _022A4E50 -_02018E50: .word _0209939C -_02018E54: .word _022A4E58 -_02018E58: .word _020993B4 -_02018E5C: .word _020993D0 -_02018E60: .word _020993E8 -_02018E64: .word _02099404 -_02018E68: .word _02099418 -_02018E6C: .word _02099434 -_02018E70: .word _02099448 -_02018E74: .word 0x000003E7 -_02018E78: .word _022A4E7C -_02018E7C: .word _022A4E84 -_02018E80: .word _022A4E8C -_02018E84: .word _022A4EA4 -_02018E88: .word _022A4EAC -_02018E8C: .word _022A4EB4 -_02018E90: .word _022A4EC4 -_02018E94: .word _022A4ECC -_02018E98: .word _022A4EF4 -_02018E9C: .word _022A4EFC -_02018EA0: .word _020AFB4C - arm_func_end InitSoundSystem - - arm_func_start ManipBgmPlayback -ManipBgmPlayback: ; 0x02018EA4 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r0, _0201904C ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019050 ; =_022A4E58 - ldr r1, [r0, #0x18] - cmp r1, #0 - bne _02018F5C - ldr r1, [r0, #0x1c] - cmp r1, #2 - bne _02018F0C - ldr r0, [r0] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _02018F0C - ldr r0, _02019050 ; =_022A4E58 - ldr r1, _02019054 ; =_02099464 - ldrh r2, [r0, #0x20] - mov r0, #7 - bl Debug_Print - bl sub_02019408 - ldr r0, _02019050 ; =_022A4E58 - mov r2, #0 - ldr r1, _02019058 ; =0x000003E7 - str r2, [r0, #0x1c] - strh r1, [r0, #0x20] -_02018F0C: - ldr r0, _02019050 ; =_022A4E58 - ldr r1, [r0, #0x44] - cmp r1, #2 - bne _0201903C - ldr r0, [r0, #8] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _0201903C - ldr r0, _02019050 ; =_022A4E58 - ldr r1, _0201905C ; =_02099470 - ldrh r2, [r0, #0x48] - mov r0, #7 - bl Debug_Print - bl sub_02019488 - ldr r0, _02019050 ; =_022A4E58 - mov r2, #0 - ldr r1, _02019058 ; =0x000003E7 - str r2, [r0, #0x44] - strh r1, [r0, #0x48] - b _0201903C -_02018F5C: - cmp r1, #1 - ldreq r1, [r0, #0x64] - cmpeq r1, #2 - bne _0201903C - ldr r0, [r0, #0x10] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _0201903C - bl sub_02019508 - ldr r0, _02019050 ; =_022A4E58 - mov r2, #0 - ldr r1, _02019060 ; =0x000003E6 - str r2, [r0, #0x64] - strh r1, [r0, #0x68] - ldr r1, [r0, #0x1c] - cmp r1, #2 - bne _02018FE0 - ldrh r2, [r0, #0x20] - ldr r1, _02019064 ; =_0209947C - mov r0, #7 - bl Debug_Print - ldr r0, _02019050 ; =_022A4E58 - mov ip, #4 - ldrh r2, [r0, #0x22] - ldr r0, [r0] - add r1, sp, #0 - rsb r2, r2, r2, lsl #7 - mov r2, r2, asr #8 - add r3, r2, #0x3e80000 - mov r2, #0 - str r3, [sp, #0xc] - str ip, [sp] - bl ResumeBgm -_02018FE0: - ldr r0, _02019050 ; =_022A4E58 - ldr r1, [r0, #0x44] - cmp r1, #2 - bne _02019030 - ldrh r2, [r0, #0x48] - ldr r1, _02019068 ; =_0209948C - mov r0, #7 - bl Debug_Print - ldr r0, _02019050 ; =_022A4E58 - mov ip, #4 - ldrh r2, [r0, #0x4a] - ldr r0, [r0, #8] - add r1, sp, #0 - rsb r2, r2, r2, lsl #7 - mov r2, r2, asr #8 - add r3, r2, #0x3e80000 - mov r2, #0 - str r3, [sp, #0xc] - str ip, [sp] - bl ResumeBgm -_02019030: - ldr r0, _02019050 ; =_022A4E58 - mov r1, #0 - str r1, [r0, #0x18] -_0201903C: - ldr r0, _0201904C ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_0201904C: .word _020AFB28 -_02019050: .word _022A4E58 -_02019054: .word _02099464 -_02019058: .word 0x000003E7 -_0201905C: .word _02099470 -_02019060: .word 0x000003E6 -_02019064: .word _0209947C -_02019068: .word _0209948C - arm_func_end ManipBgmPlayback - - arm_func_start sub_0201906C -sub_0201906C: ; 0x0201906C - stmdb sp!, {r3, lr} - ldr r0, _020190C0 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _020190C4 ; =_022A4E58 - ldr r1, [r0, #0x94] - cmp r1, #2 - bne _020190B4 - ldr r0, [r0, #0xdc] - mov r1, #0 - bl DseSe_HasPlayingInstances - cmp r0, #0 - bne _020190B4 - bl sub_02019790 - ldr r0, _020190C4 ; =_022A4E58 - mov r1, #0x3f00 - strh r1, [r0, #0x98] - mov r1, #0 - str r1, [r0, #0x94] -_020190B4: - ldr r0, _020190C0 ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r3, pc} - .align 2, 0 -_020190C0: .word _020AFB28 -_020190C4: .word _022A4E58 - arm_func_end sub_0201906C - - arm_func_start SoundDriverReset -SoundDriverReset: ; 0x020190C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _0201924C ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _02019250 ; =_0209949C - mov r0, #6 - bl Debug_Print - ldr r4, _02019254 ; =_022A4E58 - ldr r0, [r4, #0x18] - cmp r0, #1 - bne _02019184 - ldr r5, _0201924C ; =_020AFB28 - b _0201910C -_020190F8: - mov r0, r5 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r5 - bl sub_02002CB4 -_0201910C: - ldr r0, [r4, #0x64] - cmp r0, #1 - beq _020190F8 - cmp r0, #2 - bne _02019174 - ldr r0, _02019254 ; =_022A4E58 - ldr r0, [r0, #0x10] - bl DseBgm_IsPlaying - cmp r0, #0 - ble _02019174 - ldr r0, _02019254 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0, #0x10] - bl DseBgm_Stop - ldr r5, _0201924C ; =_020AFB28 - ldr r4, _02019254 ; =_022A4E58 - b _02019164 -_02019150: - mov r0, r5 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r5 - bl sub_02002CB4 -_02019164: - ldr r0, [r4, #0x10] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _02019150 -_02019174: - bl sub_02019508 - ldr r1, _02019258 ; =0x000003E6 - ldr r0, _02019254 ; =_022A4E58 - strh r1, [r0, #0x68] -_02019184: - mov r7, #0 - ldr r6, _0201925C ; =0x000003E7 - ldr sl, _0201924C ; =_020AFB28 - ldr sb, _02019254 ; =_022A4E58 - mov r8, r7 - mov r4, r7 - mov r5, r7 -_020191A0: - ldr r0, [sb, #0x1c] - cmp r0, #2 - bne _020191D4 - ldr r0, [sb] - mov r1, r8 - bl DseBgm_Stop - ldr r0, [sb] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _020191D4 - bl sub_02019408 - str r7, [sb, #0x1c] - strh r6, [sb, #0x20] -_020191D4: - ldr r0, [sb, #0x44] - cmp r0, #2 - bne _02019208 - ldr r0, [sb, #8] - mov r1, r5 - bl DseBgm_Stop - ldr r0, [sb, #8] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _02019208 - bl sub_02019488 - str r4, [sb, #0x44] - strh r6, [sb, #0x48] -_02019208: - ldr r0, [sb, #0x1c] - cmp r0, #0 - ldrne r0, [sb, #0x44] - cmpne r0, #0 - beq _02019234 - mov r0, sl - bl sub_02002E98 - bl sub_02003AB0 - mov r0, sl - bl sub_02002CB4 - b _020191A0 -_02019234: - mov r0, #0x3f00 - mov r1, #0 - bl StopSe - ldr r0, _0201924C ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0201924C: .word _020AFB28 -_02019250: .word _0209949C -_02019254: .word _022A4E58 -_02019258: .word 0x000003E6 -_0201925C: .word 0x000003E7 - arm_func_end SoundDriverReset - - arm_func_start sub_02019260 -sub_02019260: ; 0x02019260 - stmdb sp!, {r3, lr} - ldr r0, _02019294 ; =_020AFB24 - ldrb r0, [r0] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02019298 ; =_020AFB28 - bl sub_02002CB4 - mov r0, #1 - bl sub_0206C620 - ldr r0, _02019294 ; =_020AFB24 - mov r1, #1 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02019294: .word _020AFB24 -_02019298: .word _020AFB28 - arm_func_end sub_02019260 - - arm_func_start sub_0201929C -sub_0201929C: ; 0x0201929C - stmdb sp!, {r3, lr} - ldr r0, _020192C8 ; =_020AFB28 - bl sub_02002CB4 - mov r0, #0 - bl sub_0206C6BC - ldr r0, _020192CC ; =0x0000FFFF - mov r1, #0 - bl Snd_UnlockChannel - ldr r0, _020192C8 ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r3, pc} - .align 2, 0 -_020192C8: .word _020AFB28 -_020192CC: .word 0x0000FFFF - arm_func_end sub_0201929C - - arm_func_start sub_020192D0 -sub_020192D0: ; 0x020192D0 - stmdb sp!, {r3, lr} - ldr r0, _020192FC ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019300 ; =0x0000FFFF - mov r1, #0 - bl Snd_LockChannel - mov r0, #0 - bl sub_0206C754 - ldr r0, _020192FC ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r3, pc} - .align 2, 0 -_020192FC: .word _020AFB28 -_02019300: .word 0x0000FFFF - arm_func_end sub_020192D0 - - arm_func_start sub_02019304 -sub_02019304: ; 0x02019304 - ldr r0, _02019310 ; =_022A4E50 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_02019310: .word _022A4E50 - arm_func_end sub_02019304 - - arm_func_start sub_02019314 -sub_02019314: ; 0x02019314 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r5, r0 - mov r4, r1 - bl FileRom_InitDataTransfer - add r0, sp, #0 - bl FileRom_Veneer_FileInit - add r0, sp, #0 - mov r1, r4 - bl FileRom_HandleOpen - add r0, sp, #0 - bl FileGetSize - str r0, [r5, #4] - ldr r0, _02019388 ; =_022A4E50 - ldr r1, [r5, #4] - ldr r0, [r0, #4] - mov r2, #2 - bl MemLocateSet - str r0, [r5] - add r0, sp, #0 - ldmia r5, {r1, r2} - bl FileRom_HandleRead - mov r4, r0 - add r0, sp, #0 - bl FileClose - bl FileRom_StopDataTransfer - mov r0, r4 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02019388: .word _022A4E50 - arm_func_end sub_02019314 - - arm_func_start LoadDseFile -LoadDseFile: ; 0x0201938C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r5, r0 - mov r4, r1 - bl FileRom_InitDataTransfer - add r0, sp, #0 - bl FileRom_Veneer_FileInit - add r0, sp, #0 - mov r1, r4 - bl FileRom_HandleOpen - add r0, sp, #0 - bl FileGetSize - str r0, [r5, #4] - ldr r0, _02019400 ; =_022A4E50 - ldr r1, [r5, #4] - ldr r0, [r0, #4] - ldr r2, _02019404 ; =0x00000302 - bl MemLocateSet - str r0, [r5] - add r0, sp, #0 - ldmia r5, {r1, r2} - bl FileRom_HandleRead - mov r4, r0 - add r0, sp, #0 - bl FileClose - bl FileRom_StopDataTransfer - mov r0, r4 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02019400: .word _022A4E50 -_02019404: .word 0x00000302 - arm_func_end LoadDseFile - - arm_func_start sub_02019408 -sub_02019408: ; 0x02019408 - stmdb sp!, {r3, lr} - ldr r0, _0201947C ; =_022A4E8C - bl PointsToZero - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02019480 ; =_022A4E58 - ldr r0, [r0] - bl DseBgm_Unload - ldr r0, _02019480 ; =_022A4E58 - ldr r0, [r0, #4] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_Unload - ldr r0, _02019484 ; =_022A4E50 - ldr r1, _02019480 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x34] - bl MemLocateUnset - ldr r0, _02019484 ; =_022A4E50 - ldr r1, _02019480 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x24] - bl MemLocateUnset - ldr r0, _02019484 ; =_022A4E50 - ldr r1, _02019480 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x2c] - bl MemLocateUnset - ldmia sp!, {r3, pc} - .align 2, 0 -_0201947C: .word _022A4E8C -_02019480: .word _022A4E58 -_02019484: .word _022A4E50 - arm_func_end sub_02019408 - - arm_func_start sub_02019488 -sub_02019488: ; 0x02019488 - stmdb sp!, {r3, lr} - ldr r0, _020194FC ; =_022A4EB4 - bl PointsToZero - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02019500 ; =_022A4E58 - ldr r0, [r0, #8] - bl DseBgm_Unload - ldr r0, _02019500 ; =_022A4E58 - ldr r0, [r0, #0xc] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_Unload - ldr r0, _02019504 ; =_022A4E50 - ldr r1, _02019500 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x5c] - bl MemLocateUnset - ldr r0, _02019504 ; =_022A4E50 - ldr r1, _02019500 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x4c] - bl MemLocateUnset - ldr r0, _02019504 ; =_022A4E50 - ldr r1, _02019500 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x54] - bl MemLocateUnset - ldmia sp!, {r3, pc} - .align 2, 0 -_020194FC: .word _022A4EB4 -_02019500: .word _022A4E58 -_02019504: .word _022A4E50 - arm_func_end sub_02019488 - - arm_func_start sub_02019508 -sub_02019508: ; 0x02019508 - stmdb sp!, {r3, lr} - ldr r0, _02019568 ; =_022A4ECC - bl PointsToZero - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0201956C ; =_022A4E58 - ldr r0, [r0, #0x10] - bl DseBgm_Unload - ldr r0, _0201956C ; =_022A4E58 - ldr r0, [r0, #0x14] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_Unload - ldr r0, _02019570 ; =_022A4E50 - ldr r1, _0201956C ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x74] - bl MemLocateUnset - ldr r0, _02019570 ; =_022A4E50 - ldr r1, _0201956C ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x6c] - bl MemLocateUnset - ldmia sp!, {r3, pc} - .align 2, 0 -_02019568: .word _022A4ECC -_0201956C: .word _022A4E58 -_02019570: .word _022A4E50 - arm_func_end sub_02019508 - - arm_func_start PlaySeLoad -PlaySeLoad: ; 0x02019574 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10c - mov r6, r0 - mov r1, r6, asr #8 - and r4, r1, #0xff - and r5, r6, #0xff - bl sub_0201AAA0 - cmp r0, #0 - movne r0, #0 - bne _02019758 - cmp r5, #0 - moveq r0, #0 - beq _02019758 - ldr r0, _02019760 ; =_022A4E58 - ldrh r0, [r0, #0x9a] - cmp r0, r6 - moveq r0, #1 - beq _02019758 - cmp r0, #0x3f00 - beq _020195C8 - bl sub_02019790 -_020195C8: - ldr r0, _02019760 ; =_022A4E58 - mov r1, #1 - str r1, [r0, #0x94] - ldr r1, _02019764 ; =_020AFB6C - strh r6, [r0, #0x9a] - mov r2, #0 - str r2, [r0, #0xc4] - ldr r2, [r1, r4, lsl #2] - ldr r1, _02019768 ; =_020994B0 - add r0, sp, #0xc - bl sprintf - ldr r1, _0201976C ; =_020994C0 - add r3, sp, #0xc - mov r2, r6 - mov r0, #8 - bl Debug_Print - ldr r0, _02019770 ; =_020AFB28 - bl sub_02002E98 - ldr r0, _02019774 ; =_022A4EF4 - add r1, sp, #0xc - bl LoadDseFile - ldr r0, _02019770 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019760 ; =_022A4E58 - ldr r0, [r0, #0x9c] - bl DseSe_Load - ldr r2, _02019760 ; =_022A4E58 - add r1, sp, #4 - str r0, [r2, #0xc8] - add r0, r0, r5, lsl #16 - str r0, [r2, #0xdc] - mov r2, #4 - bl DseSe_GetUsedBankIDs - mov r7, r0 - ldr r1, _02019778 ; =_020994D8 - mov r2, r6 - mov r3, r5 - mov r8, #0 - mov r0, #8 - str r7, [sp] - bl Debug_Print - mov sb, r8 - add r6, sp, #4 - mov fp, #8 - ldr r5, _0201977C ; =_022A4EFC - ldr r4, _02019760 ; =_022A4E58 - b _0201970C -_02019684: - mov r0, sb, lsl #1 - ldrh r2, [r6, r0] - ldr r1, _02019780 ; =_02099500 - mov r0, fp - and sl, r2, #0xff - str r2, [sp] - mov r2, sb - mov r3, sl - bl Debug_Print - ldr r1, _02019784 ; =_02099514 - mov r2, sl - add r0, sp, #0xc - bl sprintf - ldr r1, _02019788 ; =_02099528 - mov r0, #8 - mov r2, r8 - add r3, sp, #0xc - bl Debug_Print - ldr r0, _02019770 ; =_020AFB28 - bl sub_02002E98 - add r0, r5, r8, lsl #3 - add r1, sp, #0xc - bl LoadDseFile - ldr r0, _02019770 ; =_020AFB28 - bl sub_02002CB4 - add r0, r4, r8, lsl #3 - mov r1, #0 - ldr r0, [r0, #0xa4] - mov r2, r1 - bl DseSwd_LoadBank - add r1, r4, r8, lsl #2 - str r0, [r1, #0xcc] - add r8, r8, #1 - add sb, sb, #1 -_0201970C: - cmp sb, r7 - blt _02019684 - ldr r0, _02019760 ; =_022A4E58 - cmp r8, #0 - str r8, [r0, #0xc4] - movne r0, #1 - bne _02019758 - mov r1, #0x3f00 - strh r1, [r0, #0x9a] - ldr r0, [r0, #0xc8] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSe_Unload - ldr r0, _0201978C ; =_022A4E50 - ldr r1, _02019760 ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x9c] - bl MemLocateUnset - mov r0, #0 -_02019758: - add sp, sp, #0x10c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02019760: .word _022A4E58 -_02019764: .word _020AFB6C -_02019768: .word _020994B0 -_0201976C: .word _020994C0 -_02019770: .word _020AFB28 -_02019774: .word _022A4EF4 -_02019778: .word _020994D8 -_0201977C: .word _022A4EFC -_02019780: .word _02099500 -_02019784: .word _02099514 -_02019788: .word _02099528 -_0201978C: .word _022A4E50 - arm_func_end PlaySeLoad - - arm_func_start sub_02019790 -sub_02019790: ; 0x02019790 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _0201981C ; =_022A4E58 - ldr r5, [r4, #0xc4] - cmp r5, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - mov r6, #0 - str r6, [r4, #0xc4] - ldr r7, _02019820 ; =_022A4E50 - b _020197DC -_020197B4: - add r0, r4, r6, lsl #2 - ldr r0, [r0, #0xcc] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_Unload - add r1, r4, r6, lsl #3 - ldr r0, [r7, #4] - ldr r1, [r1, #0xa4] - bl MemLocateUnset - add r6, r6, #1 -_020197DC: - cmp r6, r5 - blt _020197B4 - ldr r0, _0201981C ; =_022A4E58 - ldr r0, [r0, #0xc8] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSe_Unload - ldr r0, _02019820 ; =_022A4E50 - ldr r1, _0201981C ; =_022A4E58 - ldr r0, [r0, #4] - ldr r1, [r1, #0x9c] - bl MemLocateUnset - ldr r0, _0201981C ; =_022A4E58 - mov r1, #0x3f00 - strh r1, [r0, #0x9a] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0201981C: .word _022A4E58 -_02019820: .word _022A4E50 - arm_func_end sub_02019790 - - arm_func_start sub_02019824 -sub_02019824: ; 0x02019824 - stmdb sp!, {r4, lr} - ldr r0, _02019848 ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _0201984C ; =_022A4E58 - ldr r0, _02019848 ; =_020AFB28 - ldrh r4, [r1, #0x20] - bl sub_02002E98 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02019848: .word _020AFB28 -_0201984C: .word _022A4E58 - arm_func_end sub_02019824 - - arm_func_start IsSongOver -IsSongOver: ; 0x02019850 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _020198B0 ; =_020AFB28 - mov r4, #0 - bl sub_02002CB4 - ldr r0, _020198B4 ; =_022A4E58 - ldr r1, [r0, #0x1c] - cmp r1, #2 - bne _0201989C - ldr r0, [r0] - add r2, sp, #0 - mov r1, #0xa - bl DseSequence_GetParameter - ldr r0, _020198B4 ; =_022A4E58 - ldr r2, [sp] - ldr r1, [r0, #0x40] - cmp r2, r1 - strgt r2, [r0, #0x40] - movgt r4, #1 -_0201989C: - ldr r0, _020198B0 ; =_020AFB28 - bl sub_02002E98 - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020198B0: .word _020AFB28 -_020198B4: .word _022A4E58 - arm_func_end IsSongOver - - arm_func_start PlayBgm -PlayBgm: ; 0x020198B8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x98 - mov r6, r0 - ldr r0, _02019B00 ; =_020AFB28 - mov r5, r1 - mov r4, r2 - bl sub_02002CB4 - ldr r1, _02019B04 ; =_0209953C - mov r2, r6 - mov r3, r4 - mov r0, #7 - str r5, [sp] - bl Debug_Print - ldr r0, _02019B08 ; =_022A4E58 - ldrh r0, [r0, #0x48] - cmp r6, r0 - bne _02019914 - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002E98 - mov r0, #0 - bl StopBgm2 - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002CB4 -_02019914: - ldr r1, _02019B08 ; =_022A4E58 - ldr r0, _02019B0C ; =0x000003E7 - ldrh r1, [r1, #0x20] - cmp r1, r0 - beq _02019940 - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002E98 - mov r0, #0 - bl StopBgm - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002CB4 -_02019940: - cmp r6, #1 - blo _02019950 - cmp r6, #0xc9 - bls _02019970 -_02019950: - ldr r1, _02019B08 ; =_022A4E58 - mov r0, #0 - ldr r2, _02019B0C ; =0x000003E7 - str r0, [r1, #0x1c] - ldr r0, _02019B00 ; =_020AFB28 - strh r2, [r1, #0x20] - bl sub_02002E98 - b _02019AF8 -_02019970: - ldr r0, _02019B08 ; =_022A4E58 - mov r1, #1 - str r1, [r0, #0x1c] - strh r6, [r0, #0x20] - strh r4, [r0, #0x22] - mov r1, #0 - str r1, [r0, #0x3c] - str r1, [r0, #0x40] - ldr r0, [r0, #0x18] - cmp r0, #0 - bne _02019AE4 - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002E98 - ldr r1, _02019B10 ; =_02099554 - add r0, sp, #0x18 - mov r2, r6 - bl sprintf - ldr r0, _02019B14 ; =_022A4E8C - add r1, sp, #0x18 - bl sub_02019314 - ldr r1, _02019B18 ; =_0209956C - add r0, sp, #0x18 - mov r2, r6 - bl sprintf - ldr r0, _02019B1C ; =_022A4E7C - add r1, sp, #0x18 - bl sub_02019314 - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019B08 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0, #0x24] - mov r2, r1 - bl DseSwd_LoadBank - ldr r2, _02019B08 ; =_022A4E58 - mov r1, r0, lsl #0x10 - str r0, [r2, #4] - mov r0, r1, lsr #0x10 - mov r1, #0 - bl DseSwd_LoadWaves - mov r1, r0 - ldr r0, _02019B20 ; =_022A4E50 - ldr r2, _02019B08 ; =_022A4E58 - ldr r0, [r0, #4] - str r1, [r2, #0x30] - mov r2, #2 - bl MemLocateSet - ldr r1, _02019B08 ; =_022A4E58 - str r0, [r1, #0x2c] - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002E98 - bl FileRom_InitDataTransfer - bl sub_02003AB0 - ldr r0, _02019B08 ; =_022A4E58 - ldr r2, [r0, #4] - ldr r1, [r0, #0x2c] - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_LoadWaves -_02019A5C: - bl sub_02003AB0 - bl DseSwd_IsBankLoading - cmp r0, #0 - bne _02019A5C - bl FileRom_StopDataTransfer - ldr r0, _02019B00 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019B08 ; =_022A4E58 - ldr r0, [r0, #0x34] - bl DseBgm_Load - ldr r3, _02019B08 ; =_022A4E58 - ldr r1, _02019B24 ; =sub_0201AABC - mov r2, #0 - str r0, [r3] - bl DseBgm_SetSignalCallback - mov r0, #0x3e8 - mov r1, #4 - str r1, [sp, #4] - mul r0, r5, r0 - mov r1, #0x3c - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - rsb r1, r4, r4, lsl #7 - mov r0, r0, lsl #0x10 - add r0, r0, r1, asr #8 - str r0, [sp, #0x10] - mov r0, #4 - str r0, [sp, #4] - ldr r0, _02019B08 ; =_022A4E58 - add r1, sp, #4 - ldr r0, [r0] - mov r2, #1 - bl ResumeBgm -_02019AE4: - ldr r1, _02019B08 ; =_022A4E58 - mov r2, #2 - ldr r0, _02019B00 ; =_020AFB28 - str r2, [r1, #0x1c] - bl sub_02002E98 -_02019AF8: - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02019B00: .word _020AFB28 -_02019B04: .word _0209953C -_02019B08: .word _022A4E58 -_02019B0C: .word 0x000003E7 -_02019B10: .word _02099554 -_02019B14: .word _022A4E8C -_02019B18: .word _0209956C -_02019B1C: .word _022A4E7C -_02019B20: .word _022A4E50 -_02019B24: .word sub_0201AABC - arm_func_end PlayBgm - - arm_func_start StopBgm -StopBgm: ; 0x02019B28 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r0, _02019C3C ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _02019C40 ; =_02099584 - mov r2, r4 - mov r0, #7 - bl Debug_Print - ldr r5, _02019C44 ; =_022A4E58 - ldr r0, [r5, #0x1c] - cmp r0, #0 - beq _02019C2C - ldr r6, _02019C3C ; =_020AFB28 - b _02019B78 -_02019B64: - mov r0, r6 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r6 - bl sub_02002CB4 -_02019B78: - ldr r0, [r5, #0x1c] - cmp r0, #1 - beq _02019B64 - cmp r0, #2 - bne _02019C2C - mov r0, #0x3e8 - mul r0, r4, r0 - mov r1, #0x3c - bl _s32_div_f - mov r1, r0, lsl #0x10 - ldr r2, _02019C44 ; =_022A4E58 - mov r1, r1, lsr #0x10 - ldr r0, [r2] - bl DseBgm_Stop - ldr r0, _02019C44 ; =_022A4E58 - str r4, [sp] - ldrh r3, [r0, #0x20] - ldr r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - ldr r0, _02019C48 ; =_02099594 - bl Debug_Print0 - cmp r4, #0 - beq _02019BE4 - ldr r0, _02019C44 ; =_022A4E58 - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _02019C2C -_02019BE4: - ldr r5, _02019C3C ; =_020AFB28 - ldr r4, _02019C44 ; =_022A4E58 - b _02019C04 -_02019BF0: - mov r0, r5 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r5 - bl sub_02002CB4 -_02019C04: - ldr r0, [r4] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _02019BF0 - bl sub_02019408 - ldr r0, _02019C44 ; =_022A4E58 - mov r2, #0 - ldr r1, _02019C4C ; =0x000003E7 - str r2, [r0, #0x1c] - strh r1, [r0, #0x20] -_02019C2C: - ldr r0, _02019C3C ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02019C3C: .word _020AFB28 -_02019C40: .word _02099584 -_02019C44: .word _022A4E58 -_02019C48: .word _02099594 -_02019C4C: .word 0x000003E7 - arm_func_end StopBgm - - arm_func_start ChangeBgm -ChangeBgm: ; 0x02019C50 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - ldr r0, _02019CF8 ; =_020AFB28 - mov r4, r1 - bl sub_02002CB4 - ldr r1, _02019CFC ; =_020995BC - mov r2, r4 - mov r3, r5 - mov r0, #7 - bl Debug_Print - ldr r0, _02019D00 ; =_022A4E58 - ldr r1, [r0, #0x1c] - cmp r1, #0 - beq _02019CE8 - ldr r0, [r0, #0x18] - cmp r0, #0 - bne _02019CE0 - mov r0, #0x3e8 - mul r0, r5, r0 - mov r2, #4 - mov r1, #0x3c - str r2, [sp] - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, #4 - ldr r1, _02019D00 ; =_022A4E58 - rsb r3, r4, r4, lsl #7 - mov r0, r0, lsl #0x10 - add r3, r0, r3, asr #8 - ldr r0, [r1] - add r1, sp, #0 - str r3, [sp, #0xc] - str r2, [sp] - bl DseBgm_SetFades -_02019CE0: - ldr r0, _02019D00 ; =_022A4E58 - strh r4, [r0, #0x22] -_02019CE8: - ldr r0, _02019CF8 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02019CF8: .word _020AFB28 -_02019CFC: .word _020995BC -_02019D00: .word _022A4E58 - arm_func_end ChangeBgm - - arm_func_start sub_02019D04 -sub_02019D04: ; 0x02019D04 - stmdb sp!, {r4, lr} - ldr r0, _02019D50 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019D54 ; =_022A4E58 - ldr r1, [r0, #0x1c] - cmp r1, #0 - beq _02019D3C - ldr r1, [r0, #0x3c] - cmp r1, #0 - subgt r1, r1, #1 - movgt r4, #1 - strgt r1, [r0, #0x3c] - movle r4, #0 - b _02019D40 -_02019D3C: - mov r4, #1 -_02019D40: - ldr r0, _02019D50 ; =_020AFB28 - bl sub_02002E98 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02019D50: .word _020AFB28 -_02019D54: .word _022A4E58 - arm_func_end sub_02019D04 - - arm_func_start sub_02019D58 -sub_02019D58: ; 0x02019D58 - stmdb sp!, {r4, lr} - ldr r0, _02019D7C ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _02019D80 ; =_022A4E58 - ldr r0, _02019D7C ; =_020AFB28 - ldrh r4, [r1, #0x48] - bl sub_02002E98 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02019D7C: .word _020AFB28 -_02019D80: .word _022A4E58 - arm_func_end sub_02019D58 - - arm_func_start PlayBgm2 -PlayBgm2: ; 0x02019D84 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x98 - mov r6, r0 - ldr r0, _02019FC0 ; =_020AFB28 - mov r5, r1 - mov r4, r2 - bl sub_02002CB4 - ldr r1, _02019FC4 ; =_020995D0 - mov r2, r6 - mov r3, r4 - mov r0, #7 - str r5, [sp] - bl Debug_Print - ldr r0, _02019FC8 ; =_022A4E58 - ldrh r0, [r0, #0x20] - cmp r6, r0 - bne _02019DE0 - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002E98 - mov r0, #0 - bl StopBgm - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002CB4 -_02019DE0: - ldr r1, _02019FC8 ; =_022A4E58 - ldr r0, _02019FCC ; =0x000003E7 - ldrh r1, [r1, #0x48] - cmp r1, r0 - beq _02019E0C - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002E98 - mov r0, #0 - bl StopBgm2 - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002CB4 -_02019E0C: - cmp r6, #1 - blo _02019E1C - cmp r6, #0xc9 - bls _02019E3C -_02019E1C: - ldr r1, _02019FC8 ; =_022A4E58 - mov r0, #0 - ldr r2, _02019FCC ; =0x000003E7 - str r0, [r1, #0x44] - ldr r0, _02019FC0 ; =_020AFB28 - strh r2, [r1, #0x48] - bl sub_02002E98 - b _02019FB8 -_02019E3C: - ldr r0, _02019FC8 ; =_022A4E58 - mov r1, #1 - str r1, [r0, #0x44] - strh r6, [r0, #0x48] - strh r4, [r0, #0x4a] - ldr r0, [r0, #0x18] - cmp r0, #0 - bne _02019FA4 - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002E98 - ldr r1, _02019FD0 ; =_02099554 - add r0, sp, #0x18 - mov r2, r6 - bl sprintf - ldr r0, _02019FD4 ; =_022A4EB4 - add r1, sp, #0x18 - bl LoadDseFile - ldr r1, _02019FD8 ; =_0209956C - add r0, sp, #0x18 - mov r2, r6 - bl sprintf - ldr r0, _02019FDC ; =_022A4EA4 - add r1, sp, #0x18 - bl LoadDseFile - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019FC8 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0, #0x4c] - mov r2, r1 - bl DseSwd_LoadBank - ldr r2, _02019FC8 ; =_022A4E58 - mov r1, r0, lsl #0x10 - str r0, [r2, #0xc] - mov r0, r1, lsr #0x10 - mov r1, #0 - bl DseSwd_LoadWaves - mov r1, r0 - ldr r0, _02019FE0 ; =_022A4E50 - ldr r2, _02019FC8 ; =_022A4E58 - ldr r0, [r0, #4] - str r1, [r2, #0x58] - mov r2, #2 - bl MemLocateSet - ldr r1, _02019FC8 ; =_022A4E58 - str r0, [r1, #0x54] - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002E98 - bl FileRom_InitDataTransfer - bl sub_02003AB0 - ldr r0, _02019FC8 ; =_022A4E58 - ldr r2, [r0, #0xc] - ldr r1, [r0, #0x54] - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - bl DseSwd_LoadWaves -_02019F1C: - bl sub_02003AB0 - bl DseSwd_IsBankLoading - cmp r0, #0 - bne _02019F1C - bl FileRom_StopDataTransfer - ldr r0, _02019FC0 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _02019FC8 ; =_022A4E58 - ldr r0, [r0, #0x5c] - bl DseBgm_Load - ldr r3, _02019FC8 ; =_022A4E58 - ldr r1, _02019FE4 ; =sub_0201AABC - mov r2, #0 - str r0, [r3, #8] - bl DseBgm_SetSignalCallback - mov r0, #0x3e8 - mov r1, #4 - str r1, [sp, #4] - mul r0, r5, r0 - mov r1, #0x3c - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - rsb r1, r4, r4, lsl #7 - mov r0, r0, lsl #0x10 - add r0, r0, r1, asr #8 - str r0, [sp, #0x10] - mov r0, #4 - str r0, [sp, #4] - ldr r0, _02019FC8 ; =_022A4E58 - add r1, sp, #4 - ldr r0, [r0, #8] - mov r2, #1 - bl ResumeBgm -_02019FA4: - ldr r1, _02019FC8 ; =_022A4E58 - mov r2, #2 - ldr r0, _02019FC0 ; =_020AFB28 - str r2, [r1, #0x44] - bl sub_02002E98 -_02019FB8: - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02019FC0: .word _020AFB28 -_02019FC4: .word _020995D0 -_02019FC8: .word _022A4E58 -_02019FCC: .word 0x000003E7 -_02019FD0: .word _02099554 -_02019FD4: .word _022A4EB4 -_02019FD8: .word _0209956C -_02019FDC: .word _022A4EA4 -_02019FE0: .word _022A4E50 -_02019FE4: .word sub_0201AABC - arm_func_end PlayBgm2 - - arm_func_start StopBgm2 -StopBgm2: ; 0x02019FE8 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - ldr r0, _0201A0D8 ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _0201A0DC ; =_020995E8 - mov r2, r4 - mov r0, #7 - bl Debug_Print - ldr r5, _0201A0E0 ; =_022A4E58 - ldr r0, [r5, #0x44] - cmp r0, #0 - beq _0201A0CC - ldr r6, _0201A0D8 ; =_020AFB28 - b _0201A034 -_0201A020: - mov r0, r6 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r6 - bl sub_02002CB4 -_0201A034: - ldr r0, [r5, #0x44] - cmp r0, #1 - beq _0201A020 - cmp r0, #2 - bne _0201A0CC - mov r0, #0x3e8 - mul r0, r4, r0 - mov r1, #0x3c - bl _s32_div_f - mov r1, r0, lsl #0x10 - ldr r2, _0201A0E0 ; =_022A4E58 - mov r1, r1, lsr #0x10 - ldr r0, [r2, #8] - bl DseBgm_Stop - cmp r4, #0 - beq _0201A084 - ldr r0, _0201A0E0 ; =_022A4E58 - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _0201A0CC -_0201A084: - ldr r5, _0201A0D8 ; =_020AFB28 - ldr r4, _0201A0E0 ; =_022A4E58 - b _0201A0A4 -_0201A090: - mov r0, r5 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r5 - bl sub_02002CB4 -_0201A0A4: - ldr r0, [r4, #8] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _0201A090 - bl sub_02019488 - ldr r0, _0201A0E0 ; =_022A4E58 - mov r2, #0 - ldr r1, _0201A0E4 ; =0x000003E7 - str r2, [r0, #0x44] - strh r1, [r0, #0x48] -_0201A0CC: - ldr r0, _0201A0D8 ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0201A0D8: .word _020AFB28 -_0201A0DC: .word _020995E8 -_0201A0E0: .word _022A4E58 -_0201A0E4: .word 0x000003E7 - arm_func_end StopBgm2 - - arm_func_start ChangeBgm2 -ChangeBgm2: ; 0x0201A0E8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - ldr r0, _0201A190 ; =_020AFB28 - mov r4, r1 - bl sub_02002CB4 - ldr r1, _0201A194 ; =_020995F8 - mov r2, r4 - mov r3, r5 - mov r0, #7 - bl Debug_Print - ldr r0, _0201A198 ; =_022A4E58 - ldr r1, [r0, #0x44] - cmp r1, #0 - beq _0201A180 - ldr r0, [r0, #0x18] - cmp r0, #0 - bne _0201A178 - mov r0, #0x3e8 - mul r0, r5, r0 - mov r2, #4 - mov r1, #0x3c - str r2, [sp] - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, #4 - ldr r1, _0201A198 ; =_022A4E58 - rsb r3, r4, r4, lsl #7 - mov r0, r0, lsl #0x10 - add r3, r0, r3, asr #8 - ldr r0, [r1, #8] - add r1, sp, #0 - str r3, [sp, #0xc] - str r2, [sp] - bl DseBgm_SetFades -_0201A178: - ldr r0, _0201A198 ; =_022A4E58 - strh r4, [r0, #0x4a] -_0201A180: - ldr r0, _0201A190 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0201A190: .word _020AFB28 -_0201A194: .word _020995F8 -_0201A198: .word _022A4E58 - arm_func_end ChangeBgm2 - - arm_func_start sub_0201A19C -sub_0201A19C: ; 0x0201A19C - stmdb sp!, {r4, lr} - ldr r0, _0201A1C0 ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _0201A1C4 ; =_022A4E58 - ldr r0, _0201A1C0 ; =_020AFB28 - ldrh r4, [r1, #0x68] - bl sub_02002E98 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0201A1C0: .word _020AFB28 -_0201A1C4: .word _022A4E58 - arm_func_end sub_0201A19C - - arm_func_start PlayME -PlayME: ; 0x0201A1C8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x98 - mov r6, r0 - ldr r0, _0201A3F0 ; =_020AFB28 - mov r5, r1 - mov r4, r2 - bl sub_02002CB4 - ldr r1, _0201A3F4 ; =_0209960C - mov r2, r6 - mov r3, r4 - mov r0, #7 - str r5, [sp] - bl Debug_Print - ldr r7, _0201A3F8 ; =_022A4E58 - cmp r6, #0xd - ldr r0, [r7, #0x18] - movhi r6, #0 - cmp r0, #0 - bne _0201A2B0 - mov r0, #1 - str r0, [r7, #0x18] - str r0, [r7, #0x64] - ldr r8, _0201A3F0 ; =_020AFB28 - strh r6, [r7, #0x68] -_0201A228: - ldr r0, [r7, #0x1c] - cmp r0, #0 - beq _0201A268 - cmp r0, #2 - bne _0201A250 - ldr r0, _0201A3F8 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0] - bl DseBgm_Stop - b _0201A268 -_0201A250: - mov r0, r8 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r8 - bl sub_02002CB4 - b _0201A228 -_0201A268: - ldr r8, _0201A3F0 ; =_020AFB28 - ldr r7, _0201A3F8 ; =_022A4E58 -_0201A270: - ldr r0, [r7, #0x44] - cmp r0, #0 - beq _0201A304 - cmp r0, #2 - bne _0201A298 - ldr r0, _0201A3F8 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0, #8] - bl DseBgm_Stop - b _0201A304 -_0201A298: - mov r0, r8 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r8 - bl sub_02002CB4 - b _0201A270 -_0201A2B0: - ldr r0, [r7, #0x64] - cmp r0, #2 - bne _0201A304 - ldr r0, _0201A3F0 ; =_020AFB28 - bl sub_02002E98 - mov r0, #0 - bl StopME - ldr r0, _0201A3F0 ; =_020AFB28 - bl sub_02002CB4 - ldr r8, _0201A3F0 ; =_020AFB28 - b _0201A2F0 -_0201A2DC: - mov r0, r8 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r8 - bl sub_02002CB4 -_0201A2F0: - ldr r0, [r7, #0x10] - bl DseBgm_IsPlaying - cmp r0, #0 - bne _0201A2DC - bl sub_02019508 -_0201A304: - ldr r1, _0201A3F8 ; =_022A4E58 - mov r0, #1 - str r0, [r1, #0x18] - str r0, [r1, #0x64] - ldr r0, _0201A3F0 ; =_020AFB28 - strh r6, [r1, #0x68] - bl sub_02002E98 - ldr r1, _0201A3FC ; =_02099620 - add r0, sp, #0x18 - mov r2, r6 - bl sprintf - ldr r0, _0201A400 ; =_022A4ECC - add r1, sp, #0x18 - bl sub_02019314 - ldr r1, _0201A404 ; =_02099634 - add r0, sp, #0x18 - bl sprintf - ldr r0, _0201A408 ; =_022A4EC4 - add r1, sp, #0x18 - bl sub_02019314 - ldr r0, _0201A3F0 ; =_020AFB28 - bl sub_02002CB4 - ldr r0, _0201A3F8 ; =_022A4E58 - mov r1, #0 - ldr r0, [r0, #0x6c] - mov r2, r1 - bl DseSwd_LoadBank - ldr r1, _0201A3F8 ; =_022A4E58 - str r0, [r1, #0x14] - ldr r0, [r1, #0x74] - bl DseBgm_Load - ldr r1, _0201A3F8 ; =_022A4E58 - mov r2, #4 - str r0, [r1, #0x10] - mov r0, #0x3e8 - mul r0, r5, r0 - mov r1, #0x3c - str r2, [sp, #4] - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - rsb r1, r4, r4, lsl #7 - mov r0, r0, lsl #0x10 - add r0, r0, r1, asr #8 - str r0, [sp, #0x10] - mov r0, #4 - str r0, [sp, #4] - ldr r0, _0201A3F8 ; =_022A4E58 - add r1, sp, #4 - ldr r0, [r0, #0x10] - mov r2, #1 - bl ResumeBgm - ldr r1, _0201A3F8 ; =_022A4E58 - mov r2, #2 - ldr r0, _0201A3F0 ; =_020AFB28 - str r2, [r1, #0x64] - bl sub_02002E98 - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201A3F0: .word _020AFB28 -_0201A3F4: .word _0209960C -_0201A3F8: .word _022A4E58 -_0201A3FC: .word _02099620 -_0201A400: .word _022A4ECC -_0201A404: .word _02099634 -_0201A408: .word _022A4EC4 - arm_func_end PlayME - - arm_func_start StopME -StopME: ; 0x0201A40C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0201A474 ; =_020AFB28 - bl sub_02002CB4 - ldr r1, _0201A478 ; =_02099644 - mov r2, r4 - mov r0, #7 - bl Debug_Print - ldr r0, _0201A47C ; =_022A4E58 - ldr r1, [r0, #0x18] - cmp r1, #1 - ldreq r0, [r0, #0x64] - cmpeq r0, #2 - bne _0201A468 - mov r0, #0x3e8 - mul r0, r4, r0 - mov r1, #0x3c - bl _s32_div_f - mov r1, r0, lsl #0x10 - ldr r2, _0201A47C ; =_022A4E58 - mov r1, r1, lsr #0x10 - ldr r0, [r2, #0x10] - bl DseBgm_Stop -_0201A468: - ldr r0, _0201A474 ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r4, pc} - .align 2, 0 -_0201A474: .word _020AFB28 -_0201A478: .word _02099644 -_0201A47C: .word _022A4E58 - arm_func_end StopME - - arm_func_start sub_0201A480 -sub_0201A480: ; 0x0201A480 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r1, r7, asr #8 - ldr r0, _0201A4F4 ; =_020AFB28 - and r5, r7, #0xff - and r4, r1, #0xff - mov r6, #0 - bl sub_02002CB4 - cmp r5, #0 - cmpne r4, #0x3f - beq _0201A4E4 - cmp r4, #1 - bne _0201A4D4 - ldr r0, _0201A4F8 ; =_022A4E58 - mov r1, r5, lsl #0x10 - ldr r0, [r0, #0x88] - mov r1, r1, lsr #0x10 - bl DseSe_HasPlayingInstances - cmp r0, #0 - movgt r6, #1 - b _0201A4E4 -_0201A4D4: - ldr r0, _0201A4F8 ; =_022A4E58 - ldrh r0, [r0, #0x98] - cmp r0, r7 - moveq r6, #1 -_0201A4E4: - ldr r0, _0201A4F4 ; =_020AFB28 - bl sub_02002E98 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0201A4F4: .word _020AFB28 -_0201A4F8: .word _022A4E58 - arm_func_end sub_0201A480 - - arm_func_start PlaySe -PlaySe: ; 0x0201A4FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r2, r5, asr #8 - ldr r0, _0201A660 ; =_020AFB28 - mov r7, r1 - and r6, r2, #0xff - and r4, r5, #0xff - bl sub_02002CB4 - ldr r1, _0201A664 ; =_02099650 - mov r2, r5 - mov r3, r7 - mov r0, #8 - bl Debug_Print - rsb r0, r7, r7, lsl #7 - mov r0, r0, asr #8 - mov r1, #4 - str r0, [sp, #0xc] - str r1, [sp] - cmp r4, #0 - beq _0201A650 - cmp r6, #0x3f - bne _0201A578 - ldr r3, _0201A668 ; =_022A4E58 - add r2, sp, #0 - ldr r0, [r3, #0x7c] - mov r1, #0 - add r0, r0, r4, lsl #16 - str r0, [r3, #0x84] - bl DseSe_Play - b _0201A650 -_0201A578: - cmp r6, #1 - bne _0201A5A0 - ldr r3, _0201A668 ; =_022A4E58 - add r2, sp, #0 - ldr r0, [r3, #0x88] - mov r1, #0 - add r0, r0, r4, lsl #16 - str r0, [r3, #0x90] - bl DseSe_Play - b _0201A650 -_0201A5A0: - ldr r0, _0201A668 ; =_022A4E58 - mov r1, #1 - ldrh r2, [r0, #0x98] - ldr r3, [r0, #0x94] - str r1, [r0, #0x94] - cmp r3, #0 - strh r5, [r0, #0x98] - cmpne r2, #0x3f00 - beq _0201A60C - mov r1, #0 - ldr r0, [r0, #0xdc] - mov r2, r1 - bl DseSe_Stop - ldr r8, _0201A660 ; =_020AFB28 - mov r7, #0 - ldr r6, _0201A668 ; =_022A4E58 - b _0201A5F8 -_0201A5E4: - mov r0, r8 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r8 - bl sub_02002CB4 -_0201A5F8: - ldr r0, [r6, #0xdc] - mov r1, r7 - bl DseSe_HasPlayingInstances - cmp r0, #0 - bgt _0201A5E4 -_0201A60C: - mov r0, r5 - bl PlaySeLoad - cmp r0, #0 - ldreq r0, _0201A668 ; =_022A4E58 - mov r1, #0 - streq r1, [r0, #0x94] - moveq r1, #0x3f00 - streqh r1, [r0, #0x98] - beq _0201A650 - ldr r3, _0201A668 ; =_022A4E58 - mov r0, #2 - str r0, [r3, #0x94] - ldr r0, [r3, #0xc8] - add r2, sp, #0 - add r0, r0, r4, lsl #16 - str r0, [r3, #0xdc] - bl DseSe_Play -_0201A650: - ldr r0, _0201A660 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201A660: .word _020AFB28 -_0201A664: .word _02099650 -_0201A668: .word _022A4E58 - arm_func_end PlaySe - - arm_func_start PlaySeFullSpec -PlaySeFullSpec: ; 0x0201A66C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x1c - mov sb, r0 - mov r4, sb, asr #8 - ldr r0, _0201A81C ; =_020AFB28 - mov r8, r1 - mov r7, r2 - mov r6, r3 - and r4, r4, #0xff - and r5, sb, #0xff - bl sub_02002CB4 - str r7, [sp] - str r6, [sp, #4] - mov r0, #8 - ldr r1, _0201A820 ; =_02099660 - mov r2, sb - mov r3, r8 - bl Debug_Print - mov r0, #4 - str r0, [sp, #8] - mov r0, #0x3e8 - mul r0, r8, r0 - mov r1, #0x3c - bl _s32_div_f - rsb r2, r7, r7, lsl #7 - rsb r1, r6, r6, lsl #6 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - add r0, r0, r2, asr #8 - str r0, [sp, #0x14] - cmp r5, #0 - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - mov r0, r0, asr #8 - add r0, r0, #0x40 - str r0, [sp, #0x18] - mov r0, #0xc - str r0, [sp, #8] - beq _0201A80C - cmp r4, #0x3f - bne _0201A734 - ldr r3, _0201A824 ; =_022A4E58 - add r2, sp, #8 - ldr r0, [r3, #0x7c] - mov r1, #0 - add r0, r0, r5, lsl #16 - str r0, [r3, #0x84] - bl DseSe_Play - b _0201A80C -_0201A734: - cmp r4, #1 - bne _0201A75C - ldr r3, _0201A824 ; =_022A4E58 - add r2, sp, #8 - ldr r0, [r3, #0x88] - mov r1, #0 - add r0, r0, r5, lsl #16 - str r0, [r3, #0x90] - bl DseSe_Play - b _0201A80C -_0201A75C: - ldr r0, _0201A824 ; =_022A4E58 - mov r1, #1 - ldrh r2, [r0, #0x98] - ldr r3, [r0, #0x94] - str r1, [r0, #0x94] - cmp r3, #0 - strh sb, [r0, #0x98] - cmpne r2, #0x3f00 - beq _0201A7C8 - mov r1, #0 - ldr r0, [r0, #0xdc] - mov r2, r1 - bl DseSe_Stop - ldr r7, _0201A81C ; =_020AFB28 - mov r6, #0 - ldr r4, _0201A824 ; =_022A4E58 - b _0201A7B4 -_0201A7A0: - mov r0, r7 - bl sub_02002E98 - bl sub_02003AB0 - mov r0, r7 - bl sub_02002CB4 -_0201A7B4: - ldr r0, [r4, #0xdc] - mov r1, r6 - bl DseSe_HasPlayingInstances - cmp r0, #0 - bgt _0201A7A0 -_0201A7C8: - mov r0, sb - bl PlaySeLoad - cmp r0, #0 - ldreq r0, _0201A824 ; =_022A4E58 - mov r1, #0 - streq r1, [r0, #0x94] - moveq r1, #0x3f00 - streqh r1, [r0, #0x98] - beq _0201A80C - ldr r3, _0201A824 ; =_022A4E58 - mov r0, #2 - str r0, [r3, #0x94] - ldr r0, [r3, #0xc8] - add r2, sp, #8 - add r0, r0, r5, lsl #16 - str r0, [r3, #0xdc] - bl DseSe_Play -_0201A80C: - ldr r0, _0201A81C ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0201A81C: .word _020AFB28 -_0201A820: .word _02099660 -_0201A824: .word _022A4E58 - arm_func_end PlaySeFullSpec - - arm_func_start SeChangeVolume -SeChangeVolume: ; 0x0201A828 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - mov r8, r0 - mov r3, r8, asr #8 - ldr r0, _0201A8F4 ; =_020AFB28 - mov r7, r1 - mov r6, r2 - and r4, r3, #0xff - and r5, r8, #0xff - bl sub_02002CB4 - ldr r1, _0201A8F8 ; =_02099684 - mov r2, r8 - mov r3, r7 - str r6, [sp] - mov r0, #8 - bl Debug_Print - mov r0, #0x3e8 - mul r0, r7, r0 - mov r1, #4 - str r1, [sp, #4] - mov r1, #0x3c - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, #4 - rsb r2, r6, r6, lsl #7 - str r0, [sp, #4] - mov r0, r1, lsl #0x10 - add r0, r0, r2, asr #8 - str r0, [sp, #0x10] - cmp r5, #0 - beq _0201A8E4 - cmp r4, #0x3f - ldreq r0, _0201A8FC ; =_022A4E58 - ldreq r0, [r0, #0x7c] - addeq r0, r0, r5, lsl #16 - beq _0201A8D8 - cmp r4, #1 - ldreq r0, _0201A8FC ; =_022A4E58 - ldreq r0, [r0, #0x88] - addeq r0, r0, r5, lsl #16 - ldrne r0, _0201A8FC ; =_022A4E58 - ldrne r0, [r0, #0xc8] - addne r0, r0, r5, lsl #16 -_0201A8D8: - add r2, sp, #4 - mov r1, #0 - bl sub_0206F5C8 -_0201A8E4: - ldr r0, _0201A8F4 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201A8F4: .word _020AFB28 -_0201A8F8: .word _02099684 -_0201A8FC: .word _022A4E58 - arm_func_end SeChangeVolume - - arm_func_start SeChangePan -SeChangePan: ; 0x0201A900 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - mov r8, r0 - mov r3, r8, asr #8 - ldr r0, _0201A9D8 ; =_020AFB28 - mov r7, r1 - mov r6, r2 - and r4, r3, #0xff - and r5, r8, #0xff - bl sub_02002CB4 - ldr r1, _0201A9DC ; =_020996A4 - mov r2, r8 - mov r3, r7 - str r6, [sp] - mov r0, #8 - bl Debug_Print - mov r0, #0x3e8 - mul r0, r7, r0 - mov r1, #4 - str r1, [sp, #4] - mov r1, #0x3c - bl _s32_div_f - rsb r2, r6, r6, lsl #6 - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - mov r2, r1, asr #8 - mov r0, r0, lsl #0x10 - mov r1, #8 - str r1, [sp, #4] - add r1, r2, #0x40 - mov r0, r0, lsr #0x10 - add r0, r1, r0, lsl #16 - str r0, [sp, #0x14] - cmp r5, #0 - beq _0201A9C8 - cmp r4, #0x3f - ldreq r0, _0201A9E0 ; =_022A4E58 - ldreq r0, [r0, #0x7c] - addeq r0, r0, r5, lsl #16 - beq _0201A9BC - cmp r4, #1 - ldreq r0, _0201A9E0 ; =_022A4E58 - ldreq r0, [r0, #0x88] - addeq r0, r0, r5, lsl #16 - ldrne r0, _0201A9E0 ; =_022A4E58 - ldrne r0, [r0, #0xc8] - addne r0, r0, r5, lsl #16 -_0201A9BC: - add r2, sp, #4 - mov r1, #0 - bl sub_0206F5C8 -_0201A9C8: - ldr r0, _0201A9D8 ; =_020AFB28 - bl sub_02002E98 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201A9D8: .word _020AFB28 -_0201A9DC: .word _020996A4 -_0201A9E0: .word _022A4E58 - arm_func_end SeChangePan - - arm_func_start StopSe -StopSe: ; 0x0201A9E4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r2, r7, asr #8 - ldr r0, _0201AA94 ; =_020AFB28 - mov r5, r1 - and r6, r2, #0xff - and r4, r7, #0xff - bl sub_02002CB4 - ldr r1, _0201AA98 ; =_020996C0 - mov r2, r7 - mov r3, r5 - mov r0, #8 - bl Debug_Print - cmp r7, #0x3f00 - bne _0201AA2C - mov r0, #0 - bl DseSe_StopAll - b _0201AA88 -_0201AA2C: - cmp r4, #0 - beq _0201AA88 - cmp r6, #0x3f - ldreq r0, _0201AA9C ; =_022A4E58 - ldreq r0, [r0, #0x7c] - addeq r4, r0, r4, lsl #16 - beq _0201AA64 - cmp r6, #1 - ldreq r0, _0201AA9C ; =_022A4E58 - ldreq r0, [r0, #0x88] - addeq r4, r0, r4, lsl #16 - ldrne r0, _0201AA9C ; =_022A4E58 - ldrne r0, [r0, #0xc8] - addne r4, r0, r4, lsl #16 -_0201AA64: - mov r0, #0x3e8 - mul r0, r5, r0 - mov r1, #0x3c - bl _s32_div_f - mov r1, r0, lsl #0x10 - mov r2, r1, lsr #0x10 - mov r0, r4 - mov r1, #0 - bl DseSe_Stop -_0201AA88: - ldr r0, _0201AA94 ; =_020AFB28 - bl sub_02002E98 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0201AA94: .word _020AFB28 -_0201AA98: .word _020996C0 -_0201AA9C: .word _022A4E58 - arm_func_end StopSe - - arm_func_start sub_0201AAA0 -sub_0201AAA0: ; 0x0201AAA0 - mov r0, r0, asr #8 - and r0, r0, #0xff - cmp r0, #0x3f - cmpne r0, #1 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end sub_0201AAA0 - - arm_func_start sub_0201AABC -sub_0201AABC: ; 0x0201AABC - ldr r1, _0201AAD4 ; =_022A4E58 - mov r0, #0 - ldr r2, [r1, #0x3c] - add r2, r2, #1 - str r2, [r1, #0x3c] - bx lr - .align 2, 0 -_0201AAD4: .word _022A4E58 - arm_func_end sub_0201AABC - - arm_func_start FillCopyToFlatVramCommand -FillCopyToFlatVramCommand: ; 0x0201AAD8 - ldrb ip, [sp] - cmp ip, #1 - cmpne ip, #2 - moveq r3, r3, lsl #1 - str r3, [r0] - str r2, [r0, #4] - str r1, [r0, #8] - ldrb r2, [sp] - ldrh r1, [sp, #4] - strb r2, [r0, #0xe] - strh r1, [r0, #0xc] - mov r0, r3 - bx lr - arm_func_end FillCopyToFlatVramCommand - - arm_func_start ExecuteCopyToFlatVramCommand -ExecuteCopyToFlatVramCommand: ; 0x0201AB0C - stmdb sp!, {r3, lr} - mov ip, r0 - ldr r1, [ip, #4] - cmp r1, #0 - beq _0201AB7C - ldrb r0, [ip, #0xe] - cmp r0, #0 - bne _0201AB40 - mov r0, r1 - ldr r1, [ip, #8] - ldr r2, [ip] - bl MTi_CpuCopy32 - ldmia sp!, {r3, pc} -_0201AB40: - cmp r0, #1 - bne _0201AB60 - ldr r2, [ip] - ldrh r3, [ip, #0xc] - ldr r0, [ip, #8] - mov r2, r2, asr #1 - bl CopyAndInterleave - ldmia sp!, {r3, pc} -_0201AB60: - cmp r0, #2 - ldmneia sp!, {r3, pc} - ldr r2, [ip] - ldr r0, [ip, #8] - mov r2, r2, asr #1 - bl CopyAndInterleave0 - ldmia sp!, {r3, pc} -_0201AB7C: - ldr r1, [ip, #8] - ldr r2, [ip] - mov r0, #0 - bl MTi_CpuClear32 - ldmia sp!, {r3, pc} - arm_func_end ExecuteCopyToFlatVramCommand - - arm_func_start sub_0201AB90 -sub_0201AB90: ; 0x0201AB90 - ldr ip, _0201ABA8 ; =MemZero - add r2, r0, #0xe00 - mov r3, #0 - mov r1, #0xe00 - strh r3, [r2] - bx ip - .align 2, 0 -_0201ABA8: .word MemZero - arm_func_end sub_0201AB90 - - arm_func_start DecodeFragmentByteAssemblyTable -DecodeFragmentByteAssemblyTable: ; 0x0201ABAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x18 - mov r7, #0 - mov sb, r0 - mov r8, r1 - mov r6, r7 - add r5, sp, #8 - b _0201ABF8 -_0201ABCC: - str r6, [sp] - str r6, [sp, #4] - ldr r2, [sb], #0xc - mov r0, r5 - mov r1, r8 - bl FillCopyToFlatVramCommand - mov r4, r0 - mov r0, r5 - bl ExecuteCopyToFlatVramCommand - add r8, r8, r4 - add r7, r7, r4 -_0201ABF8: - ldr r3, [sb, #4] - cmp r3, #0 - bne _0201ABCC - mov r0, r7 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end DecodeFragmentByteAssemblyTable - - arm_func_start sub_0201AC10 -sub_0201AC10: ; 0x0201AC10 - add r0, r0, #0xe00 - mov r1, #0 - strh r1, [r0] - bx lr - arm_func_end sub_0201AC10 - - arm_func_start sub_0201AC20 -sub_0201AC20: ; 0x0201AC20 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldrb lr, [sp, #0x10] - ldrh ip, [sp, #0x14] - mov r4, r0 - str lr, [sp] - str ip, [sp, #4] - add r0, r4, #0xe00 - ldrsh r0, [r0] - add r0, r4, r0, lsl #4 - bl FillCopyToFlatVramCommand - add r0, r4, #0xe00 - ldrsh r1, [r0] - add r1, r1, #1 - strh r1, [r0] - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end sub_0201AC20 - - arm_func_start sub_0201AC64 -sub_0201AC64: ; 0x0201AC64 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x30] - add r4, sl, #0xe00 - mov fp, #1 - mov r5, #0 - b _0201AD30 -_0201AC90: - ldrsh r0, [r4] - cmp r0, #0xe0 - bge _0201AD3C - cmp r7, #0 - beq _0201ACB8 - cmp r7, #1 - beq _0201ACD8 - cmp r7, #2 - beq _0201ACF8 - b _0201AD1C -_0201ACB8: - str r5, [sp] - str r5, [sp, #4] - ldr r2, [sb] - mov r1, r8 - add r0, sl, r0, lsl #4 - bl FillCopyToFlatVramCommand - mov r3, r0 - b _0201AD1C -_0201ACD8: - str fp, [sp] - str r6, [sp, #4] - ldr r2, [sb] - mov r1, r8 - add r0, sl, r0, lsl #4 - bl FillCopyToFlatVramCommand - mov r3, r0 - b _0201AD1C -_0201ACF8: - mov r1, #2 - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - ldr r2, [sb] - mov r1, r8 - add r0, sl, r0, lsl #4 - bl FillCopyToFlatVramCommand - mov r3, r0 -_0201AD1C: - ldrsh r0, [r4] - add r8, r8, r3 - add sb, sb, #0xc - add r0, r0, #1 - strh r0, [r4] -_0201AD30: - ldr r3, [sb, #4] - cmp r3, #0 - bne _0201AC90 -_0201AD3C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_0201AC64 - - arm_func_start sub_0201AD44 -sub_0201AD44: ; 0x0201AD44 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - add r0, r6, #0xe00 - ldrsh r5, [r0] - mov r4, #0 - b _0201AD70 -_0201AD5C: - add r0, r6, r4, lsl #4 - bl ExecuteCopyToFlatVramCommand - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_0201AD70: - cmp r4, r5 - blt _0201AD5C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0201AD44 - - arm_func_start sub_0201AD7C -sub_0201AD7C: ; 0x0201AD7C - add r0, r0, #0x14 - bx lr - arm_func_end sub_0201AD7C - - arm_func_start sub_0201AD84 -sub_0201AD84: ; 0x0201AD84 - add r0, r0, #0x50 - bx lr - arm_func_end sub_0201AD84 - - arm_func_start sub_0201AD8C -sub_0201AD8C: ; 0x0201AD8C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, r2 - mov r5, #0 - mov ip, #1 - b _0201ADC0 -_0201ADA4: - add r2, r1, r5 - and r2, r2, #0xff - ldrh lr, [r4, #0x7a] - mov r2, r2, asr #4 - add r5, r5, #0x10 - orr r2, lr, ip, lsl r2 - strh r2, [r4, #0x7a] -_0201ADC0: - cmp r5, r0 - blt _0201ADA4 - mov ip, r0, lsr #0x1f - rsb r2, ip, r0, lsl #28 - adds r2, ip, r2, ror #28 - beq _0201ADF8 - add r2, r1, r0 - sub r2, r2, #1 - and r2, r2, #0xff - ldrh lr, [r4, #0x7a] - mov r2, r2, asr #4 - mov ip, #1 - orr r2, lr, ip, lsl r2 - strh r2, [r4, #0x7a] -_0201ADF8: - mov r1, r1, lsl #0x10 - mov r2, r3 - mov r3, r0 - add r0, r4, #0x14 - mov r1, r1, lsr #0x10 - bl FillPaletteDataRgba - add r0, r4, #0x14 - bl MarkPaletteDataAsNeedingUpdate - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0201AD8C - - arm_func_start sub_0201AE1C -sub_0201AE1C: ; 0x0201AE1C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov lr, #0 - add ip, r4, r1, lsl #1 - mov r5, #1 - b _0201AE50 -_0201AE34: - add r0, r2, lr - and r0, r0, #0xff - ldrh r6, [ip, #0x7c] - mov r0, r0, asr #4 - add lr, lr, #0x10 - orr r0, r6, r5, lsl r0 - strh r0, [ip, #0x7c] -_0201AE50: - cmp lr, r3 - blt _0201AE34 - mov ip, r3, lsr #0x1f - rsb r0, ip, r3, lsl #28 - adds r0, ip, r0, ror #28 - beq _0201AE90 - add r0, r2, r3 - sub r0, r0, #1 - and r0, r0, #0xff - add r6, r4, #0x7c - mov r5, r1, lsl #1 - ldrh lr, [r6, r5] - mov r0, r0, asr #4 - mov ip, #1 - orr r0, lr, ip, lsl r0 - strh r0, [r6, r5] -_0201AE90: - add r0, r2, r1, lsl #8 - mov r1, r0, lsl #0x10 - ldr r2, [sp, #0x10] - add r0, r4, #0x50 - mov r1, r1, lsr #0x10 - bl FillPaletteDataRgba - add r0, r4, #0x50 - bl MarkPaletteDataAsNeedingUpdate - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0201AE1C - - arm_func_start sub_0201AEB4 -sub_0201AEB4: ; 0x0201AEB4 - ldrh r3, [r0, #0x7a] - mov r1, r1, asr #4 - mov r2, #1 - orr r1, r3, r2, lsl r1 - strh r1, [r0, #0x7a] - bx lr - arm_func_end sub_0201AEB4 - - arm_func_start sub_0201AECC -sub_0201AECC: ; 0x0201AECC - stmdb sp!, {r3, lr} - add lr, r0, #0x7c - mov ip, r1, lsl #1 - ldrh r3, [lr, ip] - mov r0, r2, asr #4 - mov r1, #1 - orr r0, r3, r1, lsl r0 - strh r0, [lr, ip] - ldmia sp!, {r3, pc} - arm_func_end sub_0201AECC - - arm_func_start sub_0201AEF0 -sub_0201AEF0: ; 0x0201AEF0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, #0x9c - bl MemZero - strb r4, [r5, #0x79] - ldrb r0, [r5, #0x78] - orr r0, r0, #2 - strb r0, [r5, #0x78] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0201AEF0 - - arm_func_start sub_0201AF18 -sub_0201AF18: ; 0x0201AF18 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r3, r1 - mov r1, #0 - mov r2, #0x100 - mov r4, r0 - str r1, [sp] - bl sub_0200A124 - mov r2, #0 - mov r1, r4 - str r2, [sp] - add r0, r4, #0x14 - mov r3, #0x100 - bl sub_0200A478 - ldrb r0, [r4, #0x78] - orr r0, r0, #4 - strb r0, [r4, #0x78] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_0201AF18 - - arm_func_start sub_0201AF64 -sub_0201AF64: ; 0x0201AF64 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r3, r1 - mov ip, #0 - add r0, r4, #0x3c - mov r1, #2 - mov r2, #0x1000 - str ip, [sp] - bl sub_0200A124 - mov r2, #0 - str r2, [sp] - add r0, r4, #0x50 - add r1, r4, #0x3c - mov r3, #0x1000 - bl sub_0200A478 - ldrb r0, [r4, #0x78] - orr r0, r0, #8 - strb r0, [r4, #0x78] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_0201AF64 - - arm_func_start sub_0201AFB8 -sub_0201AFB8: ; 0x0201AFB8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r0, [r4, #0x78] - mov r0, r0, lsl #0x1d - movs r0, r0, lsr #0x1f - beq _0201AFE0 - add r0, r4, #0x14 - bl sub_0200A510 - mov r0, r4 - bl sub_0200A180 -_0201AFE0: - ldrb r0, [r4, #0x78] - mov r0, r0, lsl #0x1c - movs r0, r0, lsr #0x1f - ldmeqia sp!, {r4, pc} - add r0, r4, #0x50 - bl sub_0200A510 - add r0, r4, #0x3c - bl sub_0200A180 - ldmia sp!, {r4, pc} - arm_func_end sub_0201AFB8 - - arm_func_start sub_0201B004 -sub_0201B004: ; 0x0201B004 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldrb r1, [r7, #0x78] - mov r2, r1, lsl #0x1d - movs r2, r2, lsr #0x1f - beq _0201B158 - mov r1, r1, lsl #0x1f - movs r1, r1, lsr #0x1f - beq _0201B14C - ldrb r0, [r7, #8] - cmp r0, #0 - beq _0201B150 - mov r4, #0 -_0201B038: - mov r2, r4, lsl #4 - and r0, r2, #0xff - ldrh r1, [r7, #0x7a] - mov r0, r0, asr #4 - mov r3, #1 - tst r1, r3, lsl r0 - moveq r3, #0 - tst r3, #0xff - beq _0201B12C - mov r0, r2, lsl #0x10 - ldr r1, [r7, #0x10] - mov r3, r0, asr #0x10 - add r5, r1, r3, lsl #1 - ldr r2, [r7, #0xc] - mov r0, r5 - mov r1, #0x20 - add r6, r2, r3, lsl #1 - bl DC_FlushRange - ldr r0, [r7] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0201B0A4 -_0201B090: ; jump table - b _0201B0A4 ; case 0 - b _0201B0C0 ; case 1 - b _0201B0DC ; case 2 - b _0201B0F8 ; case 3 - b _0201B114 ; case 4 -_0201B0A4: - mov r1, #0 -_0201B0A8: - ldrh r0, [r5], #2 - add r1, r1, #1 - cmp r1, #0x10 - strh r0, [r6], #2 - blt _0201B0A8 - b _0201B12C -_0201B0C0: - bl GX_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, #0x20 - bl Memcpy32 - bl GX_EndLoadBGExtPltt - b _0201B12C -_0201B0DC: - bl GX_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, #0x20 - bl Memcpy32 - bl GX_EndLoadOBJExtPltt - b _0201B12C -_0201B0F8: - bl GXS_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, #0x20 - bl Memcpy32 - bl GXS_EndLoadBGExtPltt - b _0201B12C -_0201B114: - bl GXS_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, #0x20 - bl Memcpy32 - bl GXS_EndLoadOBJExtPltt -_0201B12C: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x10 - blt _0201B038 - mov r0, #0 - strb r0, [r7, #8] - b _0201B150 -_0201B14C: - bl sub_0200A184 -_0201B150: - mov r0, #0 - strh r0, [r7, #0x7a] -_0201B158: - ldrb r0, [r7, #0x78] - mov r0, r0, lsl #0x1c - movs r0, r0, lsr #0x1f - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, r7, #0x3c - bl sub_0200A184 - mov r3, #0 - mov r2, r3 -_0201B178: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - add r1, r7, r3, lsl #1 - mov r3, r0, asr #0x10 - strh r2, [r1, #0x7c] - cmp r3, #0x10 - blt _0201B178 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0201B004 - - arm_func_start sub_0201B198 -sub_0201B198: ; 0x0201B198 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r5, [sp, #0x20] - mov r8, r1 - mov r4, r0 - mov r1, #0x70 - mov r7, r2 - mov r6, r3 - bl MemZero - strb r5, [r4, #0xe] - strb r6, [r4] - stmib r4, {r7, r8} - ldr r0, [r4, #4] - bl sub_0201AC10 - mov r0, #2 - strh r0, [r4, #0xc] - cmp r6, #0 - moveq r0, #0x6400000 - movne r0, #0x6600000 - str r0, [r4, #0x64] - cmp r5, #0 - bne _0201B210 - mov ip, #0 - add r0, r4, #0x20 - mov r1, #0x70 - mov r2, #0x140 - mov r3, #0x7000000 - str ip, [sp] - bl InitOamInfo - b _0201B284 -_0201B210: - cmp r5, #1 - bne _0201B238 - ldr r3, _0201B294 ; =0x07000400 - mov ip, #0 - add r0, r4, #0x20 - mov r1, #0x70 - mov r2, #0x140 - str ip, [sp] - bl InitOamInfo - b _0201B284 -_0201B238: - cmp r5, #2 - bne _0201B260 - ldr r3, _0201B298 ; =0x07000380 - mov ip, #0 - add r0, r4, #0x20 - mov r1, #0x10 - mov r2, #0x140 - str ip, [sp] - bl InitOamInfo - b _0201B284 -_0201B260: - cmp r5, #3 - bne _0201B284 - ldr r3, _0201B29C ; =0x07000780 - mov ip, #0 - add r0, r4, #0x20 - mov r1, #0x10 - mov r2, #0x140 - str ip, [sp] - bl InitOamInfo -_0201B284: - mov r0, r4 - bl sub_0201B2A0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0201B294: .word 0x07000400 -_0201B298: .word 0x07000380 -_0201B29C: .word 0x07000780 - arm_func_end sub_0201B198 - - arm_func_start sub_0201B2A0 -sub_0201B2A0: ; 0x0201B2A0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - str r0, [r4, #0x40] - add r0, r4, #0x20 - bl ClearGroupedOamObjsAndGroups - ldrb r0, [r4, #0x1c] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x10 - mov r1, #0xc - bl MemZero - mov r0, #0 - strb r0, [r4, #0x1c] - ldmia sp!, {r4, pc} - arm_func_end sub_0201B2A0 - - arm_func_start sub_0201B2DC -sub_0201B2DC: ; 0x0201B2DC - stmdb sp!, {r4, r5, r6, lr} - mov ip, #0 - cmp r1, #0 - moveq r0, ip - ldmeqia sp!, {r4, r5, r6, pc} - ldrh r6, [r0, #0xc] - ldrh r4, [r3, #4] - ldr r5, _0201B384 ; =_020AFC28 - mov lr, r6, lsr #0x1f - rsb r3, lr, r6, lsl #30 - add r3, lr, r3, ror #30 - mov r3, r3, lsl #1 - ldrsh r3, [r5, r3] - cmp r4, #0 - ldr lr, [r0, #0x64] - mul r5, r2, r3 - bne _0201B35C - ldrh r3, [sp, #0x10] - mov r0, r1 - cmp r3, #0x10 - bhs _0201B344 - mov r2, ip - add r1, r5, lr - bl DecodeFragmentByteAssemblyTable - mov ip, r0 - b _0201B37C -_0201B344: - mov r3, ip - add r1, r5, lr - mov r2, #2 - bl DecodeFragmentByteAssemblyTable - mov ip, r0 - b _0201B37C -_0201B35C: - cmp r4, #1 - bne _0201B37C - ldrh r3, [sp, #0x10] - mov r0, r1 - mov r2, ip - add r1, r5, lr - bl DecodeFragmentByteAssemblyTable - mov ip, r0 -_0201B37C: - mov r0, ip - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0201B384: .word _020AFC28 - arm_func_end sub_0201B2DC - - arm_func_start sub_0201B388 -sub_0201B388: ; 0x0201B388 - stmdb sp!, {r3, r4, r5, lr} - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh lr, [r0, #0xc] - ldrb ip, [r3, #0xa] - ldr r5, _0201B438 ; =_020AFC28 - mov r4, lr, lsr #0x1f - rsb lr, r4, lr, lsl #30 - add r4, r4, lr, ror #30 - mov r4, r4, lsl #1 - ldrsh lr, [r5, r4] - cmp ip, #0xff - ldr r4, [r0, #0x64] - mul r5, r2, lr - ldreqh r2, [sp, #0x10] - andeq ip, r2, #0xff - ldrh r2, [r3, #4] - cmp r2, #0 - bne _0201B414 - cmp ip, #0x10 - bhs _0201B3F8 - mov r3, #0 - str r3, [sp] - ldr r0, [r0, #4] - add r2, r5, r4 - bl sub_0201AC64 - b _0201B430 -_0201B3F8: - mov r2, #0 - str r2, [sp] - ldr r0, [r0, #4] - add r2, r5, r4 - mov r3, #2 - bl sub_0201AC64 - b _0201B430 -_0201B414: - cmp r2, #1 - bne _0201B430 - mov r3, #0 - str r3, [sp] - ldr r0, [r0, #4] - add r2, r5, r4 - bl sub_0201AC64 -_0201B430: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0201B438: .word _020AFC28 - arm_func_end sub_0201B388 - - arm_func_start LoadObjPalette -LoadObjPalette: ; 0x0201B43C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r1 - ldrb r1, [r6, #0xa] - mov r7, r0 - ldrh r0, [r6, #4] - mov r5, r2 - cmp r1, #0xff - movne r5, r1 - cmp r0, #0 - bne _0201B4B8 - cmp r5, #0x10 - bhs _0201B48C - ldrsh r2, [r6, #6] - mov r1, r5, lsl #4 - ldr r0, [r7, #8] - ldr r3, [r6] - and r1, r1, #0xff - and r2, r2, #0xff - bl sub_0201AD8C - b _0201B534 -_0201B48C: - ldr r1, [r6] - sub r0, r5, #0x10 - str r1, [sp] - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - ldr r0, [r7, #8] - and r1, r1, #0xff - mov r2, #0 - mov r3, #0x10 - bl sub_0201AE1C - b _0201B534 -_0201B4B8: - cmp r0, #1 - bne _0201B534 - ldrb r0, [r6, #0xb] - cmp r0, #0 - beq _0201B518 - ldrsh r1, [r6, #6] - mov r4, #0 - mov sb, #0x10 - mov r0, r1, asr #3 - add r8, r1, r0, lsr #28 - b _0201B50C -_0201B4E4: - ldr r0, [r6] - add r1, r5, r4 - add r0, r0, r4, lsl #6 - str r0, [sp] - ldrh r2, [r6, #8] - ldr r0, [r7, #8] - mov r3, sb - and r1, r1, #0xff - bl sub_0201AE1C - add r4, r4, #1 -_0201B50C: - cmp r4, r8, asr #4 - blt _0201B4E4 - b _0201B534 -_0201B518: - ldr r0, [r6] - and r1, r5, #0xff - str r0, [sp] - ldrh r2, [r6, #8] - ldrh r3, [r6, #6] - ldr r0, [r7, #8] - bl sub_0201AE1C -_0201B534: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end LoadObjPalette - - arm_func_start sub_0201B53C -sub_0201B53C: ; 0x0201B53C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, [sp, #0x18] - mov r5, r3 - ldrh ip, [r4, #4] - ldr r3, _0201B5F4 ; =_020AFC30 - mov r6, r0 - mov r0, ip, lsl #1 - ldrh r7, [r3, r0] - mov r3, #0 - cmp r7, #0 - bne _0201B57C - ldrh r0, [sp, #0x1c] - cmp r0, #0x10 - movhs r0, #1 - movlo r0, r7 - b _0201B580 -_0201B57C: - mov r0, r7 -_0201B580: - mov ip, r2, lsl #0x10 - ldrsh r2, [r6, #0xc] - cmp r7, #0 - cmpeq r0, #1 - mov r0, r1 - moveq r3, #1 - mov r1, ip, asr #0x10 - bl sub_0201B5F8 - ldrb r1, [sp, #0x24] - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - cmp r1, #0 - bne _0201B5D0 - ldrh ip, [sp, #0x1c] - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, r4 - str ip, [sp] - bl sub_0201B388 -_0201B5D0: - ldrb r0, [sp, #0x28] - cmp r0, #0 - bne _0201B5EC - ldrh r2, [sp, #0x1c] - mov r0, r6 - mov r1, r4 - bl LoadObjPalette -_0201B5EC: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0201B5F4: .word _020AFC30 - arm_func_end sub_0201B53C - - arm_func_start sub_0201B5F8 -sub_0201B5F8: ; 0x0201B5F8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r4, r0 - mov r5, r1 - mov r1, r4 - add r0, sp, #0 - mov r6, r2 - mov r4, r3 - bl sub_0201B678 - ldrh r3, [sp, #8] - ldr r0, _0201B670 ; =0x000003FF - ldr r1, _0201B674 ; =_020996D8 - mov r2, r6, lsl #1 - and r0, r3, r0 - mov r0, r0, lsl #0x10 - ldrsh r1, [r1, r2] - mov r0, r0, asr #0x10 - cmp r4, #0 - mov r0, r0, lsl r1 - mov r0, r0, lsl #0x10 - movne r1, #1 - mov r0, r0, asr #0x10 - moveq r1, #0 - mov r0, r0, lsl r1 - mov r0, r0, lsl #0x10 - add r0, r5, r0, asr #16 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0201B670: .word 0x000003FF -_0201B674: .word _020996D8 - arm_func_end sub_0201B5F8 - - arm_func_start sub_0201B678 -sub_0201B678: ; 0x0201B678 - ldrh r3, [r1] - ldr r2, _0201B6D0 ; =0x0000FCFF - strh r3, [r0] - ldrh ip, [r1, #2] - sub r3, r2, #0xb00 - strh ip, [r0, #2] - ldrh ip, [r1, #4] - and r2, ip, r2 - strh r2, [r0, #4] - ldrh r2, [r1, #6] - and r2, r2, r3 - strh r2, [r0, #6] - ldrh r2, [r1, #8] - strh r2, [r0, #8] - ldrh r2, [r1, #4] - ldrh r3, [r1, #6] - mov r1, r2, lsl #0x16 - and r2, r3, #0xe00 - mov r1, r1, lsr #0x12 - orr r1, r1, r2, asr #9 - strh r1, [r0, #0xa] - bx lr - .align 2, 0 -_0201B6D0: .word 0x0000FCFF - arm_func_end sub_0201B678 - - arm_func_start AddWanFragmentToOam -AddWanFragmentToOam: ; 0x0201B6D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r5, r0 - mov r6, r2 - mov r7, r1 - mov r4, r3 - ldrsh r1, [r6, #4] - ldrsh r2, [r5, #0xc] - ldrb r3, [r6, #0xe] - mov r0, r7 - bl sub_0201B5F8 - ldr r1, [r5, #0x40] - str r0, [sp, #4] - cmp r1, #0x80 - mvnge r0, #0 - bge _0201B9A4 - ldrh r2, [r6, #0xa] - ldrh r3, [r6, #8] - ldrb sl, [r6, #0xf] - and r8, r2, #0xff - ldrh r2, [r6, #0xc] - add r0, sp, #0x16 - mov r1, r7 - str r2, [sp] - and sb, r3, #0xff - ldrh r7, [r6, #6] - ldrsh fp, [r6, #2] - ldrsh r6, [r6] - bl sub_0201B678 - ldrsb r0, [sp, #0x19] - adds r7, r7, r0 - movmi r7, #0 - cmp r7, #0x140 - ldrge r7, _0201B9AC ; =0x0000013F - cmp r4, #0 - bne _0201B790 - add r3, sp, #0x1a - ldrh r0, [r3] - add r4, sp, #0xe - ldrh r2, [r3, #2] - ldrh r1, [r3, #4] - strh r0, [r4] - ldrh r0, [r3, #6] - strh r2, [r4, #2] - strh r1, [r4, #4] - strh r0, [r4, #6] - b _0201B7E8 -_0201B790: - add lr, sp, #0x1a - ldrh r1, [r4] - ldrh r2, [lr] - ldrh r0, [r4, #6] - add ip, sp, #0xe - and r1, r2, r1 - orr r0, r0, r1 - strh r0, [ip] - ldrh r2, [lr, #2] - ldrh r1, [r4, #2] - ldrh r3, [r4, #8] - ldrh r0, [lr, #4] - and r1, r2, r1 - orr r1, r3, r1 - strh r1, [ip, #2] - ldrh r1, [r4, #4] - ldrh r2, [r4, #0xa] - ldrh r3, [lr, #6] - and r0, r0, r1 - orr r0, r2, r0 - strh r0, [ip, #4] - strh r3, [ip, #6] -_0201B7E8: - ldrh r1, [sp, #0x12] - mov r2, #0x400 - rsb r2, r2, #0 - and r1, r1, r2 - ldrh r0, [sp, #0x10] - strh r1, [sp, #0x12] - and r1, r0, r2, lsr #23 - sub r0, r6, #0x100 - add r4, r1, r0 - ldr r1, [sp, #4] - ldrh r0, [sp, #0x12] - mov r1, r1, lsl #0x10 - mov r2, r2, lsr #0x16 - and r1, r2, r1, lsr #16 - orr r1, r0, r1 - mov r3, r4, lsl #0x10 - mov r0, r3, asr #0x10 - strh r1, [sp, #0x12] - bl sub_0201B9B0 - cmp r0, #0 - mvnne r7, #0 - bne _0201B950 - ldrh r1, [sp, #0x10] - mov r0, #0x200 - rsb r0, r0, #0 - and r1, r1, r0 - strh r1, [sp, #0x10] - ldrh r3, [sp, #0x14] - mov r1, r0, lsr #0x14 - sub r2, fp, #0x200 - and r1, r1, r3, asr #4 - add r6, r1, r2 - ldrh r3, [sp, #0x10] - mov r1, r6, lsl #0x10 - and r2, r4, r0, lsr #23 - mov r0, r1, asr #0x10 - orr r1, r3, r2 - strh r1, [sp, #0x10] - bl sub_0201B9D4 - cmp r0, #0 - mvnne r7, #0 - bne _0201B950 - ldrh r1, [sp, #0xe] - ldrh r0, [sp, #0x14] - and r2, r6, #0xff - bic r1, r1, #0xff - strh r1, [sp, #0xe] - ldrh r3, [sp, #0xe] - mov r1, r0, asr #1 - ldr r0, [sp] - orr r2, r3, r2 - bic r2, r2, #0x2000 - strh r2, [sp, #0xe] - ldrh r2, [sp, #0xe] - mov r0, r0, lsl #0x1f - tst r1, #1 - orr r0, r2, r0, lsr #18 - strh r0, [sp, #0xe] - bne _0201B928 - cmp sl, #0 - beq _0201B8FC - ldrh r1, [sp, #0x12] - mov r0, sb, lsl #0x1c - bic r1, r1, #0xf000 - strh r1, [sp, #0x12] - ldrh r1, [sp, #0x12] - orr r0, r1, r0, lsr #16 - strh r0, [sp, #0x12] - b _0201B928 -_0201B8FC: - ldrh r2, [sp, #0x12] - and r1, sb, #0xf - bic r0, r2, #0xf000 - strh r0, [sp, #0x12] - mov r0, r2, asr #0xc - and r0, r0, #0xf - add r0, r0, r1 - ldrh r1, [sp, #0x12] - mov r0, r0, lsl #0x1c - orr r0, r1, r0, lsr #16 - strh r0, [sp, #0x12] -_0201B928: - ldrh r1, [sp, #0x12] - bic r0, r1, #0xf000 - strh r0, [sp, #0x12] - mov r0, r1, asr #0xc - and r0, r0, #0xf - add r0, r0, r8 - ldrh r1, [sp, #0x12] - mov r0, r0, lsl #0x1c - orr r0, r1, r0, lsr #16 - strh r0, [sp, #0x12] -_0201B950: - cmp r7, #0 - mvnlt r0, #1 - blt _0201B9A4 - ldr r1, [r5, #0x40] - ldr r0, [r5, #0x20] - cmp r1, r0 - bge _0201B9A0 - ldrh r4, [sp, #0xe] - ldrh r3, [sp, #0x10] - ldrh r0, [sp, #0x12] - add r1, sp, #8 - mov r2, r7 - strh r0, [sp, #0xc] - strh r4, [sp, #8] - strh r3, [sp, #0xa] - add r0, r5, #0x20 - bl AddObjToUngroupedOamObjs - ldr r0, [r5, #0x40] - add r0, r0, #1 - str r0, [r5, #0x40] -_0201B9A0: - mov r0, #0 -_0201B9A4: - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0201B9AC: .word 0x0000013F - arm_func_end AddWanFragmentToOam - - arm_func_start sub_0201B9B0 -sub_0201B9B0: ; 0x0201B9B0 - mvn r1, #0x3f - cmp r0, r1 - blt _0201B9C4 - cmp r0, #0x100 - blt _0201B9CC -_0201B9C4: - mov r0, #1 - bx lr -_0201B9CC: - mov r0, #0 - bx lr - arm_func_end sub_0201B9B0 - - arm_func_start sub_0201B9D4 -sub_0201B9D4: ; 0x0201B9D4 - mvn r1, #0x3f - cmp r0, r1 - blt _0201B9E8 - cmp r0, #0xc0 - blt _0201B9F0 -_0201B9E8: - mov r0, #1 - bx lr -_0201B9F0: - mov r0, #0 - bx lr - arm_func_end sub_0201B9D4 - - arm_func_start AddSimpleObjToOam -AddSimpleObjToOam: ; 0x0201B9F8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r3, [r4, #0x40] - cmp r3, #0x80 - mvnge r0, #0 - bge _0201BA90 - cmp r2, #0 - blt _0201BA24 - cmp r2, #0x140 - blt _0201BA2C -_0201BA24: - mvn r0, #1 - b _0201BA90 -_0201BA2C: - ldr r0, [r4, #0x20] - cmp r3, r0 - bge _0201BA8C - ldrh lr, [r1] - ldr r3, _0201BA98 ; =0x00000FFF - add r0, r4, #0x20 - strh lr, [sp] - ldrh ip, [r1, #2] - and lr, lr, #0xff00 - strh ip, [sp, #2] - ldrh ip, [r1, #4] - strh ip, [sp, #4] - ldrh ip, [r1, #6] - add r1, sp, #0 - and r3, r3, ip, asr #4 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - and r3, r3, #0xff - orr r3, lr, r3 - strh r3, [sp] - bl AddObjToUngroupedOamObjs - ldr r0, [r4, #0x40] - add r0, r0, #1 - str r0, [r4, #0x40] -_0201BA8C: - mov r0, #0 -_0201BA90: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0201BA98: .word 0x00000FFF - arm_func_end AddSimpleObjToOam - - arm_func_start GroupOamAttributesWrapper -GroupOamAttributesWrapper: ; 0x0201BA9C - ldr ip, _0201BAA8 ; =GroupOamObjs - add r0, r0, #0x20 - bx ip - .align 2, 0 -_0201BAA8: .word GroupOamObjs - arm_func_end GroupOamAttributesWrapper - - arm_func_start CopyAttributesToOamWrapper -CopyAttributesToOamWrapper: ; 0x0201BAAC - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x20 - bl SetShouldCopyToOam - add r0, r4, #0x20 - bl CopyAttributesToOam - ldmia sp!, {r4, pc} - arm_func_end CopyAttributesToOamWrapper - - arm_func_start ChangeSimpleObjTexture -ChangeSimpleObjTexture: ; 0x0201BAC8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldrb r5, [sp, #0x18] - ldrb r4, [sp, #0x1c] - str r5, [sp] - str r4, [sp, #4] - ldrh ip, [r0, #0xc] - ldr r4, [r0, #0x64] - ldr r5, _0201BB1C ; =_020AFC28 - mov lr, ip, lsr #0x1f - rsb ip, lr, ip, lsl #30 - add ip, lr, ip, ror #30 - mov ip, ip, lsl #1 - ldrsh ip, [r5, ip] - mov r5, r1 - ldr r0, [r0, #4] - smlabb r1, r2, ip, r4 - mov r2, r5 - bl sub_0201AC20 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0201BB1C: .word _020AFC28 - arm_func_end ChangeSimpleObjTexture - - arm_func_start sub_0201BB20 -sub_0201BB20: ; 0x0201BB20 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #4] - bl sub_0201AD44 - ldr r0, [r4, #4] - bl sub_0201AC10 - ldmia sp!, {r4, pc} - arm_func_end sub_0201BB20 - - arm_func_start InitObjGraphicsControls -InitObjGraphicsControls: ; 0x0201BB3C - stmdb sp!, {r3, lr} - mov r0, #0x1f00 - mov r1, #0 - bl MemAlloc - ldr r2, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r1, #0x1f00 - str r0, [r2] - bl MemZero - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c0 - bl sub_0201AB90 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x3c4 - add r0, r0, #0xc00 - bl sub_0201AB90 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c0 - bl sub_0201AC10 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x3c4 - add r0, r0, #0xc00 - bl sub_0201AC10 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201AEF0 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, _0201BCC0 ; =0x05000200 - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201AF18 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, _0201BCC4 ; =0x06894000 - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201AF64 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201AEF0 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, _0201BCC8 ; =0x05000600 - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201AF18 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r3, #0 - ldr r0, [r0] - str r3, [sp] - add r1, r0, #0x1c8 - add r1, r1, #0x1c00 - add r2, r0, #0x1c0 - bl sub_0201B198 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r3, #1 - ldr r2, [r0] - str r3, [sp] - add r0, r2, #0x70 - add r1, r2, #0x264 - add r1, r1, #0x1c00 - add r2, r2, #0x3c4 - add r2, r2, #0xc00 - bl sub_0201B198 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r1, #2 - ldr r2, [r0] - mov r3, #0 - str r1, [sp] - add r0, r2, #0xe0 - add r1, r2, #0x1c8 - add r1, r1, #0x1c00 - add r2, r2, #0x1c0 - bl sub_0201B198 - ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r1, #3 - ldr r2, [r0] - mov r3, #1 - str r1, [sp] - add r0, r2, #0x150 - add r1, r2, #0x264 - add r1, r1, #0x1c00 - add r2, r2, #0x3c4 - add r2, r2, #0xc00 - bl sub_0201B198 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BCBC: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201BCC0: .word 0x05000200 -_0201BCC4: .word 0x06894000 -_0201BCC8: .word 0x05000600 - arm_func_end InitObjGraphicsControls - - arm_func_start sub_0201BCCC -sub_0201BCCC: ; 0x0201BCCC - ldr r1, _0201BCEC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r1, [r1] - ldr ip, _0201BCF0 ; =sub_0201AD7C - add r1, r1, #0x1c8 - add r1, r1, #0x1c00 - mla r0, r2, r0, r1 - bx ip - .align 2, 0 -_0201BCEC: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201BCF0: .word sub_0201AD7C - arm_func_end sub_0201BCCC - - arm_func_start sub_0201BCF4 -sub_0201BCF4: ; 0x0201BCF4 - ldr r1, _0201BD14 ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r1, [r1] - ldr ip, _0201BD18 ; =sub_0201AD84 - add r1, r1, #0x1c8 - add r1, r1, #0x1c00 - mla r0, r2, r0, r1 - bx ip - .align 2, 0 -_0201BD14: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201BD18: .word sub_0201AD84 - arm_func_end sub_0201BCF4 - - arm_func_start sub_0201BD1C -sub_0201BD1C: ; 0x0201BD1C - ldr r3, _0201BD4C ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr ip, [r3] - and r3, r0, #1 - add r0, ip, #0x1c8 - add r0, r0, #0x1c00 - mla r2, r1, r2, r0 - ldrb r0, [r2, #0x78] - bic r0, r0, #1 - orr r0, r0, r3 - strb r0, [r2, #0x78] - bx lr - .align 2, 0 -_0201BD4C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD1C - - arm_func_start sub_0201BD50 -sub_0201BD50: ; 0x0201BD50 - stmdb sp!, {r3, lr} - ldr r3, _0201BD7C ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r3, [r3] - mov ip, r0 - add r0, r3, #0x1c8 - add r0, r0, #0x1c00 - mla r0, r1, r2, r0 - mov r1, ip - bl sub_0201AEB4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BD7C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD50 - - arm_func_start sub_0201BD80 -sub_0201BD80: ; 0x0201BD80 - stmdb sp!, {r3, lr} - ldr ip, _0201BDB0 ; =OBJ_GRAPHICS_CONTROLS_PTR - mov lr, r0 - ldr ip, [ip] - mov r3, #0x9c - add r0, ip, #0x1c8 - add r0, r0, #0x1c00 - mla r0, r2, r3, r0 - mov r2, r1 - mov r1, lr - bl sub_0201AECC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BDB0: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD80 - - arm_func_start CopyAttributesToOamBothScreens -CopyAttributesToOamBothScreens: ; 0x0201BDB4 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl CopyAttributesToOamWrapper - ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl CopyAttributesToOamWrapper - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BDE8: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end CopyAttributesToOamBothScreens - - arm_func_start sub_0201BDEC -sub_0201BDEC: ; 0x0201BDEC - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl CopyAttributesToOamWrapper - ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl CopyAttributesToOamWrapper - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE24: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BDEC - - arm_func_start sub_0201BE28 -sub_0201BE28: ; 0x0201BE28 - stmdb sp!, {r3, lr} - ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201AFB8 - ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201AFB8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE58: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BE28 - - arm_func_start GroupOamAttributesBothScreens -GroupOamAttributesBothScreens: ; 0x0201BE5C - stmdb sp!, {r3, lr} - ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl GroupOamAttributesWrapper - ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl GroupOamAttributesWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE80: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end GroupOamAttributesBothScreens - - arm_func_start sub_0201BE84 -sub_0201BE84: ; 0x0201BE84 - stmdb sp!, {r3, lr} - ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl GroupOamAttributesWrapper - ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl GroupOamAttributesWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BEAC: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BE84 - - arm_func_start sub_0201BEB0 -sub_0201BEB0: ; 0x0201BEB0 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201B004 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201B004 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl sub_0201BB20 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl sub_0201BB20 - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BF0C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BEB0 - - arm_func_start sub_0201BF10 -sub_0201BF10: ; 0x0201BF10 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl sub_0201BB20 - ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl sub_0201BB20 - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BF48: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BF10 - - arm_func_start sub_0201BF4C -sub_0201BF4C: ; 0x0201BF4C - stmdb sp!, {r3, lr} - bl sub_0201BEB0 - bl sub_0201BF10 - bl CopyAttributesToOamBothScreens - bl sub_0201BDEC - ldmia sp!, {r3, pc} - arm_func_end sub_0201BF4C - - arm_func_start sub_0201BF64 -sub_0201BF64: ; 0x0201BF64 - stmdb sp!, {r3, lr} - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl sub_0201B2A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BFA8: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BF64 - - arm_func_start sub_0201BFAC -sub_0201BFAC: ; 0x0201BFAC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr ip, _0201BFEC ; =OBJ_GRAPHICS_CONTROLS_PTR - str r3, [sp] - ldr lr, [ip] - ldr ip, [sp, #0x10] - mov r3, #0x70 - mov r4, r0 - mla r0, ip, r3, lr - mov ip, r1 - mov r3, r2 - mov r1, r4 - mov r2, ip - bl sub_0201B2DC - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201BFEC: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BFAC - - arm_func_start CopyAndInterleaveWrapper -CopyAndInterleaveWrapper: ; 0x0201BFF0 - ldr ip, _0201BFFC ; =CopyAndInterleave - mov r2, r2, asr #1 - bx ip - .align 2, 0 -_0201BFFC: .word CopyAndInterleave - arm_func_end CopyAndInterleaveWrapper - - arm_func_start InitOamAdjustmentInfo -InitOamAdjustmentInfo: ; 0x0201C000 - ldr r2, _0201C024 ; =0x0000FFFF - mov r1, #0 - strh r2, [r0] - strh r2, [r0, #2] - strh r2, [r0, #4] - strh r1, [r0, #6] - strh r1, [r0, #8] - strh r1, [r0, #0xa] - bx lr - .align 2, 0 -_0201C024: .word 0x0000FFFF - arm_func_end InitOamAdjustmentInfo - - arm_func_start sub_0201C028 -sub_0201C028: ; 0x0201C028 - strh r1, [r0] - strh r2, [r0, #2] - ldrh r1, [sp] - strh r3, [r0, #4] - ldrh r2, [sp, #4] - strh r1, [r0, #6] - ldrh r1, [sp, #8] - strh r2, [r0, #8] - strh r1, [r0, #0xa] - bx lr - arm_func_end sub_0201C028 - - arm_func_start InitAnimationControl -InitAnimationControl: ; 0x0201C050 - stmdb sp!, {r4, lr} - mov r1, #0x7c - mov r4, r0 - bl MemZero - mov r1, #0 - str r1, [r4, #0x68] - str r1, [r4, #0x6c] - strh r1, [r4, #0x70] - mov r0, #0xff - strh r1, [r4, #0x72] - strb r0, [r4, #0x43] - add r0, r0, #0xff00 - strh r0, [r4, #0x36] - mov r0, #9 - strb r0, [r4, #0x40] - add r0, r4, #0x10 - bl InitOamAdjustmentInfo - ldrh r0, [r4, #2] - bic r0, r0, #0x8000 - strh r0, [r4, #2] - ldrh r0, [r4, #2] - orr r0, r0, #0x200 - strh r0, [r4, #2] - ldmia sp!, {r4, pc} - arm_func_end InitAnimationControl - - arm_func_start InitAnimationControlWithSet__0201C0B0 -InitAnimationControlWithSet__0201C0B0: ; 0x0201C0B0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl InitAnimationControl - ldrh r0, [r4, #2] - orr r0, r0, #1 - strh r0, [r4, #2] - ldmia sp!, {r4, pc} - arm_func_end InitAnimationControlWithSet__0201C0B0 - - arm_func_start InitAnimationControlWithSet__0201C0CC -InitAnimationControlWithSet__0201C0CC: ; 0x0201C0CC - stmdb sp!, {r4, lr} - mov r4, r0 - bl InitAnimationControl - ldrh r0, [r4, #2] - orr r0, r0, #1 - strh r0, [r4, #2] - ldmia sp!, {r4, pc} - arm_func_end InitAnimationControlWithSet__0201C0CC - - arm_func_start SetSpriteIdForAnimationControl -SetSpriteIdForAnimationControl: ; 0x0201C0E8 - strh r1, [r0, #0x70] - ldrsh r2, [r0, #0x70] - ldrsh r1, [r0, #0x72] - cmp r2, r1 - strneh r2, [r0, #0x72] - movne r1, #0xff - strneb r1, [r0, #0x43] - bx lr - arm_func_end SetSpriteIdForAnimationControl - - arm_func_start sub_0201C108 -sub_0201C108: ; 0x0201C108 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r0, [r4, #0x70] - cmp r0, #0 - bne _0201C124 - ldr r0, _0201C134 ; =_020996E0 - bl Debug_Print0 -_0201C124: - ldrh r0, [r4, #2] - orr r0, r0, #0x8000 - strh r0, [r4, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_0201C134: .word _020996E0 - arm_func_end sub_0201C108 - - arm_func_start sub_0201C138 -sub_0201C138: ; 0x0201C138 - ldr ip, _0201C140 ; =InitAnimationControl - bx ip - .align 2, 0 -_0201C140: .word InitAnimationControl - arm_func_end sub_0201C138 - - arm_func_start sub_0201C144 -sub_0201C144: ; 0x0201C144 - stmdb sp!, {r3, lr} - ldr r1, _0201C178 ; =_020AFC3C - ldr r1, [r1, r2, lsl #2] - mov r1, r1, lsl #0x10 - add r0, r0, r1, asr #16 - sub r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, asr #0x10 - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201C178: .word _020AFC3C - arm_func_end sub_0201C144 - - arm_func_start SetAnimationForAnimationControlInternal -SetAnimationForAnimationControlInternal: ; 0x0201C17C - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [sp, #0x18] - ldmia r1, {ip, lr} - mov r5, #0 - mov r4, r4, lsl #0x10 - strh r5, [r0] - strh r5, [r0, #6] - mov r4, r4, asr #0x10 - strh r4, [r0, #8] - strh r4, [r0, #0xa] - strh r5, [r0, #0xc] - mov r5, #1 - ldrb r4, [sp, #0x1c] - strh r5, [r0, #4] - ldrh r5, [r0] - cmp r4, #0 - orr r4, r5, #0x8000 - strh r4, [r0] - ldrneh r4, [r0] - mov r5, #0 - orrne r4, r4, #0x1000 - strneh r4, [r0] - ldr r4, [ip, #8] - add r4, r4, r2, lsl #3 - ldrh r4, [r4, #4] - cmp r3, r4 - strh r5, [r0, #0x20] - movge r3, #0 - ldr r4, [sp, #0x10] - strh r5, [r0, #0x22] - strh r4, [r0, #0x32] - sub r4, r5, #1 - strh r4, [r0, #0x3a] - strh r4, [r0, #0x3c] - str r5, [r0, #0x28] - str r5, [r0, #0x2c] - strh r5, [r0, #0xc] - strh r2, [r0, #0x76] - strh r3, [r0, #0x78] - ldr r4, [ip] - cmp lr, #0 - str r4, [r0, #0x54] - ldrne r5, [lr] - cmp lr, #0 - str r5, [r0, #0x58] - ldrne r4, [lr, #4] - moveq r4, #0 - str r4, [r0, #0x5c] - cmp lr, #0 - ldrnesh r4, [lr, #0xa] - ldrb lr, [sp, #0x14] - ldreqsh r4, [ip, #0x14] - and r4, r4, #1 - strh r4, [r0, #0x60] - ldr r4, [ip, #4] - str r4, [r0, #0x50] - ldrb r4, [sp, #0x20] - strb lr, [r0, #0x41] - strb r4, [r0, #0x7a] - ldrb r1, [r1, #8] - cmp r1, #1 - beq _0201C29C - ldr r1, [ip, #8] - ldr r1, [r1] - ldr r1, [r1, r3, lsl #2] - str r1, [r0, #0x48] - str r1, [r0, #0x4c] - ldr r1, [ip, #8] - ldrh r1, [r1, #4] - strh r1, [r0, #0x30] - ldr r1, [ip, #8] - b _0201C2C0 -_0201C29C: - ldrsh r1, [ip, #0xc] - strh r1, [r0, #0x30] - ldr r1, [ip, #8] - ldr r1, [r1, r2, lsl #3] - ldr r1, [r1, r3, lsl #2] - str r1, [r0, #0x48] - str r1, [r0, #0x4c] - ldr r1, [ip, #8] - add r1, r1, r2, lsl #3 -_0201C2C0: - ldrh r1, [r1, #6] - strh r1, [r0, #0x62] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SetAnimationForAnimationControlInternal - - arm_func_start SetAnimationForAnimationControl -SetAnimationForAnimationControl: ; 0x0201C2CC - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - ldrsh r0, [r7, #0x70] - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SpriteTypeInWanTable - cmp r0, #0 - beq _0201C304 - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _0201C348 -_0201C304: - mov r0, r7 - bl GetWanForAnimationControl - ldrb r3, [sp, #0x28] - str r4, [sp] - mov r1, r0 - ldr r2, [sp, #0x2c] - str r3, [sp, #4] - ldrb r0, [sp, #0x30] - str r2, [sp, #8] - ldrb r4, [sp, #0x34] - str r0, [sp, #0xc] - mov r0, r7 - mov r3, r6 - mov r2, #0 - str r4, [sp, #0x10] - bl SetAnimationForAnimationControlInternal - b _0201C3E0 -_0201C348: - ldrsh r0, [r7, #0x70] - mov r1, r6, lsl #0x10 - mov r1, r1, asr #0x10 - bl WanTableSpriteHasAnimationGroup - cmp r0, #0 - mov r0, r7 - beq _0201C3A4 - bl GetWanForAnimationControl - str r4, [sp] - ldrb r3, [sp, #0x28] - mov r1, r0 - ldr r2, [sp, #0x2c] - str r3, [sp, #4] - str r2, [sp, #8] - ldrb r0, [sp, #0x30] - ldrb r4, [sp, #0x34] - mov r2, r6 - str r0, [sp, #0xc] - mov r0, r7 - mov r3, r5 - str r4, [sp, #0x10] - bl SetAnimationForAnimationControlInternal - b _0201C3E0 -_0201C3A4: - bl GetWanForAnimationControl - str r4, [sp] - ldrb r3, [sp, #0x28] - mov r1, r0 - ldr r2, [sp, #0x2c] - str r3, [sp, #4] - str r2, [sp, #8] - ldrb r0, [sp, #0x30] - ldrb r4, [sp, #0x34] - mov r3, r5 - str r0, [sp, #0xc] - mov r0, r7 - mov r2, #0 - str r4, [sp, #0x10] - bl SetAnimationForAnimationControlInternal -_0201C3E0: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end SetAnimationForAnimationControl - - arm_func_start GetWanForAnimationControl -GetWanForAnimationControl: ; 0x0201C3E8 - ldr r1, [r0, #0x68] - cmp r1, #0 - ldrne r0, [r1, #4] - bxne lr - ldr r1, _0201C414 ; =WAN_TABLE - ldrsh r2, [r0, #0x70] - ldr r1, [r1] - mov r0, #0x38 - smlabb r0, r2, r0, r1 - ldr r0, [r0, #0x30] - bx lr - .align 2, 0 -_0201C414: .word WAN_TABLE - arm_func_end GetWanForAnimationControl - - arm_func_start SetAndPlayAnimationForAnimationControl -SetAndPlayAnimationForAnimationControl: ; 0x0201C418 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldrb r4, [sp, #0x18] - ldr ip, [sp, #0x1c] - ldrb lr, [sp, #0x20] - stmia sp, {r4, ip} - ldrb ip, [sp, #0x24] - str lr, [sp, #8] - mov r4, r0 - str ip, [sp, #0xc] - bl SetAnimationForAnimationControl - ldr r1, [r4, #0x4c] - mov r0, r4 - bl LoadAnimationFrameAndIncrementInAnimationControl - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end SetAndPlayAnimationForAnimationControl - - arm_func_start SwitchAnimationControlToNextFrame -SwitchAnimationControlToNextFrame: ; 0x0201C458 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0201D1B0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldrsh r0, [r4, #0x3a] - cmp r0, #0 - blt _0201C4F4 - ldrh r0, [r4] - tst r0, #0x4000 - ldmneia sp!, {r4, pc} - ldrh r1, [r4, #0xc] - ldrsh r0, [r4, #4] - add r0, r1, r0 - strh r0, [r4, #0xc] - ldrsh r1, [r4, #0xa] - cmp r1, #0 - beq _0201C4C0 - ldrsh r0, [r4, #4] - sub r0, r1, r0 - strh r0, [r4, #0xa] - ldrsh r0, [r4, #0xa] - cmp r0, #0 - movlt r0, #0 - strlth r0, [r4, #0xa] - ldmia sp!, {r4, pc} -_0201C4C0: - ldrsh r1, [r4, #6] - cmp r1, #0 - beq _0201C4E8 - ldrsh r0, [r4, #4] - sub r0, r1, r0 - strh r0, [r4, #6] - ldrsh r0, [r4, #6] - cmp r0, #0 - movlt r0, #0 - strlth r0, [r4, #6] -_0201C4E8: - ldrsh r0, [r4, #6] - cmp r0, #0 - ldmgtia sp!, {r4, pc} -_0201C4F4: - ldr r0, [r4, #0x4c] - ldrb r0, [r0] - cmp r0, #0 - bne _0201C550 - ldrh r0, [r4] - tst r0, #0x1000 - beq _0201C544 - ldrh r1, [r4, #0x62] - ldr r2, [r4, #0x48] - mov r0, #0xc - mla r0, r1, r0, r2 - str r0, [r4, #0x4c] - ldrsh r0, [r4, #8] - cmp r0, #0 - beq _0201C550 - bl Rand16Bit - ldrsh r1, [r4, #8] - and r0, r1, r0 - strh r0, [r4, #0xa] - b _0201C550 -_0201C544: - orr r0, r0, #0x2000 - strh r0, [r4] - ldmia sp!, {r4, pc} -_0201C550: - ldr r1, [r4, #0x4c] - mov r0, r4 - bl LoadAnimationFrameAndIncrementInAnimationControl - ldmia sp!, {r4, pc} - arm_func_end SwitchAnimationControlToNextFrame - - arm_func_start LoadAnimationFrameAndIncrementInAnimationControl -LoadAnimationFrameAndIncrementInAnimationControl: ; 0x0201C560 - ldrh r2, [r0] - orr r2, r2, #0x800 - strh r2, [r0] - ldrb r2, [r1] - strh r2, [r0, #6] - ldrsh r2, [r1, #2] - strh r2, [r0, #0x3a] - ldrsh r2, [r1, #4] - strh r2, [r0, #0x20] - ldrsh r2, [r1, #6] - strh r2, [r0, #0x22] - ldrsh r2, [r1, #8] - strh r2, [r0, #0x24] - ldrsh r2, [r1, #0xa] - strh r2, [r0, #0x26] - ldrb r2, [r1, #1] - str r2, [r0, #0x28] - ldrb r1, [r1, #1] - ldr r2, [r0, #0x2c] - orr r1, r2, r1 - str r1, [r0, #0x2c] - ldr r1, [r0, #0x4c] - add r1, r1, #0xc - str r1, [r0, #0x4c] - bx lr - arm_func_end LoadAnimationFrameAndIncrementInAnimationControl - - arm_func_start sub_0201C5C4 -sub_0201C5C4: ; 0x0201C5C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x90 - mov r8, r0 - ldrh r0, [r8] - tst r0, #0x8000 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0201CF40 - ldrsh r0, [r8, #0x3a] - mov fp, #0 - cmp r0, #0 - bge _0201C618 - mov r0, r8 - bl SwitchAnimationControlToNextFrame - ldrh r0, [r8] - tst r0, #0x8000 - movne r0, #1 - moveq r0, fp - tst r0, #0xff - beq _0201CF40 -_0201C618: - ldrsh r1, [r8, #0x3c] - ldrsh r0, [r8, #0x3a] - cmp r1, r0 - ldrh r0, [r8, #2] - movne fp, #1 - bicne r0, r0, #0x100 - strneh r0, [r8, #2] - bne _0201C640 - tst r0, #0x100 - movne fp, #1 -_0201C640: - ldrb r0, [r8, #0x7a] - cmp r0, #4 - bhs _0201CEC8 - ldrsh r0, [r8, #0x70] - bl SpriteTypeInWanTable - cmp r0, #3 - bne _0201C928 - mov r0, r8 - bl GetWanForAnimationControl - ldr r6, [r0] - ldr r5, [r0, #4] - ldr sl, [r6, #0x10] - mov r0, #0 - ldr r3, [r5] - mov r7, r0 - str r0, [sp, #0x44] - ldr r0, [r5, #4] - ldrsh r1, [r8, #0x3a] - ldr r2, [r6] - cmp sl, #0 - str r0, [sp, #0x48] - ldr r4, [r3] - ldr sb, [r2, r1, lsl #2] - beq _0201C6CC - ldrsh r0, [r8, #0x78] - str r0, [sp, #0x20] - ldr r1, [sp, #0x20] - ldrh r0, [r8, #0xc] - add r1, sl, r1, lsl #3 - ldr r1, [r1, #4] - bl _s32_div_f - ldr r0, [sp, #0x20] - ldr r0, [sl, r0, lsl #3] - ldrb r0, [r0, r1] - str r0, [sp, #0x44] -_0201C6CC: - cmp r5, #0 - cmpne fp, #0 - beq _0201C7D8 - ldrh r0, [r8, #2] - tst r0, #0x8000 - bne _0201C7D8 - ldr r0, [sp, #0x48] - ldr r0, [r0] - str r0, [sp, #0x84] - ldr r0, [sp, #0x48] - ldrsh r0, [r0, #6] - strh r0, [sp, #0x8a] - ldrsh r0, [r5, #0xa] - cmp r0, #2 - bne _0201C72C - ldrsh r2, [r4, #4] - ldrsh r0, [r4, #6] - mov r1, #2 - smulbb r2, r2, r0 - mov r0, r2, asr #1 - add r0, r2, r0, lsr #30 - strh r1, [sp, #0x88] - mov r5, r0, asr #2 - b _0201C79C -_0201C72C: - cmp r0, #0 - bne _0201C754 - ldrsh r2, [r4, #4] - ldrsh r0, [r4, #6] - mov r1, #0 - smulbb r0, r2, r0 - add r0, r0, r0, lsr #31 - strh r1, [sp, #0x88] - mov r5, r0, asr #1 - b _0201C79C -_0201C754: - cmp r0, #3 - bne _0201C774 - ldrsh r2, [r4, #4] - ldrsh r1, [r4, #6] - mov r0, #3 - strh r0, [sp, #0x88] - smulbb r5, r2, r1 - b _0201C79C -_0201C774: - cmp r0, #4 - ldrsh r2, [r4, #4] - ldreqsh r1, [r4, #6] - moveq r0, #4 - streqh r0, [sp, #0x88] - smulbbeq r5, r2, r1 - ldrnesh r1, [r4, #6] - movne r0, #1 - smulbbne r5, r2, r1 - strneh r0, [sp, #0x88] -_0201C79C: - ldr r0, _0201CF48 ; =_020AFC70 - ldrb r2, [r8, #0x40] - ldr r0, [r0] - ldrb r3, [r8, #0x41] - add r1, sp, #0x84 - add r0, r0, #0xcc - bl sub_0201E408 - ldrh r1, [r8, #0x32] - ldr r0, [r4] - mov r2, r5 - mov r3, #0 - bl sub_0201E050 - ldrh r0, [r8, #2] - orr r0, r0, #0x8000 - strh r0, [r8, #2] -_0201C7D8: - ldr r0, [sp, #0x44] - and r0, r0, #0xf8 - mov r0, r0, asr #3 - str r0, [sp, #0x24] -_0201C7E8: - ldr r0, _0201CF48 ; =_020AFC70 - ldrsh r2, [r8, #0x1c] - ldr r5, [r0] - ldrsh r0, [r8, #0x20] - ldrh sl, [sb, #0x20] - ldrsh ip, [r8, #0x1e] - ldrsh r3, [r8, #0x22] - add r2, r2, r0 - ldrb r4, [r8, #0x41] - ldrb r1, [r8, #0x40] - add r3, ip, r3 - add ip, sl, #0x39 - ldrh r0, [r8, #0x32] - ldr r5, [r5, #0xe0] - mov sl, #3 - add r1, r4, r1, lsl #8 - strh sl, [sp, #0x5c] - add r4, r5, r1, lsl #1 - str r0, [sp, #0x60] - strh ip, [sp, #0x5e] - mov r0, r4, lsl #0x10 - ldr r1, [sb] - mov r4, r7 - add r0, r1, r0, lsr #16 - add r1, r7, #1 - and r7, r1, #0xff - add r5, sp, #0x68 - str r0, [sp, #0x64] - add sl, sb, #0x10 - mov r1, #4 -_0201C860: - ldrh r0, [sl], #2 - subs r1, r1, #1 - strh r0, [r5], #2 - bne _0201C860 - ldrh r5, [sb, #0x18] - add r0, sp, #0x7e - add r1, sb, #0x1a - strh r5, [sp, #0x70] - ldrsh r5, [sb, #4] - strh r5, [sp, #0x72] - ldrsh sl, [sb, #6] - add r5, r5, r2 - add r2, sl, r3 - strh r5, [sp, #0x72] - strh r2, [sp, #0x74] - ldrsh r2, [sb, #8] - strh r2, [sp, #0x76] - ldrsh r2, [sb, #0xa] - strh r2, [sp, #0x78] - ldrh r2, [sb, #0xc] - strh r2, [sp, #0x7a] - ldrh r2, [sb, #0xe] - strh r2, [sp, #0x7c] - ldrh r2, [sb, #0x1e] - strb r4, [sp, #0x82] - strh r2, [sp, #0x80] - ldrb r2, [sb, #0x1d] - and r2, r2, #0xf8 - mov r2, r2, asr #3 - strb r2, [sp, #0x83] - bl Rgb8ToRgb5 - ldr r0, [r6, #0x10] - mov r1, #0x3f - cmp r0, #0 - ldrne r0, [sp, #0x24] - strneb r0, [sp, #0x83] - mov r0, r7 - bl _s32_div_f - ldrh r0, [r8, #2] - and r7, r1, #0xff - tst r0, #2 - bne _0201C910 - add r0, sp, #0x5c - bl EnqueueRender3dTexture -_0201C910: - ldrb r0, [sb, #0x22] - cmp r0, #0 - addeq sb, sb, #0x28 - beq _0201C7E8 - mov r4, #1 - b _0201CF04 -_0201C928: - ldrb r2, [r8, #0x7a] - ldr r1, _0201CF4C ; =_020AFC50 - mov r0, r8 - ldr r1, [r1, r2, lsl #2] - str r1, [sp, #0x40] - bl GetWanForAnimationControl - mov r1, #0 - ldrh r3, [r8, #0x60] - str r1, [sp, #0x2c] - ldr r2, _0201CF50 ; =_020AFC30 - mov r1, r3, lsl #1 - ldrh r1, [r2, r1] - str r1, [sp, #0x28] - ldrsh r2, [r8, #0x3a] - ldr r3, [r8, #0x54] - ldr r1, [sp, #0x2c] - str r1, [sp, #0x34] - str r1, [sp, #0x38] - ldr r7, [r0, #4] - ldr r1, [sp, #0x28] - ldrb r0, [r8, #0x41] - ldr r6, [r3, r2, lsl #2] - cmp r1, #0 - str r0, [sp, #0x30] - bne _0201C9B4 - ldr r0, [sp, #0x30] - cmp r0, #0x10 - blo _0201C9B4 - sub r0, r0, #0x10 - mov r1, r0, lsl #0x10 - mov r0, #1 - str r0, [sp, #0x28] - str r0, [sp, #0x38] - mov r0, r1, lsr #0x10 - str r0, [sp, #0x30] -_0201C9B4: - ldrh r2, [r8, #2] - tst r2, #0x20 - addne r0, r8, #0x10 - strne r0, [sp, #0x2c] - cmp r7, #0 - cmpne fp, #0 - beq _0201CCFC - ldrh r0, [r7, #8] - tst r0, #1 - beq _0201CCFC - tst r2, #0x8000 - bne _0201CCFC - ldr r0, [sp, #0x40] - mov r1, #0 - ldrh r5, [r7, #0xe] - ldrh sb, [r8, #0x32] - mov r4, r1 - tst r2, #0x80 - movne r1, #1 - tst r2, #0x40 - and r0, r0, #0xff - movne r4, #1 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0201CCE0 -_0201CA18: ; jump table - b _0201CA28 ; case 0 - b _0201CAD0 ; case 1 - b _0201CB80 ; case 2 - b _0201CC30 ; case 3 -_0201CA28: - cmp r1, #0 - bne _0201CAB0 - mov sl, #0 - b _0201CAA8 -_0201CA38: - ldr r0, [r8, #0x58] - ldrb r1, [r8, #0x41] - ldr r0, [r0, sl, lsl #2] - mov r2, sb - str r0, [sp, #0x3c] - str r1, [sp] - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [sp, #0x3c] - ldr r0, [r0] - ldr r3, [r8, #0x5c] - bl sub_0201B388 - ldr r2, [r8, #0x5c] - ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrh r3, [r2, #4] - ldr r1, [r1] - ldr r0, [sp, #0x3c] - ldrh r2, [r1, #0xc] - ldr r1, _0201CF50 ; =_020AFC30 - mov r3, r3, lsl #1 - ldrh r1, [r1, r3] - ldr r0, [r0, #4] - bl sub_0201C144 - add r0, sb, r0 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_0201CAA8: - cmp sl, r5 - blo _0201CA38 -_0201CAB0: - cmp r4, #0 - bne _0201CCE0 - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrb r2, [r8, #0x41] - ldr r0, [r0] - ldr r1, [r8, #0x5c] - bl LoadObjPalette - b _0201CCE0 -_0201CAD0: - cmp r1, #0 - bne _0201CB5C - mov sl, #0 - b _0201CB54 -_0201CAE0: - ldr r0, [r8, #0x58] - ldrb r1, [r8, #0x41] - ldr r0, [r0, sl, lsl #2] - mov r2, sb - str r0, [sp, #0x14] - str r1, [sp] - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [sp, #0x14] - ldr r0, [r0] - ldr r3, [r8, #0x5c] - add r0, r0, #0x70 - bl sub_0201B388 - ldr r2, [r8, #0x5c] - ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrh r3, [r2, #4] - ldr r1, [r1] - ldr r0, [sp, #0x14] - ldrh r2, [r1, #0x7c] - ldr r1, _0201CF50 ; =_020AFC30 - mov r3, r3, lsl #1 - ldrh r1, [r1, r3] - ldr r0, [r0, #4] - bl sub_0201C144 - add r0, sb, r0 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_0201CB54: - cmp sl, r5 - blo _0201CAE0 -_0201CB5C: - cmp r4, #0 - bne _0201CCE0 - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrb r2, [r8, #0x41] - ldr r0, [r0] - ldr r1, [r8, #0x5c] - add r0, r0, #0x70 - bl LoadObjPalette - b _0201CCE0 -_0201CB80: - cmp r1, #0 - bne _0201CC0C - mov sl, #0 - b _0201CC04 -_0201CB90: - ldr r0, [r8, #0x58] - ldrb r1, [r8, #0x41] - ldr r0, [r0, sl, lsl #2] - mov r2, sb - str r0, [sp, #0x18] - str r1, [sp] - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [sp, #0x18] - ldr r0, [r0] - ldr r3, [r8, #0x5c] - add r0, r0, #0xe0 - bl sub_0201B388 - ldr r2, [r8, #0x5c] - ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrh r3, [r2, #4] - ldr r1, [r1] - ldr r0, [sp, #0x18] - ldrh r2, [r1, #0xec] - ldr r1, _0201CF50 ; =_020AFC30 - mov r3, r3, lsl #1 - ldrh r1, [r1, r3] - ldr r0, [r0, #4] - bl sub_0201C144 - add r0, sb, r0 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_0201CC04: - cmp sl, r5 - blo _0201CB90 -_0201CC0C: - cmp r4, #0 - bne _0201CCE0 - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrb r2, [r8, #0x41] - ldr r0, [r0] - ldr r1, [r8, #0x5c] - add r0, r0, #0xe0 - bl LoadObjPalette - b _0201CCE0 -_0201CC30: - cmp r1, #0 - bne _0201CCC0 - mov sl, #0 - b _0201CCB8 -_0201CC40: - ldr r0, [r8, #0x58] - ldrb r1, [r8, #0x41] - ldr r0, [r0, sl, lsl #2] - mov r2, sb - str r0, [sp, #0x1c] - str r1, [sp] - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [sp, #0x1c] - ldr r0, [r0] - ldr r3, [r8, #0x5c] - add r0, r0, #0x150 - bl sub_0201B388 - ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r2, [r8, #0x5c] - ldr r1, [r1] - ldrh r3, [r2, #4] - add r1, r1, #0x100 - ldrh r2, [r1, #0x5c] - ldr r0, [sp, #0x1c] - ldr r1, _0201CF50 ; =_020AFC30 - mov r3, r3, lsl #1 - ldrh r1, [r1, r3] - ldr r0, [r0, #4] - bl sub_0201C144 - add r0, sb, r0 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_0201CCB8: - cmp sl, r5 - blo _0201CC40 -_0201CCC0: - cmp r4, #0 - bne _0201CCE0 - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrb r2, [r8, #0x41] - ldr r0, [r0] - ldr r1, [r8, #0x5c] - add r0, r0, #0x150 - bl LoadObjPalette -_0201CCE0: - ldrh r1, [r8, #2] - ldr r0, _0201CF58 ; =0x0000FFFF - orr r1, r1, #0x8000 - strh r1, [r8, #2] - ldrb r1, [r8, #0x41] - strb r1, [r8, #0x43] - strh r0, [r8, #0x36] -_0201CCFC: - ldr r0, [sp, #0x40] - mov r1, #0x70 - mul r5, r0, r1 - cmp fp, #0 - moveq sb, #1 - ldr sl, _0201CF58 ; =0x0000FFFF - movne sb, #0 -_0201CD18: - cmp sb, #0 - mov r4, #0 - bne _0201CD34 - ldrsh r0, [r6] - cmp r0, #0 - strgeh r0, [r8, #0x36] - bge _0201CD38 -_0201CD34: - strh sl, [r8, #0x36] -_0201CD38: - ldrsh r3, [r8, #0x1e] - ldrsh r2, [r8, #0x22] - ldrsh r1, [r8, #0x1c] - ldrsh r0, [r8, #0x20] - add r2, r3, r2 - add r0, r1, r0 - strh r2, [sp, #0x4e] - strh r0, [sp, #0x4c] - ldrh r0, [r8, #0x32] - strh r0, [sp, #0x50] - ldrh r0, [r8, #0x38] - strh r0, [sp, #0x52] - ldr r0, [sp, #0x30] - strh r0, [sp, #0x54] - ldrb r0, [r8, #0x42] - strh r0, [sp, #0x56] - ldr r0, [sp, #0x28] - strh r0, [sp, #0x58] - ldr r0, [sp, #0x38] - strb r0, [sp, #0x5a] - ldrh r0, [r8, #2] - tst r0, #0x1000 - movne r0, #1 - moveq r0, #0 - strb r0, [sp, #0x5b] - ldrh r0, [r8, #2] - tst r0, #2 - bne _0201CDD4 - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r3, [sp, #0x2c] - ldr r0, [r0] - mov r1, r6 - add r0, r0, r5 - add r2, sp, #0x4c - bl AddWanFragmentToOam - cmp r0, #0 - movne r0, #1 - moveq r4, #1 - strne r0, [sp, #0x34] -_0201CDD4: - ldrh r2, [r8, #2] - tst r2, #0x200 - movne r4, #1 - cmp r4, #0 - cmpne r7, #0 - beq _0201CE80 - ldrh r0, [r7, #8] - tst r0, #1 - bne _0201CE80 - ldrh r0, [r8, #0x36] - cmp r0, sl - beq _0201CE80 - ldrb r3, [r8, #0x41] - ldrb r1, [r8, #0x43] - mov r0, #1 - cmp r3, r1 - beq _0201CE24 - tst r2, #0x40 - moveq r0, #0 - strb r3, [r8, #0x43] -_0201CE24: - ldrh r2, [r8, #0x36] - ldr r3, [r8, #0x58] - ldrh r1, [r8, #2] - ldr r3, [r3, r2, lsl #2] - ldr r2, [r8, #0x5c] - tst r1, #0x80 - str r2, [sp] - ldrb r2, [r8, #0x41] - movne r1, #1 - moveq r1, #0 - str r2, [sp, #4] - mov r2, #0 - and r4, r1, #0xff - str r2, [sp, #8] - str r4, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrh r2, [r8, #0x32] - ldr r0, [r0] - mov r1, r6 - add r0, r0, r5 - bl sub_0201B53C - strh sl, [r8, #0x36] -_0201CE80: - ldrh r0, [r6, #6] - mov r0, r0, asr #0xb - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addeq r6, r6, #0xa - beq _0201CD18 - ldrh r0, [r8, #2] - tst r0, #0x200 - movne r0, #0 - strne r0, [sp, #0x34] - ldr r0, [sp, #0x34] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r4, r0, #0xff - b _0201CF04 -_0201CEC8: - bne _0201CF04 - ldrsh r0, [r8, #0x3a] - ldr r1, [r8, #0x54] - ldr r3, [r1, r0, lsl #2] - mov r0, #0 - mov r1, #1 -_0201CEE0: - ldrh r2, [r3, #6] - mov r2, r2, asr #0xb - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - addeq r3, r3, #0xa - beq _0201CEE0 - mov r4, #1 -_0201CF04: - cmp r4, #0 - ldrneh r0, [r8, #2] - bicne r0, r0, #0x100 - strneh r0, [r8, #2] - bne _0201CF28 - cmp fp, #0 - ldrneh r0, [r8, #2] - orrne r0, r0, #0x100 - strneh r0, [r8, #2] -_0201CF28: - ldrsh r0, [r8, #0x3a] - strh r0, [r8, #0x3c] - ldrh r0, [r8] - tst r0, #0x800 - bicne r0, r0, #0x800 - strneh r0, [r8] -_0201CF40: - add sp, sp, #0x90 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0201CF48: .word _020AFC70 -_0201CF4C: .word _020AFC50 -_0201CF50: .word _020AFC30 -_0201CF54: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201CF58: .word 0x0000FFFF - arm_func_end sub_0201C5C4 - - arm_func_start sub_0201CF5C -sub_0201CF5C: ; 0x0201CF5C - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0201C5C4 - ldrh r0, [r4, #2] - tst r0, #0x10 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl SwitchAnimationControlToNextFrame - ldmia sp!, {r4, pc} - arm_func_end sub_0201CF5C - - arm_func_start sub_0201CF80 -sub_0201CF80: ; 0x0201CF80 - ldrb r1, [r0, #0x41] - add r1, r1, #1 - strb r1, [r0, #0x43] - bx lr - arm_func_end sub_0201CF80 - - arm_func_start sub_0201CF90 -sub_0201CF90: ; 0x0201CF90 - stmdb sp!, {r3, lr} - mov ip, #0 - strh ip, [r0] - strh ip, [r0, #2] - ldrh r3, [r1] - tst r3, #0x8000 - movne ip, #1 - tst ip, #0xff - ldmeqia sp!, {r3, pc} - cmp r2, #4 - ldmhsia sp!, {r3, pc} - ldrsh ip, [r1, #0x3a] - mvn r3, #0 - cmp ip, r3 - ldrne r3, [r1, #0x50] - cmpne r3, #0 - beq _0201D024 - add ip, r3, ip, lsl #4 - mov r3, r2, lsl #2 - ldrsh lr, [ip, r3] - cmp lr, #0x63 - addeq r3, ip, r3 - ldreqsh r3, [r3, #2] - cmpeq r3, #0x63 - moveq r1, #0x63 - streqh r1, [r0] - streqh r1, [r0, #2] - ldmeqia sp!, {r3, pc} - ldrsh r3, [r1, #0x20] - add r2, ip, r2, lsl #2 - add r3, r3, lr - strh r3, [r0] - ldrsh r3, [r1, #0x22] - ldrsh r1, [r2, #2] - add r1, r3, r1 - strh r1, [r0, #2] - ldmia sp!, {r3, pc} -_0201D024: - mov r1, #0 - strh r1, [r0] - strh r1, [r0, #2] - ldmia sp!, {r3, pc} - arm_func_end sub_0201CF90 - - arm_func_start sub_0201D034 -sub_0201D034: ; 0x0201D034 - stmdb sp!, {r4, r5, r6, lr} - ldrh r3, [r2] - tst r3, #0x8000 - movne r3, #1 - moveq r3, #0 - tst r3, #0xff - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, [r2, #0x50] - cmp r4, #0 - beq _0201D0CC - ldrsh r3, [r2, #0x3a] - mov ip, #0 - mov r5, #0x63 - add r3, r4, r3, lsl #4 - b _0201D0C0 -_0201D070: - mov r4, ip, lsl #2 - ldrsh r6, [r3, r4] - cmp r6, #0x63 - addeq r4, r3, r4 - ldreqsh r4, [r4, #2] - cmpeq r4, #0x63 - streqh r5, [r0] - streqh r5, [r0, #2] - beq _0201D0B4 - ldrsh r4, [r2, #0x20] - add lr, r3, ip, lsl #2 - add r4, r4, r6 - strh r4, [r0] - ldrsh r4, [r2, #0x22] - ldrsh lr, [lr, #2] - add r4, r4, lr - strh r4, [r0, #2] -_0201D0B4: - add ip, ip, #1 - add r0, r0, #4 - and ip, ip, #0xff -_0201D0C0: - cmp ip, r1 - blo _0201D070 - ldmia sp!, {r4, r5, r6, pc} -_0201D0CC: - mov r2, #0 - mov r3, r2 - b _0201D0EC -_0201D0D8: - strh r3, [r0] - add r2, r2, #1 - strh r3, [r0, #2] - add r0, r0, #4 - and r2, r2, #0xff -_0201D0EC: - cmp r2, r1 - blo _0201D0D8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0201D034 - - arm_func_start sub_0201D0F8 -sub_0201D0F8: ; 0x0201D0F8 - strb r1, [r0, #0x40] - bx lr - arm_func_end sub_0201D0F8 - - arm_func_start sub_0201D100 -sub_0201D100: ; 0x0201D100 - ldr ip, _0201D10C ; =sub_0201DC4C - ldrsh r0, [r0, #0x70] - bx ip - .align 2, 0 -_0201D10C: .word sub_0201DC4C - arm_func_end sub_0201D100 - - arm_func_start FillOamAttributeInfo -FillOamAttributeInfo: ; 0x0201D110 - add r3, r0, #0x10 - mov r2, #6 -_0201D118: - ldrh r0, [r1], #2 - subs r2, r2, #1 - strh r0, [r3], #2 - bne _0201D118 - bx lr - arm_func_end FillOamAttributeInfo - - arm_func_start sub_0201D12C -sub_0201D12C: ; 0x0201D12C - ldrh r3, [r0, #2] - and r2, r1, #3 - ldr r1, _0201D16C ; =0x0000F3FF - orr r3, r3, #0x20 - strh r3, [r0, #2] - ldrh r3, [r0, #0x14] - mov r2, r2, lsl #0x10 - and r3, r3, r1 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x1a] - and r1, r3, r1 - strh r1, [r0, #0x1a] - ldrh r1, [r0, #0x1a] - orr r1, r1, r2, lsr #6 - strh r1, [r0, #0x1a] - bx lr - .align 2, 0 -_0201D16C: .word 0x0000F3FF - arm_func_end sub_0201D12C - - arm_func_start AnimationControlGetAllocForMaxFrame -AnimationControlGetAllocForMaxFrame: ; 0x0201D170 - stmdb sp!, {r3, lr} - bl GetWanForAnimationControl - cmp r0, #0 - ldrne r0, [r0] - ldrnesh r0, [r0, #0xe] - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end AnimationControlGetAllocForMaxFrame - - arm_func_start sub_0201D18C -sub_0201D18C: ; 0x0201D18C - mov r1, #0 - strh r1, [r0] - bx lr - arm_func_end sub_0201D18C - - arm_func_start sub_0201D198 -sub_0201D198: ; 0x0201D198 - cmp r1, #0 - ldrh r1, [r0] - orrne r1, r1, #0x4000 - biceq r1, r1, #0x4000 - strh r1, [r0] - bx lr - arm_func_end sub_0201D198 - - arm_func_start sub_0201D1B0 -sub_0201D1B0: ; 0x0201D1B0 - ldrh r0, [r0] - tst r0, #0x2000 - movne r0, #0 - bxne lr - tst r0, #0x8000 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end sub_0201D1B0 - - arm_func_start sub_0201D1D4 -sub_0201D1D4: ; 0x0201D1D4 - ldr r0, [r0, #0x2c] - bx lr - arm_func_end sub_0201D1D4 - - arm_func_start DeleteWanTableEntry -DeleteWanTableEntry: ; 0x0201D1DC - stmdb sp!, {r4, lr} - mov r2, #0x38 - smlabb r4, r1, r2, r0 - ldrb r0, [r4, #0x20] - cmp r0, #0 - beq _0201D204 - mov r0, r4 - mov r1, r2 - bl MemZero - ldmia sp!, {r4, pc} -_0201D204: - ldr r0, [r4, #0x34] - cmp r0, #0 - ldrnesh r0, [r4, #0x2c] - cmpne r0, #0 - ldmeqia sp!, {r4, pc} - sub r0, r0, #1 - strh r0, [r4, #0x2c] - ldrsh r0, [r4, #0x2c] - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0x34] - bl MemFree - mov r0, r4 - mov r1, #0x38 - bl MemZero - ldmia sp!, {r4, pc} - arm_func_end DeleteWanTableEntry - - arm_func_start AllocateWanTableEntry -AllocateWanTableEntry: ; 0x0201D244 - stmdb sp!, {r3, r4, r5, lr} - add r1, r0, #0x1500 - mov lr, #1 - ldrsh r4, [r1, #0xa] - ldrsh r5, [r1, #8] - mov ip, lr - mov r3, #0x38 - b _0201D2C4 -_0201D264: - cmp r4, r5 - movge r4, ip - smlabb r1, r4, r3, r0 - ldr r1, [r1, #0x34] - cmp r1, #0 - bne _0201D2AC - add r2, r4, #1 - add r1, r0, #0x1500 - strh r2, [r1, #0xa] - ldrsh r3, [r1, #0xa] - ldrsh r2, [r1, #8] - cmp r3, r2 - movge r2, #1 - strgeh r2, [r1, #0xa] - mov r1, #0x38 - bl MemZero - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} -_0201D2AC: - add r1, lr, #1 - add r2, r4, #1 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - mov lr, r1, asr #0x10 - mov r4, r2, asr #0x10 -_0201D2C4: - cmp lr, r5 - blt _0201D264 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end AllocateWanTableEntry - - arm_func_start FindWanTableEntry -FindWanTableEntry: ; 0x0201D2D4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - add r0, r6, #0x1500 - mov r5, r1 - ldrsh r4, [r0, #8] - mov r8, #1 - mov r7, #0x38 - b _0201D324 -_0201D2F4: - smlabb r0, r8, r7, r6 - ldrb r1, [r0, #0x21] - cmp r1, #1 - bne _0201D318 - mov r1, r5 - bl strcmp - cmp r0, #0 - moveq r0, r8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_0201D318: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 -_0201D324: - cmp r8, r4 - blt _0201D2F4 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end FindWanTableEntry - - arm_func_start GetLoadedWanTableEntry -GetLoadedWanTableEntry: ; 0x0201D334 - stmdb sp!, {r3, r4, r5, lr} - add r3, r0, #0x1500 - ldrsh r5, [r3, #8] - mov r4, #1 - mov ip, #0x38 - b _0201D37C -_0201D34C: - smlabb lr, r4, ip, r0 - ldrb r3, [lr, #0x21] - cmp r3, #2 - ldreqh r3, [lr, #0x22] - cmpeq r1, r3 - ldreqh r3, [lr, #0x24] - cmpeq r2, r3 - moveq r0, r4 - ldmeqia sp!, {r3, r4, r5, pc} - add r3, r4, #1 - mov r3, r3, lsl #0x10 - mov r4, r3, asr #0x10 -_0201D37C: - cmp r4, r5 - blt _0201D34C - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GetLoadedWanTableEntry - - arm_func_start sub_0201D38C -sub_0201D38C: ; 0x0201D38C - stmdb sp!, {r4, lr} - ldr r1, _0201D3B8 ; =0x00001510 - mov r4, r0 - bl MemZero - add r1, r4, #0x1500 - mov r2, #1 - strh r2, [r1, #0xa] - add r0, r4, #0x1000 - strb r2, [r0, #0x50c] - strh r2, [r1, #0xa] - ldmia sp!, {r4, pc} - .align 2, 0 -_0201D3B8: .word 0x00001510 - arm_func_end sub_0201D38C - - arm_func_start InitWanTable -InitWanTable: ; 0x0201D3BC - stmdb sp!, {r4, lr} - mov r1, #0x1500 - mov r4, r0 - bl MemZero - add r0, r4, #0x1500 - mov r1, #0x60 - strh r1, [r0, #8] - ldmia sp!, {r4, pc} - arm_func_end InitWanTable - - arm_func_start LoadWanTableEntry -LoadWanTableEntry: ; 0x0201D3DC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r5, r0 - mov r6, r1 - mov r7, r2 - bl FindWanTableEntry - mvn r1, #0 - cmp r0, r1 - beq _0201D418 - mov r1, #0x38 - smlabb r2, r0, r1, r5 - ldrsh r1, [r2, #0x2c] - add r1, r1, #1 - strh r1, [r2, #0x2c] - b _0201D47C -_0201D418: - mov r0, r5 - bl AllocateWanTableEntry - mov r4, r0 - mov r0, #0x38 - smlabb r5, r4, r0, r5 - mov r3, #1 - add r0, sp, #0 - mov r1, r6 - mov r2, r7 - strb r3, [r5, #0x21] - bl LoadFileFromRom - ldr r1, [sp] - mov r0, r5 - str r1, [r5, #0x34] - ldr r2, [sp, #4] - mov r1, r6 - str r2, [r5, #0x28] - bl strcpy - ldrsh r1, [r5, #0x2c] - add r0, r5, #0x30 - add r1, r1, #1 - strh r1, [r5, #0x2c] - ldr r1, [r5, #0x34] - bl HandleSir0TranslationVeneer - mov r0, r4 -_0201D47C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LoadWanTableEntry - - arm_func_start LoadWanTableEntryFromPack -LoadWanTableEntryFromPack: ; 0x0201D484 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl GetLoadedWanTableEntry - mvn r1, #0 - cmp r0, r1 - beq _0201D4C0 - mov r1, #0x38 - smlabb r2, r0, r1, sb - ldrsh r1, [r2, #0x2c] - add r1, r1, #1 - strh r1, [r2, #0x2c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0201D4C0: - mov r0, sb - bl AllocateWanTableEntry - mov r5, r0 - mov r0, #0x38 - smlabb r4, r5, r0, sb - ldrb r0, [sp, #0x20] - mov r1, #2 - strb r1, [r4, #0x21] - strh r8, [r4, #0x22] - strh r7, [r4, #0x24] - cmp r0, #0 - beq _0201D53C - add r0, sb, #0x1000 - ldr sb, [r0, #0x500] - mov r0, r8 - mov r1, r7 - bl DirectoryFileMngr_GetDirectoryFileSize - mov r0, r8 - mov r1, r7 - mov r2, sb - bl DirectoryFileMngr_LoadDirectoryFile - mov r0, sb - bl GetAtSize - mov r7, r0 - mov r1, r6 - bl MemAlloc - mov r1, r7 - mov r2, sb - mov r6, r0 - bl DecompressAtNormalVeneer - b _0201D56C -_0201D53C: - mov r0, r8 - mov r1, r7 - bl DirectoryFileMngr_GetDirectoryFileSize - mov r1, r6 - mov sb, r0 - bl MemAlloc - mov r6, r0 - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl DirectoryFileMngr_LoadDirectoryFile - str sb, [r4, #0x28] -_0201D56C: - str r6, [r4, #0x34] - ldrsh r1, [r4, #0x2c] - add r0, r4, #0x30 - add r1, r1, #1 - strh r1, [r4, #0x2c] - ldr r1, [r4, #0x34] - bl HandleSir0TranslationVeneer - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end LoadWanTableEntryFromPack - - arm_func_start LoadWanTableEntryFromPackUseProvidedMemory -LoadWanTableEntryFromPackUseProvidedMemory: ; 0x0201D590 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl GetLoadedWanTableEntry - mvn r1, #0 - cmp r0, r1 - beq _0201D5CC - mov r1, #0x38 - smlabb r2, r0, r1, sb - ldrsh r1, [r2, #0x2c] - add r1, r1, #1 - strh r1, [r2, #0x2c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0201D5CC: - mov r0, sb - bl AllocateWanTableEntry - ldrb r1, [sp, #0x20] - mov r5, r0 - mov r0, #0x38 - smlabb r4, r5, r0, sb - cmp r1, #0 - beq _0201D62C - add r0, sb, #0x1000 - ldr sb, [r0, #0x500] - mov r0, r8 - mov r1, r7 - bl DirectoryFileMngr_GetDirectoryFileSize - mov r0, r8 - mov r1, r7 - mov r2, sb - bl DirectoryFileMngr_LoadDirectoryFile - mov r0, sb - bl GetAtSize - mov r2, sb - mov r1, r0 - mov r0, r6 - bl DecompressAtNormalVeneer - b _0201D648 -_0201D62C: - mov r0, r8 - mov r1, r7 - bl DirectoryFileMngr_GetDirectoryFileSize - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl DirectoryFileMngr_LoadDirectoryFile -_0201D648: - mov r0, #2 - strb r0, [r4, #0x21] - strh r8, [r4, #0x22] - strh r7, [r4, #0x24] - str r6, [r4, #0x34] - ldrsh r1, [r4, #0x2c] - add r0, r4, #0x30 - add r1, r1, #1 - strh r1, [r4, #0x2c] - ldr r1, [r4, #0x34] - bl HandleSir0TranslationVeneer - mov r1, #1 - mov r0, r5 - strb r1, [r4, #0x20] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end LoadWanTableEntryFromPackUseProvidedMemory - - arm_func_start ReplaceWanFromBinFile -ReplaceWanFromBinFile: ; 0x0201D684 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldrb ip, [sp, #0x18] - mov r4, #0x38 - smlabb r6, r1, r4, r0 - mov r5, r2 - mov r4, r3 - cmp ip, #0 - beq _0201D6E8 - add r0, r0, #0x1000 - ldr r7, [r0, #0x500] - mov r0, r5 - mov r1, r4 - ldr r8, [r6, #0x34] - bl DirectoryFileMngr_GetDirectoryFileSize - mov r0, r5 - mov r1, r4 - mov r2, r7 - bl DirectoryFileMngr_LoadDirectoryFile - mov r0, r7 - bl GetAtSize - mov r2, r7 - mov r1, r0 - mov r0, r8 - bl DecompressAtNormalVeneer - b _0201D708 -_0201D6E8: - ldr r7, [r6, #0x34] - mov r0, r5 - mov r1, r4 - bl DirectoryFileMngr_GetDirectoryFileSize - mov r0, r5 - mov r1, r4 - mov r2, r7 - bl DirectoryFileMngr_LoadDirectoryFile -_0201D708: - ldr r1, [r6, #0x34] - add r0, r6, #0x30 - bl HandleSir0TranslationVeneer - mov r0, #2 - strb r0, [r6, #0x21] - strh r5, [r6, #0x22] - strh r4, [r6, #0x24] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ReplaceWanFromBinFile - - arm_func_start DeleteWanTableEntryVeneer -DeleteWanTableEntryVeneer: ; 0x0201D72C - ldr ip, _0201D734 ; =DeleteWanTableEntry - bx ip - .align 2, 0 -_0201D734: .word DeleteWanTableEntry - arm_func_end DeleteWanTableEntryVeneer - - arm_func_start sub_0201D738 -sub_0201D738: ; 0x0201D738 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - add r3, r6, #0x1000 - ldr r3, [r3, #0x500] - mov r5, r1 - mov r4, r2 - cmp r3, #0 - beq _0201D75C - bl sub_0201D778 -_0201D75C: - mov r0, r5 - mov r1, r4 - bl MemAlloc - add r1, r6, #0x1000 - str r0, [r1, #0x500] - str r5, [r1, #0x504] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0201D738 - - arm_func_start sub_0201D778 -sub_0201D778: ; 0x0201D778 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x500] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl MemFree - add r0, r4, #0x1000 - mov r1, #0 - str r1, [r0, #0x500] - str r1, [r0, #0x504] - ldmia sp!, {r4, pc} - arm_func_end sub_0201D778 - - arm_func_start sub_0201D7A8 -sub_0201D7A8: ; 0x0201D7A8 - stmdb sp!, {r3, lr} - ldr r0, _0201D7D8 ; =0x00001510 - mov r1, #0 - bl MemAlloc - ldr r2, _0201D7DC ; =_020AFC64 - ldr r1, _0201D7D8 ; =0x00001510 - str r0, [r2, #4] - bl MemZero - ldr r0, _0201D7DC ; =_020AFC64 - ldr r0, [r0, #4] - bl sub_0201D38C - ldmia sp!, {r3, pc} - .align 2, 0 -_0201D7D8: .word 0x00001510 -_0201D7DC: .word _020AFC64 - arm_func_end sub_0201D7A8 - - arm_func_start sub_0201D7E0 -sub_0201D7E0: ; 0x0201D7E0 - ldr r2, _0201D7FC ; =_020AFC64 - mov r3, r0 - ldr r0, [r2, #4] - mov r2, r1 - ldr ip, _0201D800 ; =sub_0201D738 - mov r1, r3 - bx ip - .align 2, 0 -_0201D7FC: .word _020AFC64 -_0201D800: .word sub_0201D738 - arm_func_end sub_0201D7E0 - - arm_func_start sub_0201D804 -sub_0201D804: ; 0x0201D804 - ldr r0, _0201D814 ; =_020AFC64 - ldr ip, _0201D818 ; =sub_0201D778 - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0201D814: .word _020AFC64 -_0201D818: .word sub_0201D778 - arm_func_end sub_0201D804 - - arm_func_start sub_0201D81C -sub_0201D81C: ; 0x0201D81C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldrb r4, [sp, #0x2c] - ldr r5, [r0, #4] - mov sl, r1 - mov sb, r2 - cmp r4, #0 - ldrh r7, [r5, #0xe] - beq _0201D848 - cmp r4, #1 - beq _0201D8E4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0201D848: - cmp r3, #0 - beq _0201D8C0 - mov r8, #0 - ldr fp, _0201D988 ; =_020AFC30 - ldr r4, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR - b _0201D8B8 -_0201D860: - ldr r0, [r5] - mov r2, sl - ldr r6, [r0, r8, lsl #2] - str sb, [sp] - ldr r0, [r4] - ldr r3, [r5, #4] - mov r1, r6 - bl sub_0201B388 - ldr r1, [r5, #4] - ldr r0, [r4] - ldrh r1, [r1, #4] - ldrh r2, [r0, #0xc] - ldr r0, [r6, #4] - mov r1, r1, lsl #1 - ldrh r1, [fp, r1] - bl sub_0201D990 - add r0, sl, r0 - add r1, r8, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov sl, r0, lsr #0x10 - mov r8, r1, lsr #0x10 -_0201D8B8: - cmp r8, r7 - blo _0201D860 -_0201D8C0: - ldrb r0, [sp, #0x28] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [r5, #4] - ldr r0, [r0] - mov r2, sb - bl LoadObjPalette - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0201D8E4: - cmp r3, #0 - beq _0201D960 - mov r6, #0 - ldr fp, _0201D988 ; =_020AFC30 - ldr r4, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR - b _0201D958 -_0201D8FC: - ldr r0, [r5] - mov r2, sl - ldr r8, [r0, r6, lsl #2] - str sb, [sp] - ldr r0, [r4] - ldr r3, [r5, #4] - mov r1, r8 - add r0, r0, #0x70 - bl sub_0201B388 - ldr r1, [r5, #4] - ldr r0, [r4] - ldrh r1, [r1, #4] - ldrh r2, [r0, #0x7c] - ldr r0, [r8, #4] - mov r1, r1, lsl #1 - ldrh r1, [fp, r1] - bl sub_0201D990 - add r0, sl, r0 - add r1, r6, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov sl, r0, lsr #0x10 - mov r6, r1, lsr #0x10 -_0201D958: - cmp r6, r7 - blo _0201D8FC -_0201D960: - ldrb r0, [sp, #0x28] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r1, [r5, #4] - ldr r0, [r0] - mov r2, sb - add r0, r0, #0x70 - bl LoadObjPalette - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0201D988: .word _020AFC30 -_0201D98C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201D81C - - arm_func_start sub_0201D990 -sub_0201D990: ; 0x0201D990 - stmdb sp!, {r3, lr} - ldr r1, _0201D9C4 ; =_020AFC3C - ldr r1, [r1, r2, lsl #2] - mov r1, r1, lsl #0x10 - add r0, r0, r1, asr #16 - sub r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, asr #0x10 - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201D9C4: .word _020AFC3C - arm_func_end sub_0201D990 - - arm_func_start sub_0201D9C8 -sub_0201D9C8: ; 0x0201D9C8 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldrb lr, [sp, #0x14] - ldr ip, _0201D9FC ; =_020AFC64 - mov r3, #1 - stmia sp, {r3, lr} - ldr lr, [ip, #4] - mov ip, #0x38 - smlabb r0, r0, ip, lr - ldr r0, [r0, #0x30] - bl sub_0201D81C - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201D9FC: .word _020AFC64 - arm_func_end sub_0201D9C8 - - arm_func_start sub_0201DA00 -sub_0201DA00: ; 0x0201DA00 - ldrb r1, [r0, #8] - ldr r0, [r0] - cmp r1, #0 - cmpne r1, #2 - ldreq r0, [r0, #8] - ldreqsh r0, [r0, #4] - ldrnesh r0, [r0, #0xc] - bx lr - arm_func_end sub_0201DA00 - - arm_func_start sub_0201DA20 -sub_0201DA20: ; 0x0201DA20 - ldr r2, _0201DA3C ; =_020AFC64 - mov r1, #0x38 - ldr r2, [r2, #4] - ldr ip, _0201DA40 ; =sub_0201DA00 - smlabb r0, r0, r1, r2 - ldr r0, [r0, #0x30] - bx ip - .align 2, 0 -_0201DA3C: .word _020AFC64 -_0201DA40: .word sub_0201DA00 - arm_func_end sub_0201DA20 - - arm_func_start WanHasAnimationGroup -WanHasAnimationGroup: ; 0x0201DA44 - ldr r2, [r0] - ldrsh r0, [r2, #0xc] - cmp r1, r0 - bge _0201DA70 - cmp r1, #0 - blt _0201DA70 - ldr r0, [r2, #8] - add r0, r0, r1, lsl #3 - ldrh r0, [r0, #4] - cmp r0, #0 - bne _0201DA78 -_0201DA70: - mov r0, #0 - bx lr -_0201DA78: - mov r0, #1 - bx lr - arm_func_end WanHasAnimationGroup - - arm_func_start WanTableSpriteHasAnimationGroup -WanTableSpriteHasAnimationGroup: ; 0x0201DA80 - ldr r3, _0201DA9C ; =_020AFC64 - mov r2, #0x38 - ldr r3, [r3, #4] - ldr ip, _0201DAA0 ; =WanHasAnimationGroup - smlabb r0, r0, r2, r3 - ldr r0, [r0, #0x30] - bx ip - .align 2, 0 -_0201DA9C: .word _020AFC64 -_0201DAA0: .word WanHasAnimationGroup - arm_func_end WanTableSpriteHasAnimationGroup - - arm_func_start sub_0201DAA4 -sub_0201DAA4: ; 0x0201DAA4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r5, [r0, #4] - mov sl, r1 - mov sb, r2 - cmp r3, #0 - ldrh r7, [r5, #0xe] - beq _0201DACC - cmp r3, #1 - beq _0201DB38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0201DACC: - mov r8, #0 - mov r6, r8 - ldr r4, _0201DBB0 ; =_020AFC30 - ldr fp, _0201DBB4 ; =OBJ_GRAPHICS_CONTROLS_PTR - b _0201DB2C -_0201DAE0: - str r6, [sp] - ldmia r5, {r0, r2} - ldr r0, [r0, r8, lsl #2] - mov r1, sl - mov r3, sb - bl sub_0201BFAC - ldr r2, [r5, #4] - ldr r1, [fp] - ldrh r3, [r2, #4] - ldrh r2, [r1, #0xc] - mov r1, r3, lsl #1 - ldrh r1, [r4, r1] - bl sub_0201D990 - add r0, sl, r0 - add r1, r8, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov sl, r0, lsr #0x10 - mov r8, r1, lsr #0x10 -_0201DB2C: - cmp r8, r7 - blo _0201DAE0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0201DB38: - mov r8, #0 - mov r4, #1 - ldr fp, _0201DBB0 ; =_020AFC30 - b _0201DBA4 -_0201DB48: - ldr r0, [r5] - mov r1, sl - ldr r6, [r0, r8, lsl #2] - mov r3, sb - str r4, [sp] - ldr r2, [r5, #4] - mov r0, r6 - bl sub_0201BFAC - ldr r2, [r5, #4] - ldr r0, _0201DBB4 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldrh r3, [r2, #4] - ldr r1, [r0] - ldr r0, [r6, #4] - ldrh r2, [r1, #0x7c] - mov r1, r3, lsl #1 - ldrh r1, [fp, r1] - bl sub_0201D990 - add r0, sl, r0 - add r1, r8, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov sl, r0, lsr #0x10 - mov r8, r1, lsr #0x10 -_0201DBA4: - cmp r8, r7 - blo _0201DB48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0201DBB0: .word _020AFC30 -_0201DBB4: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201DAA4 - - arm_func_start sub_0201DBB8 -sub_0201DBB8: ; 0x0201DBB8 - stmdb sp!, {r3, lr} - ldr lr, _0201DBD8 ; =_020AFC64 - mov ip, #0x38 - ldr lr, [lr, #4] - smlabb r0, r0, ip, lr - ldr r0, [r0, #0x30] - bl sub_0201DAA4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201DBD8: .word _020AFC64 - arm_func_end sub_0201DBB8 - - arm_func_start sub_0201DBDC -sub_0201DBDC: ; 0x0201DBDC - ldr r0, [r0, #4] - ldr r1, [r0, #4] - cmp r1, #0 - moveq r0, #0 - bxeq lr - ldrh r0, [r1, #4] - cmp r0, #1 - bne _0201DC30 - ldrb r0, [r1, #0xb] - cmp r0, #0 - ldrsh r0, [r1, #6] - addne r1, r0, #0xf - movne r0, r1, asr #3 - addne r0, r1, r0, lsr #28 - movne r0, r0, lsl #0xc - addeq r1, r0, #0xff - moveq r0, r1, asr #7 - addeq r0, r1, r0, lsr #24 - moveq r0, r0, lsl #8 - mov r0, r0, asr #0x10 - bx lr -_0201DC30: - ldrsh r0, [r1, #6] - add r1, r0, #0xf - mov r0, r1, asr #3 - add r0, r1, r0, lsr #28 - mov r0, r0, lsl #0xc - mov r0, r0, asr #0x10 - bx lr - arm_func_end sub_0201DBDC - - arm_func_start sub_0201DC4C -sub_0201DC4C: ; 0x0201DC4C - ldr r2, _0201DC68 ; =_020AFC64 - mov r1, #0x38 - ldr r2, [r2, #4] - ldr ip, _0201DC6C ; =sub_0201DBDC - smlabb r0, r0, r1, r2 - ldr r0, [r0, #0x30] - bx ip - .align 2, 0 -_0201DC68: .word _020AFC64 -_0201DC6C: .word sub_0201DBDC - arm_func_end sub_0201DC4C - - arm_func_start SpriteTypeInWanTable -SpriteTypeInWanTable: ; 0x0201DC70 - ldr r2, _0201DC8C ; =_020AFC64 - mov r1, #0x38 - ldr r2, [r2, #4] - smlabb r0, r0, r1, r2 - ldr r0, [r0, #0x30] - ldrb r0, [r0, #8] - bx lr - .align 2, 0 -_0201DC8C: .word _020AFC64 - arm_func_end SpriteTypeInWanTable - - arm_func_start sub_0201DC90 -sub_0201DC90: ; 0x0201DC90 - stmdb sp!, {r3, lr} - ldr r0, _0201DCC8 ; =0x000007C4 - mov r1, #0 - bl MemAlloc - ldr r2, _0201DCCC ; =_020AFC6C - ldr r1, _0201DCC8 ; =0x000007C4 - str r0, [r2] - bl MemZero - ldr r0, _0201DCCC ; =_020AFC6C - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x700 - strh r1, [r0, #0xc0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201DCC8: .word 0x000007C4 -_0201DCCC: .word _020AFC6C - arm_func_end sub_0201DC90 - - arm_func_start sub_0201DCD0 -sub_0201DCD0: ; 0x0201DCD0 - stmdb sp!, {r3, lr} - ldr r0, _0201DCF0 ; =_020AFC6C - ldr r0, [r0] - bl MemFree - ldr r0, _0201DCF0 ; =_020AFC6C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201DCF0: .word _020AFC6C - arm_func_end sub_0201DCD0 - - arm_func_start sub_0201DCF4 -sub_0201DCF4: ; 0x0201DCF4 - ldr r0, _0201DD44 ; =_020AFC6C - mov r2, #0 - ldr r1, [r0] - mov r3, #1 - strb r2, [r1, #0x7c2] - ldr r2, [r0] - mov r1, #0x7c - b _0201DD30 -_0201DD14: - smlabb r0, r3, r1, r2 - ldrh r0, [r0, #2] - tst r0, #1 - bxeq lr - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 -_0201DD30: - cmp r3, #0x10 - blt _0201DD14 - mov r0, #1 - strb r0, [r2, #0x7c2] - bx lr - .align 2, 0 -_0201DD44: .word _020AFC6C - arm_func_end sub_0201DCF4 - - arm_func_start sub_0201DD48 -sub_0201DD48: ; 0x0201DD48 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, _0201DD8C ; =_020AFC6C - mov r6, #1 - mov r4, #0x7c -_0201DD58: - ldr r0, [r5] - smlabb r0, r6, r4, r0 - ldrh r1, [r0, #2] - tst r1, #1 - beq _0201DD70 - bl sub_0201CF5C -_0201DD70: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - blt _0201DD58 - bl sub_0201DCF4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0201DD8C: .word _020AFC6C - arm_func_end sub_0201DD48 - - arm_func_start sub_0201DD90 -sub_0201DD90: ; 0x0201DD90 - stmdb sp!, {r3, lr} - mov r0, #0x2ec - mov r1, #0 - bl MemAlloc - ldr r1, _0201DDF0 ; =_020AFC70 - str r0, [r1] - bl sub_0201E614 - ldr r0, _0201DDF0 ; =_020AFC70 - ldr r1, _0201DDF4 ; =0x06860000 - ldr r0, [r0] - add r2, r1, #0x30000 - add r0, r0, #0xbc - mov r3, #0x80 - bl sub_0201E190 - ldr r0, _0201DDF0 ; =_020AFC70 - ldr r2, _0201DDF8 ; =0x06890000 - ldr r1, [r0] - mov r0, #0x2000 - str r0, [sp] - add r0, r1, #0xcc - add r1, r1, #0xbc - mov r3, #0 - bl sub_0201E314 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201DDF0: .word _020AFC70 -_0201DDF4: .word 0x06860000 -_0201DDF8: .word 0x06890000 - arm_func_end sub_0201DD90 - - arm_func_start sub_0201DDFC -sub_0201DDFC: ; 0x0201DDFC - stmdb sp!, {r3, lr} - bl sub_0201E5B0 - bl GeomSwapBuffers - bl sub_0201E544 - ldmia sp!, {r3, pc} - arm_func_end sub_0201DDFC - - arm_func_start sub_0201DE10 -sub_0201DE10: ; 0x0201DE10 - stmdb sp!, {r3, lr} - ldr r0, _0201DE48 ; =_020AFC70 - ldr r0, [r0] - add r0, r0, #0xcc - bl sub_0201E424 - ldr r0, _0201DE48 ; =_020AFC70 - ldr r0, [r0] - add r0, r0, #0xbc - bl PerformPlannedTextureVramTransfer - ldr r0, _0201DE48 ; =_020AFC70 - ldr r0, [r0] - add r0, r0, #0xbc - bl ResetPlannedVramTransfer - ldmia sp!, {r3, pc} - .align 2, 0 -_0201DE48: .word _020AFC70 - arm_func_end sub_0201DE10 - - arm_func_start LoadWteFromRom -LoadWteFromRom: ; 0x0201DE4C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x10c - mov r5, r1 - mov r6, r0 - ldr r1, _0201DEBC ; =_02099714 - add r0, sp, #0xc - mov r4, r2 - bl strcpy - add r0, sp, #0xc - mov r1, r5 - bl strcat - add r0, sp, #4 - add r1, sp, #0xc - mov r2, r4 - bl LoadFileFromRom - ldr r1, [sp, #4] - add r0, sp, #0 - bl HandleSir0Translation - ldr r0, [sp] - ldr r1, _0201DEC0 ; =_0209971C - mov r2, #4 - bl strncmp - ldr r0, [sp, #4] - str r0, [r6] - ldr r0, [sp] - str r0, [r6, #4] - add sp, sp, #0x10c - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0201DEBC: .word _02099714 -_0201DEC0: .word _0209971C - arm_func_end LoadWteFromRom - - arm_func_start LoadWteFromFileDirectory -LoadWteFromFileDirectory: ; 0x0201DEC4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - mov r4, r0 - mov r0, r1 - mov r1, r2 - add r2, sp, #0 - bl DirectoryFileMngr_OpenDirectoryFile - ldr r1, [sp] - add r0, sp, #8 - bl HandleSir0Translation - ldr r0, [sp, #8] - ldr r1, _0201DF14 ; =_0209971C - mov r2, #4 - bl strncmp - ldr r0, [sp] - str r0, [r4] - ldr r0, [sp, #8] - str r0, [r4, #4] - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201DF14: .word _0209971C - arm_func_end LoadWteFromFileDirectory - - arm_func_start UnloadWte -UnloadWte: ; 0x0201DF18 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - bl MemFree - mov r0, #0 - str r0, [r4] - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end UnloadWte - - arm_func_start sub_0201DF38 -sub_0201DF38: ; 0x0201DF38 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x108 - mov r6, r0 - mov r0, #8 - mov r5, r1 - bl MemAlloc - mov r4, r0 - ldr r1, _0201DFAC ; =_02099714 - add r0, sp, #8 - bl strcpy - add r0, sp, #8 - mov r1, r6 - bl strcat - add r0, sp, #0 - add r1, sp, #8 - mov r2, r5 - bl LoadFileFromRom - ldr r5, [sp] - ldr r1, _0201DFB0 ; =_02099720 - str r5, [r4] - mov r0, r5 - mov r2, #4 - bl strncmp - ldr r1, [r5, #0xc] - mov r0, r4 - add r1, r5, r1 - str r1, [r4, #4] - add sp, sp, #0x108 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0201DFAC: .word _02099714 -_0201DFB0: .word _02099720 - arm_func_end sub_0201DF38 - - arm_func_start LoadWtuFromBin -LoadWtuFromBin: ; 0x0201DFB4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r1, r5 - mov r0, #8 - bl MemAlloc - mov r4, r0 - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - mov r3, r5 - bl DirectoryFileMngr_OpenDirectoryFile - ldr r5, [sp] - ldr r1, _0201E01C ; =_02099720 - str r5, [r4] - mov r0, r5 - mov r2, #4 - bl strncmp - ldr r1, [r5, #0xc] - mov r0, r4 - add r1, r5, r1 - str r1, [r4, #4] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0201E01C: .word _02099720 - arm_func_end LoadWtuFromBin - - arm_func_start sub_0201E020 -sub_0201E020: ; 0x0201E020 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r0] - bl MemFree - ldr r0, [r4] - bl MemFree - mov r0, #0 - str r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end sub_0201E020 - - arm_func_start sub_0201E050 -sub_0201E050: ; 0x0201E050 - stmdb sp!, {r3, lr} - ldr ip, _0201E07C ; =_020AFC70 - str r3, [sp] - ldr ip, [ip] - mov lr, r1 - mov r3, r2 - mov r1, r0 - mov r2, lr - add r0, ip, #0xbc - bl PlanCopyTextureToTextureVram - ldmia sp!, {r3, pc} - .align 2, 0 -_0201E07C: .word _020AFC70 - arm_func_end sub_0201E050 - - arm_func_start sub_0201E080 -sub_0201E080: ; 0x0201E080 - stmdb sp!, {r3, lr} - mov r2, #2 - ldr r1, _0201E0AC ; =_020AFC70 - str r2, [sp] - mov r2, #0 - ldr ip, [r1] - mov r1, r0 - mov r3, r2 - add r0, ip, #0xbc - bl PlanCopyTextureToTextureVram - ldmia sp!, {r3, pc} - .align 2, 0 -_0201E0AC: .word _020AFC70 - arm_func_end sub_0201E080 - - arm_func_start ProcessWte -ProcessWte: ; 0x0201E0B0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov ip, r1 - ldr r1, [r6, #4] - mov r5, r2 - mov r4, r3 - cmp r1, #0 - beq _0201E0F4 - mov r0, #0 - str r0, [sp] - ldr r0, _0201E128 ; =_020AFC70 - ldr r3, [r6, #8] - ldr r0, [r0] - mov r2, ip - add r0, r0, #0xbc - bl PlanCopyTextureToTextureVram -_0201E0F4: - ldr r0, [r6, #0x18] - cmp r0, #0 - beq _0201E120 - ldr r0, _0201E128 ; =_020AFC70 - str r4, [sp] - ldr r0, [r0] - ldrsh r2, [r6, #0x1c] - ldr r1, [r6, #0x18] - mov r3, r5 - add r0, r0, #0xcc - bl sub_0201E3AC -_0201E120: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0201E128: .word _020AFC70 - arm_func_end ProcessWte - - arm_func_start sub_0201E12C -sub_0201E12C: ; 0x0201E12C - ldr ip, _0201E138 ; =ProcessWte - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0201E138: .word ProcessWte - arm_func_end sub_0201E12C - - arm_func_start DelayWteFree -DelayWteFree: ; 0x0201E13C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r2, #2 - ldr r1, _0201E180 ; =_020AFC70 - str r2, [sp] - mov r4, r0 - ldr r0, [r1] - mov r2, #0 - ldr r1, [r4] - mov r3, r2 - add r0, r0, #0xbc - bl PlanCopyTextureToTextureVram - mov r0, #0 - str r0, [r4] - str r0, [r4, #4] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201E180: .word _020AFC70 - arm_func_end DelayWteFree - - arm_func_start sub_0201E184 -sub_0201E184: ; 0x0201E184 - mov r0, r0, lsl #9 - mov r0, r0, asr #0x10 - bx lr - arm_func_end sub_0201E184 - - arm_func_start sub_0201E190 -sub_0201E190: ; 0x0201E190 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov ip, #0x1c - mul r4, r3, ip - mov r7, r0 - mov r6, r1 - mov r0, r4 - mov r1, #0 - mov r5, r2 - bl MemAlloc - mov r1, r4 - str r0, [r7] - bl MemZero - mov r0, #0 - strh r0, [r7, #0xc] - str r6, [r7, #4] - str r5, [r7, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0201E190 - - arm_func_start ResetPlannedVramTransfer -ResetPlannedVramTransfer: ; 0x0201E1D4 - mov r1, #0 - strh r1, [r0, #0xc] - bx lr - arm_func_end ResetPlannedVramTransfer - - arm_func_start PlanCopyTextureToTextureVram -PlanCopyTextureToTextureVram: ; 0x0201E1E0 - stmdb sp!, {r4, lr} - ldrsh r4, [r0, #0xc] - cmp r4, #0x80 - mvnge r0, #0 - ldmgeia sp!, {r4, pc} - ldr lr, [r0] - mov ip, #0x1c - smlabb ip, r4, ip, lr - str r3, [ip, #4] - str r1, [ip, #8] - ldrb r3, [sp, #8] - str r2, [ip, #0xc] - mov r1, #0 - str r3, [ip, #0x10] - strb r1, [ip, #0x14] - ldrsh r1, [r0, #0xc] - add r1, r1, #1 - strh r1, [r0, #0xc] - ldrsh r0, [r0, #0xc] - ldmia sp!, {r4, pc} - arm_func_end PlanCopyTextureToTextureVram - - arm_func_start PerformPlannedTextureVramTransfer -PerformPlannedTextureVramTransfer: ; 0x0201E230 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - ldrsh r7, [r4, #0xc] - mov r6, #0 - ldr fp, _0201E310 ; =_022A4F38 - mov r5, #0x1c - b _0201E304 -_0201E24C: - ldr r0, [r4] - smlabb r1, r6, r5, r0 - ldr r0, [r1, #0x10] - cmp r0, #0 - beq _0201E274 - cmp r0, #1 - beq _0201E2C8 - cmp r0, #2 - beq _0201E2F0 - b _0201E2F8 -_0201E274: - ldr sl, [r1, #8] - cmp sl, #0 - beq _0201E2A4 - ldr sb, [r1, #4] - ldr r8, [r1, #0xc] - bl GX_BeginLoadTex - mov r0, sl - mov r1, r8 - mov r2, sb - bl GX_LoadTex - bl GX_EndLoadTex - b _0201E2F8 -_0201E2A4: - ldr r8, [r1, #4] - ldr sb, [r1, #0xc] - bl GX_BeginLoadTex - mov r0, fp - mov r1, sb - mov r2, r8 - bl GX_LoadTex - bl GX_EndLoadTex - b _0201E2F8 -_0201E2C8: - ldr sl, [r1, #4] - ldr sb, [r1, #0xc] - ldr r8, [r1, #8] - bl GX_BeginLoadTexPltt - mov r0, r8 - mov r1, sb - mov r2, sl - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - b _0201E2F8 -_0201E2F0: - ldr r0, [r1, #8] - bl MemFree -_0201E2F8: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0201E304: - cmp r6, r7 - blt _0201E24C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0201E310: .word _022A4F38 - arm_func_end PerformPlannedTextureVramTransfer - - arm_func_start sub_0201E314 -sub_0201E314: ; 0x0201E314 - stmdb sp!, {r4, lr} - ldr ip, [sp, #8] - mov r4, r0 - mov r0, ip, asr #7 - add r0, ip, r0, lsr #24 - stmia r4, {r1, ip} - mov r0, r0, asr #8 - str r0, [r4, #8] - mov r1, #0 - strb r1, [r4, #0xc] - str r2, [r4, #0x10] - str r3, [r4, #0x14] - mov r0, ip, lsl #1 - bl MemAlloc - str r0, [r4, #0x18] - ldr r0, [r4, #8] - mov r1, #0 - bl MemAlloc - str r0, [r4, #0x1c] - ldr r1, [r4, #4] - ldr r0, [r4, #0x18] - mov r1, r1, lsl #1 - bl MemZero - ldr r0, [r4, #0x1c] - ldr r1, [r4, #8] - bl MemZero - ldmia sp!, {r4, pc} - arm_func_end sub_0201E314 - - arm_func_start sub_0201E380 -sub_0201E380: ; 0x0201E380 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - ldr r2, [r5, #0x18] - add r0, r3, r4, lsl #8 - add r0, r2, r0, lsl #1 - bl Rgb8ToRgb5 - ldr r0, [r5, #0x1c] - mov r1, #1 - strb r1, [r0, r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_0201E380 - - arm_func_start sub_0201E3AC -sub_0201E3AC: ; 0x0201E3AC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldrsh r4, [sp, #0x20] - mov r7, r3 - mov sl, r0 - add r6, r4, r7, lsl #8 - mov sb, r1 - mov r8, r2 - mov r5, #0 - mov r4, #1 - b _0201E3FC -_0201E3D4: - ldr r1, [sl, #0x18] - add r0, r5, r6 - add r0, r1, r0, lsl #1 - add r1, sb, r5, lsl #2 - bl Rgb8ToRgb5 - add r0, r5, #1 - ldr r1, [sl, #0x1c] - mov r0, r0, lsl #0x10 - strb r4, [r7, r1] - mov r5, r0, asr #0x10 -_0201E3FC: - cmp r5, r8 - blt _0201E3D4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end sub_0201E3AC - - arm_func_start sub_0201E408 -sub_0201E408: ; 0x0201E408 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, r2 - ldrsh r2, [r1, #6] - ldr r1, [r1] - bl sub_0201E3AC - ldmia sp!, {r3, pc} - arm_func_end sub_0201E408 - - arm_func_start sub_0201E424 -sub_0201E424: ; 0x0201E424 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r5, #0 - mov r6, r0 - mov r4, #1 - mov r8, #0x200 - mov r7, r5 - b _0201E480 -_0201E444: - ldr r0, [r6, #0x1c] - ldrb r0, [r0, r5] - cmp r0, #0 - beq _0201E47C - str r4, [sp] - ldr r1, [r6, #0x18] - ldr r2, [r6, #0x14] - ldr r0, [r6] - mov r3, r8 - add r1, r1, r5, lsl #9 - add r2, r2, r5, lsl #9 - bl PlanCopyTextureToTextureVram - ldr r0, [r6, #0x1c] - strb r7, [r0, r5] -_0201E47C: - add r5, r5, #1 -_0201E480: - ldr r0, [r6, #8] - cmp r5, r0 - blt _0201E444 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end sub_0201E424 - - arm_func_start GeomSetTexImageParam -GeomSetTexImageParam: ; 0x0201E494 - ldr ip, [sp, #0xc] - mov r0, r0, lsl #0x1a - orr r0, r0, ip, lsr #3 - orr r0, r0, r1, lsl #30 - orr r0, r0, r2, lsl #20 - ldr r1, [sp] - orr r0, r0, r3, lsl #23 - ldr r2, [sp, #4] - orr r0, r0, r1, lsl #16 - ldr r3, [sp, #8] - orr r1, r0, r2, lsl #18 - ldr r0, _0201E4D0 ; =0x040004A8 - orr r1, r1, r3, lsl #29 - str r1, [r0] - bx lr - .align 2, 0 -_0201E4D0: .word 0x040004A8 - arm_func_end GeomSetTexImageParam - - arm_func_start GeomSetVertexCoord16 -GeomSetVertexCoord16: ; 0x0201E4D4 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r3, r1, lsl #0x10 - mov r1, r2, lsl #0x10 - ldr r2, _0201E500 ; =0x0400048C - orr r0, r3, r0, lsr #16 - str r0, [r2] - mov r0, r1, lsr #0x10 - str r0, [r2] - bx lr - .align 2, 0 -_0201E500: .word 0x0400048C - arm_func_end GeomSetVertexCoord16 - - arm_func_start InitRender3dData -InitRender3dData: ; 0x0201E504 - stmdb sp!, {r3, lr} - ldr r0, _0201E540 ; =RENDER_3D - ldr r0, [r0, #0x40] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x1a00 - mov r1, #0 - bl MemAlloc - ldr r1, _0201E540 ; =RENDER_3D - mov r2, #0 - str r0, [r1, #0x40] - strh r2, [r1] - mov r0, #0x80 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201E540: .word RENDER_3D - arm_func_end InitRender3dData - - arm_func_start sub_0201E544 -sub_0201E544: ; 0x0201E544 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r1, r0 - mov r2, r0 - mov r3, r0 - str r0, [sp, #0xc] - bl GeomSetTexImageParam - ldr r0, _0201E5A4 ; =RENDER_3D - mvn r1, #0 - str r1, [r0, #8] - bl sub_01FF8F04 - ldr r2, _0201E5A8 ; =0x3F1F00C0 - ldr r1, _0201E5AC ; =0x040004A4 - ldr r0, _0201E5A4 ; =RENDER_3D - str r2, [r1] - mov r1, #0 - strh r1, [r0] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201E5A4: .word RENDER_3D -_0201E5A8: .word 0x3F1F00C0 -_0201E5AC: .word 0x040004A4 - arm_func_end sub_0201E544 - - arm_func_start sub_0201E5B0 -sub_0201E5B0: ; 0x0201E5B0 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - bl Render3dProcessQueue - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r1, r0 - mov r2, r0 - mov r3, r0 - str r0, [sp, #0xc] - bl GeomSetTexImageParam - ldr r0, _0201E608 ; =RENDER_3D - mvn r1, #0 - str r1, [r0, #8] - bl sub_01FF8F04 - ldr r1, _0201E60C ; =0x3F1F00C0 - ldr r0, _0201E610 ; =0x040004A4 - str r1, [r0] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201E608: .word RENDER_3D -_0201E60C: .word 0x3F1F00C0 -_0201E610: .word 0x040004A4 - arm_func_end sub_0201E5B0 - - arm_func_start sub_0201E614 -sub_0201E614: ; 0x0201E614 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, #0xbc - bl MemZero - bl InitRender3dData - mov r0, r4 - bl sub_0201E634 - ldmia sp!, {r4, pc} - arm_func_end sub_0201E614 - - arm_func_start sub_0201E634 -sub_0201E634: ; 0x0201E634 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - mov r2, #0 - str r2, [r4, #0xa0] - mov r0, #0x100000 - str r0, [r4, #0xa4] - ldr r0, _0201E70C ; =0x007FFFFF - str r2, [r4, #0xa8] - mov r1, #0xc0000 - str r1, [r4, #0xac] - mov r1, #0x1000 - str r1, [r4, #0xb0] - str r0, [r4, #0xb4] - str r2, [r4] - str r2, [r4, #4] - str r1, [r4, #8] - str r2, [r4, #0x18] - str r2, [r4, #0x1c] - mov r0, r0, lsl #0xc - str r0, [r4, #0x20] - str r2, [r4, #0x24] - str r1, [r4, #0x28] - ldr r1, _0201E710 ; =0xBFFF0000 - ldr r0, _0201E714 ; =0x04000580 - str r2, [r4, #0x2c] - str r1, [r0] - ldr r0, [r4, #0xb0] - mov r1, #0x400000 - str r0, [sp] - ldr r2, [r4, #0xb4] - mov r0, #1 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - add r0, r4, #0x60 - str r0, [sp, #0x10] - ldr r0, [r4, #0xa8] - ldr r1, [r4, #0xac] - ldr r2, [r4, #0xa0] - ldr r3, [r4, #0xa4] - bl G3i_OrthoW_ - ldr r1, _0201E718 ; =0x0400044C - mov r2, #0 - mov r0, r4 - str r2, [r1] - add ip, r4, #0x30 - add r1, r4, #0x24 - add r2, r4, #0x18 - mov r3, #1 - str ip, [sp] - bl G3i_LookAt_ - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201E70C: .word 0x007FFFFF -_0201E710: .word 0xBFFF0000 -_0201E714: .word 0x04000580 -_0201E718: .word 0x0400044C - arm_func_end sub_0201E634 - - arm_func_start GeomSwapBuffers -GeomSwapBuffers: ; 0x0201E71C - ldr r0, _0201E72C ; =0x04000540 - mov r1, #1 - str r1, [r0] - bx lr - .align 2, 0 -_0201E72C: .word 0x04000540 - arm_func_end GeomSwapBuffers - - arm_func_start InitRender3dElement64 -InitRender3dElement64: ; 0x0201E730 - stmdb sp!, {r4, lr} - mov r1, #0x40 - mov r4, r0 - bl MemZero - mov r0, #0xff - strb r0, [r4, #0x2c] - strb r0, [r4, #0x2d] - strb r0, [r4, #0x2e] - strb r0, [r4, #0x2f] - mov r0, #0x1000 - strh r0, [r4, #0x10] - strh r0, [r4, #0x12] - mov r0, #0x40 - strh r0, [r4, #0x2a] - mov r0, #0 - strb r0, [r4, #0x3e] - ldmia sp!, {r4, pc} - arm_func_end InitRender3dElement64 - - arm_func_start sub_0201E774 -sub_0201E774: ; 0x0201E774 - stmdb sp!, {r4, lr} - ldrh ip, [r1, #0xc] - mov r4, r0 - mov r0, r3 - strh ip, [r4, #0x14] - ldrsh r3, [r1, #0x10] - strh r3, [r4, #0x16] - ldrsh r3, [r1, #0x12] - strh r3, [r4, #0x18] - ldrsh r3, [r1, #0x14] - strh r3, [r4, #0x1a] - ldrsh r3, [r1, #0x16] - ldrsh r1, [sp, #8] - strh r3, [r4, #0x1c] - str r2, [r4, #0x20] - bl GetPaletteBaseAddress__0201E858 - str r0, [r4, #0x24] - ldmia sp!, {r4, pc} - arm_func_end sub_0201E774 - - arm_func_start GetPaletteBaseAddress__0201E858 -GetPaletteBaseAddress__0201E858: ; 0x0201E7BC - ldr r2, _0201E7D4 ; =_020AFC70 - add r0, r1, r0, lsl #8 - ldr r1, [r2] - ldr r1, [r1, #0xe0] - add r0, r1, r0, lsl #1 - bx lr - .align 2, 0 -_0201E7D4: .word _020AFC70 - arm_func_end GetPaletteBaseAddress__0201E858 - - arm_func_start sub_0201E7D8 -sub_0201E7D8: ; 0x0201E7D8 - stmdb sp!, {r4, lr} - ldr ip, [r1] - mov r4, r0 - ldrh lr, [ip, #8] - mov ip, r2, lsl #3 - ldrsh r0, [sp, #8] - strh lr, [r4, #0x14] - ldr lr, [r1, #4] - ldrsh ip, [lr, ip] - strh ip, [r4, #0x16] - ldr ip, [r1, #4] - add ip, ip, r2, lsl #3 - ldrsh ip, [ip, #2] - strh ip, [r4, #0x18] - ldr ip, [r1, #4] - add ip, ip, r2, lsl #3 - ldrsh ip, [ip, #4] - strh ip, [r4, #0x1a] - ldr ip, [r1, #4] - ldrsh r1, [sp, #0xc] - add r2, ip, r2, lsl #3 - ldrsh r2, [r2, #6] - strh r2, [r4, #0x1c] - str r3, [r4, #0x20] - bl GetPaletteBaseAddress__0201E858 - str r0, [r4, #0x24] - ldmia sp!, {r4, pc} - arm_func_end sub_0201E7D8 - - arm_func_start Render3d64Texture0x7 -Render3d64Texture0x7: ; 0x0201E844 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - bl NewRender3dTexture - ldrsh r1, [r4] - mov r5, #0 - strh r1, [r0, #0x16] - ldrsh r1, [r4, #2] - strh r1, [r0, #0x18] - ldrsh r1, [r4, #8] - strh r1, [r0, #0x1a] - ldrsh r1, [r4, #0xa] - strh r1, [r0, #0x1c] - ldrb r2, [r4, #0x2e] - ldrb r1, [r4, #0x2d] - ldrb r6, [r4, #0x2c] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, r6, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x22] - ldrb r1, [r4, #0x2f] - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x27] - ldrh r1, [r4, #0x10] - strh r1, [r0, #0x1e] - ldrh r1, [r4, #0x12] - strh r1, [r0, #0x20] - ldrh r1, [r4, #0x28] - strh r1, [r0, #0x24] - ldr r1, [r4, #0x20] - str r1, [r0, #4] - ldr r1, [r4, #0x24] - str r1, [r0, #8] - ldrb r1, [r4, #0x3e] - strb r1, [r0, #0x26] - ldrh r1, [r4, #0x2a] - strh r1, [r0, #2] - ldrh r1, [r4, #0x14] - strh r1, [r0, #0x14] -_0201E8F0: - mov r1, #0x18 - mul r6, r5, r1 - mov r1, r6, lsl #0x10 - mov ip, r1, asr #0x10 - mov r1, #0x1f - mov r3, #0x18 - and r7, r5, #1 - mov lr, #0 - mov r2, r1 - mov sb, r3 -_0201E918: - mul r8, lr, sb - ldrsh sl, [r4] - tst lr, #1 - add sl, sl, r8 - strh sl, [r0, #0x16] - ldrsh sl, [r4, #2] - add sl, sl, r6 - strh sl, [r0, #0x18] - strh r8, [r0, #0xc] - strh ip, [r0, #0xe] - strh r3, [r0, #0x10] - strh r3, [r0, #0x12] - beq _0201E988 - cmp r7, #0 - streqh r2, [r0, #0x22] - beq _0201E9C0 - ldrb r8, [r4, #0x2e] - ldrb sl, [r4, #0x2d] - ldrb fp, [r4, #0x2c] - and r8, r8, #0xf8 - mov r8, r8, lsl #0x17 - and fp, fp, #0xf8 - and sl, sl, #0xf8 - mov sl, sl, lsl #2 - orr r8, sl, r8, lsr #16 - orr r8, r8, fp, asr #3 - strh r8, [r0, #0x22] - b _0201E9C0 -_0201E988: - cmp r7, #0 - strneh r1, [r0, #0x22] - bne _0201E9C0 - ldrb r8, [r4, #0x2e] - ldrb sl, [r4, #0x2d] - ldrb fp, [r4, #0x2c] - and r8, r8, #0xf8 - mov r8, r8, lsl #0x17 - and fp, fp, #0xf8 - and sl, sl, #0xf8 - mov sl, sl, lsl #2 - orr r8, sl, r8, lsr #16 - orr r8, r8, fp, asr #3 - strh r8, [r0, #0x22] -_0201E9C0: - add r8, lr, #1 - mov r8, r8, lsl #0x10 - mov lr, r8, asr #0x10 - cmp lr, #0xa - blt _0201E918 - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 - cmp r5, #8 - blt _0201E8F0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Render3d64Texture0x7 - - arm_func_start Render3d64WindowFrame -Render3d64WindowFrame: ; 0x0201E9EC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - mov sl, r0 - add r5, sp, #0xc - mov r6, sl - mov r4, #4 -_0201EA04: - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0201EA04 - mov r0, #5 - strb r0, [sp, #0x48] - ldrsh r1, [sl, #4] - ldrsh r2, [sl, #6] - cmp r1, #0x10 - addle r0, r1, r1, lsr #31 - movgt r3, #8 - movle r0, r0, lsl #0xf - movle r3, r0, asr #0x10 - cmp r2, #0x10 - addle r0, r2, r2, lsr #31 - movgt r6, #8 - movle r0, r0, lsl #0xf - movle r6, r0, asr #0x10 - ldrsh r0, [sl] - str r0, [sp] - ldrsh r8, [sl, #2] - ldr r4, [sp] - add r0, sp, #0xc - add r4, r4, r3 - add r5, r8, r6 - mov r4, r4, lsl #0x10 - mov r7, r5, lsl #0x10 - mov r5, r4, asr #0x10 - mov r4, r7, asr #0x10 - ldr r7, [sp] - add sb, r8, r2 - strh r7, [sp, #0xc] - ldr r7, [sp] - mov r2, sb, lsl #0x10 - add fp, r7, r1 - sub r1, fp, r3 - mov r3, r1, lsl #0x10 - sub r1, sb, r6 - mov r7, r1, lsl #0x10 - mov r1, fp, lsl #0x10 - mov r6, r3, asr #0x10 - strh r8, [sp, #0xe] - strh r5, [sp, #0x10] - strh r4, [sp, #0x12] - ldrsh ip, [sl, #0x16] - mov r1, r1, asr #0x10 - mov r3, #8 - strh ip, [sp, #0x22] - ldrsh ip, [sl, #0x18] - mov r7, r7, asr #0x10 - str r1, [sp, #8] - strh ip, [sp, #0x24] - strh r3, [sp, #0x26] - strh r3, [sp, #0x28] - mov r1, r2, asr #0x10 - str r1, [sp, #4] - bl EnqueueRender3d64Tiling - strh r5, [sp, #0xc] - strh r8, [sp, #0xe] - strh r6, [sp, #0x10] - strh r4, [sp, #0x12] - ldrsh r2, [sl, #0x16] - add r0, sp, #0xc - mov r1, #8 - add r2, r2, #8 - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - strh r6, [sp, #0xc] - strh r8, [sp, #0xe] - strh fp, [sp, #0x10] - strh r4, [sp, #0x12] - ldrsh r2, [sl, #0x16] - mov r1, #8 - add r0, sp, #0xc - add r2, r2, #0x10 - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - ldr r0, [sp] - strh r4, [sp, #0xe] - strh r5, [sp, #0x10] - strh r7, [sp, #0x12] - strh r0, [sp, #0xc] - ldrsh r0, [sl, #0x16] - strh r0, [sp, #0x22] - ldrsh r0, [sl, #0x18] - add r0, r0, #8 - strh r0, [sp, #0x24] - mov r1, #8 - add r0, sp, #0xc - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - strh r6, [sp, #0xc] - strh r4, [sp, #0xe] - ldr r0, [sp, #8] - mov r1, #8 - strh r0, [sp, #0x10] - strh r7, [sp, #0x12] - ldrsh r2, [sl, #0x16] - add r0, sp, #0xc - add r2, r2, #0x10 - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - add r2, r2, #8 - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - ldr r0, [sp] - mov r1, #8 - strh r0, [sp, #0xc] - strh r7, [sp, #0xe] - strh r5, [sp, #0x10] - strh sb, [sp, #0x12] - ldrsh r2, [sl, #0x16] - add r0, sp, #0xc - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - add r2, r2, #0x10 - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - strh r5, [sp, #0xc] - strh r7, [sp, #0xe] - strh r6, [sp, #0x10] - ldr r0, [sp, #4] - mov r1, #8 - strh r0, [sp, #0x12] - ldrsh r2, [sl, #0x16] - add r0, sp, #0xc - add r2, r2, #8 - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - add r2, r2, #0x10 - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - strh r6, [sp, #0xc] - strh r7, [sp, #0xe] - ldr r0, [sp, #8] - mov r1, #8 - strh r0, [sp, #0x10] - ldr r0, [sp, #4] - strh r0, [sp, #0x12] - ldrsh r2, [sl, #0x16] - add r0, sp, #0xc - add r2, r2, #0x10 - strh r2, [sp, #0x22] - ldrsh r2, [sl, #0x18] - add r2, r2, #0x10 - strh r2, [sp, #0x24] - strh r1, [sp, #0x26] - strh r1, [sp, #0x28] - bl EnqueueRender3d64Tiling - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end Render3d64WindowFrame - - arm_func_start EnqueueRender3d64Tiling -EnqueueRender3d64Tiling: ; 0x0201EC9C - stmdb sp!, {r4, lr} - mov r4, r0 - bl NewRender3dTiling - ldrsh r2, [r4] - mov r1, #0 - strh r2, [r0, #0x16] - ldrsh r2, [r4, #2] - strh r2, [r0, #0x18] - ldrsh r2, [r4, #4] - strh r2, [r0, #0x1a] - ldrsh r2, [r4, #2] - strh r2, [r0, #0x1c] - ldrsh r2, [r4] - strh r2, [r0, #0x1e] - ldrsh r2, [r4, #6] - strh r2, [r0, #0x20] - ldrsh r2, [r4, #4] - strh r2, [r0, #0x22] - ldrsh r2, [r4, #6] - strh r2, [r0, #0x24] -_0201ECEC: - ldrb r3, [r4, #0x2e] - ldrb r2, [r4, #0x2d] - ldrb lr, [r4, #0x2c] - and ip, r3, #0xf8 - and r3, r2, #0xf8 - mov r2, ip, lsl #0x17 - mov ip, r3, lsl #2 - add r3, r0, r1, lsl #1 - add r1, r1, #1 - and lr, lr, #0xf8 - orr r2, ip, r2, lsr #16 - orr r2, r2, lr, asr #3 - strh r2, [r3, #0x26] - cmp r1, #4 - blt _0201ECEC - ldrb r1, [r4, #0x2f] - add r3, r4, #0x16 - add r2, r0, #0xc - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x31] - ldrh ip, [r4, #0x28] - mov r1, #4 - strh ip, [r0, #0x2e] - ldr ip, [r4, #0x20] - str ip, [r0, #4] - ldr ip, [r4, #0x24] - str ip, [r0, #8] - ldrb ip, [r4, #0x3e] - strb ip, [r0, #0x30] - ldrh ip, [r4, #0x2a] - strh ip, [r0, #2] - ldrh r4, [r4, #0x14] - strh r4, [r0, #0x14] -_0201ED74: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0201ED74 - ldmia sp!, {r4, pc} - arm_func_end EnqueueRender3d64Tiling - - arm_func_start Render3d64Tiling -Render3d64Tiling: ; 0x0201ED88 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl NewRender3dTiling - mov r1, #0 -_0201ED98: - mov r2, r1, lsl #2 - ldrsh r2, [r4, r2] - add ip, r0, r1, lsl #2 - add r5, r4, r1, lsl #2 - strh r2, [ip, #0x16] - ldrsh r2, [r5, #2] - add r3, r0, r1, lsl #1 - add r1, r1, #1 - strh r2, [ip, #0x18] - ldrb ip, [r5, #0x2e] - ldrb r2, [r5, #0x2d] - ldrb r5, [r5, #0x2c] - and lr, ip, #0xf8 - and ip, r2, #0xf8 - mov r2, lr, lsl #0x17 - mov ip, ip, lsl #2 - and r5, r5, #0xf8 - orr r2, ip, r2, lsr #16 - orr r2, r2, r5, asr #3 - strh r2, [r3, #0x26] - cmp r1, #4 - blt _0201ED98 - ldrb r1, [r4, #0x2f] - add r3, r4, #0x16 - add r2, r0, #0xc - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x31] - ldrh ip, [r4, #0x28] - mov r1, #4 - strh ip, [r0, #0x2e] - ldr ip, [r4, #0x20] - str ip, [r0, #4] - ldr ip, [r4, #0x24] - str ip, [r0, #8] - ldrb ip, [r4, #0x3e] - strb ip, [r0, #0x30] - ldrh ip, [r4, #0x2a] - strh ip, [r0, #2] - ldrh r4, [r4, #0x14] - strh r4, [r0, #0x14] -_0201EE3C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0201EE3C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Render3d64Tiling - - arm_func_start Render3d64Quadrilateral -Render3d64Quadrilateral: ; 0x0201EE50 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl NewRender3dQuadrilateral - mov r1, #0 -_0201EE60: - mov r2, r1, lsl #2 - ldrsh r2, [r4, r2] - add ip, r0, r1, lsl #2 - add r5, r4, r1, lsl #2 - strh r2, [ip, #4] - ldrsh r2, [r5, #2] - add r3, r0, r1, lsl #1 - add r1, r1, #1 - strh r2, [ip, #6] - ldrb ip, [r5, #0x2e] - ldrb r2, [r5, #0x2d] - ldrb r5, [r5, #0x2c] - and lr, ip, #0xf8 - and ip, r2, #0xf8 - mov r2, lr, lsl #0x17 - mov ip, ip, lsl #2 - and r5, r5, #0xf8 - orr r2, ip, r2, lsr #16 - orr r2, r2, r5, asr #3 - strh r2, [r3, #0x1a] - cmp r1, #4 - blt _0201EE60 - ldrb r1, [r4, #0x2f] - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x23] - ldrb r1, [r4, #0x3e] - strb r1, [r0, #0x22] - ldrh r1, [r4, #0x2a] - strh r1, [r0, #2] - ldrb r1, [r4, #0x3d] - tst r1, #2 - movne r1, #1 - moveq r1, #0 - strb r1, [r0, #0x24] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Render3d64Quadrilateral - - arm_func_start Render3d64RectangleMulticolor -Render3d64RectangleMulticolor: ; 0x0201EEF0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl NewRender3dRectangle - ldrh r1, [r4] - strh r1, [r0, #4] - ldrh r1, [r4, #2] - strh r1, [r0, #6] - ldrh r1, [r4, #4] - strh r1, [r0, #8] - ldrh r1, [r4, #6] - strh r1, [r0, #0xa] - ldrh r1, [r4, #8] - strh r1, [r0, #0xc] - ldrh r1, [r4, #0xa] - strh r1, [r0, #0xe] - ldrb r1, [r4, #0x2f] - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x23] - ldrh r1, [r4, #0x10] - strh r1, [r0, #0x14] - ldrh r1, [r4, #0x12] - strh r1, [r0, #0x16] - ldrh r1, [r4, #0x28] - strh r1, [r0, #0x18] - ldrb r1, [r4, #0x3e] - strb r1, [r0, #0x22] - ldrh r1, [r4, #0x2a] - strh r1, [r0, #2] - ldrb r1, [r4, #0x3d] - tst r1, #2 - movne r1, #1 - moveq r1, #0 - strb r1, [r0, #0x24] - tst r1, #0xff - ldrb r2, [r4, #0x2e] - ldrb r1, [r4, #0x2d] - beq _0201F034 - ldrb ip, [r4, #0x2c] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, ip, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x1a] - ldrb r2, [r4, #0x32] - ldrb r1, [r4, #0x31] - ldrb ip, [r4, #0x30] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, ip, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x1c] - ldrb r2, [r4, #0x36] - ldrb r1, [r4, #0x35] - ldrb ip, [r4, #0x34] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, ip, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x1e] - ldrb r2, [r4, #0x3a] - ldrb r1, [r4, #0x39] - ldrb r4, [r4, #0x38] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, r4, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x20] - ldmia sp!, {r4, pc} -_0201F034: - ldrb r4, [r4, #0x2c] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, r4, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x1a] - ldmia sp!, {r4, pc} - arm_func_end Render3d64RectangleMulticolor - - arm_func_start Render3d64Rectangle -Render3d64Rectangle: ; 0x0201F05C - stmdb sp!, {r4, lr} - mov r4, r0 - bl NewRender3dRectangle - ldrh r1, [r4] - mov r2, #0 - strh r1, [r0, #4] - ldrh r1, [r4, #2] - strh r1, [r0, #6] - ldrh r1, [r4, #4] - strh r1, [r0, #8] - ldrh r1, [r4, #6] - strh r1, [r0, #0xa] - ldrh r1, [r4, #8] - strh r1, [r0, #0xc] - ldrh r1, [r4, #0xa] - strh r1, [r0, #0xe] - ldrb r3, [r4, #0x2e] - ldrb r1, [r4, #0x2d] - ldrb lr, [r4, #0x2c] - and ip, r3, #0xf8 - and r3, r1, #0xf8 - mov r1, ip, lsl #0x17 - mov r3, r3, lsl #2 - and ip, lr, #0xf8 - orr r1, r3, r1, lsr #16 - orr r1, r1, ip, asr #3 - strh r1, [r0, #0x1a] - ldrb r1, [r4, #0x2f] - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x23] - ldrh r1, [r4, #0x10] - strh r1, [r0, #0x14] - ldrh r1, [r4, #0x12] - strh r1, [r0, #0x16] - ldrh r1, [r4, #0x28] - strh r1, [r0, #0x18] - ldrb r1, [r4, #0x3e] - strb r1, [r0, #0x22] - ldrh r1, [r4, #0x2a] - strh r1, [r0, #2] - strb r2, [r0, #0x24] - ldmia sp!, {r4, pc} - arm_func_end Render3d64Rectangle - - arm_func_start Render3d64Nothing -Render3d64Nothing: ; 0x0201F108 - bx lr - arm_func_end Render3d64Nothing - - arm_func_start Render3d64Texture -Render3d64Texture: ; 0x0201F10C - stmdb sp!, {r4, lr} - mov r4, r0 - bl NewRender3dTexture - ldrsh r1, [r4] - add ip, r4, #0x16 - add r3, r0, #0xc - strh r1, [r0, #0x16] - ldrsh r1, [r4, #2] - mov r2, #4 - strh r1, [r0, #0x18] - ldrsh r1, [r4, #8] - strh r1, [r0, #0x1a] - ldrsh r1, [r4, #0xa] - strh r1, [r0, #0x1c] -_0201F144: - ldrh r1, [ip], #2 - subs r2, r2, #1 - strh r1, [r3], #2 - bne _0201F144 - ldrb r2, [r4, #0x2e] - ldrb r1, [r4, #0x2d] - ldrb ip, [r4, #0x2c] - and r3, r2, #0xf8 - and r2, r1, #0xf8 - mov r1, r3, lsl #0x17 - mov r2, r2, lsl #2 - and r3, ip, #0xf8 - orr r1, r2, r1, lsr #16 - orr r1, r1, r3, asr #3 - strh r1, [r0, #0x22] - ldrb r1, [r4, #0x2f] - and r1, r1, #0xf8 - mov r1, r1, asr #3 - strb r1, [r0, #0x27] - ldrh r1, [r4, #0x10] - strh r1, [r0, #0x1e] - ldrh r1, [r4, #0x12] - strh r1, [r0, #0x20] - ldrh r1, [r4, #0x28] - strh r1, [r0, #0x24] - ldr r1, [r4, #0x20] - str r1, [r0, #4] - ldr r1, [r4, #0x24] - str r1, [r0, #8] - ldrb r1, [r4, #0x3e] - strb r1, [r0, #0x26] - ldrh r1, [r4, #0x2a] - strh r1, [r0, #2] - ldrh r1, [r4, #0x14] - strh r1, [r0, #0x14] - ldmia sp!, {r4, pc} - arm_func_end Render3d64Texture - - arm_func_start Render3dElement64 -Render3dElement64: ; 0x0201F1D4 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x3d] - tst r1, #2 - ldmneia sp!, {r3, pc} - ldrb r1, [r0, #0x2f] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldrb r2, [r0, #0x3c] - ldr r1, _0201F204 ; =RENDER_3D_FUNCTIONS_64 - ldr r1, [r1, r2, lsl #2] - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201F204: .word RENDER_3D_FUNCTIONS_64 - arm_func_end Render3dElement64 - - arm_func_start sub_0201F208 -sub_0201F208: ; 0x0201F208 - stmdb sp!, {r3, lr} - ldr r0, _0201F240 ; =0x00001544 - mov r1, #0 - bl MemAlloc - ldr r2, _0201F244 ; =_020AFCE4 - ldr r1, _0201F240 ; =0x00001544 - str r0, [r2] - bl MemZero - ldr r0, _0201F244 ; =_020AFCE4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1500 - strh r1, [r0, #0x40] - ldmia sp!, {r3, pc} - .align 2, 0 -_0201F240: .word 0x00001544 -_0201F244: .word _020AFCE4 - arm_func_end sub_0201F208 - - arm_func_start sub_0201F248 -sub_0201F248: ; 0x0201F248 - ldr r1, _0201F29C ; =_020AFCE4 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x1000 - strb r2, [r0, #0x542] - ldr r3, [r1] - mov r1, #0x44 - b _0201F284 -_0201F268: - smlabb r0, r2, r1, r3 - ldrb r0, [r0, #0x40] - cmp r0, #0 - bxeq lr - add r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 -_0201F284: - cmp r2, #0x50 - blt _0201F268 - add r0, r3, #0x1000 - mov r1, #1 - strb r1, [r0, #0x542] - bx lr - .align 2, 0 -_0201F29C: .word _020AFCE4 - arm_func_end sub_0201F248 - - arm_func_start sub_0201F2A0 -sub_0201F2A0: ; 0x0201F2A0 - ldr ip, _0201F2A8 ; =Render3dElement64 - bx ip - .align 2, 0 -_0201F2A8: .word Render3dElement64 - arm_func_end sub_0201F2A0 - - arm_func_start sub_0201F2AC -sub_0201F2AC: ; 0x0201F2AC - stmdb sp!, {r4, lr} - ldr r2, _0201F2E0 ; =_020AFCE4 - mov r1, #0x44 - smulbb r4, r0, r1 - ldr r0, [r2] - add r0, r0, r4 - bl InitRender3dElement64 - ldr r0, _0201F2E0 ; =_020AFCE4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, r4 - strb r1, [r0, #0x40] - ldmia sp!, {r4, pc} - .align 2, 0 -_0201F2E0: .word _020AFCE4 - arm_func_end sub_0201F2AC - - arm_func_start sub_0201F2E4 -sub_0201F2E4: ; 0x0201F2E4 - stmdb sp!, {r4, lr} - mov r4, #0 -_0201F2EC: - mov r0, r4 - bl sub_0201F2AC - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x50 - blt _0201F2EC - ldr r0, _0201F320 ; =_020AFCE4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1500 - strh r1, [r0, #0x40] - ldmia sp!, {r4, pc} - .align 2, 0 -_0201F320: .word _020AFCE4 - arm_func_end sub_0201F2E4 - - arm_func_start sub_0201F324 -sub_0201F324: ; 0x0201F324 - ldr r2, _0201F344 ; =_020AFCE4 - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldrb r1, [r0, #0x40] - cmp r1, #0 - moveq r0, #0 - bx lr - .align 2, 0 -_0201F344: .word _020AFCE4 - arm_func_end sub_0201F324 - - arm_func_start sub_0201F348 -sub_0201F348: ; 0x0201F348 - ldr r3, _0201F368 ; =_020AFCE4 - mov r2, #0x44 - ldr r3, [r3] - smlabb r2, r0, r2, r3 - ldrb r0, [r2, #0x40] - cmp r0, #0 - strneb r1, [r2, #0x41] - bx lr - .align 2, 0 -_0201F368: .word _020AFCE4 - arm_func_end sub_0201F348 - - arm_func_start sub_0201F36C -sub_0201F36C: ; 0x0201F36C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0201F460 ; =_020AFCE4 - mov ip, #0 - ldr lr, [r0] - mov r5, ip - add r0, lr, #0x1500 - ldrsh r4, [r0, #0x40] - mov r2, #0x44 - b _0201F3F8 -_0201F390: - cmp r4, #0x50 - movge r4, r5 - smlabb r3, r4, r2, lr - ldrb r0, [r3, #0x40] - cmp r0, #0 - bne _0201F3E0 - ldr r1, _0201F460 ; =_020AFCE4 - mov r0, #1 - strb r0, [r3, #0x40] - ldr r0, [r1] - add r2, r4, #1 - add r0, r0, #0x1500 - strh r2, [r0, #0x40] - ldr r0, [r1] - add r0, r0, #0x1500 - ldrsh r1, [r0, #0x40] - cmp r1, #0x50 - movge r1, #0 - strgeh r1, [r0, #0x40] - b _0201F410 -_0201F3E0: - add r0, ip, #1 - add r1, r4, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov ip, r0, asr #0x10 - mov r4, r1, asr #0x10 -_0201F3F8: - cmp ip, #0x50 - blt _0201F390 - mov r1, #1 - add r0, lr, #0x1000 - strb r1, [r0, #0x542] - sub r4, r1, #2 -_0201F410: - mvn r0, #0 - cmp r4, r0 - moveq r0, r4 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0201F460 ; =_020AFCE4 - mov r0, #0x44 - smulbb r5, r4, r0 - ldr r0, [r1] - add r0, r0, r5 - bl InitRender3dElement64 - ldr r1, _0201F460 ; =_020AFCE4 - mov r3, #1 - ldr r2, [r1] - mov r0, r4 - add r2, r2, r5 - strb r3, [r2, #0x40] - ldr r1, [r1] - add r1, r1, r5 - strb r3, [r1, #0x41] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0201F460: .word _020AFCE4 - arm_func_end sub_0201F36C - - arm_func_start sub_0201F464 -sub_0201F464: ; 0x0201F464 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0201F4B0 ; =_020AFCE4 - mov r4, #0 - ldr r5, [r0] -_0201F474: - ldrb r0, [r5, #0x40] - cmp r0, #0 - ldrneb r0, [r5, #0x41] - cmpne r0, #0 - beq _0201F490 - mov r0, r5 - bl Render3dElement64 -_0201F490: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x50 - add r5, r5, #0x44 - blt _0201F474 - bl sub_0201F248 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0201F4B0: .word _020AFCE4 - arm_func_end sub_0201F464 - - arm_func_start HandleSir0Translation -HandleSir0Translation: ; 0x0201F4B4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrb r2, [r4] - mov r5, r0 - mov r0, #0 - cmp r2, #0x53 - ldreqb r1, [r4, #1] - cmpeq r1, #0x49 - ldreqb r1, [r4, #2] - cmpeq r1, #0x52 - ldreqb r1, [r4, #3] - cmpeq r1, #0x30 - bne _0201F500 - mov r1, #0x4f - mov r0, r4 - strb r1, [r4, #3] - bl ConvertPointersSir0 - mov r0, #1 - b _0201F520 -_0201F500: - cmp r2, #0x53 - ldreqb r1, [r4, #1] - cmpeq r1, #0x49 - ldreqb r1, [r4, #2] - cmpeq r1, #0x52 - ldreqb r1, [r4, #3] - cmpeq r1, #0x4f - moveq r0, #2 -_0201F520: - cmp r0, #0 - ldrne r1, [r4, #4] - strne r1, [r5] - streq r4, [r5] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end HandleSir0Translation - - arm_func_start ConvertPointersSir0 -ConvertPointersSir0: ; 0x0201F534 - stmdb sp!, {r4, r5} - ldr r1, [r0, #8] - mov r3, r0 - add r1, r1, r0 -_0201F544: - mov r2, #0 -_0201F548: - ldrb r4, [r1] - add r1, r1, #1 - mov r2, r2, lsl #7 - and r5, r4, #0x7f - orr r2, r2, r5 - and r5, r4, #0x80 - cmp r5, #0 - bne _0201F548 - cmp r2, #0 - beq _0201F584 - add r3, r3, r2 - ldr r2, [r3] - add r2, r2, r0 - str r2, [r3] - b _0201F544 -_0201F584: - ldmia sp!, {r4, r5} - bx lr - arm_func_end ConvertPointersSir0 - - arm_func_start HandleSir0TranslationVeneer -HandleSir0TranslationVeneer: ; 0x0201F58C - ldr ip, _0201F594 ; =HandleSir0Translation - bx ip - .align 2, 0 -_0201F594: .word HandleSir0Translation - arm_func_end HandleSir0TranslationVeneer - - arm_func_start FillPaletteInitInfo -FillPaletteInitInfo: ; 0x0201F598 - str r1, [r0] - strh r2, [r0, #4] - ldrsh r1, [sp] - strh r3, [r0, #6] - ldrb r2, [sp, #4] - strh r1, [r0, #8] - mov r1, #0 - strb r2, [r0, #0xa] - strb r1, [r0, #0xb] - bx lr - arm_func_end FillPaletteInitInfo - - arm_func_start DecompressAtNormalVeneer -DecompressAtNormalVeneer: ; 0x0201F5C0 - ldr ip, _0201F5C8 ; =DecompressAtNormal - bx ip - .align 2, 0 -_0201F5C8: .word DecompressAtNormal - arm_func_end DecompressAtNormalVeneer - - arm_func_start DecompressAtNormal -DecompressAtNormal: ; 0x0201F5CC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldrb r5, [r2] - mov ip, #0 - ldrb r4, [r2, #5] - cmp r5, #0x50 - ldreqb r6, [r2, #1] - ldrb r3, [r2, #6] - mov lr, ip - cmpeq r6, #0x4b - ldreqb r6, [r2, #2] - add r3, r4, r3, lsl #8 - mov r4, #8 - cmpeq r6, #0x44 - ldreqb r6, [r2, #3] - cmpeq r6, #0x50 - bne _0201F644 - ldrb r7, [r2, #0x10] - ldrb r6, [r2, #0x11] - ldrb r8, [r2, #0x12] - ldrb r5, [r2, #0x13] - add r6, r7, r6, lsl #8 - add r6, r6, r8, lsl #16 - add r5, r6, r5, lsl #24 - cmp r1, #0 - cmpne r1, r5 - movne r0, ip - bne _0201FA08 - mov r5, #0x14 - b _0201F6B4 -_0201F644: - cmp r5, #0x41 - ldreqb r6, [r2, #1] - cmpeq r6, #0x54 - ldreqb r6, [r2, #2] - cmpeq r6, #0x34 - ldreqb r6, [r2, #3] - cmpeq r6, #0x50 - bne _0201F688 - ldrb r6, [r2, #0x10] - ldrb r5, [r2, #0x11] - cmp r1, #0 - add r5, r6, r5, lsl #8 - cmpne r1, r5 - movne r0, #0 - bne _0201FA08 - mov r5, #0x12 - b _0201F6B4 -_0201F688: - cmp r5, #0x41 - ldreqb r5, [r2, #1] - cmpeq r5, #0x54 - ldreqb r5, [r2, #2] - cmpeq r5, #0x33 - ldreqb r5, [r2, #3] - cmpeq r5, #0x50 - moveq r5, #0x10 - beq _0201F6B4 - mov r0, #0 - b _0201FA08 -_0201F6B4: - ldrb r6, [r2, #4] - cmp r6, #0x4e - bne _0201F6E8 - mov r4, #0 - b _0201F6D8 -_0201F6C8: - add r1, r2, r4 - ldrb r1, [r1, #7] - strb r1, [r0, r4] - add r4, r4, #1 -_0201F6D8: - cmp r4, r3 - blt _0201F6C8 - mov r0, r4 - b _0201FA08 -_0201F6E8: - ldrb r6, [r2, #7] - ldrb sb, [r2, #8] - ldrb r8, [r2, #9] - add r6, r6, #3 - str r6, [sp, #0x18] - add r6, sb, #3 - str r6, [sp, #0x14] - add r6, r8, #3 - ldrb r7, [r2, #0xa] - str r6, [sp, #0x10] - ldrb sl, [r2, #0xb] - add r6, r7, #3 - str r6, [sp, #0xc] - add r6, sl, #3 - ldrb r7, [r2, #0xf] - ldrb fp, [r2, #0xc] - str r6, [sp, #8] - ldrb r8, [r2, #0xe] - add r6, fp, #3 - str r6, [sp, #4] - ldrb r6, [r2, #0xd] - add fp, r8, #3 - add sl, r7, #3 - add r6, r6, #3 - str r6, [sp] - b _0201F9FC -_0201F750: - cmp r1, #0 - beq _0201F764 - cmp ip, r1 - movge r0, #0 - bge _0201FA08 -_0201F764: - cmp r4, #8 - ldreqb lr, [r2, r5] - addeq r5, r5, #1 - moveq r4, #0 - tst lr, #0x80 - bne _0201F9E4 - ldrb r8, [r2, r5] - ldr sb, [sp, #0x18] - add r7, r2, r5 - and r6, r8, #0xf0 - mov r6, r6, asr #4 - add r6, r6, #3 - cmp r6, sb - ldr sb, [sp, #0x14] - moveq r6, #0x1f - cmp r6, sb - ldr sb, [sp, #0x10] - moveq r6, #0x1e - cmp r6, sb - ldr sb, [sp, #0xc] - moveq r6, #0x1d - cmp r6, sb - ldr sb, [sp, #8] - moveq r6, #0x1c - cmp r6, sb - ldr sb, [sp, #4] - moveq r6, #0x1b - cmp r6, sb - ldr sb, [sp] - moveq r6, #0x1a - cmp r6, sb - moveq r6, #0x19 - cmp r6, fp - moveq r6, #0x18 - cmp r6, sl - moveq r6, #0x17 - sub sb, r6, #0x17 - and r8, r8, #0xf - cmp sb, #8 - addls pc, pc, sb, lsl #2 - b _0201F9A8 -_0201F808: ; jump table - b _0201F97C ; case 0 - b _0201F950 ; case 1 - b _0201F924 ; case 2 - b _0201F8FC ; case 3 - b _0201F8D0 ; case 4 - b _0201F8A4 ; case 5 - b _0201F878 ; case 6 - b _0201F850 ; case 7 - b _0201F82C ; case 8 -_0201F82C: - add r5, r5, #1 - add r7, r0, ip - orr r6, r8, r8, lsl #4 - strb r6, [r0, ip] - and r6, r8, #0xf - orr r6, r6, r6, lsl #4 - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F850: - add r5, r5, #1 - add r6, r8, #1 - and r6, r6, #0xf - orr r7, r6, r8, lsl #4 - orr r6, r6, r6, lsl #4 - strb r7, [r0, ip] - add r7, r0, ip - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F878: - add r5, r5, #1 - add r6, r0, ip - sub r7, r8, #1 - and r7, r7, #0xf - orr r7, r7, r8, lsl #4 - strb r7, [r0, ip] - and r7, r8, #0xf - orr r7, r7, r7, lsl #4 - strb r7, [r6, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F8A4: - add r5, r5, #1 - add r7, r0, ip - orr r6, r8, r8, lsl #4 - strb r6, [r0, ip] - sub r6, r8, #1 - mov r6, r6, lsl #0x1c - and r8, r8, #0xf - orr r6, r8, r6, lsr #24 - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F8D0: - add r5, r5, #1 - add r7, r0, ip - orr r6, r8, r8, lsl #4 - strb r6, [r0, ip] - mov r6, r8, lsl #0x1c - sub r8, r8, #1 - and r8, r8, #0xf - orr r6, r8, r6, lsr #24 - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F8FC: - add r5, r5, #1 - sub r6, r8, #1 - and r6, r6, #0xf - orr r7, r6, r8, lsl #4 - orr r6, r6, r6, lsl #4 - strb r7, [r0, ip] - add r7, r0, ip - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F924: - add r5, r5, #1 - add r6, r0, ip - add r7, r8, #1 - and r7, r7, #0xf - orr r7, r7, r8, lsl #4 - strb r7, [r0, ip] - and r7, r8, #0xf - orr r7, r7, r7, lsl #4 - strb r7, [r6, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F950: - add r5, r5, #1 - add r7, r0, ip - orr r6, r8, r8, lsl #4 - strb r6, [r0, ip] - add r6, r8, #1 - mov r6, r6, lsl #0x1c - and r8, r8, #0xf - orr r6, r8, r6, lsr #24 - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F97C: - add r5, r5, #1 - add r7, r0, ip - orr r6, r8, r8, lsl #4 - strb r6, [r0, ip] - mov r6, r8, lsl #0x1c - add r8, r8, #1 - and r8, r8, #0xf - orr r6, r8, r6, lsr #24 - strb r6, [r7, #1] - add ip, ip, #2 - b _0201F9F4 -_0201F9A8: - ldrb sb, [r7, #1] - sub r7, ip, #0x1000 - add r5, r5, #2 - add r8, sb, r8, lsl #8 - add sb, r8, r7 - mov r8, #0 - b _0201F9D8 -_0201F9C4: - ldrb r7, [r0, sb] - add sb, sb, #1 - add r8, r8, #1 - strb r7, [r0, ip] - add ip, ip, #1 -_0201F9D8: - cmp r8, r6 - blt _0201F9C4 - b _0201F9F4 -_0201F9E4: - ldrb r6, [r2, r5] - add r5, r5, #1 - strb r6, [r0, ip] - add ip, ip, #1 -_0201F9F4: - add r4, r4, #1 - mov lr, lr, lsl #1 -_0201F9FC: - cmp r5, r3 - blt _0201F750 - mov r0, ip -_0201FA08: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end DecompressAtNormal - - arm_func_start DecompressAtHalf -DecompressAtHalf: ; 0x0201FA10 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - ldrb r4, [r2] - ldrb r6, [r2, #5] - ldrb r5, [r2, #6] - cmp r4, #0x50 - mov ip, #0 - add sl, r6, r5, lsl #8 - ldreqb r5, [r2, #1] - str ip, [sp, #0x30] - mov lr, #8 - cmpeq r5, #0x4b - ldreqb r5, [r2, #2] - cmpeq r5, #0x44 - ldreqb r5, [r2, #3] - cmpeq r5, #0x50 - bne _0201FA88 - ldrb r6, [r2, #0x10] - ldrb r5, [r2, #0x11] - ldrb r7, [r2, #0x12] - ldrb r4, [r2, #0x13] - add r5, r6, r5, lsl #8 - add r5, r5, r7, lsl #16 - add r4, r5, r4, lsl #24 - cmp r1, #0 - cmpne r1, r4 - movne r0, ip - bne _0201FF44 - mov r8, #0x14 - b _0201FB18 -_0201FA88: - cmp r4, #0x41 - ldreqb r5, [r2, #1] - cmpeq r5, #0x54 - ldreqb r5, [r2, #2] - cmpeq r5, #0x34 - ldreqb r5, [r2, #3] - cmpeq r5, #0x50 - bne _0201FAEC - ldrb r4, [r2, #4] - ldrb r6, [r2, #0x10] - ldrb r5, [r2, #0x11] - cmp r4, #0x4e - add r4, r6, r5, lsl #8 - bne _0201FAD4 - cmp r1, #0 - cmpne r1, sl - beq _0201FB18 - mov r0, #0 - b _0201FF44 -_0201FAD4: - cmp r1, #0 - cmpne r1, r4 - movne r0, #0 - bne _0201FF44 - mov r8, #0x12 - b _0201FB18 -_0201FAEC: - cmp r4, #0x41 - ldreqb r4, [r2, #1] - cmpeq r4, #0x54 - ldreqb r4, [r2, #2] - cmpeq r4, #0x33 - ldreqb r4, [r2, #3] - cmpeq r4, #0x50 - moveq r8, #0x10 - beq _0201FB18 - mov r0, #0 - b _0201FF44 -_0201FB18: - ldrb r4, [r2, #4] - cmp r4, #0x4e - bne _0201FB78 - mov r5, #0 - b _0201FB68 -_0201FB2C: - add r6, r2, r5 - ldrb r4, [r6, #7] - add r1, r0, r5, lsl #1 - ands r4, r4, #0xf - strb r4, [r0, r5, lsl #1] - orrne r4, r4, r3 - strneb r4, [r1] - ldrb r4, [r6, #7] - add r5, r5, #1 - and r4, r4, #0xf0 - mov r4, r4, asr #4 - strb r4, [r1, #1] - ands r4, r4, #0xff - orrne r4, r4, r3 - strneb r4, [r1, #1] -_0201FB68: - cmp r5, sl - blt _0201FB2C - mov r0, r5 - b _0201FF44 -_0201FB78: - ldrb r4, [r2, #7] - ldrb r7, [r2, #8] - ldrb r6, [r2, #9] - add r4, r4, #3 - str r4, [sp, #0x24] - add r4, r7, #3 - str r4, [sp, #0x20] - add r4, r6, #3 - ldrb r5, [r2, #0xa] - str r4, [sp, #0x1c] - ldrb sb, [r2, #0xb] - add r4, r5, #3 - str r4, [sp, #0x18] - add r4, sb, #3 - str r4, [sp, #0x14] - ldrb r4, [r2, #0xc] - ldrb r6, [r2, #0xd] - ldrb r5, [r2, #0xe] - add r4, r4, #3 - str r4, [sp, #0x10] - add r4, r6, #3 - str r4, [sp, #0xc] - add r4, r5, #3 - str r4, [sp, #8] - ldrb r4, [r2, #0xf] - mov r1, r1, lsl #1 - add r4, r4, #3 - str r4, [sp, #4] - b _0201FF38 -_0201FBEC: - cmp r1, #0 - beq _0201FC00 - cmp ip, r1 - movge r0, #0 - bge _0201FF44 -_0201FC00: - cmp lr, #8 - ldreqb r4, [r2, r8] - addeq r8, r8, #1 - moveq lr, #0 - streq r4, [sp, #0x30] - ldr r4, [sp, #0x30] - tst r4, #0x80 - bne _0201FEEC - add r4, r2, r8 - str r4, [sp] - ldrb r4, [r2, r8] - ldr sb, [sp, #0x24] - str r4, [sp, #0x28] - ldr r5, [sp, #0x28] - ldr r6, [sp, #0x28] - ldr r7, [sp, #0x28] - and r4, r4, #0xf0 - mov r4, r4, asr #4 - ands fp, r5, #0xf - add r6, r6, #1 - sub r7, r7, #1 - mov r5, fp - add r4, r4, #3 - and r6, r6, #0xf - orrne r5, fp, r3 - cmp r6, #0 - and r7, r7, #0xf - orrne r6, r6, r3 - cmp r7, #0 - orrne r7, r7, r3 - cmp r4, sb - ldr sb, [sp, #0x20] - moveq r4, #0x1f - cmp r4, sb - ldr sb, [sp, #0x1c] - moveq r4, #0x1e - cmp r4, sb - ldr sb, [sp, #0x18] - moveq r4, #0x1d - cmp r4, sb - ldr sb, [sp, #0x14] - moveq r4, #0x1c - cmp r4, sb - ldr sb, [sp, #0x10] - moveq r4, #0x1b - cmp r4, sb - ldr sb, [sp, #0xc] - moveq r4, #0x1a - cmp r4, sb - ldr sb, [sp, #8] - moveq r4, #0x19 - cmp r4, sb - ldr sb, [sp, #4] - moveq r4, #0x18 - cmp r4, sb - moveq r4, #0x17 - sub sb, r4, #0x17 - str sb, [sp, #0x2c] - cmp sb, #8 - addls pc, pc, sb, lsl #2 - b _0201FEAC -_0201FCF4: ; jump table - b _0201FE80 ; case 0 - b _0201FE54 ; case 1 - b _0201FE28 ; case 2 - b _0201FDFC ; case 3 - b _0201FDC8 ; case 4 - b _0201FD9C ; case 5 - b _0201FD70 ; case 6 - b _0201FD44 ; case 7 - b _0201FD18 ; case 8 -_0201FD18: - and r5, r5, #0xff - strb r5, [r0, ip] - add r8, r8, #1 - add r4, ip, #1 - strb r5, [r0, r4] - add r4, ip, #2 - strb r5, [r0, r4] - add r4, ip, #3 - strb r5, [r0, r4] - add ip, ip, #4 - b _0201FF28 -_0201FD44: - and r4, r6, #0xff - strb r4, [r0, ip] - add r8, r8, #1 - add r6, ip, #1 - strb r5, [r0, r6] - add r5, ip, #2 - strb r4, [r0, r5] - add r5, ip, #3 - strb r4, [r0, r5] - add ip, ip, #4 - b _0201FF28 -_0201FD70: - strb r7, [r0, ip] - and r5, r5, #0xff - add r8, r8, #1 - add r4, ip, #1 - strb r5, [r0, r4] - add r4, ip, #2 - strb r5, [r0, r4] - add r4, ip, #3 - strb r5, [r0, r4] - add ip, ip, #4 - b _0201FF28 -_0201FD9C: - and r5, r5, #0xff - strb r5, [r0, ip] - add r8, r8, #1 - add r4, ip, #1 - strb r5, [r0, r4] - add r4, ip, #2 - strb r5, [r0, r4] - add r4, ip, #3 - strb r7, [r0, r4] - add ip, ip, #4 - b _0201FF28 -_0201FDC8: - orr r5, fp, r3 - add r8, r8, #1 - and r4, r5, #0xff - sub r6, r5, #1 - strb r4, [r0, ip] - add r5, ip, #1 - strb r4, [r0, r5] - add r5, ip, #2 - strb r6, [r0, r5] - add r5, ip, #3 - strb r4, [r0, r5] - add ip, ip, #4 - b _0201FF28 -_0201FDFC: - and r4, r7, #0xff - strb r4, [r0, ip] - add r8, r8, #1 - add r6, ip, #1 - strb r5, [r0, r6] - add r5, ip, #2 - strb r4, [r0, r5] - add r5, ip, #3 - strb r4, [r0, r5] - add ip, ip, #4 - b _0201FF28 -_0201FE28: - strb r6, [r0, ip] - and r5, r5, #0xff - add r8, r8, #1 - add r4, ip, #1 - strb r5, [r0, r4] - add r4, ip, #2 - strb r5, [r0, r4] - add r4, ip, #3 - strb r5, [r0, r4] - add ip, ip, #4 - b _0201FF28 -_0201FE54: - and r5, r5, #0xff - strb r5, [r0, ip] - add r8, r8, #1 - add r4, ip, #1 - strb r5, [r0, r4] - add r4, ip, #2 - strb r5, [r0, r4] - add r4, ip, #3 - strb r6, [r0, r4] - add ip, ip, #4 - b _0201FF28 -_0201FE80: - and r4, r5, #0xff - strb r4, [r0, ip] - add r8, r8, #1 - add r5, ip, #1 - strb r4, [r0, r5] - add r5, ip, #2 - strb r6, [r0, r5] - add r5, ip, #3 - strb r4, [r0, r5] - add ip, ip, #4 - b _0201FF28 -_0201FEAC: - ldr r5, [sp] - add r8, r8, #2 - ldrb r6, [r5, #1] - sub r5, ip, #0x2000 - add r6, r6, fp, lsl #8 - add r7, r5, r6, lsl #1 - mov r6, #0 - b _0201FEE0 -_0201FECC: - ldrb r5, [r0, r7] - add r7, r7, #1 - add r6, r6, #1 - strb r5, [r0, ip] - add ip, ip, #1 -_0201FEE0: - cmp r6, r4, lsl #1 - blt _0201FECC - b _0201FF28 -_0201FEEC: - ldrb r5, [r2, r8] - add r4, r0, ip - ands r5, r5, #0xf - strb r5, [r0, ip] - orrne r5, r5, r3 - strneb r5, [r4] - ldrb r5, [r2, r8] - add ip, ip, #2 - add r8, r8, #1 - and r5, r5, #0xf0 - mov r5, r5, asr #4 - strb r5, [r4, #1] - ands r5, r5, #0xff - orrne r5, r5, r3 - strneb r5, [r4, #1] -_0201FF28: - ldr r4, [sp, #0x30] - add lr, lr, #1 - mov r4, r4, lsl #1 - str r4, [sp, #0x30] -_0201FF38: - cmp r8, sl - blt _0201FBEC - mov r0, ip -_0201FF44: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end DecompressAtHalf - - arm_func_start DecompressAtFromMemoryPointerVeneer -DecompressAtFromMemoryPointerVeneer: ; 0x0201FF4C - ldr ip, _0201FF54 ; =DecompressAtFromMemoryPointer - bx ip - .align 2, 0 -_0201FF54: .word DecompressAtFromMemoryPointer - arm_func_end DecompressAtFromMemoryPointerVeneer - - arm_func_start DecompressAtFromMemoryPointer -DecompressAtFromMemoryPointer: ; 0x0201FF58 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov r5, r2 - ldrb r4, [r5, #5] - ldrb r3, [r5, #6] - ldr r2, _0202046C ; =_022A5038 - mov r7, #0 - str r0, [r2] - str r0, [r2, #0xc] - str r7, [r2, #4] - str r7, [r2, #8] - ldrb r0, [r5] - mov r6, r1 - add r1, r4, r3, lsl #8 - cmp r0, #0x50 - str r1, [sp, #0x28] - ldreqb r1, [r5, #1] - str r7, [sp, #0x24] - mov sl, #8 - cmpeq r1, #0x4b - ldreqb r1, [r5, #2] - cmpeq r1, #0x44 - ldreqb r1, [r5, #3] - cmpeq r1, #0x50 - bne _0201FFF0 - ldrb r1, [r5, #0x10] - ldrb r0, [r5, #0x11] - ldrb r2, [r5, #0x12] - ldrb r3, [r5, #0x13] - add r0, r1, r0, lsl #8 - add r0, r0, r2, lsl #16 - add r0, r0, r3, lsl #24 - cmp r6, #0 - cmpne r6, r0 - movne r0, r7 - bne _02020464 - mov r4, #0x14 - b _02020060 -_0201FFF0: - cmp r0, #0x41 - ldreqb r1, [r5, #1] - cmpeq r1, #0x54 - ldreqb r1, [r5, #2] - cmpeq r1, #0x34 - ldreqb r1, [r5, #3] - cmpeq r1, #0x50 - bne _02020034 - ldrb r1, [r5, #0x10] - ldrb r0, [r5, #0x11] - cmp r6, #0 - add r0, r1, r0, lsl #8 - cmpne r6, r0 - movne r0, #0 - bne _02020464 - mov r4, #0x12 - b _02020060 -_02020034: - cmp r0, #0x41 - ldreqb r0, [r5, #1] - cmpeq r0, #0x54 - ldreqb r0, [r5, #2] - cmpeq r0, #0x33 - ldreqb r0, [r5, #3] - cmpeq r0, #0x50 - moveq r4, #0x10 - beq _02020060 - mov r0, #0 - b _02020464 -_02020060: - ldrb r0, [r5, #4] - cmp r0, #0x4e - bne _0202009C - mov r4, #0 - b _02020084 -_02020074: - add r0, r5, r4 - ldrb r0, [r0, #7] - bl WriteByteFromMemoryPointer - add r4, r4, #1 -_02020084: - ldr r0, [sp, #0x28] - cmp r4, r0 - blt _02020074 - bl sub_020204CC - mov r0, r4 - b _02020464 -_0202009C: - ldrb r0, [r5, #7] - ldrb fp, [r5, #8] - ldrb sb, [r5, #9] - add r0, r0, #3 - str r0, [sp, #0x20] - add r0, fp, #3 - str r0, [sp, #0x1c] - add r0, sb, #3 - ldrb r8, [r5, #0xa] - str r0, [sp, #0x18] - ldrb r3, [r5, #0xb] - add r0, r8, #3 - str r0, [sp, #0x14] - add r0, r3, #3 - ldrb r2, [r5, #0xc] - str r0, [sp, #0x10] - ldrb r1, [r5, #0xd] - add r0, r2, #3 - str r0, [sp, #0xc] - add r0, r1, #3 - str r0, [sp, #8] - ldrb r0, [r5, #0xe] - ldrb r1, [r5, #0xf] - add r0, r0, #3 - str r0, [sp, #4] - add r0, r1, #3 - str r0, [sp] - b _02020450 -_0202010C: - cmp r6, #0 - beq _02020120 - cmp r7, r6 - movge r0, #0 - bge _02020464 -_02020120: - cmp sl, #8 - ldreqb r0, [r5, r4] - addeq r4, r4, #1 - moveq sl, #0 - streq r0, [sp, #0x24] - ldr r0, [sp, #0x24] - tst r0, #0x80 - bne _02020430 - ldrb r2, [r5, r4] - add r0, r5, r4 - and r1, r2, #0xf0 - mov r1, r1, asr #4 - add r8, r1, #3 - ldr r1, [sp, #0x20] - and sb, r2, #0xf - cmp r8, r1 - ldr r1, [sp, #0x1c] - moveq r8, #0x1f - cmp r8, r1 - ldr r1, [sp, #0x18] - moveq r8, #0x1e - cmp r8, r1 - ldr r1, [sp, #0x14] - moveq r8, #0x1d - cmp r8, r1 - ldr r1, [sp, #0x10] - moveq r8, #0x1c - cmp r8, r1 - ldr r1, [sp, #0xc] - moveq r8, #0x1b - cmp r8, r1 - ldr r1, [sp, #8] - moveq r8, #0x1a - cmp r8, r1 - ldr r1, [sp, #4] - moveq r8, #0x19 - cmp r8, r1 - ldr r1, [sp] - moveq r8, #0x18 - cmp r8, r1 - moveq r8, #0x17 - sub r1, r8, #0x17 - cmp r1, #8 - addls pc, pc, r1, lsl #2 - b _02020398 -_020201D4: ; jump table - b _02020368 ; case 0 - b _02020338 ; case 1 - b _02020308 ; case 2 - b _020202DC ; case 3 - b _020202AC ; case 4 - b _0202027C ; case 5 - b _0202024C ; case 6 - b _02020220 ; case 7 - b _020201F8 ; case 8 -_020201F8: - add r4, r4, #1 - orr r0, sb, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - and r0, sb, #0xf - orr r0, r0, r0, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_02020220: - add r4, r4, #1 - add r0, sb, #1 - and r8, r0, #0xf - orr r0, r8, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - orr r0, r8, r8, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_0202024C: - add r4, r4, #1 - sub r0, sb, #1 - and r0, r0, #0xf - orr r0, r0, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - and r0, sb, #0xf - orr r0, r0, r0, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_0202027C: - add r4, r4, #1 - orr r0, sb, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - sub r0, sb, #1 - mov r1, r0, lsl #0x1c - and r0, sb, #0xf - orr r0, r0, r1, lsr #24 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_020202AC: - add r4, r4, #1 - orr r0, sb, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - mov r1, sb, lsl #0x1c - sub r0, sb, #1 - and r0, r0, #0xf - orr r0, r0, r1, lsr #24 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_020202DC: - add r4, r4, #1 - sub r0, sb, #1 - and r8, r0, #0xf - orr r0, r8, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - orr r0, r8, r8, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_02020308: - add r4, r4, #1 - add r0, sb, #1 - and r0, r0, #0xf - orr r0, r0, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - and r0, sb, #0xf - orr r0, r0, r0, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_02020338: - add r4, r4, #1 - orr r0, sb, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r0, sb, #1 - mov r1, r0, lsl #0x1c - and r0, sb, #0xf - orr r0, r0, r1, lsr #24 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_02020368: - add r4, r4, #1 - orr r0, sb, sb, lsl #4 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - mov r1, sb, lsl #0x1c - add r0, sb, #1 - and r0, r0, #0xf - orr r0, r0, r1, lsr #24 - and r0, r0, #0xff - bl WriteByteFromMemoryPointer - add r7, r7, #2 - b _02020440 -_02020398: - ldrb r1, [r0, #1] - sub r0, r7, #0x1000 - add r4, r4, #2 - add r1, r1, sb, lsl #8 - add sb, r1, r0 - mov fp, #0 - b _02020424 -_020203B4: - ldr r0, _0202046C ; =_022A5038 - ldr r1, [r0, #0xc] - mov r0, sb, asr #1 - add r0, sb, r0, lsr #30 - mov r0, r0, asr #2 - ldr r1, [r1, r0, lsl #2] - and r0, sb, #3 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _020203EC -_020203DC: ; jump table - b _020203EC ; case 0 - b _020203F4 ; case 1 - b _02020400 ; case 2 - b _0202040C ; case 3 -_020203EC: - and r0, r1, #0xff - b _02020414 -_020203F4: - mov r0, r1, lsr #8 - and r0, r0, #0xff - b _02020414 -_02020400: - mov r0, r1, lsr #0x10 - and r0, r0, #0xff - b _02020414 -_0202040C: - mov r0, r1, lsr #0x18 - and r0, r0, #0xff -_02020414: - bl WriteByteFromMemoryPointer - add r7, r7, #1 - add sb, sb, #1 - add fp, fp, #1 -_02020424: - cmp fp, r8 - blt _020203B4 - b _02020440 -_02020430: - ldrb r0, [r5, r4] - bl WriteByteFromMemoryPointer - add r7, r7, #1 - add r4, r4, #1 -_02020440: - ldr r0, [sp, #0x24] - add sl, sl, #1 - mov r0, r0, lsl #1 - str r0, [sp, #0x24] -_02020450: - ldr r0, [sp, #0x28] - cmp r4, r0 - blt _0202010C - bl sub_020204CC - mov r0, r7 -_02020464: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0202046C: .word _022A5038 - arm_func_end DecompressAtFromMemoryPointer - - arm_func_start WriteByteFromMemoryPointer -WriteByteFromMemoryPointer: ; 0x02020470 - ldr r1, _020204C4 ; =_022A5038 - ldr r2, _020204C8 ; =_020997A4 - ldr r3, [r1, #8] - ldr ip, [r1, #4] - ldr r2, [r2, r3, lsl #2] - orr r2, ip, r0, lsl r2 - str r2, [r1, #4] - ldr r0, [r1] - str r2, [r0] - ldr r0, [r1, #8] - add r0, r0, #1 - str r0, [r1, #8] - cmp r0, #4 - bxne lr - ldr r2, [r1] - mov r0, #0 - add r2, r2, #4 - str r2, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - bx lr - .align 2, 0 -_020204C4: .word _022A5038 -_020204C8: .word _020997A4 - arm_func_end WriteByteFromMemoryPointer - - arm_func_start sub_020204CC -sub_020204CC: ; 0x020204CC - ldr r0, _020204E8 ; =_022A5038 - ldr r1, [r0, #8] - cmp r1, #0 - ldrne r1, [r0, #4] - ldrne r0, [r0] - strne r1, [r0] - bx lr - .align 2, 0 -_020204E8: .word _022A5038 - arm_func_end sub_020204CC - - arm_func_start GetAtSize -GetAtSize: ; 0x020204EC - ldrb r2, [r0] - cmp r2, #0x50 - ldreqb r1, [r0, #1] - cmpeq r1, #0x4b - ldreqb r1, [r0, #2] - cmpeq r1, #0x44 - ldreqb r1, [r0, #3] - cmpeq r1, #0x50 - bne _02020530 - ldrb r2, [r0, #0x10] - ldrb r1, [r0, #0x11] - ldrb r3, [r0, #0x12] - ldrb ip, [r0, #0x13] - add r0, r2, r1, lsl #8 - add r0, r0, r3, lsl #16 - add r0, r0, ip, lsl #24 - bx lr -_02020530: - cmp r2, #0x41 - ldreqb r1, [r0, #1] - cmpeq r1, #0x54 - ldreqb r1, [r0, #2] - cmpeq r1, #0x34 - ldreqb r1, [r0, #3] - cmpeq r1, #0x50 - ldreqb r1, [r0, #0x10] - ldreqb r0, [r0, #0x11] - addeq r0, r1, r0, lsl #8 - bxeq lr - cmp r2, #0x41 - ldreqb r1, [r0, #1] - cmpeq r1, #0x54 - ldreqb r0, [r0, #2] - cmpeq r0, #0x33 - moveq r0, #0 - movne r0, #0 - bx lr - arm_func_end GetAtSize - - arm_func_start sub_0202057C -sub_0202057C: ; 0x0202057C - stmdb sp!, {lr} - sub sp, sp, #0x54 - add r0, sp, #0 - bl GetDsFirmwareUserSettingsVeneer - ldrsb r0, [sp] - bl sub_020205C0 -#ifdef EUROPE - bl sub_0202059C -#endif - add sp, sp, #0x54 - ldmia sp!, {pc} - arm_func_end sub_0202057C - - arm_func_start sub_0202059C -sub_0202059C: ; 0x0202059C -#ifdef EUROPE - stmdb sp!, {r4, lr} - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - ldmeqia sp!, {r4, pc} - ldr r1, _02020680 ; =LANGUAGE_INFO_DATA - ldr r0, _02020684 ; =_02099C04_EU - ldrsb r1, [r1] - mov r2, r4 - bl Debug_Print0 - ldr r1, _02020680 ; =LANGUAGE_INFO_DATA - mov r0, r4 - strb r4, [r1] - bl sub_020206C0_EU - ldr r1, _02020680 ; =LANGUAGE_INFO_DATA - strb r0, [r1, #1] - ldmia sp!, {r4, pc} - .align 2, 0 -_02020680: .word LANGUAGE_INFO_DATA -_02020684: .word _02099C04_EU -#else - bx lr -#endif - arm_func_end sub_0202059C - - arm_func_start GetLanguageType -GetLanguageType: ; 0x020205A0 - ldr r0, _020205AC ; =LANGUAGE_INFO_DATA - ldrsb r0, [r0, #1] - bx lr - .align 2, 0 -_020205AC: .word LANGUAGE_INFO_DATA - arm_func_end GetLanguageType - -#ifdef EUROPE - arm_func_start sub_02020698_EU -sub_02020698_EU: ; 0x02020698 - and r0, r0, #0xff - cmp r0, #4 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end sub_02020698_EU -#endif - - arm_func_start GetLanguage -GetLanguage: ; 0x020205B0 - ldr r0, _020205BC ; =LANGUAGE_INFO_DATA - ldrsb r0, [r0] - bx lr - .align 2, 0 -_020205BC: .word LANGUAGE_INFO_DATA - arm_func_end GetLanguage - -#ifdef EUROPE - arm_func_start sub_020206C0_EU -sub_020206C0_EU: ; 0x020206C0 - cmp r0, #0 - blt _020206D8_EU - cmp r0, #5 - ldrlt r1, _020206E0_EU ; =_02099BF0_EU - ldrltsb r0, [r1, r0] - bxlt lr -_020206D8_EU: - mvn r0, #0 - bx lr - .align 2, 0 -_020206E0_EU: .word _02099BF0_EU - arm_func_end sub_020206C0_EU -#endif - - arm_func_start sub_020205C0 -sub_020205C0: ; 0x020205C0 - cmp r0, #0 - blt _020205D8 - cmp r0, #9 - ldrlt r1, _020205E0 ; =_020997B4 - ldrltsb r0, [r1, r0] - bxlt lr -_020205D8: - mvn r0, #0 - bx lr - .align 2, 0 -_020205E0: .word _020997B4 - arm_func_end sub_020205C0 - - arm_func_start sub_020205E4 -sub_020205E4: ; 0x020205E4 - stmdb sp!, {r3, lr} - bl sub_0202057C - bl sub_020257FC - bl sub_02023610 - ldmia sp!, {r3, pc} - arm_func_end sub_020205E4 - - arm_func_start sub_020205F8 -sub_020205F8: ; 0x020205F8 - stmdb sp!, {r3, lr} - bl sub_0200B768 - bl LoadStringFile -#ifndef JAPAN - bl sub_0202088C -#endif - ldmia sp!, {r3, pc} - arm_func_end sub_020205F8 - - arm_func_start sub_0202060C -sub_0202060C: ; 0x0202060C - cmp r0, #0 - mvneq r0, #0 - bxeq lr - cmp r0, #0x61 - blo _0202062C - cmp r0, #0x66 - subls r0, r0, #0x57 - bxls lr -_0202062C: - cmp r0, #0x41 - blo _02020640 - cmp r0, #0x46 - subls r0, r0, #0x37 - bxls lr -_02020640: - cmp r0, #0x30 - blo _02020654 - cmp r0, #0x39 - subls r0, r0, #0x30 - bxls lr -_02020654: - mov r0, #0 - bx lr - arm_func_end sub_0202060C - - arm_func_start sub_0202065C -sub_0202065C: ; 0x0202065C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - ldr r6, [r4] - ldrb r0, [r6] - cmp r0, #0x7e - bne _020206C8 - ldrb r0, [r6, #1] - bl sub_0202060C - movs r5, r0 - addmi r0, r6, #1 - strmi r0, [r4] - movmi r0, #0 - ldmmiia sp!, {r4, r5, r6, pc} - ldrb r0, [r6, #2] - bl sub_0202060C - cmp r0, #0 - addlt r1, r6, #2 - movlt r0, r5, lsl #0x10 - strlt r1, [r4] - movlt r0, r0, lsr #0x10 - ldmltia sp!, {r4, r5, r6, pc} - add r0, r0, r5, lsl #4 - add r1, r6, #3 - mov r0, r0, lsl #0x10 - str r1, [r4] - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, r5, r6, pc} -_020206C8: - cmp r0, #0x81 - blo _020206D8 - cmp r0, #0x84 - bls _020206E0 -_020206D8: - cmp r0, #0x87 - bne _020206F0 -_020206E0: - ldrb r1, [r6, #1]! - orr r0, r1, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 -_020206F0: - add r1, r6, #1 - str r1, [r4] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_0202065C - - arm_func_start sub_020206FC -sub_020206FC: ; 0x020206FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r1 - ldr r5, [sb] - mov sl, r0 - ldrb r0, [r5] - mov r8, r2 - ldr r4, [sl] - cmp r0, #0x7e - bne _020207F0 - ldrb r0, [r5, #1] - mov r6, #0 - bl sub_0202060C - movs r7, r0 - bpl _02020754 - ldrb r2, [r5] - add r1, r4, #1 - add r0, r5, #1 - strb r2, [r4] - str r1, [sl] - str r0, [sb] - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02020754: - add r0, r4, #1 - cmp r0, r8 - ldrb r0, [r5, #2] - moveq r6, #1 - bl sub_0202060C - cmp r0, #0 - bge _020207A4 - cmp r6, #0 - bne _02020790 - ldrb r1, [r5] - add r0, r4, #2 - strb r1, [r4] - ldrb r1, [r5, #1] - strb r1, [r4, #1] - str r0, [sl] -_02020790: - add r1, r5, #2 - mov r0, r7, lsl #0x10 - str r1, [sb] - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020207A4: - add r1, r4, #2 - cmp r1, r8 - moveq r6, #1 - cmp r6, #0 - bne _020207D8 - ldrb r2, [r5] - add r1, r4, #3 - strb r2, [r4] - ldrb r2, [r5, #1] - strb r2, [r4, #1] - ldrb r2, [r5, #2] - strb r2, [r4, #2] - str r1, [sl] -_020207D8: - add r0, r0, r7, lsl #4 - add r1, r5, #3 - mov r0, r0, lsl #0x10 - str r1, [sb] - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020207F0: - cmp r0, #0x81 - blo _02020800 - cmp r0, #0x84 - bls _02020808 -_02020800: - cmp r0, #0x87 - bne _02020850 -_02020808: - ldrb r2, [r5, #1] - add r1, r4, #1 - cmp r1, r8 - orr r0, r2, r0, lsl #8 - mov r0, r0, lsl #0x10 - addeq r1, r5, #2 - mov r0, r0, lsr #0x10 - streq r1, [sb] - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r3, [r5] - add r2, r5, #2 - add r1, r4, #2 - strb r3, [r4] - ldrb r3, [r5, #1] - strb r3, [r4, #1] - str r2, [sb] - str r1, [sl] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02020850: - strb r0, [r4] - add r1, r5, #1 - str r1, [sb] - add r1, r4, #1 - str r1, [sl] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end sub_020206FC - - arm_func_start sub_02020868 -sub_02020868: ; 0x02020868 - b _02020870 -_0202086C: - add r0, r0, #1 -_02020870: - ldrb r1, [r0] - cmp r1, #0 - bne _0202086C - bx lr - arm_func_end sub_02020868 - - arm_func_start sub_02020880 -sub_02020880: ; 0x02020880 - ldr ip, _02020888 ; =strstr - bx ip - .align 2, 0 -_02020888: .word strstr - arm_func_end sub_02020880 - -#ifndef JAPAN - arm_func_start sub_0202088C -sub_0202088C: ; 0x0202088C -#ifdef EUROPE - stmdb sp!, {r3, lr} - bl GetLanguage - ldr r1, _020209E0 ; =_020B05B0_EU - mov r2, r0, lsl #1 - ldrh r2, [r1, r2] - ldr r1, _020209E4 ; =_020B05AC_EU - cmp r0, #2 - strh r2, [r1] - strh r2, [r1, #2] - moveq r0, #0x2e - streqh r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_020209E0: .word _020B05B0_EU -_020209E4: .word _020B05AC_EU -#else - bx lr -#endif - arm_func_end sub_0202088C -#endif - - arm_func_start sub_02020890 -sub_02020890: ; 0x02020890 - cmp r1, #0 - beq _020208C0 - ldr ip, [r0] -_0202089C: - cmp ip, r2 - moveq r0, #0 - streqb r0, [r2, #-1] - bxeq lr - ldrb r3, [r1], #1 - cmp r3, #0 - strneb r3, [ip], #1 - bne _0202089C - str ip, [r0] -_020208C0: - mov r0, #1 - bx lr - arm_func_end sub_02020890 - - arm_func_start StrcmpTag -StrcmpTag: ; 0x020208C8 - ldrb r2, [r1], #1 - ldrb r3, [r0], #1 - cmp r2, #0 - bne _020208F0 - cmp r3, #0 - cmpne r3, #0x3a - cmpne r3, #0x5d - moveq r0, #1 - movne r0, #0 - bx lr -_020208F0: - cmp r3, #0 - moveq r0, #0 - bxeq lr - cmp r3, r2 - beq StrcmpTag - mov r0, #0 - bx lr - arm_func_end StrcmpTag - - arm_func_start AtoiTag -AtoiTag: ; 0x0202090C - mov r3, #0 - mov r1, #0xa -_02020914: - ldrb r2, [r0], #1 - cmp r2, #0 - cmpne r2, #0x3a - cmpne r2, #0x5d - moveq r0, r3 - bxeq lr - cmp r2, #0x30 - blo _02020914 - cmp r2, #0x39 - mlals r2, r3, r1, r2 - subls r3, r2, #0x30 - b _02020914 - arm_func_end AtoiTag - - arm_func_start sub_02020944 -sub_02020944: ; 0x02020944 - bx lr - arm_func_end sub_02020944 - - arm_func_start sub_02020948 -sub_02020948: ; 0x02020948 - stmdb sp!, {r4, lr} - ldrb r4, [r0] - cmp r4, #0x41 - blo _02020A24 - cmp r4, #0x5a - bhi _02020A24 - add r0, r0, #1 - bl AtoiTag - mov r0, r0, lsl #0x10 - cmp r4, #0x49 - mov r0, r0, asr #0x10 - bgt _0202099C - cmp r4, #0x48 - blt _02020990 - beq _020209DC - cmp r4, #0x49 - beq _02020A0C - b _02020A1C -_02020990: - cmp r4, #0x42 - ldmeqia sp!, {r4, pc} - b _02020A1C -_0202099C: - cmp r4, #0x52 - bgt _020209AC - beq _020209EC - b _02020A1C -_020209AC: - cmp r4, #0x54 - bgt _02020A1C - cmp r4, #0x53 - blt _02020A1C - beq _020209CC - cmp r4, #0x54 - beq _020209FC - b _02020A1C -_020209CC: - add r0, r0, #0x21 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_020209DC: - add r0, r0, #0x29 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_020209EC: - add r0, r0, #0x32 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_020209FC: - add r0, r0, #0x3c - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_02020A0C: - add r0, r0, #0x43 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_02020A1C: - mvn r0, #0 - ldmia sp!, {r4, pc} -_02020A24: - cmp r4, #0x30 - blo _02020A44 - cmp r4, #0x39 - bhi _02020A44 - bl AtoiTag - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_02020A44: - mvn r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02020948 - - arm_func_start sub_02020A4C -sub_02020A4C: ; 0x02020A4C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetLanguageType - cmp r0, #3 - ldreq r4, _02020A94 ; =_0209995C - ldrne r4, _02020A98 ; =_0209990C - b _02020A80 -_02020A68: - mov r0, r5 - bl StrcmpTag - cmp r0, #0 - ldrneh r0, [r4, #4] - ldmneia sp!, {r3, r4, r5, pc} - add r4, r4, #8 -_02020A80: - ldr r1, [r4] - cmp r1, #0 - bne _02020A68 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02020A94: .word _0209995C -_02020A98: .word _0209990C - arm_func_end sub_02020A4C - - arm_func_start sub_02020A9C -sub_02020A9C: ; 0x02020A9C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - mov r5, r2 - mov lr, r4 - mov ip, #5 -_02020AB4: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02020AB4 - ldr r0, [r6] - str r0, [lr] - str r5, [r4, #0x54] - ldr r2, [r4, #0x20] - cmp r2, #0 - beq _02020AE8 - ldr r0, [r4, #0x54] - add r1, r4, #8 - blx r2 -_02020AE8: - mov r0, #0 - str r0, [r4, #0x58] - mov r0, #0x78 - mov r1, #0x3c - str r0, [r4, #0x6c] - mov r0, r4 - str r1, [r4, #0x70] - sub r1, r1, #0x3d - str r1, [r4, #0x74] - bl sub_02020B14 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02020A9C - - arm_func_start sub_02020B14 -sub_02020B14: ; 0x02020B14 - mov r3, #0 - str r3, [r0, #0x5c] - strb r3, [r0, #0x9d] - ldr r2, [r0] - ldr r1, [r0, #4] - str r2, [r0, #0x90] - str r1, [r0, #0x94] - mov r2, r3 -_02020B34: - add r1, r0, r3 - add r3, r3, #1 - strb r2, [r1, #0x99] - cmp r3, #4 - blt _02020B34 - bx lr - arm_func_end sub_02020B14 - - arm_func_start sub_02020B4C -sub_02020B4C: ; 0x02020B4C - ldr r2, [r1] - ldr r1, [r1, #4] - str r2, [r0, #0x10] - str r1, [r0, #0x14] - bx lr - arm_func_end sub_02020B4C - - arm_func_start sub_02020B60 -sub_02020B60: ; 0x02020B60 - ldr r2, [r1] - ldr r1, [r1, #4] - str r2, [r0, #0x90] - str r1, [r0, #0x94] - bx lr - arm_func_end sub_02020B60 - - arm_func_start sub_02020B74 -sub_02020B74: ; 0x02020B74 - stmdb sp!, {r3, lr} - mov r2, r0 - strb r1, [r2, #0x98] - ldr r0, [r2, #0x54] - ldr r2, [r2, #0x30] - and r1, r1, #0xff - blx r2 - ldmia sp!, {r3, pc} - arm_func_end sub_02020B74 - - arm_func_start sub_02020B94 -sub_02020B94: ; 0x02020B94 - stmdb sp!, {r3, lr} - mov r2, r0 - strb r1, [r2, #0x98] - strb r1, [r2, #0x9c] - ldrb r1, [r2, #0x98] - ldr r0, [r2, #0x54] - ldr r2, [r2, #0x30] - blx r2 - ldmia sp!, {r3, pc} - arm_func_end sub_02020B94 - - arm_func_start sub_02020BB8 -sub_02020BB8: ; 0x02020BB8 - str r1, [r0, #0x6c] - str r2, [r0, #0x70] - bx lr - arm_func_end sub_02020BB8 - - arm_func_start sub_02020BC4 -sub_02020BC4: ; 0x02020BC4 - stmdb sp!, {r4, lr} - mov r4, r0 - tst r1, #0x400 - movne r0, #1 - moveq r0, #0 - strh r1, [r4, #0x60] - strb r0, [r4, #0x62] - tst r1, #2 - movne r0, #3 - strne r0, [r4, #0x5c] - bne _02020C50 - tst r1, #4 - beq _02020C14 - mov r0, #3 - str r0, [r4, #0x5c] - ldr r1, [r4] - ldr r0, [r4, #4] - str r1, [r4, #0x90] - str r0, [r4, #0x94] - b _02020C50 -_02020C14: - ldr r0, [r4, #0x5c] - cmp r0, #1 - movne r0, #3 - strne r0, [r4, #0x5c] - bne _02020C40 - ldr r1, [r4, #0x6c] - mov r0, #0xc - str r1, [r4, #0x7c] - str r0, [r4, #0x5c] - mov r0, #1 - strb r0, [r4, #0x9d] -_02020C40: - ldr r1, [r4] - ldr r0, [r4, #4] - str r1, [r4, #0x90] - str r0, [r4, #0x94] -_02020C50: - str r2, [r4, #0x88] - str r2, [r4, #0x84] - mov r1, #0 - strh r1, [r4, #0x8c] - str r1, [r4, #0xa4] - strb r1, [r4, #0xa8] - add r2, r4, #0xac - mov r0, r1 -_02020C70: - add r1, r1, #1 - cmp r1, #4 - strb r0, [r2], #0x18 - blt _02020C70 - mov r1, #0x44 - strb r1, [r4, #0x98] - str r0, [r4, #0xa0] - bl Debug_GetDebugFlag - cmp r0, #0 - movne r0, #4 - moveq r0, #1 - str r0, [r4, #0x64] - mov r0, #1 - str r0, [r4, #0x68] - mov r0, #0 - str r0, [r4, #0x78] - str r0, [r4, #0x7c] - str r0, [r4, #0x80] - ldrb r1, [r4, #0x98] - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x30] - blx r2 - ldmia sp!, {r4, pc} - arm_func_end sub_02020BC4 - - arm_func_start sub_02020CCC -sub_02020CCC: ; 0x02020CCC - ldr r1, [r0, #0x5c] - cmp r1, #1 - bne _02020CF4 - ldr r2, [r0, #0x6c] - mov r1, #0xb - str r2, [r0, #0x7c] - str r1, [r0, #0x5c] - mov r1, #1 - strb r1, [r0, #0x9d] - bx lr -_02020CF4: - cmp r1, #0x10 - bxeq lr - ldr r2, [r0, #0x6c] - mov r1, #0xe - str r2, [r0, #0x7c] - str r1, [r0, #0x5c] - mov r1, #1 - strb r1, [r0, #0x9d] - bx lr - arm_func_end sub_02020CCC - - arm_func_start sub_02020D18 -sub_02020D18: ; 0x02020D18 - ldr r1, [r0, #0x5c] - cmp r1, #1 - bxne lr - ldr r2, [r0, #0x6c] - mov r1, #0xd - str r2, [r0, #0x7c] - str r1, [r0, #0x5c] - mov r1, #1 - strb r1, [r0, #0x9d] - bx lr - arm_func_end sub_02020D18 - - arm_func_start sub_02020D40 -sub_02020D40: ; 0x02020D40 - ldr r1, [r0, #0x5c] - cmp r1, #1 - moveq r1, #2 - streq r1, [r0, #0x5c] - bx lr - arm_func_end sub_02020D40 - - arm_func_start sub_02020D54 -sub_02020D54: ; 0x02020D54 - ldr r0, [r0, #0x5c] - bx lr - arm_func_end sub_02020D54 - - arm_func_start sub_02020D5C -sub_02020D5C: ; 0x02020D5C - ldr r0, [r0, #0x5c] - cmp r0, #0 - cmpne r0, #1 - cmpne r0, #2 - cmpne r0, #0x10 - moveq r0, #0 - movne r0, #1 - bx lr - arm_func_end sub_02020D5C - - arm_func_start sub_02020D7C -sub_02020D7C: ; 0x02020D7C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r4, #0 - mov ip, #0x18 - b _02020DB8 -_02020D94: - mla r0, r4, ip, r7 - mov r5, r6 - add lr, r0, #0xac - ldmia lr!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - ldmia lr, {r0, r1} - stmia r5, {r0, r1} - add r6, r6, #0x18 - add r4, r4, #1 -_02020DB8: - ldr r0, [r7, #0xa4] - cmp r4, r0 - blt _02020D94 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02020D7C - - arm_func_start AnalyzeText -AnalyzeText: ; 0x02020DC8 -#ifdef EUROPE -#define ANALYZE_TEXT_STACK_OFFSET 8 -#define ANALYZE_TEXT_LOAD_OFFSET -0x10 -#else -#define ANALYZE_TEXT_STACK_OFFSET 0 -#define ANALYZE_TEXT_LOAD_OFFSET 0 -#endif - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET - mov r4, r0 - ldr r0, [r4, #0x78] - add r0, r0, #1 - str r0, [r4, #0x78] - ldr r0, [r4, #0x5c] - cmp r0, #0x10 - addls pc, pc, r0, lsl #2 - b _02021EC4 -_02020DF0: ; jump table - b _02021EC4 ; case 0 - b _02021EC4 ; case 1 - b _02021EC4 ; case 2 - b _02020E34 ; case 3 - b _02020EC4 ; case 4 - b _02020E4C ; case 5 - b _02020E4C ; case 6 - b _02021C90 ; case 7 - b _02021CE4 ; case 8 - b _02021CE4 ; case 9 - b _02021CE4 ; case 10 - b _02021CE4 ; case 11 - b _02021CE4 ; case 12 - b _02021CE4 ; case 13 - b _02021E90 ; case 14 - b _02021E9C ; case 15 - b _02021EC4 ; case 16 -_02020E34: - ldrh r0, [r4, #0x60] - tst r0, #0x8000 - bne _02020E4C - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x28] - blx r1 -_02020E4C: - ldr r1, [r4, #0x5c] - sub r0, r1, #5 - cmp r0, #1 - bhi _02020EBC - cmp r1, #5 - bne _02020E74 - ldrh r0, [r4, #0x60] - tst r0, #0x1000 - beq _02020E74 - bl sub_02017CEC -_02020E74: - ldrh r0, [r4, #0x60] - tst r0, #0x20 - bne _02020EA8 - tst r0, #0x800 - beq _02020EA8 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x18] - blx r1 - cmp r0, #0 - movne r0, #1 - strneb r0, [r4, #0x62] - movne r0, #0 - strne r0, [r4, #0x7c] -_02020EA8: - ldr r0, [r4, #0x7c] - sub r0, r0, #1 - str r0, [r4, #0x7c] - cmp r0, #0 - bgt _02021EC4 -_02020EBC: - mov r0, #4 - str r0, [r4, #0x5c] -_02020EC4: - ldrb r0, [r4, #0x62] - cmp r0, #0 - movne r0, #0x400 - ldreq r0, [r4, #0x64] - str r0, [r4, #0x80] - mov r0, #0 - str r0, [r4, #0x7c] - b _02021BFC -_02020EE4: - ldr r0, [r4, #0x88] - ldrb r0, [r0] - strh r0, [r4, #0x8c] - cmp r0, #0x5b - bne _02021AB4 - ldr r0, [r4, #0x88] - ldrb r5, [r0] - strh r5, [r4, #0x8c] - cmp r5, #0x5b - bne _02021A70 - ldr r0, [r4, #0x88] - mov r6, #1 - add r0, r0, #1 - str r0, [r4, #0x88] - str r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - add r0, sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET -_02020F24: - ldr r1, [r4, #0x88] - mov r2, r1 - add r1, r1, #1 - str r1, [r4, #0x88] - ldrb r1, [r2] - cmp r1, #0x5d - beq _02020F54 - cmp r1, #0x3a - ldreq r1, [r4, #0x88] - streq r1, [r0, r6, lsl #2] - addeq r6, r6, #1 - b _02020F24 -_02020F54: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldrb r7, [r0] - cmp r7, #0x41 - blo _02021A38 - cmp r7, #0x5a - bhi _02021A38 - sub r1, r7, #0x42 - cmp r1, #0x15 - addls pc, pc, r1, lsl #2 - b _02021A10 -_02020F7C: ; jump table - b _02020FD4 ; case 0 - b _02021040 ; case 1 - b _02021A10 ; case 2 - b _02021A10 ; case 3 - b _0202134C ; case 4 -#ifdef EUROPE - b _0202155C ; case 5 -#else - b _02021A10 ; case 5 -#endif - b _020212F0 ; case 6 - b _02021A10 ; case 7 - b _02021A10 ; case 8 - b _02021404 ; case 9 - b _0202145C ; case 10 - b _02021694 ; case 11 - b _02021A10 ; case 12 - b _02021A10 ; case 13 - b _020217C4 ; case 14 - b _02021A10 ; case 15 - b _02021868 ; case 16 - b _020218D8 ; case 17 - b _02021A10 ; case 18 - b _02021A10 ; case 19 - b _02021A10 ; case 20 - b _020219AC ; case 21 -_02020FD4: - ldr r1, _02021ED0 ; =_020999AC - bl StrcmpTag - cmp r0, #0 - beq _02021018 - ldr r1, [r4, #8] - ldr r3, [r4, #0x94] - ldr r2, [r4, #0x14] - ldr r0, [r4, #0x54] - ldr r5, [r4, #0x48] - add r2, r3, r2 - sub r3, r1, #4 - mov r1, #2 - blx r5 - ldr r0, [r4, #0x94] - add r0, r0, #3 - str r0, [r4, #0x94] - b _02021AA0 -_02021018: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0xe8] - ldr r0, [r0, #0xe4] - str r1, [sp, #0x6c + ANALYZE_TEXT_STACK_OFFSET] - str r0, [sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET - bl Debug_FatalError -_02021040: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EDC ; =_020999C8 - bl StrcmpTag - cmp r0, #0 - beq _02021104 - cmp r6, #2 - bne _02021098 - ldrb r1, [r4, #0x9c] - cmp r1, #0 - ldrne r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - strneb r1, [r4, #0x99] - ldrneb r0, [r0] - strneb r0, [r4, #0x9c] - bne _020210F0 - ldrb r0, [r4, #0x98] - strb r0, [r4, #0x99] - ldrb r0, [r4, #0xa8] - cmp r0, #0 - ldreq r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - ldreqb r0, [r0] - streqb r0, [r4, #0x98] - b _020210F0 -_02021098: - cmp r6, #3 - bne _020210F0 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldrb r2, [r4, #0x9c] - cmp r2, #0 - cmpne r0, #3 - beq _020210D0 - add r1, r4, r0 - ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] - strb r2, [r1, #0x99] - ldrb r0, [r0] - strb r0, [r4, #0x9c] - b _020210F0 -_020210D0: - ldrb r1, [r4, #0x98] - add r0, r4, r0 - strb r1, [r0, #0x99] - ldrb r0, [r4, #0xa8] - cmp r0, #0 - ldreq r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] - ldreqb r0, [r0] - streqb r0, [r4, #0x98] -_020210F0: - ldrb r1, [r4, #0x98] - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x30] - blx r2 - b _02021AA0 -_02021104: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EE0 ; =_020999CC - bl StrcmpTag - cmp r0, #0 - beq _020211C4 - cmp r6, #1 - bne _02021158 - ldrb r0, [r4, #0x9c] - cmp r0, #0 - ldrneb r1, [r4, #0x99] - movne r0, #0 - strneb r1, [r4, #0x9c] - strneb r0, [r4, #0x99] - bne _020211B0 - ldrb r0, [r4, #0xa8] - cmp r0, #0 - ldreqb r0, [r4, #0x99] - streqb r0, [r4, #0x98] - mov r0, #0 - strb r0, [r4, #0x99] - b _020211B0 -_02021158: - cmp r6, #2 - bne _020211B0 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldrb r1, [r4, #0x9c] - cmp r1, #0 - cmpne r0, #3 - beq _02021190 - add r2, r4, r0 - ldrb r1, [r2, #0x99] - mov r0, #0 - strb r1, [r4, #0x9c] - strb r0, [r2, #0x99] - b _020211B0 -_02021190: - ldrb r1, [r4, #0xa8] - cmp r1, #0 - addeq r1, r4, r0 - ldreqb r1, [r1, #0x99] - add r0, r4, r0 - streqb r1, [r4, #0x98] - mov r1, #0 - strb r1, [r0, #0x99] -_020211B0: - ldrb r1, [r4, #0x98] - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x30] - blx r2 - b _02021AA0 -_020211C4: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EE4 ; =_020999D0 - bl StrcmpTag - cmp r0, #0 - beq _02021200 - ldr r0, [r4, #0x88] - ldr r1, [r4, #0x38] - ldr r2, [r4, #0x3c] - bl sub_02022118 - ldr r1, [r4, #8] - sub r0, r1, r0 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r4, #0x90] - b _02021AA0 -_02021200: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EE8 ; =_020999D4 - bl StrcmpTag - cmp r0, #0 - beq _02021278 - ldr r0, [r4, #0xc] - mov r1, #1 - str r0, [r4, #0x94] - str r1, [r4, #0xa0] - mov r0, #9 - str r0, [r4, #0x5c] - strb r1, [r4, #0x9d] - ldr r0, [r4, #0x88] - ldrb r0, [r0] - cmp r0, #0xd - cmpne r0, #0xa - bne _02021260 - ldr r0, [r4, #0x88] - add r0, r0, #1 - str r0, [r4, #0x88] - ldrh r0, [r4, #0x60] - tst r0, #0x40 - movne r0, #7 - strne r0, [r4, #0x5c] -_02021260: - ldrh r0, [r4, #0x60] - tst r0, #0x80 - movne r0, #7 - strne r0, [r4, #0x5c] - mov r0, #1 - b _02021AA4 -_02021278: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EEC ; =_020999D8 - bl StrcmpTag - cmp r0, #0 - beq _0202129C - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - str r0, [r4, #0x90] - b _02021AA0 -_0202129C: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EF0 ; =_020999E4 - bl StrcmpTag - cmp r0, #0 - beq _020212C8 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldr r1, [r4, #0x90] - add r0, r1, r0 - str r0, [r4, #0x90] - b _02021AA0 -_020212C8: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0xf8 - ANALYZE_TEXT_STACK_OFFSET] - ldr r0, [r0, #0xf4 - ANALYZE_TEXT_STACK_OFFSET] - str r1, [sp, #0x64 + ANALYZE_TEXT_STACK_OFFSET] - str r0, [sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET - bl Debug_FatalError -_020212F0: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EF4 ; =_020999F0 - bl StrcmpTag - cmp r0, #0 - beq _02021324 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x94] - add r0, r0, r0, lsr #31 - add r0, r1, r0, asr #1 - str r0, [r4, #0x94] - b _02021AA0 -_02021324: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x100] - ldr r0, [r0, #0xfc] - str r1, [sp, #0x5c + ANALYZE_TEXT_STACK_OFFSET] - str r0, [sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET - bl Debug_FatalError -_0202134C: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EF8 ; =_020999F4 - bl StrcmpTag - cmp r0, #0 - beq _020213A8 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl sub_02020A4C - movs r3, r0 - beq _020213F4 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r5, [r4, #0x40] - blx r5 - ldr r1, [r4, #0x90] - add r0, r1, r0 - str r0, [r4, #0x90] - ldr r0, [r4, #0x68] - str r0, [r4, #0x7c] - ldr r0, [r4, #0x80] - sub r0, r0, #1 - str r0, [r4, #0x80] - b _020213F4 -_020213A8: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021EFC ; =_020999F8 - bl StrcmpTag - cmp r0, #0 - beq _020213CC - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - str r0, [r4, #0x58] - b _020213F4 -_020213CC: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] -#ifdef EUROPE - ldr r1, [r0, #0x108] - ldr r0, [r0, #0x104] - str r1, [sp, #0x5c] - str r0, [sp, #0x58] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x58 - bl Debug_FatalError -_020213F4: - ldr r0, [r4, #0x58] - ldr r1, [r4, #0x34] - blx r1 - b _02021AA0 -_0202155C: - ldr r1, _020220C4 ; =_02099E64_EU - bl StrcmpTag - cmp r0, #0 - beq _02021598 - ldr r1, _020220C8 ; =_020B05AC_EU - ldr r0, [r4, #0x54] - ldrh r3, [r1] - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r5, [r4, #0x40] - blx r5 - ldr r0, [r4, #0x90] - add r0, r0, #6 - str r0, [r4, #0x90] - b _02021AA0 -_02021598: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x78] - ldr r1, [r0, #0x90] - ldr r0, [r0, #0x8c] - str r1, [sp, #0x54] - str r0, [sp, #0x50] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x50 - bl Debug_FatalError -_02021404: - ldr r0, [sp, #0x78] -#else - ldr r1, [r0, #0xa0] - ldr r0, [r0, #0x9c] - str r1, [sp, #0x54] - str r0, [sp, #0x50] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x50 - bl Debug_FatalError -_020213F4: - ldr r0, [r4, #0x58] - ldr r1, [r4, #0x34] - blx r1 - b _02021AA0 -_02021404: -#endif - ldr r1, _02021F00 ; =_020999FC - bl StrcmpTag - cmp r0, #0 - beq _02021434 - ldrh r0, [r4, #0x60] - tst r0, #1 - bne _02021AA0 - mov r0, #8 - str r0, [r4, #0x5c] - mov r0, #1 - strb r0, [r4, #0x9d] - b _02021AA4 -_02021434: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x98 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x94 + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x4c] - str r0, [sp, #0x48] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x48 - bl Debug_FatalError -_0202145C: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F04 ; =_02099A00 - bl StrcmpTag - cmp r0, #0 - beq _020214E8 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldr r2, [r4, #0xa4] - mov r1, #0x18 - mul r3, r2, r1 - add r2, r4, #0xac - mov r1, #1 - strb r1, [r2, r3] - add r3, r2, r3 - strh r0, [r3, #2] - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r2, [r4, #0x94] - ldr r1, [r4, #0x90] - sub r0, r0, #1 - str r1, [r3, #0xc] - str r2, [r3, #0x10] - ldr r1, [r3, #0xc] - stmib r3, {r1, r2} - str r0, [r3, #0x14] - ldrh r0, [r4, #0x60] - tst r0, #0x100 - bne _02021AA0 - ldrb r0, [r4, #0x98] - mov r1, #0x54 - strb r0, [r4, #0xa8] - strb r1, [r4, #0x98] - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x30] - blx r2 - b _02021AA0 -_020214E8: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F08 ; =_02099A04 - bl StrcmpTag - cmp r0, #0 - beq _02021588 - ldr r3, [r4, #0xa4] - add r1, r4, #0xac - mov r0, #0x18 - mla r2, r3, r0, r1 - add r0, r3, #1 - str r0, [r4, #0xa4] - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - str r1, [r2, #0xc] - str r0, [r2, #0x10] - ldr r0, [r2, #0xc] - sub r0, r0, #1 - str r0, [r2, #0xc] - ldr r0, [r4, #0x14] - ldr r1, [r2, #0x10] - sub r0, r0, #1 - add r0, r1, r0 - str r0, [r2, #0x10] - ldrb r0, [r4, #0xa8] - cmp r0, #0 - beq _0202156C - strb r0, [r4, #0x98] - mov r0, #0 - strb r0, [r4, #0xa8] - ldrb r1, [r4, #0x98] - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x30] - blx r2 -_0202156C: - ldrh r0, [r4, #0x60] - tst r0, #0x100 - beq _02021AA0 - mov r0, #7 - str r0, [r4, #0x5c] - mov r0, #1 - b _02021AA4 -_02021588: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F0C ; =_02099A08 - bl StrcmpTag - cmp r0, #0 - beq _0202166C - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - mov r5, r0 - ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - mov r6, r0 - ldr r0, _02021F10 ; =_020997E4 - mov r1, r5, lsl #1 - mov r7, #0 - ldrh sb, [r0, r1] - mov r5, r7 - b _02021654 -_020215CC: - ldr r1, [r4, #0x38] - mov r0, sb - mov r8, r5 - blx r1 - ldr r2, [r4, #0x90] - ldr r1, [r4, #8] - add r0, r2, r0 - cmp r0, r1 - ble _02021608 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r1, [r4, #0x94] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [r4, #0x94] -_02021608: - ldrb r0, [r4, #0x98] - cmp r0, #0x54 - beq _02021630 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r8, [r4, #0x40] - mov r3, sb - blx r8 - mov r8, r0 -_02021630: - ldr r0, [r4, #0x90] - add r7, r7, #1 - add r0, r0, r8 - str r0, [r4, #0x90] - ldr r0, [r4, #0x68] - str r0, [r4, #0x7c] - ldr r0, [r4, #0x80] - sub r0, r0, #1 - str r0, [r4, #0x80] -_02021654: - cmp r7, r6 - blt _020215CC - ldr r0, [r4, #0x90] - add r0, r0, #1 - str r0, [r4, #0x90] - b _02021AA0 -_0202166C: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x90 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x8c + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x44] - str r0, [sp, #0x40] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x40 - bl Debug_FatalError -_02021694: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F14 ; =_02099A10 - bl StrcmpTag - cmp r0, #0 - beq _020216F8 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl sub_02020948 - mov r3, r0 - mvn r0, #0 - cmp r3, r0 - beq _02021AA0 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r5, [r4, #0x44] - blx r5 - ldr r1, [r4, #0x90] - add r0, r1, r0 - str r0, [r4, #0x90] - ldr r0, [r4, #0x68] - str r0, [r4, #0x7c] - ldr r0, [r4, #0x80] - sub r0, r0, #1 - str r0, [r4, #0x80] - b _02021AA0 -_020216F8: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F18 ; =_02099A14 - bl StrcmpTag - cmp r0, #0 - beq _02021728 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldr r2, [r4, #0x90] - mov r1, #6 - mla r1, r0, r1, r2 - str r1, [r4, #0x90] - b _02021AA0 -_02021728: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F1C ; =_02099A18 - bl StrcmpTag - cmp r0, #0 - beq _02021764 -#ifdef EUROPE - ldr r1, _020220C8 ; =_020B05AC_EU - ldr r0, [r4, #0x54] - ldrh r3, [r1, #2] -#else - ldr r0, [r4, #0x54] -#endif - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r5, [r4, #0x40] -#ifndef EUROPE - mov r3, #0x2c -#endif - blx r5 - ldr r0, [r4, #0x90] - add r0, r0, #6 - str r0, [r4, #0x90] - b _02021AA0 -_02021764: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F20 ; =_02099A1C - bl StrcmpTag - cmp r0, #0 - beq _0202179C - ldrh r0, [r4, #0x60] - tst r0, #1 - bne _02021AA0 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl sub_02017C50 - b _02021AA0 -_0202179C: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x88 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x84 + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x3c] - str r0, [sp, #0x38] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x38 - bl Debug_FatalError -_020217C4: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F24 ; =_02099A24 - bl StrcmpTag - cmp r0, #0 - beq _02021840 - ldr r1, [r4, #0xc] - mov r0, #0 - str r1, [r4, #0x94] - str r0, [r4, #0xa0] - mov r0, #9 - str r0, [r4, #0x5c] - mov r0, #1 - strb r0, [r4, #0x9d] - ldr r0, [r4, #0x88] - ldrb r0, [r0] - cmp r0, #0xd - cmpne r0, #0xa - bne _02021828 - ldr r0, [r4, #0x88] - add r0, r0, #1 - str r0, [r4, #0x88] - ldrh r0, [r4, #0x60] - tst r0, #0x40 - movne r0, #7 - strne r0, [r4, #0x5c] -_02021828: - ldrh r0, [r4, #0x60] - tst r0, #0x80 - movne r0, #7 - strne r0, [r4, #0x5c] - mov r0, #1 - b _02021AA4 -_02021840: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x80 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x7c + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x34] - str r0, [sp, #0x30] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x30 - bl Debug_FatalError -_02021868: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F28 ; =_02099A28 - bl StrcmpTag - cmp r0, #0 - beq _020218B0 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r1, [r4, #0x94] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [r4, #0x94] - ldrh r0, [r4, #0x60] - tst r0, #0x40 - beq _02021AA0 - mov r0, #7 - str r0, [r4, #0x5c] - mov r0, #1 - b _02021AA4 -_020218B0: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x78 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x74 + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x2c] - str r0, [sp, #0x28] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x28 - bl Debug_FatalError -_020218D8: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F2C ; =_02099A2C - bl StrcmpTag - cmp r0, #0 - beq _02021904 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - ldr r1, [r4, #0x90] - add r0, r1, r0 - str r0, [r4, #0x90] - b _02021AA0 -_02021904: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F30 ; =_02099A30 - bl StrcmpTag - cmp r0, #0 - movne r0, #0x400 - strne r0, [r4, #0x80] - bne _02021AA0 - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F34 ; =_02099A34 - bl StrcmpTag - cmp r0, #0 - beq _0202194C - ldrb r0, [r4, #0x62] - cmp r0, #0 - movne r0, #0x400 - ldreq r0, [r4, #0x64] - str r0, [r4, #0x80] - b _02021AA0 -_0202194C: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F38 ; =_02099A38 - bl StrcmpTag - cmp r0, #0 - beq _02021984 - ldrh r0, [r4, #0x60] - tst r0, #1 - bne _02021AA0 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl PlaySeByIdVolumeWrapper - b _02021AA0 -_02021984: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x70 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x6c + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x24] - str r0, [sp, #0x20] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x20 - bl Debug_FatalError -_020219AC: - ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, _02021F3C ; =_02099A40 - bl StrcmpTag - cmp r0, #0 - beq _020219E8 - ldrh r0, [r4, #0x60] - tst r0, #1 - bne _02021AA0 - ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] - bl AtoiTag - str r0, [r4, #0x7c] - mov r0, #6 - str r0, [r4, #0x5c] - mov r0, #1 - b _02021AA4 -_020219E8: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x68 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x64 + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0x1c] - str r0, [sp, #0x18] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x18 - bl Debug_FatalError -_02021A10: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] -#ifdef EUROPE - ldr r1, [r0, #0x40] - ldr r0, [r0, #0x3c] -#else - ldr r1, [r0, #0x60] - ldr r0, [r0, #0x5c] -#endif - str r1, [sp, #0x14] - str r0, [sp, #0x10] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #0x10 - bl Debug_FatalError -_02021A38: - cmp r7, #0x61 - blo _02021A48 - cmp r7, #0x7a - bls _02021AA0 -_02021A48: - ldr r0, _02021ED4 ; =_020997E4 - ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] - ldr r1, [r0, #0x58 + ANALYZE_TEXT_LOAD_OFFSET] - ldr r0, [r0, #0x54 + ANALYZE_TEXT_LOAD_OFFSET] - str r1, [sp, #0xc] - str r0, [sp, #8] - ldr r3, [r4, #0x84] - ldr r1, _02021ED8 ; =_020999B0 - add r0, sp, #8 - bl Debug_FatalError -_02021A70: - cmp r5, #0x5b - beq _02021AA0 - ldr r1, _02021ED4 ; =_020997E4 - add r0, sp, #0 -#ifdef EUROPE - ldr r2, [r1, #0x98] - ldr r1, [r1, #0x94] -#else - ldr r2, [r1, #0x48] - ldr r1, [r1, #0x44] -#endif - str r2, [sp, #4] - str r1, [sp] - ldr r2, [r4, #0x88] - ldr r3, [r4, #0x84] - ldr r1, _02021F40 ; =_02099A44 - bl Debug_FatalError -_02021AA0: - mov r0, #0 -_02021AA4: - cmp r0, #0 - beq _02021BC4 - ldr r1, [r4, #0x5c] - b _02021C10 -_02021AB4: - cmp r0, #0 - moveq r1, #7 - streq r1, [r4, #0x5c] - beq _02021C10 - cmp r0, #0xd - cmpne r0, #0xa - bne _02021B0C - ldrh r0, [r4, #0x60] - tst r0, #0x40 - movne r1, #7 - strne r1, [r4, #0x5c] - bne _02021C10 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r1, [r4, #0x94] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [r4, #0x94] - ldr r0, [r4, #0x88] - add r0, r0, #1 - str r0, [r4, #0x88] - b _02021BC4 -_02021B0C: - ldr r7, [r4, #0x88] - add r0, r4, #0x88 - bl sub_0202065C - strh r0, [r4, #0x8c] - ldr r0, [r4, #0x10] - ldrh r6, [r4, #0x8c] - cmp r0, #0 - bne _02021B50 - ldr r8, [r4, #0x90] - cmp r6, #0x7f - addeq r5, r8, #6 - beq _02021B58 - ldr r1, [r4, #0x38] - mov r0, r6 - blx r1 - add r5, r8, r0 - b _02021B58 -_02021B50: - ldr r8, [r4, #0x90] - add r5, r8, r0 -_02021B58: - ldr r0, [r4, #8] - cmp r5, r0 - ble _02021B84 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r1, [r4, #0x94] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [r4, #0x94] - str r7, [r4, #0x88] - b _02021BC4 -_02021B84: - ldrb r0, [r4, #0x98] - cmp r0, #0x54 - beq _02021BA8 - ldr r0, [r4, #0x54] - ldr r2, [r4, #0x94] - ldr r7, [r4, #0x40] - mov r1, r8 - mov r3, r6 - blx r7 -_02021BA8: - str r5, [r4, #0x90] - ldr r0, [r4, #0x68] - str r0, [r4, #0x7c] - ldr r0, [r4, #0x80] - sub r0, r0, #1 - str r0, [r4, #0x80] - b _02021BFC -_02021BC4: - ldrh r0, [r4, #0x60] - tst r0, #0x400 - bne _02021BFC - ldr r1, [r4, #0x94] - ldr r0, [r4, #0xc] - cmp r1, r0 - blt _02021BFC - mov r0, #0 - str r0, [r4, #0xa0] - mov r0, #1 - mov r1, #9 - strb r0, [r4, #0x9d] - str r1, [r4, #0x5c] - b _02021C10 -_02021BFC: - ldr r0, [r4, #0x80] - cmp r0, #0 - bgt _02020EE4 - mov r1, #5 - str r1, [r4, #0x5c] -_02021C10: - sub r0, r1, #7 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02021C74 -_02021C20: ; jump table - b _02021C54 ; case 0 - b _02021C48 ; case 1 - b _02021C3C ; case 2 - b _02021C74 ; case 3 - b _02021C74 ; case 4 - b _02021C3C ; case 5 - b _02021C3C ; case 6 -_02021C3C: - ldr r0, [r4, #0x6c] - str r0, [r4, #0x7c] - b _02021C74 -_02021C48: - ldr r0, [r4, #0x70] - str r0, [r4, #0x7c] - b _02021C74 -_02021C54: - ldrh r0, [r4, #0x60] - tst r0, #0x4000 - bne _02021C6C - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x24] - blx r1 -_02021C6C: - mov r0, #7 - b _02021EC8 -_02021C74: - ldrh r0, [r4, #0x60] - tst r0, #0x4000 - bne _02021EC4 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x24] - blx r1 - b _02021EC4 -_02021C90: - ldrh r0, [r4, #0x60] - tst r0, #0x10 - beq _02021CCC - mov r0, #0xa - str r0, [r4, #0x5c] - mov r0, #1 - strb r0, [r4, #0x9d] - ldr r1, [r4, #0x74] - cmp r1, #0 - ldrge r0, [r4, #0x78] - subge r0, r1, r0 - strge r0, [r4, #0x7c] - ldrlt r0, [r4, #0x6c] - strlt r0, [r4, #0x7c] - b _02021EC4 -_02021CCC: - tst r0, #0x200 - movne r0, #0x10 - strne r0, [r4, #0x5c] - moveq r0, #1 - streq r0, [r4, #0x5c] - b _02021EC4 -_02021CE4: - ldrh r1, [r4, #0x60] - mov r5, #0 - tst r1, #8 - bne _02021D08 - cmp r0, #0xb - cmpne r0, #0xc - cmpne r0, #0xd - movne r5, #1 - bne _02021D60 -_02021D08: - tst r1, #0x20 - beq _02021D24 - ldr r0, [r4, #0x7c] - subs r0, r0, #1 - str r0, [r4, #0x7c] - movmi r5, #1 - b _02021D60 -_02021D24: - ldrb r0, [r4, #0x9d] - cmp r0, #0 - beq _02021D50 - mov r0, #0 - strb r0, [r4, #0x9d] - bl sub_02006220 - mov r0, #0 - bl sub_020063A0 - mov r0, #0 - bl sub_020063D4 - b _02021D60 -_02021D50: - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x1c] - blx r1 - mov r5, r0 -_02021D60: - cmp r5, #0 - bne _02021DB0 - ldrh r0, [r4, #0x60] - tst r0, #0x20 - bne _02021EC4 - ldr r0, [r4, #0x5c] - cmp r0, #8 - bne _02021D98 - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x90] - ldr r2, [r4, #0x94] - ldr r3, [r4, #0x50] - blx r3 - b _02021EC4 -_02021D98: - mvn r1, #0 - ldr r0, [r4, #0x54] - ldr r3, [r4, #0x50] - mov r2, r1 - blx r3 - b _02021EC4 -_02021DB0: - ldr r2, [r4, #0x88] - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x4c] - ldrb r5, [r2] - blx r1 - ldr r0, [r4, #0x5c] - cmp r0, #0xb - moveq r0, #0x10 - streq r0, [r4, #0x5c] - beq _02021EC4 - cmp r0, #0xc - moveq r0, #3 - streq r0, [r4, #0x5c] - beq _02021EC4 - cmp r0, #0xd - moveq r0, #2 - streq r0, [r4, #0x5c] - beq _02021EC4 - cmp r5, #0 - cmpne r0, #0xa - bne _02021E20 - ldrh r0, [r4, #0x60] - tst r0, #0x200 - movne r0, #0x10 - strne r0, [r4, #0x5c] - moveq r0, #1 - streq r0, [r4, #0x5c] - b _02021EC4 -_02021E20: - cmp r0, #9 - bne _02021E84 - ldr r0, [r4] - str r0, [r4, #0x90] - ldr r1, [r4, #0x94] - ldr r0, [r4, #0xc] - cmp r1, r0 - blt _02021E78 - ldr r0, [r4, #4] - str r0, [r4, #0x94] - ldr r0, [r4, #0xa0] - cmp r0, #0 - movne r0, #3 - strne r0, [r4, #0x5c] - bne _02021EC4 - mov r0, #0xf - str r0, [r4, #0x5c] - ldr r0, [r4, #0xc] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r4, #0x7c] - b _02021EC4 -_02021E78: - mov r0, #4 - str r0, [r4, #0x5c] - b _02021EC4 -_02021E84: - mov r0, #4 - str r0, [r4, #0x5c] - b _02021EC4 -_02021E90: - mov r0, #0x10 - str r0, [r4, #0x5c] - b _02021EC4 -_02021E9C: - ldr r0, [r4, #0x7c] - sub r0, r0, #1 - str r0, [r4, #0x7c] - ldr r0, [r4, #0x54] - ldr r1, [r4, #0x2c] - blx r1 - ldr r0, [r4, #0x7c] - cmp r0, #0 - movle r0, #4 - strle r0, [r4, #0x5c] -_02021EC4: - ldr r0, [r4, #0x5c] -_02021EC8: - add sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02021ED0: .word _020999AC -_02021ED4: .word _020997E4 -_02021ED8: .word _020999B0 -_02021EDC: .word _020999C8 -_02021EE0: .word _020999CC -_02021EE4: .word _020999D0 -_02021EE8: .word _020999D4 -_02021EEC: .word _020999D8 -_02021EF0: .word _020999E4 -_02021EF4: .word _020999F0 -_02021EF8: .word _020999F4 -_02021EFC: .word _020999F8 -#ifdef EUROPE -_020220C4: .word _02099E64_EU -_020220C8: .word _020B05AC_EU -#endif -_02021F00: .word _020999FC -_02021F04: .word _02099A00 -_02021F08: .word _02099A04 -_02021F0C: .word _02099A08 -_02021F10: .word _020997E4 -_02021F14: .word _02099A10 -_02021F18: .word _02099A14 -_02021F1C: .word _02099A18 -_02021F20: .word _02099A1C -_02021F24: .word _02099A24 -_02021F28: .word _02099A28 -_02021F2C: .word _02099A2C -_02021F30: .word _02099A30 -_02021F34: .word _02099A34 -_02021F38: .word _02099A38 -_02021F3C: .word _02099A40 -_02021F40: .word _02099A44 - arm_func_end AnalyzeText - - arm_func_start sub_02021F44 -sub_02021F44: ; 0x02021F44 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r1 - mov r0, #0 - ldr r6, _02022020 ; =_02099A24 - ldr r5, _02022024 ; =_020999D4 - ldr r4, _02022028 ; =_02099A00 - str r0, [sb] - add r7, sp, #0x20 -_02021F68: - mov r0, r7 - bl sub_0202065C - cmp r0, #0 - beq _02022010 - cmp r0, #0x5b - bne _02021F68 - ldr r8, [sp, #0x20] - add r1, r8, #1 - str r1, [sp, #0x20] -_02021F8C: - mov r0, r1 - add r1, r1, #1 - str r1, [sp, #0x20] - ldrb r0, [r0] - cmp r0, #0x5d - bne _02021F8C - mov r0, r8 - mov r1, r6 - bl StrcmpTag - cmp r0, #0 - bne _02021FCC - mov r0, r8 - mov r1, r5 - bl StrcmpTag - cmp r0, #0 - beq _02021FF0 -_02021FCC: - ldr r0, [sp, #0x20] - ldrb r0, [r0] - cmp r0, #0xd - cmpne r0, #0xa - ldreq r0, [sp, #0x20] - addeq r0, r0, #1 - streq r0, [sp, #0x20] - ldr r0, [sp, #0x20] - b _02022014 -_02021FF0: - mov r0, r8 - mov r1, r4 - bl StrcmpTag - cmp r0, #0 - ldrne r0, [sb] - addne r0, r0, #1 - strne r0, [sb] - b _02021F68 -_02022010: - mov r0, #0 -_02022014: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02022020: .word _02099A24 -_02022024: .word _020999D4 -_02022028: .word _02099A00 - arm_func_end sub_02021F44 - - arm_func_start sub_0202202C -sub_0202202C: ; 0x0202202C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, [r1, #0x14] - str r0, [sp] -_02022040: - add r0, sp, #0 - ldr r4, [sp] - bl sub_0202065C - cmp r0, #0 - beq _020220F4 - cmp r0, #0x5b - bne _020220DC - ldr r4, [sp] - add r1, r4, #1 - str r1, [sp] -_02022068: - mov r0, r1 - add r1, r1, #1 - str r1, [sp] - ldrb r0, [r0] - cmp r0, #0x5d - bne _02022068 - ldr r1, _02022110 ; =_02099A04 - mov r0, r4 - bl StrcmpTag - cmp r0, #0 - bne _020220F4 - ldr r1, _02022114 ; =_02099A00 - mov r0, r4 - bl StrcmpTag - cmp r0, #0 - bne _02022040 - ldr r2, [sp, #0x10] - mov r0, #0x5b - add r1, r2, #1 - str r1, [sp, #0x10] - strb r0, [r2] -_020220BC: - ldr r1, [sp, #0x10] - add r0, r1, #1 - str r0, [sp, #0x10] - ldrb r0, [r4], #1 - strb r0, [r1] - cmp r0, #0x5d - bne _020220BC - b _02022040 -_020220DC: - add r0, sp, #0x10 - add r1, sp, #0 - mov r2, #0 - str r4, [sp] - bl sub_020206FC - b _02022040 -_020220F4: - ldr r0, [sp, #0x10] - mov r1, #0 - strb r1, [r0] - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02022110: .word _02099A04 -_02022114: .word _02099A00 - arm_func_end sub_0202202C - - arm_func_start sub_02022118 -sub_02022118: ; 0x02022118 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - mov r7, r2 - mov r4, #0 -_0202212C: - add r0, sp, #0x18 - bl sub_0202065C - cmp r0, #0 - cmpne r0, #0xd - cmpne r0, #0xa - cmpne r0, #0x1b - beq _020223B4 - cmp r0, #0x5b - bne _020223A8 - ldr r6, [sp, #0x18] - ldr r1, _020223C4 ; =_02099A10 - add r2, r6, #1 - mov r0, r6 - str r2, [sp, #0x18] - mov r5, #0 - bl StrcmpTag - cmp r0, #0 - bne _020221D8 - ldr r1, _020223C8 ; =_020999F4 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020221D8 - ldr r1, _020223CC ; =_02099A2C - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020221D8 - ldr r1, _020223D0 ; =_02099A14 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020221D8 - ldr r1, _020223D4 ; =_02099A18 - mov r0, r6 - bl StrcmpTag -#ifdef EUROPE - cmp r0, #0 - bne _020221D8 - ldr r1, _020225D0 ; =_02099E64_EU - mov r0, r6 - bl StrcmpTag -#endif - cmp r0, #0 - bne _020221D8 - ldr r1, _020223D8 ; =_02099A08 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - beq _02022324 -_020221D8: - ldr r1, [sp, #0x18] -_020221DC: - mov r0, r1 - add r1, r1, #1 - str r1, [sp, #0x18] - ldrb r0, [r0] - cmp r0, #0x3a - bne _02022214 - mov r5, r1 -_020221F8: - mov r0, r1 - add r1, r1, #1 - str r1, [sp, #0x18] - ldrb r0, [r0] - cmp r0, #0x5d - bne _020221F8 - b _0202221C -_02022214: - cmp r0, #0x5d - bne _020221DC -_0202221C: - ldr r1, _020223C4 ; =_02099A10 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - beq _02022250 - mov r0, r5 - bl sub_02020948 - mvn r1, #0 - cmp r0, r1 - beq _0202212C - blx r7 - add r4, r4, r0 - b _0202212C -_02022250: - ldr r1, _020223C8 ; =_020999F4 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - beq _02022280 - mov r0, r5 - bl sub_02020A4C - cmp r0, #0 - beq _0202212C - blx r8 - add r4, r4, r0 - b _0202212C -_02022280: - ldr r1, _020223CC ; =_02099A2C - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - beq _020222A4 - mov r0, r5 - bl AtoiTag - add r4, r4, r0 - b _0202212C -_020222A4: - ldr r1, _020223D0 ; =_02099A14 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - beq _020222CC - mov r0, r5 - bl AtoiTag - mov r1, #6 - mla r4, r0, r1, r4 - b _0202212C -_020222CC: - ldr r1, _020223D4 ; =_02099A18 -#ifdef EUROPE - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - addne r4, r4, #6 - bne _0202212C - ldr r1, _020225D0 ; =_02099A08 -#endif - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - addne r4, r4, #6 - bne _0202212C - mov r6, r5 -_020222E8: - ldrb r0, [r6], #1 - cmp r0, #0x3a - bne _020222E8 - mov r0, r5 - bl AtoiTag - mov r5, r0 - mov r0, r6 - bl AtoiTag - ldr r1, _020223DC ; =_020997E4 - mov r2, r5, lsl #1 - mov r5, r0 - ldrh r0, [r1, r2] - blx r8 - mla r4, r5, r0, r4 - b _0202212C -_02022324: - ldr r1, [sp, #0x18] -_02022328: - mov r0, r1 - add r1, r1, #1 - str r1, [sp, #0x18] - ldrb r0, [r0] - cmp r0, #0x5d - bne _02022328 - ldrb r0, [r6] - cmp r0, #0x41 - blo _0202212C - cmp r0, #0x5a - bhi _0202212C - ldr r1, _020223E0 ; =_02099A24 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020223B4 - ldr r1, _020223E4 ; =_020999D4 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020223B4 - ldr r1, _020223E8 ; =_02099A28 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020223B4 - ldr r1, _020223EC ; =_020999F0 - mov r0, r6 - bl StrcmpTag - cmp r0, #0 - bne _020223B4 - b _0202212C -_020223A8: - blx r8 - add r4, r4, r0 - b _0202212C -_020223B4: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020223C4: .word _02099A10 -_020223C8: .word _020999F4 -_020223CC: .word _02099A2C -_020223D0: .word _02099A14 -_020223D4: .word _02099A18 -#ifdef EUROPE -_020225D0: .word _02099E64_EU -#endif -_020223D8: .word _02099A08 -_020223DC: .word _020997E4 -_020223E0: .word _02099A24 -_020223E4: .word _020999D4 -_020223E8: .word _02099A28 -_020223EC: .word _020999F0 - arm_func_end sub_02022118 - -; https://decomp.me/scratch/Qhonx - arm_func_start PreprocessString -PreprocessString: ; 0x020223F0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c8 - sub sp, sp, #0x400 - ldr sl, [sp, #0x5f0] - mov r0, #1 - str r0, [sp, #0x10] - mov r0, r0 - str r0, [sp, #0xc] - and r0, r3, #0x40 - mov sb, r1 - str r0, [sp, #8] - and r0, r3, #0x100 - ldr r8, [sp, #0x600] - add r4, sl, sb - and fp, r3, #0x2000 - str r0, [sp, #4] -_02022434: - ldr r1, [sp, #0x5f0] - cmp r1, r4 - moveq r1, #0 - moveq r0, sb - streqb r1, [r4, #-1] - beq _0202357C - ldr r0, [sp, #0x5f8] - ldrb r5, [r0] - cmp r5, #0 - moveq r0, #0 - streqb r0, [r1] - ldreq r0, [sp, #0x5f0] - subeq r0, r0, sl - beq _0202357C - cmp r5, #0xd - cmpne r5, #0xa - bne _02022490 - ldr r0, [sp, #8] - cmp r0, #0 - bne _02023574 - mov r0, #1 - str r0, [sp, #0xc] - b _02022554 -_02022490: - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _0202251C - mov r0, #0 - str r0, [sp, #0x10] - str r0, [sp, #0xc] - cmp fp, #0 - beq _02022554 - ldr r1, [r8, #0x4c] - add r0, sp, #0x1c8 - bl sub_02023B68 - movs r6, r0 - beq _02022554 - ldr r1, _0202346C ; =_02099A5C - add r0, sp, #0x5f0 - mov r2, r4 - bl sub_02020890 - cmp r0, #0 - moveq r0, sb - beq _0202357C - add r0, sp, #0x5f0 - mov r1, r6 - mov r2, r4 - bl sub_02020890 - cmp r0, #0 - moveq r0, sb - beq _0202357C - ldr r1, _02023470 ; =_02099A64 - add r0, sp, #0x5f0 - mov r2, r4 - bl sub_02020890 - cmp r0, #0 - bne _02022554 - mov r0, sb - b _0202357C -_0202251C: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _02022554 - mov r0, #0 - cmp fp, #0 - str r0, [sp, #0xc] - beq _02022554 - ldr r1, _02023474 ; =_02099A70 - add r0, sp, #0x5f0 - mov r2, r4 - bl sub_02020890 - cmp r0, #0 - moveq r0, sb - beq _0202357C -_02022554: - cmp r5, #0x5b - bne _02023454 - ldr r5, [sp, #0x5f8] - mov r7, #0 - add r0, r5, #1 - str r0, [sp, #0x5f8] - ldrb r2, [r5, #1] - cmp r2, #0x61 - blo _0202332C - cmp r2, #0x7a - bhi _0202332C - str r0, [sp, #0xb4] - mov r6, #1 - add r1, sp, #0xb4 -_0202258C: - mov r2, r0 - add r0, r0, #1 - str r0, [sp, #0x5f8] - ldrb r2, [r2] - cmp r2, #0x5d - beq _020225B4 - cmp r2, #0x3a - streq r0, [r1, r6, lsl #2] - addeq r6, r6, #1 - b _0202258C -_020225B4: - ldr r0, [sp, #0xb4] - ldrb r1, [r0] - sub r1, r1, #0x61 - cmp r1, #0x16 - addls pc, pc, r1, lsl #2 - b _020232C8 -_020225CC: ; jump table - b _02022628 ; case 0 - b _020226BC ; case 1 - b _0202274C ; case 2 - b _02022838 ; case 3 - b _02022908 ; case 4 - b _02022994 ; case 5 - b _020229F0 ; case 6 - b _02022AD8 ; case 7 - b _02022B28 ; case 8 - b _020232C8 ; case 9 - b _02022B8C ; case 10 - b _020232C8 ; case 11 - b _02022C64 ; case 12 - b _02022BE4 ; case 13 - b _020232C8 ; case 14 - b _02022D5C ; case 15 - b _020232C8 ; case 16 - b _02022E30 ; case 17 - b _02022EC0 ; case 18 - b _02022FA0 ; case 19 - b _020232C8 ; case 20 - b _0202313C ; case 21 - b _0202323C ; case 22 -_02022628: - ldr r1, _02023478 ; =_02099A74 - bl StrcmpTag - cmp r0, #0 - beq _02022658 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_0202494C - mov r7, r0 - b _020232F0 -_02022658: - ldr r0, [sp, #0xb4] - ldr r1, _0202347C ; =_02099A7C - bl StrcmpTag - cmp r0, #0 - beq _02022694 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r2, r8, r0, lsl #2 - ldr r1, [r2, #0x10] - ldr r2, [r2, #0x24] - add r0, sp, #0x1c8 - mov r3, #0 - bl sub_020241DC - mov r7, r0 - b _020232F0 -_02022694: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0xd8] - ldr ip, [r1, #0xd4] -#else - ldr r2, [r1, #0x50] - ldr ip, [r1, #0x4c] -#endif - str r2, [sp, #0xb0] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0xac - mov r2, r5 - str ip, [sp, #0xac] - bl Debug_FatalError -_020226BC: - ldr r0, [sp, #0xb4] - ldr r1, _02023488 ; =_02099A84 - bl StrcmpTag - cmp r0, #0 - beq _020226F0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl BankQuantityToString - mov r7, r0 - b _020232F0 -_020226F0: - ldr r0, [sp, #0xb4] - ldr r1, _0202348C ; =_02099A8C - bl StrcmpTag - cmp r0, #0 - beq _02022724 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl MoneyQuantityToString__02023B58 - mov r7, r0 - b _020232F0 -_02022724: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] - ldr r2, [r1, #0xb8] - ldr ip, [r1, #0xb4] - str r2, [sp, #0xa8] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0xa4 - mov r2, r5 - str ip, [sp, #0xa4] - bl Debug_FatalError -_0202274C: - ldr r0, [sp, #0xb4] - ldr r1, _02023490 ; =_02099A98 - bl StrcmpTag - cmp r0, #0 - beq _02022774 - ldr r1, [sp, #0xb8] - add r0, sp, #0x1c8 - bl sub_020240B0 - mov r7, r0 - b _020232F0 -_02022774: - ldr r0, [sp, #0xb4] - ldr r1, _02023494 ; =_02099AA0 - bl StrcmpTag - cmp r0, #0 - beq _020227A8 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024C18 - mov r7, r0 - b _020232F0 -_020227A8: - ldr r0, [sp, #0xb4] - ldr r1, _02023498 ; =_02099AA4 - bl StrcmpTag - cmp r0, #0 - beq _020227D0 - ldr r1, [sp, #0xb8] - add r0, sp, #0x1c8 - bl sub_02024114 - mov r7, r0 - b _020232F0 -_020227D0: - ldr r0, [sp, #0xb4] - ldr r1, _0202349C ; =_02099AAC - bl StrcmpTag - cmp r0, #0 - beq _020227F8 - ldr r1, [sp, #0xb8] - add r0, sp, #0x1c8 - bl sub_02024178 - mov r7, r0 - b _020232F0 -_020227F8: - ldr r0, [sp, #0xb4] - ldr r1, _020234A0 ; =_02099AB8 - bl StrcmpTag - cmp r0, #0 - ldrne r7, _020234A4 ; =_02099AC0 - bne _020232F0 - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] - ldr r2, [r1, #0xc8] - ldr ip, [r1, #0xc4] - str r2, [sp, #0xa0] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x9c - mov r2, r5 - str ip, [sp, #0x9c] - bl Debug_FatalError -_02022838: - ldr r0, [sp, #0xb4] - ldr r1, _020234A8 ; =_02099AC8 - bl StrcmpTag - cmp r0, #0 - beq _02022870 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r2, [r0, #0x24] - ldr r1, _020234AC ; =_02099AD0 - add r0, sp, #0x1c8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_02022870: - ldr r0, [sp, #0xb4] - ldr r1, _020234B0 ; =_02099AD4 - bl StrcmpTag - cmp r0, #0 - beq _020228A8 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r2, [r0, #0x24] - ldr r1, _020234B4 ; =_02099AE0 - add r0, sp, #0x1c8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_020228A8: - ldr r0, [sp, #0xb4] - ldr r1, _020234B8 ; =_02099AF0 - bl StrcmpTag - cmp r0, #0 - beq _020228E0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - ldr r2, [r0, #0x24] - add r0, sp, #0x1c8 - bl sub_020245D0 - mov r7, r0 - b _020232F0 -_020228E0: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0xf8] - ldr ip, [r1, #0xf4] -#else - ldr r2, [r1, #0xe0] - ldr ip, [r1, #0xdc] -#endif - str r2, [sp, #0x98] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x94 - mov r2, r5 - str ip, [sp, #0x94] - bl Debug_FatalError -_02022908: - ldr r0, [sp, #0xb4] - ldr r1, _020234BC ; =_02099AF8 - bl StrcmpTag - cmp r0, #0 - beq _02022938 - ldr r1, [r8, #0x34] - add r0, sp, #0x1c8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl sub_02024E34 - mov r7, r0 - b _020232F0 -_02022938: - ldr r0, [sp, #0xb4] - ldr r1, _020234C0 ; =_02099B04 - bl StrcmpTag - cmp r0, #0 - beq _0202296C - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl ExpQuantityToString - mov r7, r0 - b _020232F0 -_0202296C: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x110] - ldr ip, [r1, #0x10c] -#else - ldr r2, [r1, #0x108] - ldr ip, [r1, #0x104] -#endif - str r2, [sp, #0x90] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x8c - mov r2, r5 - str ip, [sp, #0x8c] - bl Debug_FatalError -_02022994: - ldr r0, [sp, #0xb4] - ldr r1, _020234C4 ; =_02099B10 - bl StrcmpTag - cmp r0, #0 - beq _020229C8 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl sub_02024598 - mov r7, r0 - b _020232F0 -_020229C8: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #8] - ldr ip, [r1, #4] -#else - ldr r2, [r1, #0x20] - ldr ip, [r1, #0x1c] -#endif - str r2, [sp, #0x88] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x84 - mov r2, r5 - str ip, [sp, #0x84] - bl Debug_FatalError -_020229F0: - ldr r0, [sp, #0xb4] - ldr r1, _020234C8 ; =_02099B18 - bl StrcmpTag - cmp r0, #0 - beq _02022A14 - add r0, sp, #0x1c8 - bl GetBagNameString - mov r7, r0 - b _020232F0 -_02022A14: - ldr r0, [sp, #0xb4] - ldr r1, _020234CC ; =_02099B24 - bl StrcmpTag - cmp r0, #0 - beq _02022A48 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024D7C - mov r7, r0 - b _020232F0 -_02022A48: - ldr r0, [sp, #0xb4] - ldr r1, _020234D0 ; =_02099B2C - bl StrcmpTag - cmp r0, #0 - beq _02022A7C - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl sub_020238D0 - mov r7, r0 - b _020232F0 -_02022A7C: - ldr r0, [sp, #0xb4] - ldr r1, _020234D4 ; =_02099B34 - bl StrcmpTag - cmp r0, #0 - beq _02022AB0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x24] - add r0, sp, #0x1c8 - bl MoneyQuantityToString__02023B30 - mov r7, r0 - b _020232F0 -_02022AB0: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x10] - ldr ip, [r1, #0xc] -#else - ldr r2, [r1, #0x18] - ldr ip, [r1, #0x14] -#endif - str r2, [sp, #0x80] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x7c - mov r2, r5 - str ip, [sp, #0x7c] - bl Debug_FatalError -_02022AD8: - ldr r0, [sp, #0xb4] - ldr r1, _020234D8 ; =_02099B40 - bl StrcmpTag - cmp r0, #0 - beq _02022B00 - add r0, sp, #0x1c8 - mov r1, #0x3c - bl sub_02023DC0 - mov r7, r0 - b _020232F0 -_02022B00: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x20] - ldr ip, [r1, #0x1c] -#else - ldr r2, [r1, #0x10] - ldr ip, [r1, #0xc] -#endif - str r2, [sp, #0x78] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x74 - mov r2, r5 - str ip, [sp, #0x74] - bl Debug_FatalError -_02022B28: - ldr r0, [sp, #0xb4] - ldr r1, _020234DC ; =_02099B48 - bl StrcmpTag - cmp r0, #0 - beq _02022B64 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r3, r8, r0, lsl #2 - ldr r1, [r3, #0x10] - ldr r2, [r3, #0x24] - ldr r3, [r3, #0x28] - add r0, sp, #0x1c8 - bl sub_020241DC - mov r7, r0 - b _020232F0 -_02022B64: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] - ldr r2, [r1, #0x28] - ldr ip, [r1, #0x24] - str r2, [sp, #0x70] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x6c - mov r2, r5 - str ip, [sp, #0x6c] - bl Debug_FatalError -_02022B8C: - ldr r0, [sp, #0xb4] - ldr r1, _020234E0 ; =_02099B50 - bl StrcmpTag - cmp r0, #0 - beq _02022BBC - ldr r0, [sp, #0xb8] - bl AtoiTag - ldr r1, [r8, r0, lsl #2] - add r0, sp, #0x1c8 - bl sub_02023920 - mov r7, r0 - b _020232F0 -_02022BBC: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x50] - ldr ip, [r1, #0x4c] -#else - ldr r2, [r1, #0x40] - ldr ip, [r1, #0x3c] -#endif - str r2, [sp, #0x68] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x64 - mov r2, r5 - str ip, [sp, #0x64] - bl Debug_FatalError -_02022BE4: - ldr r0, [sp, #0xb4] - ldr r1, _020234E4 ; =_02099B58 - bl StrcmpTag - cmp r0, #0 - beq _02022C14 - ldr r0, [sp, #0xb8] - bl AtoiTag - ldr r1, [r8, r0, lsl #2] - add r0, sp, #0x1c8 - bl sub_02023B68 - mov r7, r0 - b _020232F0 -_02022C14: - ldr r0, [sp, #0xb4] - ldr r1, _020234E8 ; =_02099B60 - bl StrcmpTag - cmp r0, #0 - beq _02022C3C - add r0, sp, #0x1c8 - mov r1, #2 - bl GetCurrentTeamNameString - mov r7, r0 - b _020232F0 -_02022C3C: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0xe0] - ldr ip, [r1, #0xdc] -#else - ldr r2, [r1, #0xa8] - ldr ip, [r1, #0xa4] -#endif - str r2, [sp, #0x60] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x5c - mov r2, r5 - str ip, [sp, #0x5c] - bl Debug_FatalError -_02022C64: - ldr r0, [sp, #0xb4] - ldr r1, _020234EC ; =_02099B6C - bl StrcmpTag - cmp r0, #0 - beq _02022C9C - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - ldr r2, [r0, #0x24] - add r0, sp, #0x1c8 - bl sub_020242F8 - mov r7, r0 - b _020232F0 -_02022C9C: - ldr r0, [sp, #0xb4] - ldr r1, _020234F0 ; =_02099B74 - bl StrcmpTag - cmp r0, #0 - beq _02022CD4 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r2, [r0, #0x24] - ldr r1, _020234F4 ; =_02099B7C - add r0, sp, #0x1c8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_02022CD4: - ldr r0, [sp, #0xb4] - ldr r1, _020234F8 ; =_02099B8C - bl StrcmpTag - cmp r0, #0 - beq _02022D04 - ldr r1, [r8, #0x34] - add r0, sp, #0x1c8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl SetStringAccuracy - mov r7, r0 - b _020232F0 -_02022D04: - ldr r0, [sp, #0xb4] - ldr r1, _020234FC ; =_02099B9C - bl StrcmpTag - cmp r0, #0 - beq _02022D34 - ldr r1, [r8, #0x34] - add r0, sp, #0x1c8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl SetStringPower - mov r7, r0 - b _020232F0 -_02022D34: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0xd0] - ldr ip, [r1, #0xcc] -#else - ldr r2, [r1, #0xc0] - ldr ip, [r1, #0xbc] -#endif - str r2, [sp, #0x58] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x54 - mov r2, r5 - str ip, [sp, #0x54] - bl Debug_FatalError -_02022D5C: - ldr r0, [sp, #0xb4] - ldr r1, _02023500 ; =_02099BA8 - bl StrcmpTag - cmp r0, #0 - beq _02022D84 - add r0, sp, #0x1c8 - mov r1, #0x3d - bl sub_02023DC0 - mov r7, r0 - b _020232F0 -_02022D84: - ldr r0, [sp, #0xb4] - ldr r1, _02023504 ; =_02099BB0 - bl StrcmpTag - cmp r0, #0 - beq _02022DAC - add r0, sp, #0x1c8 - mov r1, #0x3e - bl sub_02023DC0 - mov r7, r0 - b _020232F0 -_02022DAC: - ldr r0, [sp, #0xb4] - ldr r1, _02023508 ; =_02099BBC - bl StrcmpTag - cmp r0, #0 - beq _02022DD4 - add r0, sp, #0x1c8 - mov r1, #0x3f - bl sub_02023DC0 - mov r7, r0 - b _020232F0 -_02022DD4: - ldr r0, [sp, #0xb4] - ldr r1, _0202350C ; =_02099BC4 - bl StrcmpTag - cmp r0, #0 - beq _02022E08 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024A68 - mov r7, r0 - b _020232F0 -_02022E08: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x118] - ldr ip, [r1, #0x114] -#else - ldr r2, [r1, #0xf0] - ldr ip, [r1, #0xec] -#endif - str r2, [sp, #0x50] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x4c - mov r2, r5 - str ip, [sp, #0x4c] - bl Debug_FatalError -_02022E30: - ldr r0, [sp, #0xb4] - ldr r1, _02023510 ; =_02099BCC - bl StrcmpTag - cmp r0, #0 - beq _02022E64 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl GetRankString - mov r7, r0 - b _020232F0 -_02022E64: - ldr r0, [sp, #0xb4] - ldr r1, _02023514 ; =_02099BD4 - bl StrcmpTag - cmp r0, #0 - beq _02022E98 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024B48 - mov r7, r0 - b _020232F0 -_02022E98: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r2, [r1, #0x18] - ldr ip, [r1, #0x14] -#else - ldr r2, [r1, #8] - ldr ip, [r1, #4] -#endif - str r2, [sp, #0x48] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x44 - mov r2, r5 - str ip, [sp, #0x44] - bl Debug_FatalError -_02022EC0: - ldr r0, [sp, #0xb4] - ldr r1, _02023518 ; =_02099BDC - bl StrcmpTag - cmp r0, #0 - beq _02022EF8 - ldr r0, [sp, #0xb8] - bl AtoiTag - mov r2, #0 - orr r1, r0, #0x50000 - add r0, sp, #0x1c8 - mov r3, r2 - bl sub_020241DC - mov r7, r0 - b _020232F0 -_02022EF8: - ldr r0, [sp, #0xb4] - ldr r1, _0202351C ; =_02099BE4 - bl StrcmpTag - cmp r0, #0 - ldrne r7, [r8, #0x38] - bne _020232F0 - ldr r0, [sp, #0xb4] - ldr r1, _02023520 ; =_02099BEC - bl StrcmpTag - cmp r0, #0 - beq _02022F40 - cmp r6, #2 - bne _020232F0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r7, [r0, #0x38] - b _020232F0 -_02022F40: - ldr r0, [sp, #0xb4] - ldr r1, _02023524 ; =_02099BF4 - bl StrcmpTag - cmp r0, #0 - beq _02022F78 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r2, [r0, #0x24] - ldr r1, _02023528 ; =_02099BFC - add r0, sp, #0x1c8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_02022F78: - ldr r1, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] - ldr r2, [r1, #0x30] - ldr ip, [r1, #0x2c] - str r2, [sp, #0x40] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x3c - mov r2, r5 - str ip, [sp, #0x3c] - bl Debug_FatalError -_02022FA0: - ldr r0, [sp, #0xb4] - ldr r1, _0202352C ; =_02099C0C - bl StrcmpTag - cmp r0, #0 - beq _02022FD4 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024B94 - mov r7, r0 - b _020232F0 -_02022FD4: - ldr r0, [sp, #0xb4] - ldr r1, _02023530 ; =_02099C14 - bl StrcmpTag - cmp r0, #0 - beq _02023008 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_020244F4 - mov r7, r0 - b _020232F0 -_02023008: - ldr r0, [sp, #0xb4] - ldr r1, _02023534 ; =_02099C1C - bl StrcmpTag - cmp r0, #0 - beq _0202303C - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024D48 - mov r7, r0 - b _020232F0 -_0202303C: - ldr r0, [sp, #0xb4] - ldr r1, _02023538 ; =_02099C24 - bl StrcmpTag - cmp r0, #0 - beq _02023094 - cmp r6, #1 - bne _0202306C - add r0, sp, #0x1c8 - mov r1, #0 - bl GetCurrentTeamNameString - mov r7, r0 - b _020232F0 -_0202306C: - cmp r6, #2 - bne _020232F0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl GetCurrentTeamNameString - mov r7, r0 - b _020232F0 -_02023094: - ldr r0, [sp, #0xb4] - ldr r1, _0202353C ; =_02099C2C - bl StrcmpTag - cmp r0, #0 - beq _02023114 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r5, [r0, #0x24] - mov r1, #0xe10 - mov r0, r5 - bl _u32_div_f - mov r6, r0 - mov r0, r5 - mov r1, #0xe10 - bl _u32_div_f - mov r5, r1 - mov r0, r5 - mov r1, #0x3c - bl _u32_div_f - mov r7, r0 - mov r0, r5 - mov r1, #0x3c - bl _u32_div_f - str r1, [sp] - ldr r1, _02023540 ; =_02099C34 - mov r2, r6 - mov r3, r7 - add r0, sp, #0x1c8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_02023114: - ldr r0, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r1, [r0, #0xa0] - ldr r2, [r0, #0x9c] -#else - ldr r1, [r0, #0xb0] - ldr r2, [r0, #0xac] -#endif - str r1, [sp, #0x38] - str r2, [sp, #0x34] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x34 - mov r2, r5 - bl Debug_FatalError -_0202313C: - ldr r0, [sp, #0xb4] - ldr r1, _02023544 ; =_02099C44 - bl StrcmpTag - cmp r0, #0 - beq _02023180 - ldr r0, [sp, #0xb8] - bl AtoiTag - mov r5, r0 - ldr r0, [sp, #0xbc] - bl AtoiTag - add r1, r8, r5, lsl #2 - mov r2, r0 - ldr r1, [r1, #0x24] - add r0, sp, #0x1c8 - bl sub_0202372C - mov r7, r0 - b _020232F0 -_02023180: - ldr r0, [sp, #0xb4] - ldr r1, _02023548 ; =_02099C4C - bl StrcmpTag - cmp r0, #0 - beq _020231D8 - ldr r0, [sp, #0xb8] - bl AtoiTag - mov r5, r0 - ldr r0, [sp, #0xbc] - bl AtoiTag - add r1, r8, r5, lsl #2 - ldr r3, [r1, #0x24] - mov r2, r0 - ldr r1, _0202354C ; =_02099C54 - add r0, sp, #0xc8 - bl SprintfStatic__02023590 - ldr r1, _02023550 ; =_02099C5C - add r0, sp, #0x1c8 - add r2, sp, #0xc8 - bl SprintfStatic__02023590 - add r7, sp, #0x1c8 - b _020232F0 -_020231D8: - ldr r0, [sp, #0xb4] - ldr r1, _02023554 ; =_02099C68 - bl StrcmpTag - cmp r0, #0 - beq _02023214 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r2, r8, r0, lsl #2 - ldr r1, [r2, #0x10] - ldr r2, [r2, #0x24] - add r0, sp, #0x1c8 - mov r3, #0 - bl sub_020241DC - mov r7, r0 - b _020232F0 -_02023214: - ldr r0, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r1, [r0, #0xc0] - ldr r2, [r0, #0xbc] -#else - ldr r1, [r0, #0xd0] - ldr r2, [r0, #0xcc] -#endif - str r1, [sp, #0x30] - str r2, [sp, #0x2c] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x2c - mov r2, r5 - bl Debug_FatalError -_0202323C: - ldr r0, [sp, #0xb4] - ldr r1, _02023558 ; =_02099C70 - bl StrcmpTag - cmp r0, #0 - beq _0202326C - ldr r0, [sp, #0xb8] - bl AtoiTag - ldr r1, [r8, r0, lsl #2] - add r0, sp, #0x1c8 - bl sub_02024AA8 - mov r7, r0 - b _020232F0 -_0202326C: - ldr r0, [sp, #0xb4] - ldr r1, _0202355C ; =_02099C78 - bl StrcmpTag - cmp r0, #0 - beq _020232A0 - ldr r0, [sp, #0xb8] - bl AtoiTag - add r0, r8, r0, lsl #2 - ldr r1, [r0, #0x10] - add r0, sp, #0x1c8 - bl sub_02024BD8 - mov r7, r0 - b _020232F0 -_020232A0: - ldr r0, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] - ldr r1, [r0, #0x38] - ldr r2, [r0, #0x34] - str r1, [sp, #0x28] - str r2, [sp, #0x24] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x24 - mov r2, r5 - bl Debug_FatalError -_020232C8: - ldr r0, _02023480 ; =_020997E4 - ldr r3, [sp, #0xb4] -#ifdef EUROPE - ldr r1, [r0, #0xa8] - ldr r2, [r0, #0xa4] -#else - ldr r1, [r0, #0xd8] - ldr r2, [r0, #0xd4] -#endif - str r1, [sp, #0x20] - str r2, [sp, #0x1c] - ldr r1, _02023484 ; =_020999B0 - add r0, sp, #0x1c - mov r2, r5 - bl Debug_FatalError -_020232F0: - cmp r7, #0 - beq _02022434 -_020232F8: - ldr r2, [sp, #0x5f0] - cmp r2, r4 - moveq r1, #0 - moveq r0, sb - streqb r1, [r4, #-1] - beq _0202357C - ldrb r1, [r7], #1 - cmp r1, #0 - beq _02022434 - add r0, r2, #1 - str r0, [sp, #0x5f0] - strb r1, [r2] - b _020232F8 -_0202332C: - cmp r2, #0x41 - blo _0202342C - cmp r2, #0x5a - bhi _0202342C - ldr r1, _02023560 ; =_02099A24 - add r0, r5, #1 - bl StrcmpTag - cmp r0, #0 - bne _02023364 - ldr r1, _02023564 ; =_020999D4 - add r0, r5, #1 - bl StrcmpTag - cmp r0, #0 - beq _02023390 -_02023364: - ldr r0, [sp, #0x5f8] - ldrb r0, [r0] - cmp r0, #0xd - cmpne r0, #0xa - ldreq r0, [sp, #0x5f8] - addeq r0, r0, #1 - streq r0, [sp, #0x5f8] - mov r0, #1 - str r0, [sp, #0x10] - str r0, [sp, #0xc] - b _020233D8 -_02023390: - ldr r1, _02023568 ; =_02099A28 - add r0, r5, #1 - bl StrcmpTag - cmp r0, #0 - beq _020233BC - ldr r0, [sp, #8] - cmp r0, #0 - bne _02023574 - mov r0, #1 - str r0, [sp, #0xc] - b _020233D8 -_020233BC: - ldr r1, _0202356C ; =_02099A04 - add r0, r5, #1 - bl StrcmpTag - cmp r0, #0 - ldrne r0, [sp, #4] - cmpne r0, #0 - bne _02023574 -_020233D8: - ldr r2, [sp, #0x5f0] - mov r0, #0x5b - add r1, r2, #1 - str r1, [sp, #0x5f0] - strb r0, [r2] -_020233EC: - ldr r3, [sp, #0x5f0] - cmp r3, r4 - moveq r1, #0 - moveq r0, sb - streqb r1, [r4, #-1] - beq _0202357C - ldr r2, [sp, #0x5f8] - add r0, r3, #1 - add r1, r2, #1 - str r1, [sp, #0x5f8] - ldrb r1, [r2] - str r0, [sp, #0x5f0] - strb r1, [r3] - cmp r1, #0x5d - beq _02022434 - b _020233EC -_0202342C: - ldr r1, _02023480 ; =_020997E4 - add r0, sp, #0x14 -#ifdef EUROPE - ldr r3, [r1, #0xb0] - ldr r1, [r1, #0xac] -#else - ldr r3, [r1, #0x110] - ldr r1, [r1, #0x10c] -#endif - str r3, [sp, #0x18] - str r1, [sp, #0x14] - ldr r1, _02023570 ; =_02099C84 - mov r3, r2 - str r5, [sp] - bl Debug_FatalError -_02023454: - add r1, sp, #0x500 - add r0, sp, #0x5f0 - add r1, r1, #0xf8 - mov r2, r4 - bl sub_020206FC - b _02022434 - .align 2, 0 -_0202346C: .word _02099A5C -_02023470: .word _02099A64 -_02023474: .word _02099A70 -_02023478: .word _02099A74 -_0202347C: .word _02099A7C -_02023480: .word _020997E4 -_02023484: .word _020999B0 -_02023488: .word _02099A84 -_0202348C: .word _02099A8C -_02023490: .word _02099A98 -_02023494: .word _02099AA0 -_02023498: .word _02099AA4 -_0202349C: .word _02099AAC -_020234A0: .word _02099AB8 -_020234A4: .word _02099AC0 -_020234A8: .word _02099AC8 -_020234AC: .word _02099AD0 -_020234B0: .word _02099AD4 -_020234B4: .word _02099AE0 -_020234B8: .word _02099AF0 -_020234BC: .word _02099AF8 -_020234C0: .word _02099B04 -_020234C4: .word _02099B10 -_020234C8: .word _02099B18 -_020234CC: .word _02099B24 -_020234D0: .word _02099B2C -_020234D4: .word _02099B34 -_020234D8: .word _02099B40 -_020234DC: .word _02099B48 -_020234E0: .word _02099B50 -_020234E4: .word _02099B58 -_020234E8: .word _02099B60 -_020234EC: .word _02099B6C -_020234F0: .word _02099B74 -_020234F4: .word _02099B7C -_020234F8: .word _02099B8C -_020234FC: .word _02099B9C -_02023500: .word _02099BA8 -_02023504: .word _02099BB0 -_02023508: .word _02099BBC -_0202350C: .word _02099BC4 -_02023510: .word _02099BCC -_02023514: .word _02099BD4 -_02023518: .word _02099BDC -_0202351C: .word _02099BE4 -_02023520: .word _02099BEC -_02023524: .word _02099BF4 -_02023528: .word _02099BFC -_0202352C: .word _02099C0C -_02023530: .word _02099C14 -_02023534: .word _02099C1C -_02023538: .word _02099C24 -_0202353C: .word _02099C2C -_02023540: .word _02099C34 -_02023544: .word _02099C44 -_02023548: .word _02099C4C -_0202354C: .word _02099C54 -_02023550: .word _02099C5C -_02023554: .word _02099C68 -_02023558: .word _02099C70 -_0202355C: .word _02099C78 -_02023560: .word _02099A24 -_02023564: .word _020999D4 -_02023568: .word _02099A28 -_0202356C: .word _02099A04 -_02023570: .word _02099C84 -_02023574: - ldr r0, [sp, #0x5f0] - sub r0, r0, sl -_0202357C: - add sp, sp, #0x1c8 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end PreprocessString - - arm_func_start SprintfStatic__02023590 -SprintfStatic__02023590: ; 0x02023590 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02023590 - - arm_func_start PreprocessStringFromId -PreprocessStringFromId: ; 0x020235B8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r0, r2 - mov r5, r1 - mov r4, r3 - bl StringFromId - ldr ip, [sp, #0x18] - mov r2, r0 - mov r0, r6 - mov r1, r5 - mov r3, r4 - str ip, [sp] - bl PreprocessString - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end PreprocessStringFromId - - arm_func_start StrcmpTagVeneer -StrcmpTagVeneer: ; 0x020235F8 - ldr ip, _02023600 ; =StrcmpTag - bx ip - .align 2, 0 -_02023600: .word StrcmpTag - arm_func_end StrcmpTagVeneer - - arm_func_start AtoiTagVeneer -AtoiTagVeneer: ; 0x02023604 - ldr ip, _0202360C ; =AtoiTag - bx ip - .align 2, 0 -_0202360C: .word AtoiTag - arm_func_end AtoiTagVeneer - -#ifdef EUROPE - arm_func_start sub_0202380C_EU -sub_0202380C_EU: ; 0x0202380C - ldr ip, _02023814 ; =sub_02020A4C - bx ip - .align 2, 0 -_02023814: .word sub_02020A4C - arm_func_end sub_0202380C_EU -#endif - - arm_func_start sub_02023610 -sub_02023610: ; 0x02023610 - stmdb sp!, {r3, r4, r5, r6, r7, lr} -#ifdef EUROPE - bl GetLanguageType - cmp r0, #5 - moveq r1, #1 - ldr r0, _02023864 ; =_020B05BC_EU - movne r1, #0 -#endif - ldr r6, _02023644 ; =_022A5048 - ldr r5, _02023648 ; =_02099CA0 - mov r7, #0 -#ifdef EUROPE - strb r1, [r0] -#endif - mov r4, #1 -_02023624: - mov r2, r4 - add r0, r6, r7, lsl #2 - add r1, r5, r7 - bl StrncpySimpleNoPadSafe - add r7, r7, #1 - cmp r7, #3 - blt _02023624 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -#ifdef EUROPE -_02023864: .word _020B05BC_EU -#endif -_02023644: .word _022A5048 -_02023648: .word _02099CA0 - arm_func_end sub_02023610 - - arm_func_start sub_0202364C -sub_0202364C: ; 0x02023610 - ldrb r2, [r1], #1 - ldrb r3, [r0], #1 - cmp r2, #0 - bne _02023674 - cmp r3, #0 - cmpne r3, #0x3a - cmpne r3, #0x5d - moveq r0, #1 - movne r0, #0 - bx lr -_02023674: - cmp r3, #0 - moveq r0, #0 - bxeq lr - cmp r3, r2 - beq sub_0202364C - mov r0, #0 - bx lr - arm_func_end sub_0202364C - - arm_func_start InitPreprocessorArgs -InitPreprocessorArgs: ; 0x02023690 - mov r1, #0x60000 - str r1, [r0, #0x4c] - mov r1, #0 - mov r3, r1 -_020236A0: - str r3, [r0, r1, lsl #2] - add r1, r1, #1 - cmp r1, #4 - blt _020236A0 - mov r2, #0 -_020236B4: - add r1, r0, r3, lsl #2 - add r3, r3, #1 - str r2, [r1, #0x10] - cmp r3, #5 - blt _020236B4 - mov r3, #0 -_020236CC: - add r1, r0, r2, lsl #2 - add r2, r2, #1 - str r3, [r1, #0x24] - cmp r2, #5 - blt _020236CC - mov r2, #0 -_020236E4: - add r1, r0, r3, lsl #2 - add r3, r3, #1 - str r2, [r1, #0x38] - cmp r3, #5 - blt _020236E4 - bx lr - arm_func_end InitPreprocessorArgs - - arm_func_start CopyOrInitPreprocessorArgs -CopyOrInitPreprocessorArgs: ; 0x020236FC - stmdb sp!, {r4, lr} - movs lr, r1 - mov r4, r0 - beq _02023724 - mov ip, #5 -_02023710: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02023710 - ldmia sp!, {r4, pc} -_02023724: - bl InitPreprocessorArgs - ldmia sp!, {r4, pc} - arm_func_end CopyOrInitPreprocessorArgs - - arm_func_start sub_0202372C -sub_0202372C: ; 0x0202372C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x100 - mov r3, r1 - mov r5, r0 - mov r4, r2 - ldr r1, _02023784 ; =_02099D0C - add r0, sp, #0 - mov r2, r3 - bl SprintfStatic__0202378C - add r0, sp, #0 - bl strlen - mov r2, r0 - cmp r2, r4 - movgt r4, r2 - ldr r1, _02023788 ; =_02099D10 - add r3, sp, #0 - mov r0, r5 - sub r2, r4, r2 - bl SprintfStatic__0202378C - mov r0, r5 - add sp, sp, #0x100 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef EUROPE -_02023784: .word _0209A230_EU -#else -_02023784: .word _02099D0C -#endif -_02023788: .word _02099D10 - arm_func_end sub_0202372C - - arm_func_start SprintfStatic__0202378C -SprintfStatic__0202378C: ; 0x0202378C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__0202378C - - arm_func_start QuantityToString -QuantityToString: ; 0x020237B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x100 -#ifdef EUROPE - mov r4, r1 - mov r8, r0 - mov r7, r2 - ldr r1, _020238C8 ; =_02099D0C - add r0, sp, #0 - mov r2, r4 - mov r6, r3 - bl SprintfStatic__0202378C - add r0, sp, #0 - bl strlen - mov r5, r0 - sub r0, r5, #1 - mov r1, #3 - bl _s32_div_f - mov r4, r0 - cmp r7, #0 - ble _02023A38 - cmp r5, r7 - movgt r7, r5 - sub r0, r7, #1 - mov r1, #3 - bl _s32_div_f -_02023A38: - ldr r1, _02023B14 ; =_020B05BC_EU - ldrb r1, [r1] - cmp r1, #0 - beq _02023A50 - cmp r5, #4 - movle r4, #0 -_02023A50: - cmp r4, #0 - ble _02023AD0 - add r2, sp, #0 - sub r1, r5, #1 - add sb, r2, r1 - mov lr, #0 - add sl, sb, r4, lsl #2 - mov ip, lr - strb lr, [sl, #1] - mov r3, #0x5d - mov r2, #0x50 - mov fp, #0x5b - b _02023AC8 -_02023A84: - cmp lr, #3 - blt _02023AB8 - strb r3, [sl] - cmp r6, #0 - movne r1, #0x47 - strb r2, [sl, #-1] - moveq r1, #0x4d - strb r1, [sl, #-2] - strb fp, [sl, #-3] - sub sl, sl, #4 - cmp sl, sb - beq _02023AD0 - mov lr, #0 -_02023AB8: - ldrb r1, [sb], #-1 - add lr, lr, #1 - add ip, ip, #1 - strb r1, [sl], #-1 -_02023AC8: - cmp ip, r5 - blt _02023A84 -_02023AD0: - cmp r7, #0 - ble _02023AF8 - sub r1, r7, r5 - add r2, r0, r1 - ldr r1, _020238CC ; =_02099D10 - add r3, sp, #0 - mov r0, r8 - sub r2, r2, r4 - bl SprintfStatic__0202378C - b _02023B04 -_02023AF8: - add r1, sp, #0 - mov r0, r8 - bl strcpy -_02023B04: - mov r0, r8 -#else - mov r3, r1 - mov r7, r0 - mov r6, r2 - ldr r1, _020238C8 ; =_02099D0C - add r0, sp, #0 - mov r2, r3 - bl SprintfStatic__0202378C - add r0, sp, #0 - bl strlen - mov r5, r0 - sub r0, r5, #1 - mov r1, #3 - bl _s32_div_f - mov r4, r0 - cmp r6, #0 - ble _02023810 - cmp r5, r6 - movgt r6, r5 - sub r0, r6, #1 - mov r1, #3 - bl _s32_div_f -_02023810: - cmp r4, #0 - ble _02023888 - add r2, sp, #0 - sub r1, r5, #1 - add sb, r2, r1 - mov r8, #0 - add sl, sb, r4, lsl #2 - mov lr, r8 - strb r8, [sl, #1] - mov ip, #0x5d - mov r3, #0x50 - mov r2, #0x4d - mov fp, #0x5b - b _02023880 -_02023848: - cmp r8, #3 - blt _02023870 - strb ip, [sl] - strb r3, [sl, #-1] - strb r2, [sl, #-2] - strb fp, [sl, #-3] - sub sl, sl, #4 - cmp sl, sb - beq _02023888 - mov r8, #0 -_02023870: - ldrb r1, [sb], #-1 - add r8, r8, #1 - add lr, lr, #1 - strb r1, [sl], #-1 -_02023880: - cmp lr, r5 - blt _02023848 -_02023888: - cmp r6, #0 - ble _020238B0 - sub r1, r6, r5 - add r2, r0, r1 - ldr r1, _020238CC ; =_02099D10 - add r3, sp, #0 - mov r0, r7 - sub r2, r2, r4 - bl SprintfStatic__0202378C - b _020238BC -_020238B0: - add r1, sp, #0 - mov r0, r7 - bl strcpy -_020238BC: - mov r0, r7 -#endif - add sp, sp, #0x100 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef EUROPE -_020238C8: .word _0209A230_EU -_02023B14: .word _020B05BC_EU -#else -_020238C8: .word _02099D0C -#endif -_020238CC: .word _02099D10 - arm_func_end QuantityToString - - arm_func_start sub_020238D0 -sub_020238D0: ; 0x020238D0 - ldr ip, _020238DC ; =QuantityToString - mov r2, #5 -#ifdef EUROPE - mov r3, #1 -#endif - bx ip - .align 2, 0 -_020238DC: .word QuantityToString - arm_func_end sub_020238D0 - - arm_func_start MoneyQuantityToString__02023B30 -MoneyQuantityToString__02023B30: ; 0x020238E0 - ldr ip, _020238EC ; =QuantityToString - mov r2, #0 -#ifdef EUROPE - mov r3, #1 -#endif - bx ip - .align 2, 0 -_020238EC: .word QuantityToString - arm_func_end MoneyQuantityToString__02023B30 - - arm_func_start BankQuantityToString -BankQuantityToString: ; 0x020238F0 - ldr ip, _020238FC ; =QuantityToString - mov r2, #7 -#ifdef EUROPE - mov r3, #1 -#endif - bx ip - .align 2, 0 -_020238FC: .word QuantityToString - arm_func_end BankQuantityToString - - arm_func_start MoneyQuantityToString__02023B58 -MoneyQuantityToString__02023B58: ; 0x02023900 - ldr ip, _0202390C ; =QuantityToString - mov r2, #0 -#ifdef EUROPE - mov r3, #1 -#endif - bx ip - .align 2, 0 -_0202390C: .word QuantityToString - arm_func_end MoneyQuantityToString__02023B58 - - arm_func_start ExpQuantityToString -ExpQuantityToString: ; 0x02023910 - ldr ip, _0202391C ; =QuantityToString - mov r2, #0 -#ifdef EUROPE - mov r3, r2 -#endif - bx ip - .align 2, 0 -_0202391C: .word QuantityToString - arm_func_end ExpQuantityToString - - arm_func_start sub_02023920 -sub_02023920: ; 0x02023920 - stmdb sp!, {r3, r4, r5, lr} - mov r2, r1, lsl #0x10 - and r1, r1, #0xf0000 - mov r5, r0 - cmp r1, #0x40000 - mov r4, r2, lsr #0x10 - bgt _02023978 - cmp r1, #0x40000 - bge _02023B44 - cmp r1, #0x10000 - bgt _0202395C - bge _02023A30 - cmp r1, #0 - beq _020239AC - b _02023B44 -_0202395C: - cmp r1, #0x20000 - bgt _0202396C - beq _02023A40 - b _02023B44 -_0202396C: - cmp r1, #0x30000 - beq _02023A8C - b _02023B44 -_02023978: - cmp r1, #0x70000 - bgt _02023990 - bge _02023B3C - cmp r1, #0x60000 - beq _02023B34 - b _02023B44 -_02023990: - cmp r1, #0x80000 - bgt _020239A0 - beq _020239D0 - b _02023B44 -_020239A0: - cmp r1, #0x90000 - beq _02023AE0 - b _02023B44 -_020239AC: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetNameString - mov r2, r0 - ldr r1, _02023B4C ; =_02099D1C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_020239D0: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetNameString - mov r2, r0 - ldr r1, _02023B4C ; =_02099D1C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetMonsterGender - cmp r0, #1 - beq _02023A0C - cmp r0, #2 - beq _02023A1C - b _02023A28 -_02023A0C: - ldr r1, _02023B50 ; =_022A5048 - mov r0, r5 - bl strcat - b _02023A28 -_02023A1C: - ldr r1, _02023B54 ; =_022A504C - mov r0, r5 - bl strcat -_02023A28: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_02023A30: - mov r1, r4, lsl #0x10 - mov r1, r1, asr #0x10 - bl sub_02023D64 - ldmia sp!, {r3, r4, r5, pc} -_02023A40: - mov r0, #0x44 - mul r1, r4, r0 - ldr r0, _02023B58 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r0] - ldrb r0, [r2, r1] - add r1, r2, r1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023B44 - ldrsh r0, [r1, #4] - bl GetNameString - mov r2, r0 - ldr r1, _02023B4C ; =_02099D1C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_02023A8C: - ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR - mov r0, #0x68 - ldr r2, [r1] - mul r1, r4, r0 - add r0, r2, #0x9000 - ldr r2, [r0, #0x84c] - ldrb r0, [r2, r1] - add r1, r2, r1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023B44 - ldrsh r0, [r1, #0xc] - bl GetNameString - mov r2, r0 - ldr r1, _02023B4C ; =_02099D1C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_02023AE0: - mov r0, #0x44 - ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR - mul r2, r4, r0 - ldr r0, [r1] - add r0, r0, #0x98 - add r1, r0, #0x9800 - ldrb r0, [r1, r2] - add r1, r1, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023B44 - ldrsh r0, [r1, #4] - bl GetNameString - mov r2, r0 - ldr r1, _02023B5C ; =_02099D2C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_02023B34: - ldr r0, _02023B60 ; =_02099D3C - ldmia sp!, {r3, r4, r5, pc} -_02023B3C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02023B44: - ldr r0, _02023B64 ; =_02099D50 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02023B4C: .word _02099D1C -_02023B50: .word _022A5048 -_02023B54: .word _022A504C -_02023B58: .word TEAM_MEMBER_TABLE_PTR -_02023B5C: .word _02099D2C -_02023B60: .word _02099D3C -_02023B64: .word _02099D50 - arm_func_end sub_02023920 - - arm_func_start sub_02023B68 -sub_02023B68: ; 0x02023B68 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - mov r2, r1, lsl #0x10 - and r1, r1, #0xf0000 - mov r5, r0 - cmp r1, #0x30000 - mov r4, r2, lsr #0x10 - bgt _02023BB4 - cmp r1, #0x30000 - bge _02023C90 - cmp r1, #0x10000 - bgt _02023BA8 - bge _02023C08 - cmp r1, #0 - beq _02023BE4 - b _02023D40 -_02023BA8: - cmp r1, #0x20000 - beq _02023C18 - b _02023D40 -_02023BB4: - cmp r1, #0x50000 - bgt _02023BC8 - bge _02023D14 - cmp r1, #0x40000 - b _02023D40 -_02023BC8: - cmp r1, #0x60000 - bgt _02023BD8 - beq _02023D30 - b _02023D40 -_02023BD8: - cmp r1, #0x70000 - beq _02023D38 - b _02023D40 -_02023BE4: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetNameString - mov r2, r0 - ldr r1, _02023D4C ; =_02099D2C - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - b _02023D44 -_02023C08: - mov r1, r4, lsl #0x10 - mov r1, r1, asr #0x10 - bl sub_02023DC0 - b _02023D44 -_02023C18: - mov r0, #0x44 - mul r1, r4, r0 - ldr r0, _02023D50 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r0] - ldrb r0, [r2, r1] - add r1, r2, r1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023D40 - add r0, sp, #0 - add r1, r1, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_020564B0 - cmp r0, #0 - add r2, sp, #0 - beq _02023C7C - ldr r1, _02023D54 ; =_02099D54 - mov r0, r5 - bl SprintfStatic__0202378C - b _02023C88 -_02023C7C: - ldr r1, _02023D58 ; =_02099D64 - mov r0, r5 - bl SprintfStatic__0202378C -_02023C88: - mov r0, r5 - b _02023D44 -_02023C90: - ldr r1, _02023D50 ; =TEAM_MEMBER_TABLE_PTR - mov r0, #0x68 - ldr r2, [r1] - mul r1, r4, r0 - add r0, r2, #0x9000 - ldr r2, [r0, #0x84c] - ldrb r0, [r2, r1] - add r4, r2, r1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023D40 - add r0, sp, #0 - add r1, r4, #0x5e - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldrb r0, [r4, #1] - add r2, sp, #0 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02023D00 - ldr r1, _02023D54 ; =_02099D54 - mov r0, r5 - bl SprintfStatic__0202378C - b _02023D0C -_02023D00: - ldr r1, _02023D58 ; =_02099D64 - mov r0, r5 - bl SprintfStatic__0202378C -_02023D0C: - mov r0, r5 - b _02023D44 -_02023D14: - mov r0, r4 - bl GetSize0x80Buffer - mov r1, r0 - mov r0, r5 - bl strcpy - mov r0, r5 - b _02023D44 -_02023D30: - ldr r0, _02023D5C ; =_02099D3C - b _02023D44 -_02023D38: - mov r0, #0 - b _02023D44 -_02023D40: - ldr r0, _02023D60 ; =_02099D50 -_02023D44: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02023D4C: .word _02099D2C -_02023D50: .word TEAM_MEMBER_TABLE_PTR -_02023D54: .word _02099D54 -_02023D58: .word _02099D64 -_02023D5C: .word _02099D3C -_02023D60: .word _02099D50 - arm_func_end sub_02023B68 - - arm_func_start sub_02023D64 -sub_02023D64: ; 0x02023D64 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - add r0, sp, #0x14 - add r1, sp, #0 - bl sub_0206549C - ldrsh r0, [sp] - cmp r0, #0 - moveq r0, #0 - beq _02023DAC - ldrsh r0, [sp] - bl GetNameString - mov r2, r0 - ldr r1, _02023DBC ; =_02099D1C - mov r0, r4 - bl SprintfStatic__0202378C - mov r0, r4 -_02023DAC: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02023DBC: .word _02099D1C - arm_func_end sub_02023D64 - - arm_func_start sub_02023DC0 -sub_02023DC0: ; 0x02023DC0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x84 - mov r4, r0 - add r0, sp, #0x94 - add r1, sp, #0 - bl sub_0206549C - ldrsh r0, [sp] - cmp r0, #0 - moveq r0, #0 - beq _02023F98 - ldrsh r0, [sp, #0x94] - cmp r0, #0x39 - bne _02023E18 - add r0, sp, #0x42 - bl sub_02065BF0 - ldr r1, _02023FA8 ; =_02099D64 - add r2, sp, #0x42 - mov r0, r4 - bl SprintfStatic__0202378C - mov r0, r4 - b _02023F98 -_02023E18: - cmp r0, #0x42 - bne _02023E44 - add r1, sp, #2 - mov r0, #0x3f - mov r2, #0xa - bl LoadScriptVariableValueString - add r0, sp, #0x42 - add r1, sp, #2 - mov r2, #0xa - bl StrncpySimpleNoPadSafe - b _02023F5C -_02023E44: - cmp r0, #0x43 - bne _02023E70 - add r1, sp, #2 - mov r0, #0x41 - mov r2, #0xa - bl LoadScriptVariableValueString - add r0, sp, #0x42 - add r1, sp, #2 - mov r2, #0xa - bl StrncpySimpleNoPadSafe - b _02023F5C -_02023E70: - bl GetActorMatchingStorageId - mov r5, r0 - mvn r1, #0 - cmp r5, r1 - beq _02023F2C - bl GetActiveRosterIndex - mvn r1, #0 - cmp r0, r1 - beq _02023EB0 - bl GetActiveTeamMember - mov r1, r0 - add r0, sp, #0x42 - add r1, r1, #0x5e - mov r2, #0xa - bl StrncpySimpleNoPadSafe - b _02023ECC -_02023EB0: - mov r0, r5 - bl GetTeamMember - mov r1, r0 - add r0, sp, #0x42 - add r1, r1, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe -_02023ECC: - ldrsh r0, [sp, #0x94] - cmp r0, #0 - blt _02023EF4 - cmp r0, #0xa - bge _02023EF4 - ldr r1, _02023FAC ; =_02099D54 - add r2, sp, #0x42 - mov r0, r4 - bl SprintfStatic__0202378C - b _02023F24 -_02023EF4: - mov r0, r5 - bl sub_020564B0 - cmp r0, #0 - add r2, sp, #0x42 - beq _02023F18 - ldr r1, _02023FAC ; =_02099D54 - mov r0, r4 - bl SprintfStatic__0202378C - b _02023F24 -_02023F18: - ldr r1, _02023FA8 ; =_02099D64 - mov r0, r4 - bl SprintfStatic__0202378C -_02023F24: - mov r0, r4 - b _02023F98 -_02023F2C: - ldrsh r0, [sp, #0x94] - bl sub_02065B14 - movs r1, r0 - beq _02023F48 - add r0, sp, #0x42 - bl GetStringFromFileVeneer - b _02023F5C -_02023F48: - ldrsh r0, [sp] - bl GetNameString - mov r1, r0 - add r0, sp, #0x42 - bl strcpy -_02023F5C: - ldrsh r0, [sp, #0x94] - cmp r0, #0 - blt _02023F84 - cmp r0, #0xa - bge _02023F84 - ldr r1, _02023FAC ; =_02099D54 - add r2, sp, #0x42 - mov r0, r4 - bl SprintfStatic__0202378C - b _02023F94 -_02023F84: - ldr r1, _02023FB0 ; =_02099D2C - add r2, sp, #0x42 - mov r0, r4 - bl SprintfStatic__0202378C -_02023F94: - mov r0, r4 -_02023F98: - add sp, sp, #0x84 - ldmia sp!, {r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02023FA8: .word _02099D64 -_02023FAC: .word _02099D54 -_02023FB0: .word _02099D2C - arm_func_end sub_02023DC0 - - arm_func_start sub_02023FB4 -sub_02023FB4: ; 0x02023FB4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x8c - mov r4, r0 - add r0, sp, #0xa4 - add r1, sp, #0 - bl sub_0206549C - ldrsh r0, [sp] - cmp r0, #0 - moveq r0, #0 - beq _02024094 - ldrsh r0, [sp, #0xa4] - bl GetActorMatchingStorageId - mov r5, r0 - bl GetTeamMember - movs r6, r0 - beq _02024014 - add r0, sp, #0x4c - add r1, r6, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe - add r0, sp, #0x4c - str r0, [sp, #8] - b _02024020 -_02024014: - ldrsh r0, [sp] - bl GetNameString - str r0, [sp, #8] -_02024020: - add r3, sp, #0xc - add r0, sp, #4 - add r1, sp, #8 - add r2, sp, #0x4c - str r3, [sp, #4] - bl sub_020206FC - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0] - cmp r6, #0 - beq _02024080 - mov r0, r5 - bl sub_020564B0 - cmp r0, #0 - add r2, sp, #0xc - beq _02024070 - ldr r1, _020240A4 ; =_02099D54 - mov r0, r4 - bl SprintfStatic__0202378C - b _02024090 -_02024070: - ldr r1, _020240A8 ; =_02099D64 - mov r0, r4 - bl SprintfStatic__0202378C - b _02024090 -_02024080: - ldr r1, _020240AC ; =_02099D2C - add r2, sp, #0xc - mov r0, r4 - bl SprintfStatic__0202378C -_02024090: - mov r0, r4 -_02024094: - add sp, sp, #0x8c - ldmia sp!, {r3, r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020240A4: .word _02099D54 -_020240A8: .word _02099D64 -_020240AC: .word _02099D2C - arm_func_end sub_02023FB4 - - arm_func_start sub_020240B0 -sub_020240B0: ; 0x020240B0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldr r5, _0202410C ; =ENTITIES - mov r6, #0 - ldr r4, _02024110 ; =0x00000182 - b _020240FC -_020240CC: - ldr r1, [r5, #4] - mov r0, r7 - bl sub_0202364C - cmp r0, #0 - beq _020240F4 - mov r1, r6, lsl #0x10 - mov r0, r8 - mov r1, r1, asr #0x10 - bl sub_02023D64 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020240F4: - add r6, r6, #1 - add r5, r5, #0xc -_020240FC: - cmp r6, r4 - blt _020240CC - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0202410C: .word ENTITIES -_02024110: .word 0x00000182 - arm_func_end sub_020240B0 - - arm_func_start sub_02024114 -sub_02024114: ; 0x02024114 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldr r5, _02024170 ; =ENTITIES - mov r6, #0 - ldr r4, _02024174 ; =0x00000182 - b _02024160 -_02024130: - ldr r1, [r5, #4] - mov r0, r7 - bl sub_0202364C - cmp r0, #0 - beq _02024158 - mov r1, r6, lsl #0x10 - mov r0, r8 - mov r1, r1, asr #0x10 - bl sub_02023DC0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02024158: - add r6, r6, #1 - add r5, r5, #0xc -_02024160: - cmp r6, r4 - blt _02024130 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02024170: .word ENTITIES -_02024174: .word 0x00000182 - arm_func_end sub_02024114 - - arm_func_start sub_02024178 -sub_02024178: ; 0x02024178 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldr r5, _020241D4 ; =ENTITIES - mov r6, #0 - ldr r4, _020241D8 ; =0x00000182 - b _020241C4 -_02024194: - ldr r1, [r5, #4] - mov r0, r7 - bl sub_0202364C - cmp r0, #0 - beq _020241BC - mov r1, r6, lsl #0x10 - mov r0, r8 - mov r1, r1, asr #0x10 - bl sub_02023FB4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020241BC: - add r6, r6, #1 - add r5, r5, #0xc -_020241C4: - cmp r6, r4 - blt _02024194 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020241D4: .word ENTITIES -_020241D8: .word 0x00000182 - arm_func_end sub_02024178 - - arm_func_start sub_020241DC -sub_020241DC: ; 0x020241DC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov ip, r1, lsl #0x10 - and lr, r1, #0x70000 - mov r4, r0 - cmp lr, #0x20000 - mov r5, ip, lsr #0x10 - bgt _02024220 - cmp lr, #0x20000 - bge _020242E0 - cmp lr, #0 - bgt _02024214 - beq _02024240 - b _020242E0 -_02024214: - cmp lr, #0x10000 - beq _0202426C - b _020242E0 -_02024220: - cmp lr, #0x40000 - bgt _02024234 - bge _0202429C - cmp lr, #0x30000 - b _020242E0 -_02024234: - cmp lr, #0x50000 - beq _020242AC - b _020242E0 -_02024240: - tst r1, #0x80000 - movne r2, #1 - moveq r2, #0 - mov r1, r5, lsl #0x10 - and r3, r2, #0xff - mov r0, r4 - mov r1, r1, asr #0x10 - mov r2, #1 - bl GetItemNameFormatted - mov r0, r4 - b _020242E4 -_0202426C: - strh r2, [sp, #0xc] - mov ip, #0 - strb r3, [sp, #0xa] - ldr r2, _020242EC ; =_02099CAC - add r1, sp, #0xa - strb ip, [sp, #0xb] - strh r5, [sp, #0xe] - mov r3, #1 - str ip, [sp] - bl MaybeGetFormattedItemName - mov r0, r4 - b _020242E4 -_0202429C: - mov r1, r5 - bl sub_0202507C - mov r0, r4 - b _020242E4 -_020242AC: - mov r0, r5, lsl #0x10 - add r1, sp, #4 - mov r0, r0, asr #0x10 - bl sub_02065CD8 - mov ip, #0 - ldr r2, _020242F0 ; =_02099CB8 - add r1, sp, #4 - mov r0, r4 - mov r3, #1 - str ip, [sp] - bl MaybeGetFormattedItemName - mov r0, r4 - b _020242E4 -_020242E0: - ldr r0, _020242F4 ; =_02099D50 -_020242E4: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020242EC: .word _02099CAC -_020242F0: .word _02099CB8 -_020242F4: .word _02099D50 - arm_func_end sub_020241DC - - arm_func_start sub_020242F8 -sub_020242F8: ; 0x020242F8 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - mov r0, r2, lsr #0x10 - ands r1, r1, #0x30000 - beq _0202431C - cmp r1, #0x10000 - beq _02024338 - b _02024350 -_0202431C: - bl GetMoveName - mov r2, r0 - ldr r1, _02024358 ; =_02099D74 - mov r0, r4 - bl SprintfStatic__0202378C - mov r0, r4 - ldmia sp!, {r4, pc} -_02024338: - bl GetDungeonResultString - mov r1, r0 - mov r0, r4 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} -_02024350: - ldr r0, _0202435C ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024358: .word _02099D74 -_0202435C: .word _02099D50 - arm_func_end sub_020242F8 - - arm_func_start SetStringAccuracy -SetStringAccuracy: ; 0x02024360 -#if defined(EUROPE) -#define SET_STRING_ACCURACY_OFFSET 2 -#elif defined(JAPAN) -#define SET_STRING_ACCURACY_OFFSET 0x17FD -#else -#define SET_STRING_ACCURACY_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _02024410 ; =0x000027A2 - mov r4, r0 - cmp r1, r2 - blo _02024408 - ldr r0, _02024414 ; =0x000029C1 - cmp r1, r0 - bhs _02024408 - rsb r0, r2, #0 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl GetMoveActualAccuracy - mov r6, #1 - mov r3, #0 - ldr r2, _02024418 ; =MOVE_ACCURACY_STARS_TABLE - b _020243B8 -_020243A4: - ldr r1, [r2, r3, lsl #2] - cmp r0, r1 - blt _020243C0 - add r6, r6, #1 - add r3, r3, #1 -_020243B8: - cmp r3, #8 - blt _020243A4 -_020243C0: - cmp r6, #8 - ble _020243D8 - ldr r1, _0202441C ; =0x000027A0 - mov r0, r4 - bl GetStringFromFileVeneer - b _02024400 -_020243D8: - mov r7, #0 - strb r7, [r4] - ldr r5, _02024420 ; =_02099D84 - b _020243F8 -_020243E8: - mov r0, r4 - mov r1, r5 - bl strcat - add r7, r7, #1 -_020243F8: - cmp r7, r6 - blt _020243E8 -_02024400: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02024408: - ldr r0, _02024424 ; =_02099D50 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02024410: .word 0x000027A2 + SET_STRING_ACCURACY_OFFSET -_02024414: .word 0x000029C1 + SET_STRING_ACCURACY_OFFSET -_02024418: .word MOVE_ACCURACY_STARS_TABLE -_0202441C: .word 0x000027A0 + SET_STRING_ACCURACY_OFFSET -_02024420: .word _02099D84 -_02024424: .word _02099D50 - arm_func_end SetStringAccuracy - - arm_func_start SetStringPower -SetStringPower: ; 0x02024428 -#if defined(EUROPE) -#define SET_STRING_POWER_OFFSET 2 -#elif defined(JAPAN) -#define SET_STRING_POWER_OFFSET 0x17FD -#else -#define SET_STRING_POWER_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _020244DC ; =0x000027A2 - mov r4, r0 - cmp r1, r2 - blo _020244D4 - ldr r0, _020244E0 ; =0x000029C1 - cmp r1, r0 - bhs _020244D4 - rsb r0, r2, #0 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl GetMoveBasePowerFromId - mov r3, #0 - mov r5, r3 - ldr r2, _020244E4 ; =MOVE_POWER_STARS_TABLE - b _02024480 -_0202446C: - ldr r1, [r2, r5, lsl #2] - cmp r0, r1 - blt _02024488 - add r3, r3, #1 - add r5, r5, #1 -_02024480: - cmp r5, #6 - blt _0202446C -_02024488: - cmp r3, #0 - bne _020244A0 - ldr r1, _020244E8 ; =0x000027A1 - mov r0, r4 - bl GetStringFromFileVeneer - b _020244CC -_020244A0: - mov r7, #0 - strb r7, [r4] - add r5, r3, #2 - ldr r6, _020244EC ; =_02099D84 - b _020244C4 -_020244B4: - mov r0, r4 - mov r1, r6 - bl strcat - add r7, r7, #1 -_020244C4: - cmp r7, r5 - blt _020244B4 -_020244CC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020244D4: - ldr r0, _020244F0 ; =_02099D50 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020244DC: .word 0x000027A2 + SET_STRING_POWER_OFFSET -_020244E0: .word 0x000029C1 + SET_STRING_POWER_OFFSET -_020244E4: .word MOVE_POWER_STARS_TABLE -_020244E8: .word 0x000027A1 + SET_STRING_POWER_OFFSET -_020244EC: .word _02099D84 -_020244F0: .word _02099D50 - arm_func_end SetStringPower - - arm_func_start sub_020244F4 -sub_020244F4: ; 0x020244F4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x400 - mov r2, r1, lsl #0x10 - mov r5, r0 - mov r4, r2, lsr #0x10 - ands r0, r1, #0x70000 - beq _0202451C - cmp r0, #0x10000 - beq _02024564 - b _02024580 -_0202451C: -#if defined(EUROPE) - add r0, r1, #0xc3 - add r0, r0, #0x3400 -#elif defined(JAPAN) - add r0, r1, #0x46 - add r0, r0, #0x4700 -#else - add r0, r1, #0xc1 - add r0, r0, #0x3400 -#endif - mov r1, r0, lsl #0x10 - add r0, sp, #0 - mov r1, r1, lsr #0x10 - bl CopyStringFromId - cmp r4, #0x11 - add r2, sp, #0 - bne _02024550 - ldr r1, _0202458C ; =_02099D8C - mov r0, r5 - bl SprintfStatic__0202378C - b _0202455C -_02024550: - ldr r1, _02024590 ; =_02099D90 - mov r0, r5 - bl SprintfStatic__0202378C -_0202455C: - mov r0, r5 - b _02024584 -_02024564: - mov r0, r4 - bl GetSize0x80Buffer2 - mov r1, r0 - mov r0, r5 - bl strcpy - mov r0, r5 - b _02024584 -_02024580: - ldr r0, _02024594 ; =_02099D50 -_02024584: - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0202458C: .word _02099D8C -_02024590: .word _02099D90 -_02024594: .word _02099D50 - arm_func_end sub_020244F4 - - arm_func_start sub_02024598 -sub_02024598: ; 0x02024598 -#ifdef EUROPE - stmdb sp!, {r3, r4, r5, lr} - movs r4, r1 - mov r5, r0 - bmi _02024828 - bl GetLanguage - mov r2, r0 - ldr r1, _0202484C ; =_020B05D4_EU - mov r0, r5 - ldr r1, [r1, r2, lsl #3] - mov r2, r4 - bl SprintfStatic__0202378C - b _02024844 -_02024828: - bl GetLanguage - mov r2, r0 - ldr r1, _02024850 ; =_020B05D8_EU - mov r0, r5 - ldr r1, [r1, r2, lsl #3] - rsb r2, r4, #0 - bl SprintfStatic__0202378C -_02024844: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0202484C: .word _020B05D4_EU -_02024850: .word _020B05D8_EU -#else - stmdb sp!, {r4, lr} - movs r2, r1 - mov r4, r0 - bmi _020245B4 - ldr r1, _020245C8 ; =_02099DA0 - bl SprintfStatic__0202378C - b _020245C0 -_020245B4: - ldr r1, _020245CC ; =_02099DB0 - rsb r2, r2, #0 - bl SprintfStatic__0202378C -_020245C0: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020245C8: .word _02099DA0 -_020245CC: .word _02099DB0 -#endif - arm_func_end sub_02024598 - -#ifdef EUROPE - arm_func_start sub_02024854_EU -sub_02024854_EU: ; 0x02024854 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x40 - ldr ip, [sp, #0x50] - mov r6, r0 - mov r5, r1 - mov r4, r3 - cmp ip, #2 - bgt _02024884 - ldr r1, _020248DC ; =_02099DC0 - mov r2, r5 - bl SprintfStatic__0202378C - b _020248D4 -_02024884: - and r0, r2, #0xff - bl DungeonGoesUp - cmp r0, #0 - add r0, sp, #0 - beq _020248B8 - mov r1, r4 - bl sub_02024598 - ldr r1, _020248E0 ; =_0209A2D4_EU - add r3, sp, #0 - mov r0, r6 - mov r2, r5 - bl SprintfStatic__0202378C - b _020248D4 -_020248B8: - rsb r1, r4, #0 - bl sub_02024598 - ldr r1, _020248E0 ; =_0209A2D4_EU - add r3, sp, #0 - mov r0, r6 - mov r2, r5 - bl SprintfStatic__0202378C -_020248D4: - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020248DC: .word _02099DC0 -_020248E0: .word _0209A2D4_EU - arm_func_end sub_02024854_EU -#endif - - arm_func_start sub_020245D0 -sub_020245D0: ; 0x020245D0 -#ifdef EUROPE -#define SUB_020245D0_STACK_OFFSET 4 -#else -#define SUB_020245D0_STACK_OFFSET 0 -#endif -#ifdef EUROPE - stmdb sp!, {r4, r5, r6, r7, lr} -#else - stmdb sp!, {r3, r4, r5, r6, r7, lr} -#endif - sub sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET - mov r3, r1, lsl #0x10 - and r1, r1, #0xf0000 - mov r7, r0 - mov r6, r2 - cmp r1, #0x20000 - mov r4, r3, lsr #0x10 - bgt _02024618 - cmp r1, #0x20000 - bge _020246A8 - cmp r1, #0 - bgt _0202460C - beq _02024634 - b _02024918 -_0202460C: - cmp r1, #0x10000 - beq _02024744 - b _02024918 -_02024618: - cmp r1, #0x30000 - bgt _02024628 - beq _02024668 - b _02024918 -_02024628: - cmp r1, #0x40000 - beq _020248E4 - b _02024918 -_02024634: - mov r0, #0 - mov r2, r0 - and r1, r4, #0xff - bl sub_0204F6F8 - mov r1, r0 - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - bl GetStringFromFileVeneer - ldr r1, _02024924 ; =_02099DC0 - add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET - mov r0, r7 - bl SprintfStatic__0202378C - mov r0, r7 - b _0202491C -_02024668: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl DungeonSwapIdxToId - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl sub_0204F6F8 - mov r1, r0 - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - bl GetStringFromFileVeneer - ldr r1, _02024924 ; =_02099DC0 - add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET - mov r0, r7 - bl SprintfStatic__0202378C - mov r0, r7 - b _0202491C -_020246A8: - and r0, r4, #0xff - and r1, r6, #0xff - bl sub_0204F77C - bl GetNbFloorsPlusOne - mov r5, r0 - mov r0, #0 - mov r2, r0 - and r1, r4, #0xff - bl sub_0204F6F8 - mov r1, r0 - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - bl GetStringFromFileVeneer - cmp r6, #0 - mvnlt r0, #0 - mullt r0, r6, r0 - movlt r6, r0 -#ifdef EUROPE - add r1, sp, #0x44 - mov r0, r7 - mov r2, r4 - mov r3, r6 - str r5, [sp] - bl sub_02024854_EU -#else - cmp r5, #2 - bhi _02024704 - ldr r1, _02024924 ; =_02099DC0 - add r2, sp, #0x40 - mov r0, r7 - bl SprintfStatic__0202378C - b _0202473C -_02024704: - and r0, r4, #0xff - bl DungeonGoesUp - cmp r0, #0 - add r2, sp, #0x40 - beq _0202472C - ldr r1, _02024928 ; =_02099DD0 - mov r0, r7 - mov r3, r6 - bl SprintfStatic__0202378C - b _0202473C -_0202472C: - ldr r1, _0202492C ; =_02099DEC - mov r0, r7 - mov r3, r6 - bl SprintfStatic__0202378C -_0202473C: -#endif - mov r0, r7 - b _0202491C -_02024744: - and r0, r4, #0xff - and r1, r6, #0xff - bl sub_0204F77C - bl GetNbFloorsPlusOne - mov r5, r0 - and r1, r4, #0xff - and r2, r6, #0xff - mov r0, #1 - bl sub_0204F6F8 - mov r1, r0 - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - bl GetStringFromFileVeneer - mov r1, #0 - add r0, sp, #0 + SUB_020245D0_STACK_OFFSET - add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET -_02024780: - ldrb r2, [r3, r1] - cmp r2, #0 - beq _02024888 - strb r2, [r0, r1] - cmp r2, #0xa - bne _02024880 - add r1, r1, #1 - mov r2, #0x5b - strb r2, [r0, r1] - add r2, r1, #1 - mov r3, #0x43 - strb r3, [r0, r2] - add r2, r1, #2 - mov r3, #0x4c - strb r3, [r0, r2] - add r2, r1, #3 - mov r3, #0x55 - strb r3, [r0, r2] - add r2, r1, #4 - mov r3, #0x4d - strb r3, [r0, r2] - add r2, r1, #5 - mov r3, #0x5f - strb r3, [r0, r2] - add r2, r1, #6 - mov r3, #0x53 - strb r3, [r0, r2] - add r2, r1, #7 - mov r3, #0x45 - strb r3, [r0, r2] - add r2, r1, #8 - mov r3, #0x54 - strb r3, [r0, r2] - add r2, r1, #9 - mov r3, #0x3a - strb r3, [r0, r2] - add r2, r1, #0xa - mov r3, #0x38 - strb r3, [r0, r2] - add r2, r1, #0xb - mov r3, #0x30 - strb r3, [r0, r2] - add r2, r1, #0xc - mov r3, #0x5d - strb r3, [r0, r2] - add ip, r1, #0xd - add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET - add r0, sp, #0 + SUB_020245D0_STACK_OFFSET -_02024840: - ldrb r2, [r3, r1] - add r1, r1, #1 - strb r2, [r0, ip] - cmp r2, #0 - add ip, ip, #1 - bne _02024840 - mov r3, #0 - add r2, sp, #0 + SUB_020245D0_STACK_OFFSET - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - b _02024874 -_02024868: - ldrb r1, [r2, r3] - strb r1, [r0, r3] - add r3, r3, #1 -_02024874: - cmp r3, ip - bne _02024868 - b _02024888 -_02024880: - add r1, r1, #1 - b _02024780 -_02024888: -#ifdef EUROPE - add r1, sp, #0x44 - mov r0, r7 - mov r2, r4 - mov r3, r6 - str r5, [sp] - bl sub_02024854_EU -#else - cmp r5, #2 - bhi _020248A4 - ldr r1, _02024924 ; =_02099DC0 - add r2, sp, #0x40 - mov r0, r7 - bl SprintfStatic__0202378C - b _020248DC -_020248A4: - and r0, r4, #0xff - bl DungeonGoesUp - cmp r0, #0 - add r2, sp, #0x40 - beq _020248CC - ldr r1, _02024928 ; =_02099DD0 - mov r0, r7 - mov r3, r6 - bl SprintfStatic__0202378C - b _020248DC -_020248CC: - ldr r1, _0202492C ; =_02099DEC - mov r0, r7 - mov r3, r6 - bl SprintfStatic__0202378C -_020248DC: -#endif - mov r0, r7 - b _0202491C -_020248E4: - and r1, r4, #0xff - and r2, r6, #0xff - mov r0, #0 - bl sub_0204F6F8 - mov r1, r0 - add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET - bl GetStringFromFileVeneer - ldr r1, _02024924 ; =_02099DC0 - add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET - mov r0, r7 - bl SprintfStatic__0202378C - mov r0, r7 - b _0202491C -_02024918: - ldr r0, _02024930 ; =_02099D50 -_0202491C: - add sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET -#ifdef EUROPE - ldmia sp!, {r4, r5, r6, r7, pc} -#else - ldmia sp!, {r3, r4, r5, r6, r7, pc} -#endif - .align 2, 0 -_02024924: .word _02099DC0 -#ifndef EUROPE -_02024928: .word _02099DD0 -_0202492C: .word _02099DEC -#endif -_02024930: .word _02099D50 - arm_func_end sub_020245D0 - - arm_func_start sub_02024934 -sub_02024934: ; 0x02024934 - ldr ip, _02024948 ; =sub_0204F6F8 - mov r1, r0 - mov r0, #0 - mov r2, r0 - bx ip - .align 2, 0 -_02024948: .word sub_0204F6F8 - arm_func_end sub_02024934 - - arm_func_start sub_0202494C -sub_0202494C: ; 0x0202494C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x400 - mov r2, r1, lsl #0x10 - and r5, r1, #0xf0000 - mov r6, r0 - cmp r5, #0x20000 - mov r4, r2, lsr #0x10 - bgt _02024990 - cmp r5, #0x20000 - bge _020249F8 - cmp r5, #0 - bgt _02024984 - beq _020249F8 - b _02024A4C -_02024984: - cmp r5, #0x10000 - beq _020249B0 - b _02024A4C -_02024990: - cmp r5, #0x40000 - bgt _020249A8 - bge _020249B0 - cmp r5, #0x30000 - beq _020249B0 - b _02024A4C -_020249A8: - cmp r5, #0x50000 - bne _02024A4C -_020249B0: - cmp r5, #0x40000 - mov r0, #0 - bne _020249D0 - mov r2, r0 - mov r1, #0x25 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - b _020249F8 -_020249D0: - cmp r5, #0x50000 - bne _020249EC - mov r1, #0x25 - mov r2, #1 - bl LoadScriptVariableValueAtIndex - mov r4, r0 - b _020249F8 -_020249EC: - mov r1, #0x20 - bl LoadScriptVariableValue - mov r4, r0 -_020249F8: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_0206A90C - mov r1, r0 - add r0, sp, #0 - bl GetStringFromFileVeneer - cmp r5, #0x30000 - cmpne r5, #0x20000 - ldrne r0, _02024A58 ; =0x00000133 - add r2, sp, #0 - cmpne r4, r0 - bne _02024A38 - ldr r1, _02024A5C ; =_02099D8C - mov r0, r6 - bl SprintfStatic__0202378C - b _02024A44 -_02024A38: - ldr r1, _02024A60 ; =_02099DC0 - mov r0, r6 - bl SprintfStatic__0202378C -_02024A44: - mov r0, r6 - b _02024A50 -_02024A4C: - ldr r0, _02024A64 ; =_02099D50 -_02024A50: - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02024A58: .word 0x00000133 -_02024A5C: .word _02099D8C -_02024A60: .word _02099DC0 -_02024A64: .word _02099D50 - arm_func_end sub_0202494C - - arm_func_start sub_02024A68 -sub_02024A68: ; 0x02024A68 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r1, r2, lsr #0x10 - bne _02024A9C -#ifdef JAPAN - add r1, r1, #0xc9 - add r1, r1, #0x200 -#else - add r1, r1, #0x79 - add r1, r1, #0xa00 -#endif - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl GetStringFromFileVeneer - mov r0, r4 - ldmia sp!, {r4, pc} -_02024A9C: - ldr r0, _02024AA4 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024AA4: .word _02099D50 - arm_func_end sub_02024A68 - - arm_func_start sub_02024AA8 -sub_02024AA8: ; 0x02024AA8 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r0, r2, lsr #0x10 - bne _02024AE8 -#ifdef JAPAN - add r0, r0, #0xf5 - add r0, r0, #0x3e00 -#else - add r0, r0, #0x4d - add r0, r0, #0xa00 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r1, r0 - mov r0, r4 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} -_02024AE8: - ldr r0, _02024AF0 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024AF0: .word _02099D50 - arm_func_end sub_02024AA8 - - arm_func_start GetRankString -GetRankString: ; 0x02024AF4 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r0, r2, lsr #0x10 - bne _02024B38 -#ifdef JAPAN - add r0, r0, #0x7f - add r0, r0, #0x300 -#else - add r0, r0, #0x77 - add r0, r0, #0x100 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r2, r0 - ldr r1, _02024B40 ; =_02099E08 - mov r0, r4 - bl SprintfStatic__0202378C - mov r0, r4 - ldmia sp!, {r4, pc} -_02024B38: - ldr r0, _02024B44 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024B40: .word _02099E08 -_02024B44: .word _02099D50 - arm_func_end GetRankString - - arm_func_start sub_02024B48 -sub_02024B48: ; 0x02024B48 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r0, r2, lsr #0x10 - bne _02024B88 -#if defined(EUROPE) - add r0, r0, #0x71 - add r0, r0, #0x2700 -#elif defined(JAPAN) - add r0, r0, #0x79 - add r0, r0, #0x4900 -#else - add r0, r0, #0x6f - add r0, r0, #0x2700 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r1, r0 - mov r0, r4 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} -_02024B88: - ldr r0, _02024B90 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024B90: .word _02099D50 - arm_func_end sub_02024B48 - - arm_func_start sub_02024B94 -sub_02024B94: ; 0x02024B94 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r0, r2, lsr #0x10 - bne _02024BCC - and r0, r0, #0xff - bl GetTypeStringId - bl StringFromId - mov r1, r0 - mov r0, r4 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} -_02024BCC: - ldr r0, _02024BD4 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024BD4: .word _02099D50 - arm_func_end sub_02024B94 - - arm_func_start sub_02024BD8 -sub_02024BD8: ; 0x02024BD8 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r0, r2, lsr #0x10 - bne _02024C0C - and r0, r0, #0xff - bl GetIqSkillStringId - mov r1, r0 - mov r0, r4 - bl GetStringFromFileVeneer - mov r0, r4 - ldmia sp!, {r4, pc} -_02024C0C: - ldr r0, _02024C14 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024C14: .word _02099D50 - arm_func_end sub_02024BD8 - - arm_func_start sub_02024C18 -sub_02024C18: ; 0x02024C18 - stmdb sp!, {r4, lr} - sub sp, sp, #0x400 - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r1, r2, lsr #0x10 - bne _02024C58 - add r0, sp, #0 - and r1, r1, #0xff - bl GetAbilityString - ldr r1, _02024C64 ; =_02099D8C - add r2, sp, #0 - mov r0, r4 - bl SprintfStatic__0202378C - mov r0, r4 - b _02024C5C -_02024C58: - ldr r0, _02024C68 ; =_02099D50 -_02024C5C: - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024C64: .word _02099D8C -_02024C68: .word _02099D50 - arm_func_end sub_02024C18 - - arm_func_start GetCurrentTeamNameString -GetCurrentTeamNameString: ; 0x02024C6C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - mov r4, r1 - mov r5, r0 - bl GetExecuteSpecialEpisodeType - cmp r4, #2 - bne _02024C98 - mvn r1, #0 - cmp r0, r1 - moveq r4, #0 - movne r4, #1 -_02024C98: - cmp r4, #0 - beq _02024CAC - cmp r4, #1 - beq _02024CFC - b _02024D2C -_02024CAC: - mvn r1, #0 - cmp r0, r1 - bne _02024CC8 - mov r0, #1 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _02024CE8 -_02024CC8: - add r0, sp, #0 - bl GetMainTeamName - ldr r1, _02024D38 ; =_02099E08 - add r2, sp, #0 - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - b _02024D30 -_02024CE8: - ldr r1, _02024D3C ; =0x00000237 - mov r0, r5 - bl GetStringFromFileVeneer - mov r0, r5 - b _02024D30 -_02024CFC: - cmp r0, #3 - ldrne r0, _02024D40 ; =_02099D50 - bne _02024D30 - ldr r1, _02024D44 ; =0x00000236 - add r0, sp, #0 - bl GetStringFromFileVeneer - ldr r1, _02024D38 ; =_02099E08 - add r2, sp, #0 - mov r0, r5 - bl SprintfStatic__0202378C - mov r0, r5 - b _02024D30 -_02024D2C: - ldr r0, _02024D40 ; =_02099D50 -_02024D30: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02024D38: .word _02099E08 -#ifdef JAPAN -_02024D3C: .word 0x000004C8 -_02024D40: .word _02099D50 -_02024D44: .word 0x000004C7 -#else -_02024D3C: .word 0x00000237 -_02024D40: .word _02099D50 -_02024D44: .word 0x00000236 -#endif - arm_func_end GetCurrentTeamNameString - - arm_func_start sub_02024D48 -sub_02024D48: ; 0x02024D48 - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - tst r1, #0xf0000 - mov r1, r2, lsr #0x10 - bne _02024D70 - and r1, r1, #0xff - bl sub_02058C30 - mov r0, r4 - ldmia sp!, {r4, pc} -_02024D70: - ldr r0, _02024D78 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024D78: .word _02099D50 - arm_func_end sub_02024D48 - -#ifdef EUROPE - arm_func_start sub_02025010_EU -sub_02025010_EU: ; 0x02025010 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetLanguage - ldr r2, _02025040 ; =_020B05C0_EU - ldr r1, _02025044 ; =_0209A2F4_EU - ldr r2, [r2, r0, lsl #2] - mov r0, r5 - mov r3, r4 - bl SprintfStatic__0202378C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02025040: .word _020B05C0_EU -_02025044: .word _0209A2F4_EU - arm_func_end sub_02025010_EU -#endif - - arm_func_start sub_02024D7C -sub_02024D7C: ; 0x02024D7C - stmdb sp!, {r4, lr} - mov r2, r1, lsl #0x10 - mov r4, r0 - mov r2, r2, lsr #0x10 - ands r0, r1, #0xf0000 - beq _02024DD4 - cmp r0, #0x10000 - bne _02024DEC - mov r0, r2, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetMonsterGenderVeneer - cmp r0, #1 - beq _02024DC0 - cmp r0, #2 - beq _02024DC8 - cmp r0, #3 - b _02024DD0 -_02024DC0: - mov r2, #0 - b _02024DD4 -_02024DC8: - mov r2, #1 - b _02024DD4 -_02024DD0: - mov r2, #2 -_02024DD4: - ldr r1, _02024DF4 ; =_022A5048 - mov r0, r4 - add r1, r1, r2, lsl #2 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} -_02024DEC: - ldr r0, _02024DF8 ; =_02099D50 - ldmia sp!, {r4, pc} - .align 2, 0 -_02024DF4: .word _022A5048 -_02024DF8: .word _02099D50 - arm_func_end sub_02024D7C - - arm_func_start GetBagNameString -GetBagNameString: ; 0x02024DFC - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetCurrentBagCapacity - cmp r0, #2 - ldrlt r0, _02024E2C ; =0x000008E1 - ldrge r0, _02024E30 ; =0x000008E2 - mov r1, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, lsr #0x10 - bl GetStringFromFileVeneer - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_02024E2C: .word 0x00001D39 -_02024E30: .word 0x00001D3A -#else -_02024E2C: .word 0x000008E1 -_02024E30: .word 0x000008E2 -#endif - arm_func_end GetBagNameString - - arm_func_start sub_02024E34 -sub_02024E34: ; 0x02024E34 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - sub sp, sp, #0x400 - mov sl, r0 - ldr r0, _02024F94 ; =0x000001B1 - mov r4, r1 - bl StringFromId - str r0, [sp] - ldr r0, _02024F98 ; =0x000001B2 - bl StringFromId - ldr r1, _02024F9C ; =0x000029D1 - mov fp, r0 - cmp r4, r1 - blo _02024E94 - ldr r0, _02024FA0 ; =0x00002F49 - cmp r4, r0 - bhs _02024E94 - rsb r0, r1, #0 - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemMoveId16 - mov r5, r0 - b _02024E98 -_02024E94: - mov r5, #0 -_02024E98: - mov r0, sl -#ifdef JAPAN - mov r1, #0x3b8 -#else - mov r1, #0x1b0 -#endif - bl GetStringFromFileVeneer - ldr r1, _02024FA4 ; =_02099E18 - mov r0, sl - bl strcat - cmp r5, #0 - beq _02024F78 - bl GetGameMode - cmp r0, #1 - ldrls sb, _02024FA8 ; =_02099CA4 - mvn r4, #0 - ldrhi sb, _02024FAC ; =_02099CC4 - b _02024F6C -_02024ED0: - ldrsh r6, [sb], #2 - mov r0, r6 - bl GetActorMatchingStorageId - mov r7, r0 - cmp r6, #0x16 - bne _02024EF4 - ldr r1, _02024FA4 ; =_02099E18 - mov r0, sl - bl strcat -_02024EF4: - cmp r7, r4 - beq _02024F6C - mov r0, r7 - bl GetTeamMember - ldrsh r8, [r0, #4] - bl sub_0204E530 - cmp r0, #0 - bne _02024F2C - mov r0, r7 - bl GetActiveRosterIndex - cmp r0, r4 - beq _02024F2C - bl GetActiveTeamMember - ldrsh r8, [r0, #0xc] -_02024F2C: - add r0, sp, #4 - mov r1, r6 - bl sub_02023DC0 - mov r0, r5 - mov r1, r8 - bl sub_02053D1C - cmp r0, #0 - ldrne r3, [sp] - ldr r1, _02024FB0 ; =_02099E20 - moveq r3, fp - add r0, sp, #0x44 - add r2, sp, #4 - bl SprintfStatic__0202378C - mov r0, sl - add r1, sp, #0x44 - bl strcat -_02024F6C: - ldrsh r0, [sb] - cmp r0, r4 - bne _02024ED0 -_02024F78: - ldr r1, _02024FB4 ; =_02099E40 - mov r0, sl - bl strcat - mov r0, sl - add sp, sp, #0x44 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -_02024F94: .word 0x000003B9 -_02024F98: .word 0x000003BA -#else -_02024F94: .word 0x000001B1 -_02024F98: .word 0x000001B2 -#endif -#if defined(EUROPE) -_02024F9C: .word 0x000029D3 -_02024FA0: .word 0x00002F4B -#elif defined(JAPAN) -_02024F9C: .word 0x000041CE -_02024FA0: .word 0x00004746 -#else -_02024F9C: .word 0x000029D1 -_02024FA0: .word 0x00002F49 -#endif -_02024FA4: .word _02099E18 -_02024FA8: .word _02099CA4 -_02024FAC: .word _02099CC4 -_02024FB0: .word _02099E20 -_02024FB4: .word _02099E40 - arm_func_end sub_02024E34 - - arm_func_start GetSize0x80Buffer -GetSize0x80Buffer: ; 0x02024FB8 - ldr r1, _02024FC4 ; =_022A5468 - add r0, r1, r0, lsl #7 - bx lr - .align 2, 0 -_02024FC4: .word _022A5468 - arm_func_end GetSize0x80Buffer - - arm_func_start GetSize0x80Buffer2 -GetSize0x80Buffer2: ; 0x02024FC8 - ldr r1, _02024FD4 ; =_022A5068 - add r0, r1, r0, lsl #7 - bx lr - .align 2, 0 -_02024FD4: .word _022A5068 - arm_func_end GetSize0x80Buffer2 - - arm_func_start GetDungeonResultString -GetDungeonResultString: ; 0x02024FD8 - ldr r1, _02024FE4 ; =_022A5268 - add r0, r1, r0, lsl #7 - bx lr - .align 2, 0 -_02024FE4: .word _022A5268 - arm_func_end GetDungeonResultString - - arm_func_start SubstitutePlaceholderItemTags -SubstitutePlaceholderItemTags: ; 0x02024FE8 - stmdb sp!, {r3, r4, r5, lr} - cmp r1, #0 - beq _02025030 - mov r3, #0x14 - mul r3, r0, r3 - ldr lr, _02025070 ; =_022A596A - ldrh r0, [r1] - ldr ip, _02025074 ; =_022A5969 - add r4, lr, r3 - strh r0, [lr, r3] - ldrh lr, [r1, #2] - mov r0, #1 - add r5, ip, r3 - strh lr, [r4, #2] - ldrh r1, [r1, #4] - strh r1, [r4, #4] - strb r0, [ip, r3] - b _02025048 -_02025030: - mov r1, #0x14 - mul r3, r0, r1 - ldr r1, _02025074 ; =_022A5969 - mov r0, #0 - strb r0, [r1, r3] - add r5, r1, r3 -_02025048: - cmp r2, #0 - moveq r0, #0 - beq _02025068 - ldr ip, _02025078 ; =_022A5970 - ldmia r2, {r0, r1, r2} - add r3, ip, r3 - stmia r3, {r0, r1, r2} - mov r0, #1 -_02025068: - strb r0, [r5] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02025070: .word _022A596A -_02025074: .word _022A5969 -_02025078: .word _022A5970 - arm_func_end SubstitutePlaceholderItemTags - - arm_func_start sub_0202507C -sub_0202507C: ; 0x0202507C - stmdb sp!, {r3, lr} - mov r2, #0x14 - mul r3, r1, r2 - ldr r1, _020250D8 ; =_022A5969 - ldrb r1, [r1, r3] - cmp r1, #0 - beq _020250BC - ldr r1, _020250DC ; =_022A596A - ldr r2, _020250E0 ; =_022A5970 - mov ip, #0 - add r1, r1, r3 - add r2, r2, r3 - mov r3, #1 - str ip, [sp] - bl MaybeGetFormattedItemName - ldmia sp!, {r3, pc} -_020250BC: - ldr r1, _020250DC ; =_022A596A - mov r2, #0 - add r1, r1, r3 - mov r3, #1 - str r2, [sp] - bl MaybeGetFormattedItemName - ldmia sp!, {r3, pc} - .align 2, 0 -_020250D8: .word _022A5969 -_020250DC: .word _022A596A -_020250E0: .word _022A5970 - arm_func_end sub_0202507C diff --git a/asm/main_020151C8.s b/asm/main_020151C8.s new file mode 100644 index 00000000..e500c3b5 --- /dev/null +++ b/asm/main_020151C8.s @@ -0,0 +1,20461 @@ + .include "asm/macros.inc" + .include "main_020151C8.inc" + + .text + + arm_func_start GetMoveCategory +GetMoveCategory: ; 0x020151C8 + ldr r2, _020151E0 ; =DUNGEON_MOVE_TABLES + mov r1, #0x1a + ldr r2, [r2, #8] + mla r1, r0, r1, r2 + ldrb r0, [r1, #3] + bx lr + .align 2, 0 +_020151E0: .word DUNGEON_MOVE_TABLES + arm_func_end GetMoveCategory + + arm_func_start GetPpIncrease +GetPpIncrease: ; 0x020151E4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r0, r1 + mov r1, #0x39 + mov r6, #0 + bl IqSkillFlagTest + cmp r0, #0 + orrne r0, r6, #0x100 + movne r0, r0, lsl #0x10 + movne r6, r0, lsr #0x10 + mov r0, r4 + mov r1, #0 + bl GetAbility + mov r5, r0 + mov r0, r4 + mov r1, #1 + bl GetAbility + mov r3, r0 + mov r1, r4 + mov r2, r5 + mov r0, #0x4a + bl BagHasExclusiveItemTypeForMonster + cmp r0, #0 + orrne r0, r6, #0x200 + movne r0, r0, lsl #0x10 + movne r6, r0, lsr #0x10 + mov r0, r4 + mov r1, #0 + bl GetAbility + mov r5, r0 + mov r0, r4 + mov r1, #1 + bl GetAbility + mov r3, r0 + mov r1, r4 + mov r2, r5 + mov r0, #0x4b + bl BagHasExclusiveItemTypeForMonster + cmp r0, #0 + orrne r0, r6, #0x400 + movne r0, r0, lsl #0x10 + movne r6, r0, lsr #0x10 + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GetPpIncrease + + arm_func_start OpenWaza +OpenWaza: ; 0x02015294 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r1, _020152EC ; =_020AF6E8 + mov r4, r0 + ldr r0, _020152F0 ; =_020AF700 + ldr r1, [r1, r4, lsl #2] + add r0, r0, r4, lsl #3 + mov r2, #0 + bl LoadFileFromRom + ldr r1, _020152F0 ; =_020AF700 + add r0, sp, #0 + ldr r1, [r1, r4, lsl #3] + bl HandleSir0Translation + ldr r3, [sp] + ldr r1, _020152F4 ; =_020AF6F8 + ldr r2, [r3] + ldr r0, _020152F8 ; =_020AF6F0 + str r2, [r1, r4, lsl #2] + ldr r1, [r3, #4] + str r1, [r0, r4, lsl #2] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020152EC: .word _020AF6E8 +_020152F0: .word _020AF700 +_020152F4: .word _020AF6F8 +_020152F8: .word _020AF6F0 + arm_func_end OpenWaza + + arm_func_start SelectWaza +SelectWaza: ; 0x020152FC + ldr r1, _0201531C ; =_020AF6F8 + ldr r2, _02015320 ; =_020AF6F0 + ldr r3, [r1, r0, lsl #2] + ldr r1, _02015324 ; =DUNGEON_MOVE_TABLES + ldr r0, [r2, r0, lsl #2] + str r3, [r1, #8] + str r0, [r1] + bx lr + .align 2, 0 +_0201531C: .word _020AF6F8 +_02015320: .word _020AF6F0 +_02015324: .word DUNGEON_MOVE_TABLES + arm_func_end SelectWaza + + arm_func_start sub_02015328 +sub_02015328: ; 0x02015328 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, r1 + mov r0, #0x40 + mov r1, #0 + mov r5, r2 + mov r4, r3 + bl MemAlloc + ldr r2, _02015500 ; =_020AF710 + mov r1, #0x40 + str r0, [r2] + bl MemZero + ldr r0, _02015500 ; =_020AF710 + ldr r2, [sp, #0x28] + ldr r1, _02015504 ; =_020AF714 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #0x1c + mov r2, #0 + bl LoadFileFromRom + ldr r0, _02015500 ; =_020AF710 + ldr r1, [r0] + add r0, r1, #0x10 + ldr r1, [r1, #0x1c] + bl HandleSir0Translation + ldr r0, _02015500 ; =_020AF710 + ldr r1, [sp, #0x28] + ldr ip, [r0] + ldrsh r3, [sp, #0x24] + ldr r2, [ip, #0x10] + cmp r1, #2 + ldr r2, [r2, #4] + str r2, [ip, #0x2c] + ldr r2, [r0] + str r5, [r2, #8] + ldr r2, [r0] + str r4, [r2, #0xc] + ldr r2, [r0] + strh r3, [r2, #0x30] + mov r2, #0 + bne _02015454 + ldr r1, _02015508 ; =_02098F60 + add r0, sp, #0 + bl LoadFileFromRom + ldr r0, _02015500 ; =_020AF710 + ldr r1, [sp] + ldr r0, [r0] + add r0, r0, #0x14 + bl HandleSir0Translation + ldr r0, _02015500 ; =_020AF710 + ldrsh r4, [sp, #0x24] + ldr r0, [r0] + ldr r2, [r0, #0x14] + mov r1, r4 + bl sub_0201614C + add r0, sp, #0 + bl UnloadFile + ldr r1, _0201550C ; =_02098F78 + add r0, sp, #0 + mov r2, #0 + bl LoadFileFromRom + ldr r0, _02015500 ; =_020AF710 + ldr r1, [sp] + ldr r0, [r0] + add r0, r0, #0x14 + bl HandleSir0Translation + ldr r0, _02015500 ; =_020AF710 + add r1, r4, #1 + ldr r0, [r0] + ldr r2, [r0, #0x14] + bl sub_0201614C + add r0, sp, #0 + bl UnloadFile + b _020154CC +_02015454: + cmp r1, #1 + ldr r0, [r0] + bne _02015470 + ldr r1, _02015510 ; =_02098F90 + add r0, r0, #0x24 + bl LoadFileFromRom + b _0201547C +_02015470: + ldr r1, _02015514 ; =_02098FA8 + add r0, r0, #0x24 + bl LoadFileFromRom +_0201547C: + ldr r0, _02015500 ; =_020AF710 + ldr r0, [r0] + ldr r1, [r0, #0x24] + add r0, r0, #0x14 + bl HandleSir0Translation + ldr r0, _02015500 ; =_020AF710 + ldrsh r4, [sp, #0x24] + ldr r0, [r0] + ldr r2, [r0, #0x14] + mov r1, r4 + bl sub_0201614C + ldr r0, _02015500 ; =_020AF710 + ldr r2, _02015518 ; =_020AF720 + ldr r0, [r0] + add r1, r4, #1 + bl sub_0201614C + ldr r0, _02015500 ; =_020AF710 + ldr r0, [r0] + add r0, r0, #0x24 + bl UnloadFile +_020154CC: + ldr r0, _02015500 ; =_020AF710 + ldrsh r3, [sp, #0x20] + ldr r2, [r0] + mov r1, #0 + str r7, [r2] + ldr r2, [r0] + str r6, [r2, #4] + ldr r2, [r0] + strh r3, [r2, #0x32] + ldr r0, [r0] + strb r1, [r0, #0x3c] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02015500: .word _020AF710 +_02015504: .word _020AF714 +_02015508: .word _02098F60 +_0201550C: .word _02098F78 +_02015510: .word _02098F90 +_02015514: .word _02098FA8 +_02015518: .word _020AF720 + arm_func_end sub_02015328 + + arm_func_start sub_0201551C +sub_0201551C: ; 0x0201551C + stmdb sp!, {r3, lr} + ldr r0, _0201556C ; =_020AF710 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrb r0, [r0, #0x3c] + cmp r0, #0 + beq _02015540 + bl sub_02015EB4 +_02015540: + ldr r0, _0201556C ; =_020AF710 + ldr r0, [r0] + add r0, r0, #0x1c + bl UnloadFile + ldr r0, _0201556C ; =_020AF710 + ldr r0, [r0] + bl MemFree + ldr r0, _0201556C ; =_020AF710 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201556C: .word _020AF710 + arm_func_end sub_0201551C + + arm_func_start sub_02015570 +sub_02015570: ; 0x02015570 + ldr r0, _02015584 ; =_020AF710 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x3c] + bx lr + .align 2, 0 +_02015584: .word _020AF710 + arm_func_end sub_02015570 + + arm_func_start sub_02015588 +sub_02015588: ; 0x02015588 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _020155F4 ; =_020AF710 + mov r1, #0x6000 + ldr r2, [r0] + ldrsh r0, [r2, #0x32] + ldr r2, [r2] + add r0, r2, r0, lsl #5 + bl MemZero32 + ldr r0, _020155F4 ; =_020AF710 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _020155EC + bl sub_02015EB4 + ldr r1, _020155F8 ; =_02098EA8 + ldr r0, _020155F4 ; =_020AF710 + ldr r2, [r1, #4] + ldr r1, [r1] + ldr r0, [r0] + str r1, [sp] + str r2, [sp, #4] + ldr r0, [r0, #4] + add r1, sp, #0 + bl sub_0200B3C0 +_020155EC: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_020155F4: .word _020AF710 +_020155F8: .word _02098EA8 + arm_func_end sub_02015588 + + arm_func_start sub_020155FC +sub_020155FC: ; 0x020155FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x104 + bl StringFromId + mov r8, #0 + mov r7, r0 + mov sb, r8 + mov r6, r8 + add r5, sp, #4 + mov fp, #0x100 + mov r4, r8 +_02015624: + ldrb r0, [r7, r8] + cmp r0, #0 + beq _02015698 + mov r0, r5 + mov r1, fp + mov r3, #0x440 + str r6, [sp] + add r2, r7, r8 + bl PreprocessString + strb r4, [r5, r0] + add r8, r8, r0 + ldrb sl, [r7, r8] + cmp sl, #0 + beq _02015690 + ldr r1, _020156A8 ; =_02098FBC + mov r2, #3 + add r0, r7, r8 + bl strncmp + cmp r0, #0 + bne _02015684 + ldr r0, _020156A8 ; =_02098FBC + bl strlen + add r8, r8, r0 + b _02015690 +_02015684: + cmp sl, #0xd + cmpne sl, #0xa + addeq r8, r8, #1 +_02015690: + add sb, sb, #1 + b _02015624 +_02015698: + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020156A8: .word _02098FBC + arm_func_end sub_020155FC + + arm_func_start sub_020156AC +sub_020156AC: ; 0x020156AC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + cmp r1, #0 + beq _02015780 + ldr r3, _02015788 ; =_020AF710 + mov r2, r0, asr #2 + ldr r6, [r3] + add r2, r0, r2, lsr #29 + ldrsh r5, [r6, #0x32] + mov r2, r2, asr #3 + mov r4, r0, lsr #0x1f + rsb r3, r4, r0, lsl #29 + ldr r6, [r6] + add r5, r5, r2, lsl #5 + mov r0, #0 + add r3, r4, r3, ror #29 + add r5, r6, r5, lsl #5 + add r3, r5, r3, lsl #2 + mov r4, r0 + and r5, r1, #0xf +_020156FC: + mov r1, r4, lsl #2 + add r4, r4, #1 + cmp r4, #8 + orr r0, r0, r5, lsl r1 + blt _020156FC + mov r1, #0 +_02015714: + add r1, r1, #1 + cmp r1, #0x20 + str r0, [r3], #0x20 + blt _02015714 + ldr r7, _02015788 ; =_020AF710 + mov r6, #0 + ldr r0, [r7] + add r4, sp, #0 + ldrsh r0, [r0, #0x32] + add r0, r0, r2, lsl #5 + mov r0, r0, lsl #0x10 + str r2, [sp, #4] + mov r5, r0, asr #0x10 +_02015748: + ldr r0, [r7] + str r6, [sp] + ldrsh r2, [r0, #0x30] + ldr r0, [r0, #4] + mov r1, r4 + add r2, r2, #1 + orr r2, r5, r2, lsl #12 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl sub_0200B3FC + add r6, r6, #1 + cmp r6, #0x20 + add r5, r5, #1 + blt _02015748 +_02015780: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02015788: .word _020AF710 + arm_func_end sub_020156AC + + arm_func_start sub_0201578C +sub_0201578C: ; 0x0201578C +#ifdef EUROPE +#define SUB_0201578C_STACK_OFFSET 4 +#else +#define SUB_0201578C_STACK_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2f8 + sub sp, sp, #0x400 + ldr r5, [sp, #0x720] + mov r4, #0 + str r5, [sp, #0x720] + str r0, [sp, #4] + str r1, [sp, #8] + mov r7, r2 + str r3, [sp, #0xc] + str r4, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] +_020157B8: + ldr r0, [sp, #0xc] + ldrb r0, [r0, r4] + cmp r0, #0 + beq _02015CF8 + ldr r1, [sp, #0xc] + add r0, sp, #0x500 + mov r5, #0 + add r2, r1, r4 + add r0, r0, #0xf8 + mov r1, #0x100 + mov r3, #0x440 + str r5, [sp] + bl PreprocessString + add r1, sp, #0x500 + add r1, r1, #0xf8 + mov r2, r5 + strb r2, [r1, r0] + add r4, r4, r0 + ldr r0, [sp, #0xc] + ldrb r5, [r0, r4] + cmp r5, #0 + beq _02015844 + ldr r1, _02015D08 ; =_02098FBC + add r0, r0, r4 + mov r2, #3 + bl strncmp + cmp r0, #0 + bne _02015838 + ldr r0, _02015D08 ; =_02098FBC + bl strlen + add r4, r4, r0 + b _02015844 +_02015838: + cmp r5, #0xd + cmpne r5, #0xa + addeq r4, r4, #1 +_02015844: + ldr r0, [sp, #0x720] + cmp r0, #2 + bne _0201586C + add r0, sp, #0x500 + add r0, r0, #0xf8 + bl sub_020161CC + rsb r0, r0, #0x100 + add r0, r0, r0, lsr #31 + mov r5, r0, asr #1 + b _02015888 +_0201586C: + cmp r0, #1 + ldrne r5, [sp, #8] + bne _02015888 + add r0, sp, #0x500 + add r0, r0, #0xf8 + bl sub_020161CC + rsb r5, r0, #0x100 +_02015888: + add r0, r7, #0xa + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + mov r2, r0, asr #2 + mov r3, r0, lsr #0x1f + add r2, r1, r2, lsr #29 + rsb r1, r3, r1, lsl #29 + add r1, r3, r1, ror #29 + mov r0, r7, lsr #0x1f + rsb r3, r0, r7, lsl #29 + add r0, r0, r3, ror #29 + str r0, [sp, #0x3c + SUB_0201578C_STACK_OFFSET] + mov r0, r2, asr #3 + mov r6, r7, asr #2 + str r1, [sp, #0x34 + SUB_0201578C_STACK_OFFSET] + add r1, r7, r6, lsr #29 + str r0, [sp, #0x30 + SUB_0201578C_STACK_OFFSET] + mov r0, r1, asr #3 + add r6, sp, #0x500 + str r0, [sp, #0x38 + SUB_0201578C_STACK_OFFSET] + add r6, r6, #0xf8 + b _02015CD8 +#ifdef EUROPE +_020158E0: + ldrb r0, [r6], #1 + cmp r0, #0x23 + str r0, [sp, #0x18] + addeq r5, r5, #8 + beq _02015CD8 + cmp r0, #0x20 + addeq r5, r5, #6 + beq _02015CD8 + cmp r0, #0x5b + bne _02015B14 + mov r0, #1 + str r6, [sp, #0x44] + str r0, [sp, #0x1c] + mov r1, r0 +_020159C0: + ldrb r0, [r6], #1 + cmp r0, #0x5d + beq _020159E0 + cmp r0, #0x3a + addeq r0, sp, #0x44 + streq r6, [r0, r1, lsl #2] + addeq r1, r1, #1 + b _020159C0 +_020159E0: + ldr r0, [sp, #0x44] + ldr r1, _02015DEC ; =_02099404_EU + bl StrcmpTagVeneer + cmp r0, #0 + beq _02015A0C + ldr r0, [sp, #0x48] + bl sub_0202380C_EU + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + b _02015B08 +_02015A0C: + ldr r0, [sp, #0x44] + ldr r1, _02015D0C ; =_02098FC0 + bl StrcmpTagVeneer + cmp r0, #0 + beq _02015B08 + ldr r0, [sp, #0x48] + bl AtoiTagVeneer + ldr r0, [sp, #0x4c] + bl AtoiTagVeneer + ldr r1, _02015D10 ; =_020AF710 + add ip, r5, #2 + ldr r1, [r1] + ldr r8, [sp, #0x10] + ldrsh r3, [r1, #0x32] + mov r1, ip, asr #2 + add r1, ip, r1, lsr #29 + mov r2, r1, asr #3 + ldr r1, [sp, #0x34] + mov r0, r0, lsl #0x10 + add r1, r2, r1, lsl #5 + add r2, r3, r1 + ldr r1, [sp, #4] + add r2, r1, r2, lsl #5 + ldr r1, [sp, #0x38] + add sb, r2, r1, lsl #2 + mov r1, #0 + str r1, [sp, #0x20] +_02015A78: + mov sl, sb + mov lr, #0 + b _02015AD0 +_02015A84: + add r1, ip, lr + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #29 + add r1, r2, r1, ror #29 + ldr r2, _02015D14 ; =_02098EE0 + add lr, lr, #8 + add r3, r2, r1, lsl #4 + ldr r1, [r2, r1, lsl #4] + ldr r2, [sl] + ldr fp, [r3, #8] + bic r1, r1, #0 + orr r1, r2, r1, lsl fp + str r1, [sl] + ldr r1, [r3, #4] + ldr r2, [sl, #0x20]! + ldr r3, [r3, #0xc] + bic r1, r1, #0 + orr r1, r2, r1, lsr r3 + str r1, [sl] +_02015AD0: + cmp lr, r0, asr #16 + blt _02015A84 + add r8, r8, #1 + mov r2, r8, lsr #0x1f + rsb r1, r2, r8, lsl #29 + adds r1, r2, r1, ror #29 + ldr r1, [sp, #0x20] + add sb, sb, #4 + add r1, r1, #1 + addeq sb, sb, #0x3e0 + str r1, [sp, #0x20] + cmp r1, #2 + blt _02015A78 + add r5, r5, r0, asr #16 +_02015B08: + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _02015CD8 +_02015B14: + ldr r0, [sp, #0x18] + bl sub_02025480 + bl sub_0201628C + mov sl, #0 + add r1, sp, #0x400 + add r1, r1, #0xd8 + ldr r3, [r0] + str r1, [sp, #0x24] + mov r8, sl + mov sb, sl +_02015B3C: + ldrb r2, [r3], #1 + add r1, sp, #0x58 + add r1, r1, sb + mov fp, r2, asr #4 + and ip, fp, #0xf + add fp, sp, #0x58 + strb ip, [fp, sb] + and r2, r2, #0xf + add sb, sb, #2 + strb r2, [r1, #1] + cmp sb, #0x240 + blt _02015B3C +_02015B6C: + cmp r8, #0x240 + bge _02015BFC + add r1, sp, #0x58 + ldrb r1, [r1, sl] + add r3, sl, #1 + mov sl, r3 + tst r1, #8 + and r1, r1, #7 + mov sb, #0 + beq _02015BF0 + add r2, sp, #0x58 + ldrb r2, [r2, r3] + add sl, r3, #1 + and r3, r2, #0xff + b _02015BC0 +_02015BA8: + add r2, sp, #0x298 + strb r3, [r2, r8] + add r8, r8, #1 + cmp r8, #0x240 + bge _02015B6C + add sb, sb, #1 +_02015BC0: + cmp sb, r1 + blt _02015BA8 + b _02015B6C +_02015BCC: + add r2, sp, #0x58 + ldrb r3, [r2, sl] + add r2, sp, #0x298 + add sl, sl, #1 + strb r3, [r2, r8] + add r8, r8, #1 + cmp r8, #0x240 + bge _02015B6C + add sb, sb, #1 +_02015BF0: + cmp sb, r1 + blt _02015BCC + b _02015B6C +_02015BFC: + mov fp, #0 +_02015C00: + ldr r1, [sp, #0x24] + str r1, [sp, #0x14] + add r1, r1, #4 + str r1, [sp, #0x24] + add r1, sp, #0x298 + add ip, r1, fp + ldrb r3, [r1, fp] + ldrb r1, [ip, #2] + ldrb r2, [ip, #1] + and sl, r3, #0xf + mov r1, r1, lsl #8 + and r8, r1, #0xf00 + ldrb r1, [ip, #5] + mov r2, r2, lsl #4 + and sb, r2, #0xf0 + mov r1, r1, lsl #0x14 + ldrb r3, [ip, #3] + ldrb r2, [ip, #4] + and lr, r1, #0xf00000 + ldrb r1, [ip, #7] + ldrb ip, [ip, #6] + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x1c + mov ip, ip, lsl #0x18 + mov r3, r3, lsl #0xc + add fp, fp, #8 + and r1, r1, #0xf0000000 + and ip, ip, #0xf000000 + orr r1, r1, ip + and r2, r2, #0xf0000 + orr r1, lr, r1 + and r3, r3, #0xf000 + orr r1, r2, r1 + orr r1, r3, r1 + orr r1, r8, r1 + orr r1, sb, r1 + orr r2, sl, r1 + ldr r1, [sp, #0x14] + cmp fp, #0x240 + str r2, [r1] + blt _02015C00 + ldrb lr, [r0, #6] + ldr r0, _02015D10 ; =_020AF710 + add r8, sp, #0x400 + ldr r1, [r0] + mov r0, r5, asr #2 + add r0, r5, r0, lsr #29 + ldrsh r3, [r1, #0x32] + mov r1, r0, asr #3 + ldr r0, [sp, #0x3c] + mov r2, r7 + add r0, r1, r0, lsl #5 + add r1, r3, r0 + ldr r0, [sp, #4] + add r8, r8, #0xd8 + add r1, r0, r1, lsl #5 + ldr r0, [sp, #0x40] + add r3, r1, r0, lsl #2 + mov r1, r5, lsr #0x1f + rsb r0, r1, r5, lsl #29 + add r1, r1, r0, ror #29 + ldr r0, _02015D14 ; =_02098EE0 + add sb, r0, r1, lsl #4 + mov r0, #0 + str r0, [sp, #0x28] +_02015D04: + mov r0, #0 + mov sl, r3 + str r0, [sp, #0x2c] +_02015D10_EU: + ldr r1, [r8] + cmp r1, #0 + beq _02015D4C + ldr r0, [sl] + ldr ip, [sb] + ldr fp, [sb, #8] + and ip, r1, ip + orr r0, r0, ip, lsl fp + str r0, [sl] + ldr ip, [sl, #0x20] + ldr fp, [sb, #4] + ldr r0, [sb, #0xc] + and r1, r1, fp + orr r0, ip, r1, lsr r0 + str r0, [sl, #0x20] +_02015D4C: + ldr r0, [sp, #0x2c] + add r8, r8, #4 + add r0, r0, #1 + add sl, sl, #0x20 + str r0, [sp, #0x2c] + cmp r0, #3 + blt _02015D10_EU + add r2, r2, #1 + mov r1, r2, lsr #0x1f + rsb r0, r1, r2, lsl #29 + adds r0, r1, r0, ror #29 + ldr r0, [sp, #0x28] + add r3, r3, #4 + add r0, r0, #1 + addeq r3, r3, #0x3e0 + str r0, [sp, #0x28] + cmp r0, #0x18 + blt _02015D04 + ldr r0, [sp, #0x18] + add r5, r5, lr + cmp r0, #0x7e +#else +_020158E0: + ldrb r8, [r6], #1 + cmp r8, #0x23 + addeq r5, r5, #8 + beq _02015CD8 + cmp r8, #0x20 +#ifdef JAPAN + addeq r5, r5, #0xc +#else + addeq r5, r5, #6 +#endif + beq _02015CD8 + cmp r8, #0x5b + bne _02015A2C + str r6, [sp, #0x44] + mov r1, #1 +_0201590C: + ldrb r0, [r6], #1 + cmp r0, #0x5d + beq _0201592C + cmp r0, #0x3a + addeq r0, sp, #0x44 + streq r6, [r0, r1, lsl #2] + addeq r1, r1, #1 + b _0201590C +_0201592C: + ldr r0, [sp, #0x44] + ldr r1, _02015D0C ; =_02098FC0 + bl StrcmpTagVeneer + cmp r0, #0 + beq _02015CD8 + ldr r0, [sp, #0x48] + bl AtoiTagVeneer + ldr r0, [sp, #0x4c] + bl AtoiTagVeneer + ldr r1, _02015D10 ; =_020AF710 + add ip, r5, #2 + ldr r1, [r1] + ldr r8, [sp, #0x10] + ldrsh r3, [r1, #0x32] + mov r1, ip, asr #2 + add r1, ip, r1, lsr #29 + mov r2, r1, asr #3 + ldr r1, [sp, #0x30] + mov r0, r0, lsl #0x10 + add r1, r2, r1, lsl #5 + add r2, r3, r1 + ldr r1, [sp, #4] + add r2, r1, r2, lsl #5 + ldr r1, [sp, #0x34] + add sb, r2, r1, lsl #2 + mov r1, #0 + str r1, [sp, #0x18] +_02015998: + mov sl, sb + mov lr, #0 + b _020159F0 +_020159A4: + add r1, ip, lr + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #29 + add r1, r2, r1, ror #29 + ldr r2, _02015D14 ; =_02098EE0 + add lr, lr, #8 + add r3, r2, r1, lsl #4 + ldr r1, [r2, r1, lsl #4] + ldr r2, [sl] + ldr fp, [r3, #8] + bic r1, r1, #0 + orr r1, r2, r1, lsl fp + str r1, [sl] + ldr r1, [r3, #4] + ldr r2, [sl, #0x20]! + ldr r3, [r3, #0xc] + bic r1, r1, #0 + orr r1, r2, r1, lsr r3 + str r1, [sl] +_020159F0: + cmp lr, r0, asr #16 + blt _020159A4 + add r8, r8, #1 + mov r2, r8, lsr #0x1f + rsb r1, r2, r8, lsl #29 + adds r1, r2, r1, ror #29 + ldr r1, [sp, #0x18] + add sb, sb, #4 + add r1, r1, #1 + addeq sb, sb, #0x3e0 + str r1, [sp, #0x18] + cmp r1, #2 + blt _02015998 + add r5, r5, r0, asr #16 + b _02015CD8 +_02015A2C: +#ifdef JAPAN + tst r8, #0x80 + beq _02015A24 + ldrb r0, [r6] + cmp r0, #0 + orrne r8, r0, r8, lsl #8 + ldr r0, _02015D10_JP ; =0x00008140 + addne r6, r6, #1 + cmp r8, r0 + addeq r5, r5, #0xc + beq _02015CD8 +_02015A24: +#endif + mov r0, r8 + bl sub_02025480 + bl sub_0201628C + mov ip, #0 + add r1, sp, #0x400 + add r1, r1, #0xd8 + ldr sb, [r0] + str r1, [sp, #0x1c] + mov sl, ip + mov fp, ip +_02015A54: + ldrb r3, [sb], #1 + add r1, sp, #0x58 + add lr, r1, fp + mov r1, r3, asr #4 + and r2, r1, #0xf + add r1, sp, #0x58 + strb r2, [r1, fp] + and r1, r3, #0xf + add fp, fp, #2 + strb r1, [lr, #1] + cmp fp, #0x240 + blt _02015A54 +_02015A84: + cmp sl, #0x240 + bge _02015B14 + add r1, sp, #0x58 + ldrb r1, [r1, ip] + add r3, ip, #1 + mov ip, r3 + tst r1, #8 + and r1, r1, #7 + mov sb, #0 + beq _02015B08 + add r2, sp, #0x58 + ldrb r2, [r2, r3] + add ip, r3, #1 + and r3, r2, #0xff + b _02015AD8 +_02015AC0: + add r2, sp, #0x298 + strb r3, [r2, sl] + add sl, sl, #1 + cmp sl, #0x240 + bge _02015A84 + add sb, sb, #1 +_02015AD8: + cmp sb, r1 + blt _02015AC0 + b _02015A84 +_02015AE4: + add r2, sp, #0x58 + ldrb r3, [r2, ip] + add r2, sp, #0x298 + add ip, ip, #1 + strb r3, [r2, sl] + add sl, sl, #1 + cmp sl, #0x240 + bge _02015A84 + add sb, sb, #1 +_02015B08: + cmp sb, r1 + blt _02015AE4 + b _02015A84 +_02015B14: + mov fp, #0 +_02015B18: + ldr r1, [sp, #0x1c] + str r1, [sp, #0x14] + add r1, r1, #4 + str r1, [sp, #0x1c] + add r1, sp, #0x298 + add ip, r1, fp + ldrb r3, [r1, fp] + ldrb r1, [ip, #2] + ldrb r2, [ip, #1] + and sl, r3, #0xf + mov r1, r1, lsl #8 + and r1, r1, #0xf00 + str r1, [sp, #0x40] + ldrb r1, [ip, #5] + mov r2, r2, lsl #4 + and sb, r2, #0xf0 + mov r1, r1, lsl #0x14 + ldrb r3, [ip, #3] + ldrb r2, [ip, #4] + and lr, r1, #0xf00000 + ldrb r1, [ip, #7] + ldrb ip, [ip, #6] + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x1c + mov ip, ip, lsl #0x18 + mov r3, r3, lsl #0xc + add fp, fp, #8 + and r1, r1, #0xf0000000 + and ip, ip, #0xf000000 + orr r1, r1, ip + and r2, r2, #0xf0000 + orr r1, lr, r1 + and r3, r3, #0xf000 + orr r1, r2, r1 + orr r2, r3, r1 + ldr r1, [sp, #0x40] + cmp fp, #0x240 + orr r1, r1, r2 + orr r1, sb, r1 + orr r2, sl, r1 + ldr r1, [sp, #0x14] + str r2, [r1] + blt _02015B18 + ldrb r0, [r0, #6] + add r3, sp, #0x400 + mov lr, r7 + str r0, [sp, #0x20] + ldr r0, _02015D10 ; =_020AF710 + add r3, r3, #0xd8 + ldr r1, [r0] + mov r0, r5, asr #2 + add r0, r5, r0, lsr #29 + ldrsh r2, [r1, #0x32] + mov r1, r0, asr #3 + ldr r0, [sp, #0x38] + add r0, r1, r0, lsl #5 + add r1, r2, r0 + ldr r0, [sp, #4] + add r1, r0, r1, lsl #5 + ldr r0, [sp, #0x3c] + add r2, r1, r0, lsl #2 + mov r1, r5, lsr #0x1f + rsb r0, r1, r5, lsl #29 + add r1, r1, r0, ror #29 + ldr r0, _02015D14 ; =_02098EE0 + add sb, r0, r1, lsl #4 + mov r0, #0 + str r0, [sp, #0x24] +_02015C28: + mov r0, #0 + mov sl, r2 + str r0, [sp, #0x28] +_02015C34: + ldr r1, [r3] + cmp r1, #0 + beq _02015C70 + ldr r0, [sl] + ldr ip, [sb] + ldr fp, [sb, #8] + and ip, r1, ip + orr r0, r0, ip, lsl fp + str r0, [sl] + ldr ip, [sl, #0x20] + ldr fp, [sb, #4] + ldr r0, [sb, #0xc] + and r1, r1, fp + orr r0, ip, r1, lsr r0 + str r0, [sl, #0x20] +_02015C70: + ldr r0, [sp, #0x28] + add r3, r3, #4 + add r0, r0, #1 + add sl, sl, #0x20 + str r0, [sp, #0x28] + cmp r0, #3 + blt _02015C34 + add lr, lr, #1 + mov r1, lr, lsr #0x1f + rsb r0, r1, lr, lsl #29 + adds r0, r1, r0, ror #29 + ldr r0, [sp, #0x24] + add r2, r2, #4 + add r0, r0, #1 + addeq r2, r2, #0x3e0 + str r0, [sp, #0x24] + cmp r0, #0x18 + blt _02015C28 + ldr r0, [sp, #0x20] + cmp r8, #0x7e + add r5, r5, r0 +#endif + ldreqb r0, [r6] + cmpeq r0, #0x32 + ldreqb r0, [r6, #1] + cmpeq r0, #0x37 + addeq r6, r6, #2 +_02015CD8: + ldrb r0, [r6] + cmp r0, #0 + bne _020158E0 + ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] + add r7, r7, #0x18 + add r0, r0, #1 + str r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] + b _020157B8 +_02015CF8: + ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET] + add sp, sp, #0x2f8 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02015D08: .word _02098FBC +#ifdef EUROPE +_02015DEC: .word _02099404_EU +#endif +_02015D0C: .word _02098FC0 +_02015D10: .word _020AF710 +_02015D14: .word _02098EE0 +#ifdef JAPAN +_02015D10_JP: .word 0x00008140 +#endif + arm_func_end sub_0201578C + + arm_func_start sub_02015D18 +sub_02015D18: ; 0x02015D18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r5, r1 + mov r4, r2 + mov r1, #0 + mov r6, r4 + str r1, [sp, #4] + str r5, [sp, #8] + b _02015D60 +_02015D3C: + ldrb r1, [r2], #1 + cmp r1, #0x7e + strb r1, [r6], #1 + bne _02015D60 + ldrb r1, [r2] + cmp r1, #0x32 + ldreqb r1, [r2, #1] + cmpeq r1, #0x37 + addeq r2, r2, #2 +_02015D60: + ldrb r1, [r2] + cmp r1, #0 + bne _02015D3C + mov r1, #0 + strb r1, [r6] + str r3, [sp] + ldr r2, _02015E40 ; =_020AF710 + mov r1, r0 + ldr r0, [r2] + mov r2, r5 + ldr r0, [r0] + mov r3, r4 + bl sub_0201578C + mov r1, r5, asr #2 + add r2, r5, r1, lsr #29 + mov r7, r0 + mov r1, #0x18 + mul r0, r7, r1 + add r0, r0, r2, asr #3 + add r3, r0, #7 + mov r0, r3, asr #2 + add r0, r3, r0, lsr #29 + mov r0, r0, asr #3 + mov sb, r2, asr #3 + bl _s32_div_f + ldr fp, _02015E40 ; =_020AF710 + mov sl, r1 + ldr r0, [fp] + mov r4, #0 + ldrsh r0, [r0, #0x32] + add r0, r0, sb, lsl #5 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + b _02015E2C +_02015DE8: + mov r5, #0 + add r8, sb, r4 +_02015DF0: + ldr r0, [fp] + str r5, [sp, #4] + str r8, [sp, #8] + ldrsh r2, [r0, #0x30] + ldr r0, [r0, #4] + add r1, sp, #4 + orr r2, r6, r2, lsl #12 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl sub_0200B3FC + add r5, r5, #1 + cmp r5, #0x20 + add r6, r6, #1 + blt _02015DF0 + add r4, r4, #1 +_02015E2C: + cmp r4, sl + blt _02015DE8 + mov r0, r7 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02015E40: .word _020AF710 + arm_func_end sub_02015D18 + + arm_func_start sub_02015E44 +sub_02015E44: ; 0x02015E44 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl StringFromId + mov r2, r0 + mov r1, r4 + mov r0, #0 + mov r3, #2 + bl sub_02015D18 + ldmia sp!, {r4, pc} + arm_func_end sub_02015E44 + + arm_func_start sub_02015E6C +sub_02015E6C: ; 0x02015E6C + stmdb sp!, {r3, lr} + ldr r0, _02015EB0 ; =_020AF710 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02015E88 + bl sub_0200B330 +_02015E88: + ldr r0, _02015EB0 ; =_020AF710 + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #0 + beq _02015EA4 + bl sub_0200A174 + ldmia sp!, {r3, pc} +_02015EA4: + ldr r0, [r1, #0xc] + bl MarkPaletteDataAsNeedingUpdate + ldmia sp!, {r3, pc} + .align 2, 0 +_02015EB0: .word _020AF710 + arm_func_end sub_02015E6C + + arm_func_start sub_02015EB4 +sub_02015EB4: ; 0x02015EB4 + stmdb sp!, {r3, lr} + ldr r0, _02015EE4 ; =_020AF710 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0200B3D4 + ldr r0, _02015EE4 ; =_020AF710 + ldr r0, [r0] + ldr r0, [r0, #4] + bl sub_0200B330 + ldmia sp!, {r3, pc} + .align 2, 0 +_02015EE4: .word _020AF710 + arm_func_end sub_02015EB4 + + arm_func_start sub_02015EE8 +sub_02015EE8: ; 0x02015EE8 + stmdb sp!, {r3, lr} + ldr r1, _02015F14 ; =_020AF710 + ldr r2, [r1] + ldr r1, [r2, #8] + cmp r1, #0 + ldmneia sp!, {r3, pc} + mov r1, r0, lsl #0x10 + ldr r0, [r2, #0xc] + mov r1, r1, lsr #0x10 + bl sub_0200A618 + ldmia sp!, {r3, pc} + .align 2, 0 +_02015F14: .word _020AF710 + arm_func_end sub_02015EE8 + + arm_func_start sub_02015F18 +sub_02015F18: ; 0x02015F18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + ldr r4, _02015FD4 ; =_020AF710 + mov r6, #0 + ldr r0, [r4] + add r5, sp, #0 + ldr r0, [r0, #8] + mov r8, #0x10 + cmp r0, #0 + beq _02015F88 + ldr r7, _02015FD8 ; =_020AFC70 +_02015F44: + ldr r0, [r4] + mov r2, r6, lsl #0x10 + ldr r0, [r0, #8] + mov r1, r5 + mov r2, r2, lsr #0x10 + bl sub_0200A2B4 + ldr r0, [r7] + mov r3, r6, lsl #0x10 + mov r1, r5 + mov r2, r8 + add r0, r0, #0xcc + mov r3, r3, asr #0x10 + bl sub_0201E380 + add r6, r6, #1 + cmp r6, #0x100 + blt _02015F44 + b _02015FCC +_02015F88: + ldr r7, _02015FD8 ; =_020AFC70 +_02015F8C: + ldr r0, [r4] + mov r2, r6, lsl #0x10 + ldr r0, [r0, #0xc] + mov r1, r5 + mov r2, r2, lsr #0x10 + bl sub_0200A5F8 + ldr r0, [r7] + mov r3, r6, lsl #0x10 + mov r1, r5 + mov r2, r8 + add r0, r0, #0xcc + mov r3, r3, asr #0x10 + bl sub_0201E380 + add r6, r6, #1 + cmp r6, #0x100 + blt _02015F8C +_02015FCC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02015FD4: .word _020AF710 +_02015FD8: .word _020AFC70 + arm_func_end sub_02015F18 + + arm_func_start sub_02015FDC +sub_02015FDC: ; 0x02015FDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, #0 + mov r3, r2, asr #2 + add r2, r2, r3, lsr #29 + mov ip, r5 + mov lr, r5 + b _0201602C +_02015FF8: + mov r6, lr + add r8, r1, r5, lsl #10 +_02016000: + mov r7, ip + add r4, r8, r6, lsl #2 +_02016008: + ldr r3, [r4], #0x20 + add r7, r7, #1 + cmp r7, #0x20 + str r3, [r0], #4 + blt _02016008 + add r6, r6, #1 + cmp r6, #8 + blt _02016000 + add r5, r5, #1 +_0201602C: + cmp r5, r2, asr #3 + blt _02015FF8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_02015FDC + + arm_func_start sub_02016038 +sub_02016038: ; 0x02016038 + ldr ip, _02016048 ; =sub_0201E050 + add r1, r1, #0x10000 + mov r3, #0 + bx ip + .align 2, 0 +_02016048: .word sub_0201E050 + arm_func_end sub_02016038 + + arm_func_start sub_0201604C +sub_0201604C: ; 0x0201604C + stmdb sp!, {r3, lr} + add r1, r1, #0x10000 + str r1, [r0, #0x20] + mov ip, #0 + strh ip, [r0, #0x16] + mov r1, #8 + strh ip, [r0, #0x18] + mov ip, #0x100 + mov r1, r1, lsl r3 + strh ip, [r0, #0x1a] + strh r1, [r0, #0x1c] + ldrh lr, [r0, #0x14] + mov ip, r3, lsl #0x1d + ldr r1, _02016110 ; =_020AF710 + bic r3, lr, #7 + orr r3, r3, #5 + strh r3, [r0, #0x14] + ldrh lr, [r0, #0x14] + ldr r3, _02016114 ; =_020AFC70 + bic lr, lr, #0x38 + orr ip, lr, ip, lsr #26 + strh ip, [r0, #0x14] + ldrh ip, [r0, #0x14] + bic ip, ip, #0xc0 + strh ip, [r0, #0x14] + ldrh ip, [r0, #0x14] + bic ip, ip, #0x700 + orr ip, ip, #0x300 + strh ip, [r0, #0x14] + ldrh ip, [r0, #0x14] + bic ip, ip, #0x1800 + strh ip, [r0, #0x14] + ldrh ip, [r0, #0x14] + bic ip, ip, #0x6000 + strh ip, [r0, #0x14] + ldrh ip, [r0, #0x14] + orr ip, ip, #0x8000 + strh ip, [r0, #0x14] + ldr r1, [r1] + ldr r3, [r3] + ldrsh r1, [r1, #0x30] + ldr r3, [r3, #0xe0] + add r1, r2, r1 + mov r1, r1, lsl #0x14 + mov r1, r1, asr #0x10 + add r1, r1, #0x1000 + add r1, r3, r1, lsl #1 + str r1, [r0, #0x24] + ldmia sp!, {r3, pc} + .align 2, 0 +_02016110: .word _020AF710 +_02016114: .word _020AFC70 + arm_func_end sub_0201604C + + arm_func_start sub_02016118 +sub_02016118: ; 0x02016118 + ldr r2, _02016140 ; =_020AF720 + ldr r3, _02016144 ; =_020AF721 + ldrb ip, [r2, r1, lsl #2] + ldr r2, _02016148 ; =_020AF722 + strb ip, [r0, #0x2c] + ldrb r3, [r3, r1, lsl #2] + strb r3, [r0, #0x2d] + ldrb r1, [r2, r1, lsl #2] + strb r1, [r0, #0x2e] + bx lr + .align 2, 0 +_02016140: .word _020AF720 +_02016144: .word _020AF721 +_02016148: .word _020AF722 + arm_func_end sub_02016118 + + arm_func_start sub_0201614C +sub_0201614C: ; 0x0201614C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + ldr r0, [r6, #8] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + mov r7, #0 + beq _0201619C +_0201616C: + add r0, r7, r5, lsl #4 + mov r1, r0, lsl #0x10 + ldr r0, [r6, #8] + mov r1, r1, lsr #0x10 + add r2, r4, r7, lsl #2 + bl sub_0200A29C + add r7, r7, #1 + cmp r7, #0x10 + blt _0201616C + ldr r0, [r6, #8] + bl sub_0200A174 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0201619C: + add r0, r7, r5, lsl #4 + mov r1, r0, lsl #0x10 + ldr r0, [r6, #0xc] + mov r1, r1, lsr #0x10 + add r2, r4, r7, lsl #2 + bl CopyColorToPaletteDataRgba + add r7, r7, #1 + cmp r7, #0x10 + blt _0201619C + ldr r0, [r6, #0xc] + bl MarkPaletteDataAsNeedingUpdate + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0201614C + + arm_func_start sub_020161CC +sub_020161CC: ; 0x020161CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 +#ifdef JAPAN + mov r5, r0 + mov r4, #0 + b _02016294 +_020161DC: + ldrb r0, [r5], #1 + cmp r0, #0x23 + addeq r4, r4, #8 + beq _02016294 + cmp r0, #0x20 + addeq r4, r4, #0xc + beq _02016294 + cmp r0, #0x5b + bne _02016258 + str r5, [sp] + mov r2, #1 + add r0, sp, #0 +_0201620C: + ldrb r1, [r5], #1 + cmp r1, #0x5d + beq _02016228 + cmp r1, #0x3a + streq r5, [r0, r2, lsl #2] + addeq r2, r2, #1 + b _0201620C +_02016228: + ldr r0, [sp] + ldr r1, _02016288 ; =_02098FC0_JP + bl StrcmpTagVeneer + cmp r0, #0 + beq _02016294 + ldr r0, [sp, #4] + bl AtoiTagVeneer + ldr r0, [sp, #8] + bl AtoiTagVeneer + mov r0, r0, lsl #0x10 + add r4, r4, r0, asr #16 + b _02016294 +_02016258: + tst r0, #0x80 + beq _02016280 + ldrb r1, [r5] + cmp r1, #0 + orrne r0, r1, r0, lsl #8 + ldr r1, _020162B0_JP ; =0x00008140 + addne r5, r5, #1 + cmp r0, r1 + addeq r4, r4, #0xc + beq _02016294 +_02016280: + bl sub_02025480 + bl sub_0201628C + cmp r0, #0 + ldrneb r0, [r0, #6] + addne r4, r4, r0 +_02016294: + ldrb r0, [r5] + cmp r0, #0 + bne _020161DC + mov r0, r4 +#else + mov r4, r0 + mov r5, #0 + b _02016270 +_020161E0: + ldrb r0, [r4], #1 + cmp r0, #0x23 + addeq r5, r5, #8 + beq _02016270 + cmp r0, #0x20 + addeq r5, r5, #6 + beq _02016270 + cmp r0, #0x5b + bne _0201625C + str r4, [sp] + mov r2, #1 + add r0, sp, #0 +_02016210: + ldrb r1, [r4], #1 + cmp r1, #0x5d + beq _0201622C + cmp r1, #0x3a + streq r4, [r0, r2, lsl #2] + addeq r2, r2, #1 + b _02016210 +_0201622C: + ldr r0, [sp] + ldr r1, _02016288 ; =_02098FC0 + bl StrcmpTagVeneer + cmp r0, #0 + beq _02016270 + ldr r0, [sp, #4] + bl AtoiTagVeneer + ldr r0, [sp, #8] + bl AtoiTagVeneer + mov r0, r0, lsl #0x10 + add r5, r5, r0, asr #16 + b _02016270 +_0201625C: + bl sub_02025480 + bl sub_0201628C + cmp r0, #0 + ldrneb r0, [r0, #6] + addne r5, r5, r0 +_02016270: + ldrb r0, [r4] + cmp r0, #0 + bne _020161E0 + mov r0, r5 +#endif + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02016288: .word _02098FC0 +#ifdef JAPAN +_020162B0_JP: .word 0x00008140 +#endif + arm_func_end sub_020161CC + + arm_func_start sub_0201628C +sub_0201628C: ; 0x0201628C + stmdb sp!, {r3, lr} + ldr r1, _020162FC ; =_020AF710 + mov lr, #0 + ldr r1, [r1] + ldr r2, [r1, #0x10] + ldr r1, [r1, #0x2c] + ldr r3, [r2] + sub ip, r1, #1 + b _020162DC +_020162B0: + add r1, lr, ip + add r1, r1, r1, lsr #31 + mov r2, r1, asr #1 + add r1, r3, r2, lsl #3 + ldrh r1, [r1, #4] + cmp r0, r1 + moveq lr, r2 + beq _020162E4 + cmp r1, r0 + addlt lr, r2, #1 + movge ip, r2 +_020162DC: + cmp lr, ip + blt _020162B0 +_020162E4: + add r2, r3, lr, lsl #3 + ldrh r1, [r2, #4] + cmp r1, r0 + addne r2, r3, #8 + mov r0, r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_020162FC: .word _020AF710 + arm_func_end sub_0201628C + + arm_func_start sub_02016300 +sub_02016300: ; 0x02016300 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + ldr r4, [sp, #0x20] + ldr lr, _0201636C ; =_020AF760 + ldrsh ip, [sp, #0x18] + str r4, [lr] + ldrsh r4, [sp, #0x1c] + str ip, [sp] + mov ip, #0x14 + str r4, [sp, #4] + ldr r4, [lr] + ldr lr, _02016370 ; =_0209901C + mul ip, r4, ip + ldr ip, [lr, ip] + str ip, [sp, #8] + bl sub_02015328 + ldr r1, _0201636C ; =_020AF760 + mov r0, #0x14 + ldr r2, [r1] + ldr r1, _02016374 ; =_02099020 + mul r0, r2, r0 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02016364 + blx r0 +_02016364: + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0201636C: .word _020AF760 +_02016370: .word _0209901C +_02016374: .word _02099020 + arm_func_end sub_02016300 + + arm_func_start sub_02016378 +sub_02016378: ; 0x02016378 + stmdb sp!, {r3, lr} + ldr ip, _020163A4 ; =_020AF760 + mov r3, #0x14 + ldr lr, [ip] + ldr ip, _020163A8 ; =_02099024 + mul r3, lr, r3 + ldr r3, [ip, r3] + cmp r3, #0 + ldmeqia sp!, {r3, pc} + blx r3 + ldmia sp!, {r3, pc} + .align 2, 0 +_020163A4: .word _020AF760 +_020163A8: .word _02099024 + arm_func_end sub_02016378 + + arm_func_start sub_020163AC +sub_020163AC: ; 0x020163AC + stmdb sp!, {r3, lr} + ldr r1, _020163DC ; =_020AF760 + mov r0, #0x14 + ldr r2, [r1] + ldr r1, _020163E0 ; =_02099028 + mul r0, r2, r0 + ldr r0, [r1, r0] + cmp r0, #0 + moveq r0, #2 + ldmeqia sp!, {r3, pc} + blx r0 + ldmia sp!, {r3, pc} + .align 2, 0 +_020163DC: .word _020AF760 +_020163E0: .word _02099028 + arm_func_end sub_020163AC + + arm_func_start sub_020163E4 +sub_020163E4: ; 0x020163E4 + stmdb sp!, {r3, lr} + ldr r1, _02016414 ; =_020AF760 + mov r0, #0x14 + ldr r2, [r1] + ldr r1, _02016418 ; =_0209902C + mul r0, r2, r0 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0201640C + blx r0 +_0201640C: + bl sub_0201551C + ldmia sp!, {r3, pc} + .align 2, 0 +_02016414: .word _020AF760 +_02016418: .word _0209902C + arm_func_end sub_020163E4 + + arm_func_start sub_0201641C +sub_0201641C: ; 0x0201641C + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02015588 + mov r1, r4 + mov r0, #3 + mov r2, #0 + bl sub_0204F6F8 + mov r4, r0 + bl sub_02015570 + mov r0, r4 + bl sub_020155FC + mov r1, #0x18 + mul r1, r0, r1 + rsb r0, r1, #0xc0 + mov r1, r4 + mov r0, r0, asr #1 + bl sub_02015E44 + bl sub_02015E6C + ldmia sp!, {r4, pc} + arm_func_end sub_0201641C + + arm_func_start sub_02016468 +sub_02016468: ; 0x02016468 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x100 + mov r4, r1 + mov r5, r0 + bl sub_02015588 + bl sub_02015570 + add r0, sp, #0 + mov r1, r4 + bl strcpy + mov r1, r5 + mov r0, #0 + add r2, sp, #0 + mov r3, #2 + bl sub_02015D18 + bl sub_02015E6C + add sp, sp, #0x100 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02016468 + + arm_func_start sub_020164AC +sub_020164AC: ; 0x020164AC + stmdb sp!, {r3, lr} + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0x90 + add r0, r0, #0xb000 + bl MemZero + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0x30c0 + add r0, r0, #0x8000 + bl MemZero + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0xf0 + add r0, r0, #0xb000 + bl MemZero + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0x60 + add r0, r0, #0xb000 + bl MemZero + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0x30 + add r0, r0, #0xb000 + bl MemZero + ldr r0, _02016544 ; =_020AF760 + mov r1, #0x30 + ldr r0, [r0, #4] + add r0, r0, #0x120 + add r0, r0, #0xb000 + bl MemZero + ldmia sp!, {r3, pc} + .align 2, 0 +_02016544: .word _020AF760 + arm_func_end sub_020164AC + + arm_func_start sub_02016548 +sub_02016548: ; 0x02016548 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x104 + ldrb r4, [sp, #0x118] + mov ip, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + cmp r4, #0 + add r0, sp, #4 + mov r1, ip + beq _020165C8 + mov r2, r5 + bl sub_020175F8 + bl sub_02015570 + add r2, sp, #4 + mov r0, #0 + mov r1, #0x20 + mov r3, #2 + bl sub_02015D18 + mov r1, r6 + mov r0, #0x3b + bl sub_020156AC + mov r1, r7 + add r0, sp, #4 + bl strcpy + mov r0, #0 + mov r1, #0x52 + add r2, sp, #4 + mov r3, #2 + bl sub_02015D18 + bl sub_02015E6C + b _02016768 +_020165C8: + mov r2, r5 + bl sub_020175F8 + mov r2, #2 + ldr r0, _02016770 ; =_020AF760 + str r2, [sp] + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, r7 + bl sub_0201770C + bl sub_020164AC + ldr r0, _02016770 ; =_020AF760 + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + str r1, [r0, #0x150] + bl sub_0201F36C + ldr r1, _02016770 ; =_020AF760 + ldr r1, [r1, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x90] + bl sub_0201F36C + ldr r2, _02016770 ; =_020AF760 + ldr r1, [r2, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0xc0] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldrsh r0, [r0, #0x90] + bl sub_0201F324 + mov r1, #0 + mov r4, r0 + strb r1, [r4, #0x3c] + mov r2, r1 + mov r3, #2 + bl sub_0201604C + ldrsh r0, [r4, #0x1a] + mov r2, #0x20 + mov r1, #0xa + add r0, r0, r0, lsr #31 + mov r0, r0, lsl #0xf + mov r0, r0, asr #0x10 + strh r0, [r4] + strh r2, [r4, #2] + strb r1, [r4, #0x3e] + strh r0, [r4, #8] + mov r0, #0 + strh r0, [r4, #0xa] + mov r0, #0x21 + strh r0, [r4, #0x2a] + ldr r0, _02016770 ; =_020AF760 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + ldrsh r0, [r0, #0xc0] + bl sub_0201F324 + mov r4, r0 + mov r1, #0x1000 + mov r2, #0 + mov r3, #4 + bl sub_0201604C + ldrsh r0, [r4, #0x1a] + mov r3, #0 + mov r1, #0x52 + add r0, r0, r0, lsr #31 + mov r0, r0, lsl #0xf + mov r2, r0, asr #0x10 + strb r3, [r4, #0x3c] + strh r2, [r4] + strh r1, [r4, #2] + mov r0, #0xa + strb r0, [r4, #0x3e] + strh r2, [r4, #8] + strh r3, [r4, #0xa] + mov r0, #0x21 + cmp r5, #0 + strh r0, [r4, #0x2a] + beq _02016760 + bl sub_0201F36C + ldr r2, _02016770 ; =_020AF760 + ldr r1, [r2, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x60] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldrsh r0, [r0, #0x60] + bl sub_0201F324 + mov r1, #2 + strb r1, [r0, #0x3c] + mov r1, #0 + strh r1, [r0] + mov r1, #0x3b + strh r1, [r0, #2] + mov r1, #0x100 + strh r1, [r0, #4] + mov r1, #1 + strh r1, [r0, #6] + mov r2, #0xa + mov r1, r6 + strb r2, [r0, #0x3e] + mov r2, #0x21 + strh r2, [r0, #0x2a] + bl sub_02016118 + b _02016768 +_02016760: + mov r0, #0x80 + bl sub_02015EE8 +_02016768: + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02016770: .word _020AF760 + arm_func_end sub_02016548 + + arm_func_start sub_02016774 +sub_02016774: ; 0x02016774 + stmdb sp!, {r3, lr} + mov r3, #0 + str r3, [sp] + bl sub_02016548 + ldmia sp!, {r3, pc} + arm_func_end sub_02016774 + + arm_func_start sub_02016788 +sub_02016788: ; 0x02016788 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x100 + mov r3, r0 + mov r5, r1 + mov r4, r2 + add r0, sp, #0 + mov r1, r3 + mov r2, #0 + bl sub_020175F8 + bl sub_02015570 + add r2, sp, #0 + mov r0, #0 + mov r1, #0x20 + mov r3, #2 + bl sub_02015D18 + mov r1, r4 + mov r0, #0x3b + bl sub_020156AC + mov r1, r5 + add r0, sp, #0 + bl strcpy + mov r0, #0 + mov r1, #0x52 + add r2, sp, #0 + mov r3, #2 + bl sub_02015D18 + bl sub_02015E6C + add sp, sp, #0x100 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02016788 + + arm_func_start sub_020167FC +sub_020167FC: ; 0x020167FC + stmdb sp!, {r3, lr} + mov ip, #0 + mov r3, #1 + str ip, [sp] + bl sub_02016548 + ldmia sp!, {r3, pc} + arm_func_end sub_020167FC + + arm_func_start sub_02016814 +sub_02016814: ; 0x02016814 + stmdb sp!, {r4, lr} + ldr r0, _02016880 ; =0x0000B160 + mov r1, #0 + bl MemAlloc + ldr r2, _02016884 ; =_020AF760 + ldr r1, _02016880 ; =0x0000B160 + str r0, [r2, #4] + bl MemZero + bl sub_0201F2E4 + ldr r0, _02016884 ; =_020AF760 + mov r1, #0x1000 + ldr r4, [r0, #4] + add r0, r4, #0x6000 + bl MemZero + add r0, r4, #0x7000 + mov r1, #0x4000 + bl MemZero + add r0, r4, #0xb000 + mov r1, #0x20 + bl MemZero + bl sub_02015F18 + ldr r0, _02016884 ; =_020AF760 + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + str r1, [r0, #0x20] + ldmia sp!, {r4, pc} + .align 2, 0 +_02016880: .word 0x0000B160 +_02016884: .word _020AF760 + arm_func_end sub_02016814 + + arm_func_start sub_02016888 +sub_02016888: ; 0x02016888 + stmdb sp!, {r3, lr} + ldr r0, _020168C4 ; =_020AF760 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x100 + bl sub_02015EE8 + bl sub_0201F2E4 + ldr r0, _020168C4 ; =_020AF760 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _020168C4 ; =_020AF760 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_020168C4: .word _020AF760 + arm_func_end sub_02016888 + + arm_func_start sub_020168C8 +sub_020168C8: ; 0x020168C8 + stmdb sp!, {r4, lr} + ldr r0, _02016934 ; =0x0000B160 + mov r1, #0 + bl MemAlloc + ldr r2, _02016938 ; =_020AF760 + ldr r1, _02016934 ; =0x0000B160 + str r0, [r2, #4] + bl MemZero + bl sub_0201F2E4 + ldr r0, _02016938 ; =_020AF760 + mov r1, #0x1000 + ldr r4, [r0, #4] + add r0, r4, #0x6000 + bl MemZero + add r0, r4, #0x7000 + mov r1, #0x4000 + bl MemZero + add r0, r4, #0xb000 + mov r1, #0x20 + bl MemZero + bl sub_02015F18 + ldr r0, _02016938 ; =_020AF760 + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + str r1, [r0, #0x20] + ldmia sp!, {r4, pc} + .align 2, 0 +_02016934: .word 0x0000B160 +_02016938: .word _020AF760 + arm_func_end sub_020168C8 + + arm_func_start sub_0201693C +sub_0201693C: ; 0x0201693C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x104 + mov r3, r0 + mov r4, r1 + mov r6, r2 + add r0, sp, #4 + mov r1, r3 + mov r2, #1 + bl sub_020175F8 + mov r2, #2 + ldr r0, _02016BB4 ; =_020AF760 + str r2, [sp] + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, r4 + bl sub_0201770C + bl sub_020164AC + ldr r0, _02016BB4 ; =_020AF760 + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + str r1, [r0, #0x150] + bl sub_0201F36C + ldr r1, _02016BB4 ; =_020AF760 + ldr r1, [r1, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x90] + bl sub_0201F36C + ldr r1, _02016BB4 ; =_020AF760 + ldr r1, [r1, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0xc0] + bl sub_0201F36C + ldr r2, _02016BB4 ; =_020AF760 + ldr r1, [r2, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x60] + ldr r1, [r2, #4] + add r0, r1, #0x90 + add r5, r0, #0xb000 + add r0, r1, #0xb000 + ldrsh r0, [r0, #0x90] + bl sub_0201F324 + mov r1, #0 + mov r4, r0 + strb r1, [r4, #0x3c] + mov r2, r1 + mov r3, #2 + bl sub_0201604C + ldrsh r0, [r4, #0x1a] + mov r2, #0x20 + mov r1, #1 + add r0, r0, r0, lsr #31 + mov r3, r0, asr #1 + rsb r0, r3, #0 + strh r0, [r4] + strh r2, [r4, #2] + strb r1, [r4, #0x3e] + strh r3, [r4, #8] + mov r0, #0 + strh r0, [r4, #0xa] + mov r0, #0x21 + strh r0, [r4, #0x2a] + ldrsh r0, [r4] + mov r2, #0x6000 + mov r1, #0xff00 + mov r0, r0, lsl #8 + str r0, [r5, #4] + ldrsh r3, [r4, #2] + ldr r0, _02016BB4 ; =_020AF760 + mov r3, r3, lsl #8 + str r3, [r5, #8] + str r2, [r5, #0xc] + ldr r2, [r5, #8] + str r2, [r5, #0x10] + str r1, [r5, #0x24] + ldr r1, [r0, #4] + add r0, r1, #0x30c0 + add r5, r0, #0x8000 + add r0, r1, #0xb000 + ldrsh r0, [r0, #0xc0] + bl sub_0201F324 + mov r1, #0x1000 + mov r2, #0 + mov r3, #2 + mov r4, r0 + bl sub_0201604C + ldrsh r0, [r4, #0x1a] + mov r2, #0 + mov r1, #0x52 + add r0, r0, r0, lsr #31 + mov r3, r0, asr #1 + strb r2, [r4, #0x3c] + add r0, r3, #0x100 + strh r0, [r4] + strh r1, [r4, #2] + mov r0, #1 + strb r0, [r4, #0x3e] + strh r3, [r4, #8] + strh r2, [r4, #0xa] + mov r0, #0x21 + strh r0, [r4, #0x2a] + ldrsh r0, [r4] + mov r2, #0xa000 + mov r1, #0xff00 + mov r0, r0, lsl #8 + str r0, [r5, #4] + ldrsh r3, [r4, #2] + ldr r0, _02016BB4 ; =_020AF760 + mov r3, r3, lsl #8 + str r3, [r5, #8] + str r2, [r5, #0xc] + ldr r2, [r5, #8] + str r2, [r5, #0x10] + str r1, [r5, #0x24] + ldr r1, [r0, #4] + add r0, r1, #0xb000 + add r1, r1, #0x60 + ldrsh r0, [r0, #0x60] + add r5, r1, #0xb000 + bl sub_0201F324 + mov r4, r0 + mov r1, #2 + strb r1, [r4, #0x3c] + mvn r1, #0xff + strh r1, [r4] + mov r1, #0x3b + strh r1, [r4, #2] + mov r1, #0x100 + strh r1, [r4, #4] + mov r1, #1 + strh r1, [r4, #6] + strb r1, [r4, #0x3e] + mov r2, #0x21 + mov r1, r6 + strh r2, [r4, #0x2a] + bl sub_02016118 + ldrsh r1, [r4] + mov r2, #0x1800 + mov r0, #0xff00 + mov r1, r1, lsl #8 + str r1, [r5, #4] + ldrsh r4, [r4, #2] + ldr r1, _02016BB4 ; =_020AF760 + mov r3, #0x100 + mov r4, r4, lsl #8 + str r4, [r5, #8] + str r2, [r5, #0x14] + str r0, [r5, #0x24] + ldr r0, [r1, #4] + mov r2, #0x10 + add r0, r0, #0xb000 + str r3, [r0, #0x154] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + str r2, [r0, #0x20] + add sp, sp, #0x104 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02016BB4: .word _020AF760 + arm_func_end sub_0201693C + + arm_func_start sub_02016BB8 +sub_02016BB8: ; 0x02016BB8 + stmdb sp!, {r3, lr} + ldr r0, _02016BEC ; =_020AF760 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0201F2E4 + ldr r0, _02016BEC ; =_020AF760 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02016BEC ; =_020AF760 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02016BEC: .word _020AF760 + arm_func_end sub_02016BB8 + + arm_func_start sub_02016BF0 +sub_02016BF0: ; 0x02016BF0 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02016EA8 ; =_020AF760 + ldr r1, [r0, #4] + cmp r1, #0 + beq _02016EA0 + add r2, r1, #0xb000 + ldrsh r0, [r2, #0x60] + add r1, r1, #0x60 + add r6, r1, #0xb000 + ldr r5, [r2, #0x154] + bl sub_0201F324 + ldrb r1, [r6, #0x28] + mov r4, r0 + cmp r1, #1 + beq _02016C44 + cmp r1, #2 + beq _02016C78 + cmp r1, #3 + moveq r0, #0 + streqb r0, [r6, #0x28] + b _02016C94 +_02016C44: + ldr r1, [r6, #4] + ldr r0, [r6, #0x14] + adds r0, r1, r0 + str r0, [r6, #4] + bmi _02016C94 + ldrb r2, [r6, #0x28] + mov r1, #0 + mov r0, #0x2d + add r2, r2, #1 + strb r2, [r6, #0x28] + str r1, [r6, #4] + str r0, [r6, #0x2c] + b _02016C94 +_02016C78: + ldr r1, [r6, #0x2c] + sub r0, r1, #1 + str r0, [r6, #0x2c] + cmp r1, #0 + ldreqb r0, [r6, #0x28] + addeq r0, r0, #1 + streqb r0, [r6, #0x28] +_02016C94: + ldr r2, [r6, #4] + mov r1, r5 + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + mov r0, r0, asr #8 + strh r0, [r4] + ldr r2, [r6, #0x24] + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + mov r0, r0, asr #8 + bl MultiplyByFixedPoint + ldr r1, _02016EA8 ; =_020AF760 + strb r0, [r4, #0x2f] + ldr r0, [r1, #4] + mov r2, #0 + add r1, r0, #0xb000 + add r0, r0, #0x90 + ldr r1, [r1, #0x154] + add r0, r0, #0xb000 + bl sub_020177AC + ldr r2, _02016EA8 ; =_020AF760 + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldr r3, [r0, #0x94] + mov r1, r3, asr #7 + add r1, r3, r1, lsr #24 + mov r1, r1, asr #8 + cmp r1, #0x80 + blt _02016D48 + mov r1, #0 + str r1, [r0, #0xa4] + ldr r0, [r2, #4] + mov r1, #0x8000 + add r0, r0, #0xb000 + str r1, [r0, #0x94] + ldr r4, [r2, #4] + add r0, r4, #0xb000 + ldrsh r0, [r0, #0x90] + bl sub_0201F324 + add r1, r4, #0xb000 + ldr r2, [r1, #0x94] + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r1, r1, asr #8 + strh r1, [r0] +_02016D48: + ldr r0, _02016EA8 ; =_020AF760 + ldr r2, [r0, #4] + add r0, r2, #0xb000 + ldrsh r0, [r0, #0xc0] + add r1, r2, #0x90 + add r2, r2, #0x30c0 + add r5, r1, #0xb000 + add r4, r2, #0x8000 + bl sub_0201F324 + ldr r1, [r5, #4] + ldr r2, _02016EA8 ; =_020AF760 + rsb r3, r1, #0x10000 + mov r1, r3, asr #7 + add r1, r3, r1, lsr #24 + str r3, [r4, #4] + mov r1, r1, asr #8 + strh r1, [r0] + ldr r0, [r2, #4] + add r1, r0, #0xb000 + ldr r3, [r1, #0x20] + cmp r3, #0x14 + bhi _02016DCC + subs r0, r3, #0x10 + addpl pc, pc, r0, lsl #2 + b _02016DC0 +_02016DAC: ; jump table + b _02016DE0 ; case 0 + b _02016E00 ; case 1 + b _02016E38 ; case 2 + b _02016E64 ; case 3 + b _02016E84 ; case 4 +_02016DC0: + cmp r3, #0 + beq _02016DD8 + b _02016E98 +_02016DCC: + cmp r3, #0xff + beq _02016E90 + b _02016E98 +_02016DD8: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02016DE0: + mov r0, #1 + strb r0, [r1, #0x88] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldr r1, [r0, #0x20] + add r1, r1, #1 + str r1, [r0, #0x20] + b _02016E98 +_02016E00: + ldrb r0, [r1, #0x88] + cmp r0, #0 + bne _02016E98 + mov r3, #1 + strb r3, [r1, #0xb8] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + strb r3, [r0, #0xe8] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldr r1, [r0, #0x20] + add r1, r1, #1 + str r1, [r0, #0x20] + b _02016E98 +_02016E38: + ldrb r0, [r1, #0xb8] + cmp r0, #2 + bne _02016E98 + mov r0, #0x3c + str r0, [r1, #0x150] + ldr r0, [r2, #4] + add r0, r0, #0xb000 + ldr r1, [r0, #0x20] + add r1, r1, #1 + str r1, [r0, #0x20] + b _02016E98 +_02016E64: + ldr r2, [r1, #0x94] + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + mov r0, r0, asr #8 + cmp r0, #0x80 + addge r0, r3, #1 + strge r0, [r1, #0x20] + b _02016E98 +_02016E84: + mov r0, #0xff + str r0, [r1, #0x20] + b _02016E98 +_02016E90: + mov r0, #2 + ldmia sp!, {r4, r5, r6, pc} +_02016E98: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02016EA0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02016EA8: .word _020AF760 + arm_func_end sub_02016BF0 + + arm_func_start sub_02016EAC +sub_02016EAC: ; 0x02016EAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + bl sub_020168C8 + ldr r0, _02017128 ; =0x00000A7C + mov r1, #0 + bl MemAlloc + ldr r2, _0201712C ; =_020AF760 + ldr r1, _02017128 ; =0x00000A7C + str r0, [r2, #8] + bl MemZero + ldr r0, _02017130 ; =WAN_TABLE + ldr r1, _02017134 ; =_02099110 + ldr r0, [r0] + mov r2, #0 + bl LoadWanTableEntry + ldr r1, _0201712C ; =_020AF760 + ldr r2, _02017130 ; =WAN_TABLE + ldr r3, [r1, #8] + ldr r1, _02017138 ; =_02099124 + strh r0, [r3, #0x94] + ldr r0, [r2] + mov r2, #0 + bl LoadWanTableEntry + ldr r1, _0201712C ; =_020AF760 + ldr r1, [r1, #8] + strh r0, [r1, #0x96] + bl sub_02015F18 + ldr r0, _0201712C ; =_020AF760 + ldr r0, [r0, #8] + add r0, r0, #0x98 + bl InitAnimationControlWithSet__0201C0B0 + ldr r0, _0201712C ; =_020AF760 + ldr r1, [r0, #8] + add r0, r1, #0x98 + ldrsh r1, [r1, #0x94] + bl SetSpriteIdForAnimationControl + mov r0, #1 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + ldr r0, _0201712C ; =_020AF760 + str r2, [sp, #0xc] + ldr r0, [r0, #8] + mov r1, #0xc + mov r3, #0x100 + add r0, r0, #0x98 + bl SetAnimationForAnimationControl + ldr r0, _0201712C ; =_020AF760 + mov r4, #0xd0 + ldr r2, [r0, #8] + mov r3, #0x6a + strh r4, [r2, #0xb4] + ldr r2, [r0, #8] + mov r1, #0 + strh r3, [r2, #0xb6] + ldr r0, [r0, #8] + add r0, r0, #0x98 + bl sub_0201D12C + ldr r0, _0201712C ; =_020AF760 + ldr r5, _0201713C ; =_02098FC8 + ldr r7, [r0, #8] + mov sb, #0 + add r6, r7, #0x114 + mov fp, #1 +_02016FB0: + mov r0, #0x7c + mla r8, sb, r0, r6 + mov r0, r8 + bl InitAnimationControlWithSet__0201C0B0 + ldrsh r1, [r7, #0x94] + mov r0, r8 + bl SetSpriteIdForAnimationControl + mov r0, #0xc + mul r4, sb, r0 + add sl, r5, r4 + bl Rand16Bit + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #25 + str fp, [sp] + add r0, r1, r0, ror #25 + stmib sp, {r0, fp} + mov r0, #0 + str r0, [sp, #0xc] + ldr r1, [r5, r4] + mov r0, r8 + mov r2, #0 + mov r3, #0x100 + bl SetAnimationForAnimationControl + ldr r1, [sl, #4] + mov r0, r8 + strh r1, [r8, #0x1c] + ldr r2, [sl, #8] + mov r1, #0 + strh r2, [r8, #0x1e] + bl sub_0201D12C + add sb, sb, #1 + cmp sb, #7 + blt _02016FB0 + ldr r0, _0201712C ; =_020AF760 + ldr r4, _02017140 ; =_02099080 + ldr r7, [r0, #8] + mov sb, #0 + add r0, r7, #0x7c + add r6, r0, #0x400 + mov r5, #0x40 + mov fp, #0xc +_02017054: + mov r0, #0x7c + mla r8, sb, r0, r6 + mov r0, r8 + bl InitAnimationControlWithSet__0201C0B0 + ldrsh r1, [r7, #0x96] + mov r0, r8 + bl SetSpriteIdForAnimationControl + strh r5, [r8, #0x38] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mul r0, sb, fp + mov r2, #0 + ldr r1, [r4, r0] + add sl, r4, r0 + mov r0, r8 + mov r3, r2 + bl SetAnimationForAnimationControl + ldr r0, [sl, #4] + cmp sb, #6 + strh r0, [r8, #0x1c] + ldr r0, [sl, #8] + strh r0, [r8, #0x1e] + blt _020170D8 + add r3, r7, sb, lsl #2 + ldr r2, [r3, #0xa34] + mov r0, r8 + mov r1, #0 + str r2, [r3, #0xa4c] + bl sub_0201D12C + b _020170FC +_020170D8: + bl Rand16Bit + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #28 + add r2, r1, r0, ror #28 + add r1, r7, sb, lsl #2 + str r2, [r1, #0xa4c] + mov r0, r8 + mov r1, #1 + bl sub_0201D12C +_020170FC: + add sb, sb, #1 + cmp sb, #0xc + blt _02017054 + mov r0, #2 + bl sub_0206AA5C + bl sub_0206AB98 + bl sub_0206ABB0 + mov r0, #0x2d + bl sub_0206ADA0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02017128: .word 0x00000A7C +_0201712C: .word _020AF760 +_02017130: .word WAN_TABLE +_02017134: .word _02099110 +_02017138: .word _02099124 +_0201713C: .word _02098FC8 +_02017140: .word _02099080 + arm_func_end sub_02016EAC + + arm_func_start sub_02017144 +sub_02017144: ; 0x02017144 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x104 + mov r2, r0 + mov r4, r1 + mov r1, r2 + add r0, sp, #4 + mov r2, #1 + bl sub_020175F8 + mov r1, #0 + str r1, [sp] + ldr r0, _02017310 ; =_020AF760 + add r3, sp, #4 + ldr r0, [r0, #4] + mov r1, r4 + mov r2, #2 + bl sub_0201770C + bl sub_020164AC + ldr r0, _02017310 ; =_020AF760 + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + str r1, [r0, #0x150] + bl sub_0201F36C + ldr r1, _02017310 ; =_020AF760 + ldr r1, [r1, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x90] + bl sub_0201F36C + ldr r1, _02017310 ; =_020AF760 + ldr r1, [r1, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0xc0] + bl sub_0201F36C + ldr r2, _02017310 ; =_020AF760 + ldr r1, [r2, #4] + add r1, r1, #0xb000 + strh r0, [r1, #0x60] + ldr r1, [r2, #4] + add r0, r1, #0x90 + add r5, r0, #0xb000 + add r0, r1, #0xb000 + ldrsh r0, [r0, #0x90] + bl sub_0201F324 + mov r1, #0 + mov r4, r0 + strb r1, [r4, #0x3c] + sub r2, r1, #0x100 + strh r2, [r4] + mov r2, #0x20 + strh r2, [r4, #2] + mov r2, #1 + strb r2, [r4, #0x3e] + mov r3, #0x21 + strh r3, [r4, #0x2a] + mov r3, #2 + bl sub_0201604C + ldrsh r0, [r4] + mov r2, #0x2000 + mov r1, #0xff00 + mov r0, r0, lsl #8 + str r0, [r5, #4] + ldrsh r3, [r4, #2] + ldr r0, _02017310 ; =_020AF760 + mov r3, r3, lsl #8 + str r3, [r5, #8] + str r2, [r5, #0xc] + ldr r2, [r5, #8] + str r2, [r5, #0x10] + str r1, [r5, #0x24] + ldr r1, [r0, #4] + add r0, r1, #0x30c0 + add r5, r0, #0x8000 + add r0, r1, #0xb000 + ldrsh r0, [r0, #0xc0] + bl sub_0201F324 + mov r4, r0 + mov r2, #0 + strb r2, [r4, #0x3c] + mov r1, #0x180 + strh r1, [r4] + mov r1, #0x52 + strh r1, [r4, #2] + mov r1, #0x80 + strh r1, [r4, #8] + strh r2, [r4, #0xa] + mov r1, #0x21 + strh r1, [r4, #0x2a] + mov r1, #1 + strb r1, [r4, #0x3e] + mov r1, #0x1000 + mov r3, #2 + bl sub_0201604C + ldrsh r1, [r4] + mov r2, #0x8000 + mov r0, #0xff00 + mov r1, r1, lsl #8 + str r1, [r5, #4] + ldrsh r4, [r4, #2] + ldr r1, _02017310 ; =_020AF760 + mov r3, #0x100 + mov r4, r4, lsl #8 + str r4, [r5, #8] + str r2, [r5, #0xc] + ldr r4, [r5, #8] + mov r2, #0x10 + str r4, [r5, #0x10] + str r0, [r5, #0x24] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + str r3, [r0, #0x154] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + str r2, [r0, #0x20] + add sp, sp, #0x104 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02017310: .word _020AF760 + arm_func_end sub_02017144 + + arm_func_start sub_02017314 +sub_02017314: ; 0x02017314 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r0, _02017588 ; =_020AF760 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0201757C + bl sub_0206ADB8 + bl sub_0206AD4C + cmp r0, #0 + bne _0201757C + ldr r0, _02017588 ; =_020AF760 + mov r2, #1 + ldmib r0, {r3, r4} + add r1, r3, #0xb000 + add r0, r3, #0x90 + ldr r1, [r1, #0x154] + add r0, r0, #0xb000 + bl sub_020177AC + ldr r0, _02017588 ; =_020AF760 + mov r2, #1 + ldr r0, [r0, #4] + add r1, r0, #0xb000 + add r0, r0, #0x30c0 + ldr r1, [r1, #0x154] + add r0, r0, #0x8000 + bl sub_020177AC + ldr r1, _02017588 ; =_020AF760 + ldr r5, [r1, #4] + add r0, r5, #0xb000 + ldr r3, [r0, #0x20] + cmp r3, #0x13 + bhi _020173BC + subs r2, r3, #0x10 + addpl pc, pc, r2, lsl #2 + b _020173B0 +_020173A0: ; jump table + b _020173D0 ; case 0 + b _020173FC ; case 1 + b _02017438 ; case 2 + b _02017464 ; case 3 +_020173B0: + cmp r3, #0 + beq _020173C8 + b _020174A8 +_020173BC: + cmp r3, #0xff + beq _020174A0 + b _020174A8 +_020173C8: + mov r0, #0 + b _02017580 +_020173D0: + mov r2, #1 + strb r2, [r0, #0xb8] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + strb r2, [r0, #0xe8] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + ldr r1, [r0, #0x20] + add r1, r1, #1 + str r1, [r0, #0x20] + b _020174A8 +_020173FC: + ldr r1, [r0, #0xd4] + cmp r1, #0 + ldrne r0, [r0, #0xa4] + cmpne r0, #0 + bne _020174A8 + add r0, r5, #0xb000 + ldr r2, [r0, #0x20] + ldr r1, _02017588 ; =_020AF760 + add r2, r2, #1 + str r2, [r0, #0x20] + ldr r0, [r1, #4] + mov r1, #0x14 + add r0, r0, #0xb000 + str r1, [r0, #0x150] + b _020174A8 +_02017438: + ldr r2, [r0, #0x150] + sub r2, r2, #1 + str r2, [r0, #0x150] + ldr r0, [r1, #4] + add r0, r0, #0xb000 + ldr r1, [r0, #0x150] + cmp r1, #0 + ldreq r1, [r0, #0x20] + addeq r1, r1, #1 + streq r1, [r0, #0x20] + b _020174A8 +_02017464: + add r0, r4, #0x98 + bl sub_0201CF5C + add r0, r4, #0x98 + bl sub_0201D1B0 + cmp r0, #0 + bne _020174A8 + ldr r0, _02017588 ; =_020AF760 + mov r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0xb000 + ldr r2, [r0, #0x20] + add r2, r2, #1 + str r2, [r0, #0x20] + strb r1, [r4, #0x478] + b _020174A8 +_020174A0: + mov r0, #2 + b _02017580 +_020174A8: + ldrb r0, [r4, #0x478] + cmp r0, #0 + beq _020174D4 + mov r7, #0 + add r6, r4, #0x114 + mov r5, #0x7c +_020174C0: + mla r0, r7, r5, r6 + bl sub_0201CF5C + add r7, r7, #1 + cmp r7, #7 + blt _020174C0 +_020174D4: + mov r8, #0 + add r0, r4, #0x7c + add r7, r0, #0x400 + mov fp, r8 + mov r6, #1 + mov r5, #0x7c +_020174EC: + add r1, r4, r8, lsl #2 + ldr r0, [r1, #0xa4c] + cmp r0, #0 + bne _02017560 + mla sb, r8, r5, r7 + mov r0, sb + bl sub_0201D1B0 + cmp r0, #0 + bne _02017554 + ldrsh sl, [sb, #0x78] + cmp sl, #0 + beq _02017554 + and r0, sl, #1 + cmp r0, #1 + mov r0, sb + addeq sl, sl, #1 + bl sub_0201C108 + str fp, [sp] + str fp, [sp, #4] + str r6, [sp, #8] + mov r0, sb + mov r1, sl + mov r2, fp + mov r3, fp + str fp, [sp, #0xc] + bl SetAnimationForAnimationControl +_02017554: + mov r0, sb + bl sub_0201CF5C + b _02017568 +_02017560: + sub r0, r0, #1 + str r0, [r1, #0xa4c] +_02017568: + add r8, r8, #1 + cmp r8, #0xc + blt _020174EC + mov r0, #1 + b _02017580 +_0201757C: + mov r0, #0 +_02017580: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02017588: .word _020AF760 + arm_func_end sub_02017A00 + + arm_func_start sub_0201758C +sub_0201758C: ; 0x0201758C + stmdb sp!, {r3, lr} + ldr r0, _020175F0 ; =_020AF760 + ldr r1, [r0, #8] + cmp r1, #0 + beq _020175E4 + ldr r0, _020175F4 ; =WAN_TABLE + ldrsh r1, [r1, #0x94] + ldr r0, [r0] + bl DeleteWanTableEntryVeneer + ldr r0, _020175F0 ; =_020AF760 + ldr r1, _020175F4 ; =WAN_TABLE + ldr r2, [r0, #8] + ldr r0, [r1] + ldrsh r1, [r2, #0x96] + bl DeleteWanTableEntryVeneer + ldr r0, _020175F0 ; =_020AF760 + ldr r0, [r0, #8] + bl MemFree + ldr r0, _020175F0 ; =_020AF760 + mov r1, #0 + str r1, [r0, #8] + bl ov10_022BDADC +_020175E4: + bl sub_0206BA5C + bl sub_02016BB8 + ldmia sp!, {r3, pc} + .align 2, 0 +_020175F0: .word _020AF760 +_020175F4: .word WAN_TABLE + arm_func_end sub_0201758C + + arm_func_start sub_020175F8 +sub_020175F8: ; 0x020175F8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x80 +#ifdef JAPAN + mov r8, r0 + cmp r2, #0 + movne r7, #0x3a + mov sb, r1 + mvn r0, #0 + moveq r7, #0x38 + cmp sb, r0 + beq _02017708 + mov r0, sb + mov r1, #0x64 + add r4, sp, #0 + bl _u32_div_f + and r6, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + and r5, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + cmp r6, #0 + and r2, r1, #0xff + addne r0, r6, #0x4f + movne r1, #0x82 + strneb r1, [r4] + strneb r0, [r4, #1] + addne r4, r4, #2 + cmp r5, #0 + beq _020176B4 + mov r0, #0x82 + strb r0, [r4] + add r0, r5, #0x4f + strb r0, [r4, #1] + add r4, r4, #2 + b _020176CC_JP +_020176B4: + cmp r6, #0 + movne r0, #0x82 + strneb r0, [r4] + addne r0, r5, #0x4f + strneb r0, [r4, #1] + addne r4, r4, #2 +_020176CC_JP: + mov r0, #0x82 + strb r0, [r4] + add r2, r2, #0x4f + strb r2, [r4, #1] + mov r2, #0 + add r0, sp, #0x40 + mov r1, r7 + strb r2, [r4, #2] + bl GetStringFromFileVeneer + ldr r1, _020176DC ; =_02099138 + add r2, sp, #0x40 + add r3, sp, #0 + mov r0, r8 + bl SprintfStatic__020176E4 + b _020176CC +_02017708: + add r0, sp, #0 + mov r1, #0x39 + bl GetStringFromFileVeneer + add r0, sp, #0x40 + mov r1, r7 + bl GetStringFromFileVeneer + ldr r1, _020176DC ; =_02099138 + add r2, sp, #0x40 + add r3, sp, #0 + mov r0, r8 +#else + cmp r2, #0 + ldrne r5, _020176D4 ; =0x00000171 + mov r6, r0 + mov sb, r1 + mvn r0, #0 + ldreq r5, _020176D8 ; =0x0000016F + cmp sb, r0 + beq _020176B0 + mov r0, sb + mov r1, #0x64 + add r4, sp, #0 + bl _u32_div_f + and r8, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + and r7, r0, #0xff + mov r0, sb + mov r1, #0xa + bl _u32_div_f + cmp r8, #0 + addne r0, r8, #0x30 + strneb r0, [r4], #1 + cmp r7, #0 + addne r0, r7, #0x30 + and r1, r1, #0xff + strneb r0, [r4], #1 + bne _0201767C + cmp r8, #0 + addne r0, r7, #0x30 + strneb r0, [r4], #1 +_0201767C: + add r2, r1, #0x30 + strb r2, [r4] + mov r2, #0 + add r0, sp, #0x40 + mov r1, r5 + strb r2, [r4, #1] + bl GetStringFromFileVeneer + ldr r1, _020176DC ; =_02099138 + add r2, sp, #0x40 + add r3, sp, #0 + mov r0, r6 + bl SprintfStatic__020176E4 + b _020176CC +_020176B0: + add r0, sp, #0x40 + mov r1, #0x170 + bl GetStringFromFileVeneer + ldr r1, _020176E0 ; =_02099140 + add r2, sp, #0x40 + mov r0, r6 +#endif + bl SprintfStatic__020176E4 +_020176CC: + add sp, sp, #0x80 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +#ifdef JAPAN +_020176DC: .word _02099138 +#else +_020176D4: .word 0x00000171 +_020176D8: .word 0x0000016F +_020176DC: .word _02099138 +_020176E0: .word _02099140 +#endif + arm_func_end sub_020175F8 + + arm_func_start SprintfStatic__020176E4 +SprintfStatic__020176E4: ; 0x020176E4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__020176E4 + + arm_func_start sub_0201770C +sub_0201770C: ; 0x0201770C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r1, #0x6000 + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl MemZero + ldr r2, [sp, #0x18] + mov r1, #0 + mov r0, r7 + str r2, [sp] + mov r2, r1 + mov r3, r4 + bl sub_0201578C + add r0, r7, #0x6000 + mov r1, r7 + mov r2, #0x20 + bl sub_02015FDC + add r0, r7, #0x6000 + mov r1, #0 + mov r2, #0x1000 + bl sub_02016038 + mov r0, r7 + mov r1, #0x6000 + bl MemZero + str r5, [sp] + mov r3, r6 + mov r0, r7 + mov r1, #0 + mov r2, r1 + bl sub_0201578C + add r0, r7, #0x7000 + mov r1, r7 + mov r2, #0x80 + bl sub_02015FDC + add r0, r7, #0x7000 + mov r1, #0x1000 + mov r2, #0x4000 + bl sub_02016038 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0201770C + + arm_func_start sub_020177AC +sub_020177AC: ; 0x020177AC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + ldrsh r0, [r6] + mov r5, r1 + mov r7, r2 + bl sub_0201F324 + ldrb r1, [r6, #0x28] + mov r4, r0 + cmp r1, #1 + beq _020177E8 + cmp r1, #2 + beq _02017848 + cmp r1, #3 + beq _02017858 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020177E8: + cmp r7, #0 + mov r3, #0x80 + beq _02017820 + mov r0, #0 + str r0, [sp] + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + add r0, r6, #0x14 + bl ov10_022C2528 + cmp r0, #0 + ldrneb r0, [r6, #0x28] + addne r0, r0, #1 + strneb r0, [r6, #0x28] + b _02017868 +_02017820: + str r3, [sp] + ldr r1, [r6, #4] + ldr r2, [r6, #0xc] + add r0, r6, #0x14 + bl ov10_022C2528 + cmp r0, #0 + ldrneb r0, [r6, #0x28] + addne r0, r0, #1 + strneb r0, [r6, #0x28] + b _02017868 +_02017848: + cmp r5, #0 + addeq r0, r1, #1 + streqb r0, [r6, #0x28] + b _02017868 +_02017858: + mov r0, #0xff + strb r0, [r6, #0x28] + mov r0, #0 + str r0, [r6, #0x14] +_02017868: + ldr r2, [r6, #4] + ldr r0, [r6, #0x14] + mov r1, r5 + add r2, r2, r0 + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + str r2, [r6, #4] + mov r0, r0, asr #8 + strh r0, [r4] + ldr r2, [r6, #0x24] + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + mov r0, r0, asr #8 + bl MultiplyByFixedPoint + strb r0, [r4, #0x2f] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_020177AC + + arm_func_start sub_020178A8 +sub_020178A8: ; 0x020178A8 + stmdb sp!, {r4, r5, r6, r7, lr} +#ifdef EUROPE + sub sp, sp, #0x254 + mov r4, r1 + and r1, r4, #0xff + mov r7, r0 + bl sub_0204F77C + mov r5, r0 + cmp r5, r7 + and r6, r4, #0xff + beq _020179BC + bl GetNbFloors + cmp r0, #1 + moveq r6, #0 +_020179BC: + mov r1, r7 + and r2, r4, #0xff + mov r0, #2 + bl sub_0204F6F8 + mov r4, r0 + add r0, sp, #4 + bl InitPreprocessorArgs + mov r0, r5 + bl DungeonGoesUp + cmp r0, #0 + movne r2, r6 + rsbeq r2, r6, #0 + ldr r1, _020179FC ; =_020AF76C + add r0, sp, #0x54 + str r2, [sp, #0x28] + bl SprintfStatic__02017A40 + add r5, sp, #4 + add r0, sp, #0x154 + add r2, sp, #0x54 + mov r1, #0x100 + mov r3, #0 + str r5, [sp] + bl PreprocessString + bl sub_02015570 + cmp r6, #0 + mov r0, r4 + beq _02017A70 + bl sub_020155FC + mov r1, #0x18 + mul r1, r0, r1 + add r0, r1, #0x38 + rsb r5, r0, #0xc0 + mov r0, r5, asr #1 + mov r1, r4 + bl sub_02015E44 + sub r1, r0, #1 + mov r0, #0x18 + mul r0, r1, r0 + add r0, r0, r5, asr #1 + add r1, r0, #0x20 + add r2, sp, #0x154 + mov r0, #0 + mov r3, #2 + bl sub_02015D18 + b _02017A8C +_02017A70: + bl sub_020155FC + mov r1, #0x18 + mul r1, r0, r1 + rsb r0, r1, #0xc0 + mov r1, r4 + mov r0, r0, asr #1 + bl sub_02015E44 +_02017A8C: + bl sub_02015E6C + add sp, sp, #0x254 +#else + sub sp, sp, #0x104 + mov r5, r1 + and r1, r5, #0xff + mov r7, r0 + bl sub_0204F77C + mov r6, r0 + cmp r6, r7 + and r4, r5, #0xff + beq _020178DC + bl GetNbFloors + cmp r0, #1 + moveq r4, #0 +_020178DC: + mov r1, r7 + and r2, r5, #0xff + mov r0, #2 + bl sub_0204F6F8 + mov r5, r0 + mov r0, r6 + bl DungeonGoesUp + cmp r0, #0 + ldrne r0, _020179FC ; =_020AF76C + ldrne r7, [r0] + ldreq r0, _020179FC ; =_020AF76C + ldreq r7, [r0, #4] + cmp r4, #0xa + blo _02017954 + mov r0, r4 + mov r1, #0xa + bl _s32_div_f + mov r6, r0 + mov r0, r4 + mov r1, #0xa + bl _s32_div_f + add r1, r1, #0x30 + ldr r0, _020179FC ; =_020AF76C + str r1, [sp] + ldr r1, [r0, #8] + add r0, sp, #4 + mov r2, r7 + add r3, r6, #0x30 + bl SprintfStatic__02017A40 + b _0201797C +_02017954: + cmp r4, #0 + moveq r0, #0 + streqb r0, [sp, #4] + beq _0201797C + ldr r1, _020179FC ; =_020AF76C + add r0, sp, #4 + ldr r1, [r1, #0xc] + mov r2, r7 + add r3, r4, #0x30 + bl SprintfStatic__02017A40 +_0201797C: + bl sub_02015570 + cmp r4, #0 + mov r0, r5 + beq _020179D4 + bl sub_020155FC + mov r1, #0x18 + mul r1, r0, r1 + add r0, r1, #0x38 + rsb r4, r0, #0xc0 + mov r0, r4, asr #1 + mov r1, r5 + bl sub_02015E44 + sub r1, r0, #1 + mov r0, #0x18 + mul r0, r1, r0 + add r0, r0, r4, asr #1 + add r1, r0, #0x20 + add r2, sp, #4 + mov r0, #0 + mov r3, #2 + bl sub_02015D18 + b _020179F0 +_020179D4: + bl sub_020155FC + mov r1, #0x18 + mul r1, r0, r1 + rsb r0, r1, #0xc0 + mov r1, r5 + mov r0, r0, asr #1 + bl sub_02015E44 +_020179F0: + bl sub_02015E6C + add sp, sp, #0x104 +#endif + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +#ifdef EUROPE +_020179FC: .word _0209958C +#else +_020179FC: .word _020AF76C +#endif + arm_func_end sub_020178A8 + + arm_func_start sub_02017A00 +sub_02017A00: ; 0x02017A00 + stmdb sp!, {r3, lr} + bl sub_02015570 + ldr r1, _02017A1C ; =0x000044BD + mov r0, #0x3e + bl sub_02015E44 + bl sub_02015E6C + ldmia sp!, {r3, pc} + .align 2, 0 +#if defined(EUROPE) +_02017A1C: .word 0x000044BF +#elif defined(JAPAN) +_02017A1C: .word 0x0000076D +#else +_02017A1C: .word 0x000044BD +#endif + arm_func_end sub_02017A00 + + arm_func_start sub_02017A20 +sub_02017A20: ; 0x02017A20 + stmdb sp!, {r3, lr} + bl sub_02015570 +#ifdef JAPAN + mov r0, #0x3e + add r1, r0, #0x730 +#else + ldr r1, _02017A3C ; =0x000044BE + mov r0, #0x3e +#endif + bl sub_02015E44 + bl sub_02015E6C + ldmia sp!, {r3, pc} + .align 2, 0 +#if defined(EUROPE) +_02017A3C: .word 0x000044C0 +#elif !defined(JAPAN) +_02017A3C: .word 0x000044BE +#endif + arm_func_end sub_02017A20 + + arm_func_start SprintfStatic__02017A40 +SprintfStatic__02017A40: ; 0x02017A40 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02017A40 + + arm_func_start sub_02017A68 +sub_02017A68: ; 0x02017A68 + ldr r0, _02017A7C ; =_022A4BE8 + mov r1, #0 + strh r1, [r0, #2] + strh r1, [r0] + bx lr + .align 2, 0 +_02017A7C: .word _022A4BE8 + arm_func_end sub_02017A68 + + arm_func_start sub_02017A80 +sub_02017A80: ; 0x02017A80 + ldr r0, _02017AAC ; =_022A4BE8 + ldrsh r1, [r0, #2] + cmp r1, #0 + subgt r1, r1, #1 + strgth r1, [r0, #2] + ldr r0, _02017AAC ; =_022A4BE8 + ldrsh r1, [r0] + cmp r1, #0 + subgt r1, r1, #1 + strgth r1, [r0] + bx lr + .align 2, 0 +_02017AAC: .word _022A4BE8 + arm_func_end sub_02017A80 + + arm_func_start sub_02017AB0 +sub_02017AB0: ; 0x02017AB0 + stmdb sp!, {r3, lr} + bl StopBgmCommand + bl sub_02018118 + bl sub_02018278 + mov r0, #0x3f00 + bl sub_02018428 + ldmia sp!, {r3, pc} + arm_func_end sub_02017AB0 + + arm_func_start sub_02017ACC +sub_02017ACC: ; 0x02017ACC + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02017F28 + mov r0, r4 + bl sub_02018158 + ldr r0, _02017AFC ; =0x000003E6 + mov r1, r4 + bl sub_02018460 + mov r1, r4 + mov r0, #0x3f00 + bl sub_02018460 + ldmia sp!, {r4, pc} + .align 2, 0 +_02017AFC: .word 0x000003E6 + arm_func_end sub_02017ACC + + arm_func_start sub_02017B00 +sub_02017B00: ; 0x02017B00 + ldr ip, _02017B08 ; =sub_02017D80 + bx ip + .align 2, 0 +_02017B08: .word sub_02017D80 + arm_func_end sub_02017B00 + + arm_func_start sub_02017B0C +sub_02017B0C: ; 0x02017B0C + ldr ip, _02017B14 ; =sub_02017DE8 + bx ip + .align 2, 0 +_02017B14: .word sub_02017DE8 + arm_func_end sub_02017B0C + + arm_func_start sub_02017B18 +sub_02017B18: ; 0x02017B18 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02017D80 + ldr r1, _02017B54 ; =0x000003E7 + cmp r4, r1 + bne _02017B40 + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + b _02017B4C +_02017B40: + cmp r0, r4 + moveq r0, #1 + movne r0, #0 +_02017B4C: + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_02017B54: .word 0x000003E7 + arm_func_end sub_02017B18 + + arm_func_start PlayBgmByIdVeneer +PlayBgmByIdVeneer: ; 0x02017B58 + ldr ip, _02017B60 ; =PlayBgmById + bx ip + .align 2, 0 +_02017B60: .word PlayBgmById + arm_func_end PlayBgmByIdVeneer + + arm_func_start PlayBgmByIdVolumeVeneer +PlayBgmByIdVolumeVeneer: ; 0x02017B64 + ldr ip, _02017B6C ; =PlayBgmByIdVolume + bx ip + .align 2, 0 +_02017B6C: .word PlayBgmByIdVolume + arm_func_end PlayBgmByIdVolumeVeneer + + arm_func_start sub_02017B70 +sub_02017B70: ; 0x02017B70 + ldr ip, _02017B78 ; =StopBgmCommand + bx ip + .align 2, 0 +_02017B78: .word StopBgmCommand + arm_func_end sub_02017B70 + + arm_func_start sub_02017B7C +sub_02017B7C: ; 0x02017B7C + ldr ip, _02017B84 ; =sub_02017F28 + bx ip + .align 2, 0 +_02017B84: .word sub_02017F28 + arm_func_end sub_02017B7C + + arm_func_start sub_02017B88 +sub_02017B88: ; 0x02017B88 + ldr ip, _02017B90 ; =sub_02017F64 + bx ip + .align 2, 0 +_02017B90: .word sub_02017F64 + arm_func_end sub_02017B88 + + arm_func_start sub_02017B94 +sub_02017B94: ; 0x02017B94 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02017FBC + ldr r1, _02017BD0 ; =0x000003E7 + cmp r4, r1 + bne _02017BBC + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + b _02017BC8 +_02017BBC: + cmp r0, r4 + moveq r0, #1 + movne r0, #0 +_02017BC8: + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_02017BD0: .word 0x000003E7 + arm_func_end sub_02017B94 + + arm_func_start sub_02017BD4 +sub_02017BD4: ; 0x02017BD4 + ldr ip, _02017BDC ; =sub_02018024 + bx ip + .align 2, 0 +_02017BDC: .word sub_02018024 + arm_func_end sub_02017BD4 + + arm_func_start sub_02017BE0 +sub_02017BE0: ; 0x02017BE0 + ldr ip, _02017BE8 ; =sub_020180A0 + bx ip + .align 2, 0 +_02017BE8: .word sub_020180A0 + arm_func_end sub_02017BE0 + + arm_func_start sub_02017BEC +sub_02017BEC: ; 0x02017BEC + ldr ip, _02017BF4 ; =sub_02018118 + bx ip + .align 2, 0 +_02017BF4: .word sub_02018118 + arm_func_end sub_02017BEC + + arm_func_start sub_02017BF8 +sub_02017BF8: ; 0x02017BF8 + ldr ip, _02017C00 ; =sub_02018158 + bx ip + .align 2, 0 +_02017C00: .word sub_02018158 + arm_func_end sub_02017BF8 + + arm_func_start sub_02017C04 +sub_02017C04: ; 0x02017C04 + ldr ip, _02017C0C ; =sub_02018194 + bx ip + .align 2, 0 +_02017C0C: .word sub_02018194 + arm_func_end sub_02017C04 + + arm_func_start IsMePlaying +IsMePlaying: ; 0x02017C10 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_020181E0 + ldr r1, _02017C4C ; =0x000003E6 + cmp r4, r1 + bne _02017C38 + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + b _02017C44 +_02017C38: + cmp r0, r4 + moveq r0, #1 + movne r0, #0 +_02017C44: + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_02017C4C: .word 0x000003E6 + arm_func_end IsMePlaying + + arm_func_start sub_02017C50 +sub_02017C50: ; 0x02017C50 + ldr ip, _02017C58 ; =PlayMeById + bx ip + .align 2, 0 +_02017C58: .word PlayMeById + arm_func_end sub_02017C50 + + arm_func_start sub_02017C5C +sub_02017C5C: ; 0x02017C5C + ldr ip, _02017C64 ; =sub_02018278 + bx ip + .align 2, 0 +_02017C64: .word sub_02018278 + arm_func_end sub_02017C5C + + arm_func_start sub_02017C68 +sub_02017C68: ; 0x02017C68 + ldr ip, _02017C70 ; =sub_020182AC + bx ip + .align 2, 0 +_02017C70: .word sub_020182AC + arm_func_end sub_02017C68 + + arm_func_start sub_02017C74 +sub_02017C74: ; 0x02017C74 + ldr ip, _02017C7C ; =PlaySeByIdVolume + bx ip + .align 2, 0 +_02017C7C: .word PlaySeByIdVolume + arm_func_end sub_02017C74 + + arm_func_start PlaySeByIdVolumeWrapper +PlaySeByIdVolumeWrapper: ; 0x02017C80 + ldr ip, _02017C8C ; =PlaySeByIdVolume + mov r1, #0x100 + bx ip + .align 2, 0 +_02017C8C: .word PlaySeByIdVolume + arm_func_end PlaySeByIdVolumeWrapper + + arm_func_start sub_02017C90 +sub_02017C90: ; 0x02017C90 + ldr ip, _02017C98 ; =sub_0201831C + bx ip + .align 2, 0 +_02017C98: .word sub_0201831C + arm_func_end sub_02017C90 + + arm_func_start sub_02017C9C +sub_02017C9C: ; 0x02017C9C + ldr ip, _02017CA4 ; =sub_020183A0 + bx ip + .align 2, 0 +_02017CA4: .word sub_020183A0 + arm_func_end sub_02017C9C + + arm_func_start sub_02017CA8 +sub_02017CA8: ; 0x02017CA8 + ldr ip, _02017CB0 ; =sub_020183E4 + bx ip + .align 2, 0 +_02017CB0: .word sub_020183E4 + arm_func_end sub_02017CA8 + + arm_func_start sub_02017CB4 +sub_02017CB4: ; 0x02017CB4 + ldr ip, _02017CBC ; =sub_02018428 + bx ip + .align 2, 0 +_02017CBC: .word sub_02018428 + arm_func_end sub_02017CB4 + + arm_func_start sub_02017CC0 +sub_02017CC0: ; 0x02017CC0 + ldr ip, _02017CC8 ; =sub_02018460 + bx ip + .align 2, 0 +_02017CC8: .word sub_02018460 + arm_func_end sub_02017CC0 + + arm_func_start PlaySeVolumeWrapper +PlaySeVolumeWrapper: ; 0x02017CCC + ldr r1, _02017CE4 ; =_0209915C + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + ldr ip, _02017CE8 ; =PlaySeByIdVolume + mov r1, #0x100 + bx ip + .align 2, 0 +_02017CE4: .word _0209915C +_02017CE8: .word PlaySeByIdVolume + arm_func_end PlaySeVolumeWrapper + + arm_func_start sub_02017CEC +sub_02017CEC: ; 0x02017CEC + stmdb sp!, {r3, lr} + ldr r2, _02017D18 ; =_022A4BE8 + ldrsh r0, [r2] + cmp r0, #0 + ldmgtia sp!, {r3, pc} + ldr r0, _02017D1C ; =0x00003F05 + mov r3, #3 + mov r1, #0x100 + strh r3, [r2] + bl PlaySeByIdVolume + ldmia sp!, {r3, pc} + .align 2, 0 +_02017D18: .word _022A4BE8 +_02017D1C: .word 0x00003F05 + arm_func_end sub_02017CEC + + arm_func_start sub_02017D20 +sub_02017D20: ; 0x02017D20 + stmdb sp!, {r3, lr} + bl sub_020184CC + bl sub_02018B50 + ldr r2, _02017D74 ; =0x000003E7 + ldr r0, _02017D78 ; =_022A4BEC + mov r1, #0 + strh r2, [r0] + strh r2, [r0, #2] + strh r1, [r0, #4] + strh r2, [r0, #6] + strh r2, [r0, #8] + strh r1, [r0, #0xa] + sub r1, r2, #1 + strh r1, [r0, #0xc] + mov r1, #0x3f00 + strh r1, [r0, #0x10] + bl sub_02018C0C + ldr r0, _02017D7C ; =_020AF77C + mov r1, #1 + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02017D74: .word 0x000003E7 +_02017D78: .word _022A4BEC +_02017D7C: .word _020AF77C + arm_func_end sub_02017D20 + + arm_func_start sub_02017D80 +sub_02017D80: ; 0x02017D80 + stmdb sp!, {r3, lr} + bl sub_02019824 + ldr r2, _02017DAC ; =0x000003E7 + cmp r0, r2 + ldreq r1, _02017DB0 ; =_022A4BEC + moveq r0, r2 + streqh r2, [r1] + ldrne r0, _02017DB0 ; =_022A4BEC + streqh r2, [r1, #2] + ldrneh r0, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02017DAC: .word 0x000003E7 +_02017DB0: .word _022A4BEC + arm_func_end sub_02017D80 + + arm_func_start sub_02017DB4 +sub_02017DB4: ; 0x02017DB4 + stmdb sp!, {r3, lr} + bl sub_02019824 + ldr r2, _02017DE0 ; =0x000003E7 + cmp r0, r2 + ldreq r1, _02017DE4 ; =_022A4BEC + moveq r0, r2 + streqh r2, [r1] + ldrne r0, _02017DE4 ; =_022A4BEC + streqh r2, [r1, #2] + ldrneh r0, [r0, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_02017DE0: .word 0x000003E7 +_02017DE4: .word _022A4BEC + arm_func_end sub_02017DB4 + + arm_func_start sub_02017DE8 +sub_02017DE8: ; 0x02017DE8 + ldr ip, _02017DF0 ; =IsSongOver + bx ip + .align 2, 0 +_02017DF0: .word IsSongOver + arm_func_end sub_02017DE8 + + arm_func_start PlayBgmById +PlayBgmById: ; 0x02017DF4 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02017E68 ; =0x000003E7 + mov r5, r0 + cmp r5, r1 + ldrne r0, _02017E6C ; =_022A4BEC + ldrneh r0, [r0, #2] + cmpne r5, r0 + ldmeqia sp!, {r3, r4, r5, pc} + bl sub_02018B50 + ldr r1, _02017E6C ; =_022A4BEC + mov r2, #0x100 + strh r5, [r1] + strh r5, [r1, #2] + mov r0, #3 + strh r2, [r1, #4] + bl AllocAudioCommand + mov r4, r0 + mov r0, #3 + strh r5, [r4, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r1, #0 + moveq r1, #0x100 + strh r1, [r4, #6] + mov r1, #0 + mov r0, r4 + strh r1, [r4, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02017E68: .word 0x000003E7 +_02017E6C: .word _022A4BEC + arm_func_end PlayBgmById + + arm_func_start PlayBgmByIdVolume +PlayBgmByIdVolume: ; 0x02017E70 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r3, _02017EE0 ; =0x000003E7 + mov r6, r0 + cmp r6, r3 + ldrne r0, _02017EE4 ; =_022A4BEC + mov r5, r1 + ldrneh r0, [r0, #2] + mov r4, r2 + cmpne r6, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_02018B50 + ldr r1, _02017EE4 ; =_022A4BEC + mov r0, #3 + strh r6, [r1] + strh r6, [r1, #2] + strh r4, [r1, #4] + bl AllocAudioCommand + mov r7, r0 + mov r0, #3 + strh r6, [r7, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r4, #0 + strh r4, [r7, #6] + mov r0, r7 + strh r5, [r7, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02017EE0: .word 0x000003E7 +_02017EE4: .word _022A4BEC + arm_func_end PlayBgmByIdVolume + + arm_func_start StopBgmCommand +StopBgmCommand: ; 0x02017EE8 + stmdb sp!, {r3, lr} + bl sub_02018B50 + ldr r0, _02017F20 ; =0x000003E7 + ldr r1, _02017F24 ; =_022A4BEC + mov r2, #0 + strh r0, [r1] + strh r0, [r1, #2] + mov r0, #5 + strh r2, [r1, #4] + bl AllocAudioCommand + mov r1, #0 + strh r1, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r3, pc} + .align 2, 0 +_02017F20: .word 0x000003E7 +_02017F24: .word _022A4BEC + arm_func_end StopBgmCommand + + arm_func_start sub_02017F28 +sub_02017F28: ; 0x02017F28 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02018B50 + ldr r2, _02017F5C ; =0x000003E7 + ldr r0, _02017F60 ; =_022A4BEC + mov r1, #0 + strh r2, [r0, #2] + strh r1, [r0, #4] + mov r0, #5 + bl AllocAudioCommand + strh r4, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r4, pc} + .align 2, 0 +_02017F5C: .word 0x000003E7 +_02017F60: .word _022A4BEC + arm_func_end sub_02017F28 + + arm_func_start sub_02017F64 +sub_02017F64: ; 0x02017F64 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _02017FA8 ; =_022A4BEC + ldr r2, _02017FAC ; =0x000003E7 + ldrh r3, [r3, #2] + mov r5, r0 + mov r4, r1 + cmp r3, r2 + ldmeqia sp!, {r3, r4, r5, pc} + bl sub_02018B50 + ldr r1, _02017FA8 ; =_022A4BEC + mov r0, #6 + strh r4, [r1, #4] + bl AllocAudioCommand + strh r4, [r0, #6] + strh r5, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02017FA8: .word _022A4BEC +_02017FAC: .word 0x000003E7 + arm_func_end sub_02017F64 + + arm_func_start sub_02017FB0 +sub_02017FB0: ; 0x02017FB0 + ldr ip, _02017FB8 ; =sub_02019D04 + bx ip + .align 2, 0 +_02017FB8: .word sub_02019D04 + arm_func_end sub_02017FB0 + + arm_func_start sub_02017FBC +sub_02017FBC: ; 0x02017FBC + stmdb sp!, {r3, lr} + bl sub_02019D58 + ldr r2, _02017FE8 ; =0x000003E7 + cmp r0, r2 + ldreq r1, _02017FEC ; =_022A4BEC + moveq r0, r2 + streqh r2, [r1, #6] + ldrne r0, _02017FEC ; =_022A4BEC + streqh r2, [r1, #8] + ldrneh r0, [r0, #6] + ldmia sp!, {r3, pc} + .align 2, 0 +_02017FE8: .word 0x000003E7 +_02017FEC: .word _022A4BEC + arm_func_end sub_02017FBC + + arm_func_start sub_02017FF0 +sub_02017FF0: ; 0x02017FF0 + stmdb sp!, {r3, lr} + bl sub_02019D58 + ldr r2, _0201801C ; =0x000003E7 + cmp r0, r2 + ldreq r1, _02018020 ; =_022A4BEC + moveq r0, r2 + streqh r2, [r1, #6] + ldrne r0, _02018020 ; =_022A4BEC + streqh r2, [r1, #8] + ldrneh r0, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201801C: .word 0x000003E7 +_02018020: .word _022A4BEC + arm_func_end sub_02017FF0 + + arm_func_start sub_02018024 +sub_02018024: ; 0x02018024 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02018098 ; =0x000003E7 + mov r5, r0 + cmp r5, r1 + ldrne r0, _0201809C ; =_022A4BEC + ldrneh r0, [r0, #8] + cmpne r5, r0 + ldmeqia sp!, {r3, r4, r5, pc} + bl sub_02018B50 + ldr r1, _0201809C ; =_022A4BEC + mov r2, #0x100 + strh r5, [r1, #6] + strh r5, [r1, #8] + mov r0, #7 + strh r2, [r1, #0xa] + bl AllocAudioCommand + mov r4, r0 + mov r0, #3 + strh r5, [r4, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r1, #0 + moveq r1, #0x100 + strh r1, [r4, #6] + mov r1, #0 + mov r0, r4 + strh r1, [r4, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02018098: .word 0x000003E7 +_0201809C: .word _022A4BEC + arm_func_end sub_02018024 + + arm_func_start sub_020180A0 +sub_020180A0: ; 0x020180A0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r3, _02018110 ; =0x000003E7 + mov r6, r0 + cmp r6, r3 + ldrne r0, _02018114 ; =_022A4BEC + mov r5, r1 + ldrneh r0, [r0, #8] + mov r4, r2 + cmpne r6, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_02018B50 + ldr r1, _02018114 ; =_022A4BEC + mov r0, #7 + strh r6, [r1, #6] + strh r6, [r1, #8] + strh r4, [r1, #0xa] + bl AllocAudioCommand + mov r7, r0 + mov r0, #3 + strh r6, [r7, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r4, #0 + strh r4, [r7, #6] + mov r0, r7 + strh r5, [r7, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02018110: .word 0x000003E7 +_02018114: .word _022A4BEC + arm_func_end sub_020180A0 + + arm_func_start sub_02018118 +sub_02018118: ; 0x02018118 + stmdb sp!, {r3, lr} + bl sub_02018B50 + ldr r0, _02018150 ; =0x000003E7 + ldr r1, _02018154 ; =_022A4BEC + mov r2, #0 + strh r0, [r1, #6] + strh r0, [r1, #8] + mov r0, #9 + strh r2, [r1, #0xa] + bl AllocAudioCommand + mov r1, #0 + strh r1, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r3, pc} + .align 2, 0 +_02018150: .word 0x000003E7 +_02018154: .word _022A4BEC + arm_func_end sub_02018118 + + arm_func_start sub_02018158 +sub_02018158: ; 0x02018158 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02018B50 + ldr r2, _0201818C ; =0x000003E7 + ldr r0, _02018190 ; =_022A4BEC + mov r1, #0 + strh r2, [r0, #8] + strh r1, [r0, #0xa] + mov r0, #9 + bl AllocAudioCommand + strh r4, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r4, pc} + .align 2, 0 +_0201818C: .word 0x000003E7 +_02018190: .word _022A4BEC + arm_func_end sub_02018158 + + arm_func_start sub_02018194 +sub_02018194: ; 0x02018194 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _020181D8 ; =_022A4BEC + ldr r2, _020181DC ; =0x000003E7 + ldrh r3, [r3, #8] + mov r5, r0 + mov r4, r1 + cmp r3, r2 + ldmeqia sp!, {r3, r4, r5, pc} + bl sub_02018B50 + ldr r1, _020181D8 ; =_022A4BEC + mov r0, #0xa + strh r4, [r1, #0xa] + bl AllocAudioCommand + strh r4, [r0, #6] + strh r5, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020181D8: .word _022A4BEC +_020181DC: .word 0x000003E7 + arm_func_end sub_02018194 + + arm_func_start sub_020181E0 +sub_020181E0: ; 0x020181E0 + stmdb sp!, {r3, lr} + bl sub_0201A19C + ldr r1, _02018204 ; =0x000003E6 + cmp r0, r1 + ldreq r0, _02018208 ; =_022A4BEC + streqh r1, [r0, #0xc] + ldrne r0, _02018208 ; =_022A4BEC + ldrh r0, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_02018204: .word 0x000003E6 +_02018208: .word _022A4BEC + arm_func_end sub_020181E0 + + arm_func_start PlayMeById +PlayMeById: ; 0x0201820C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02018270 ; =0x000003E6 + mov r5, r0 + cmp r5, r1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r5, #0xd + ldmhiia sp!, {r3, r4, r5, pc} + bl sub_02018B50 + ldr r1, _02018274 ; =_022A4BEC + mov r0, #0xb + strh r5, [r1, #0xc] + bl AllocAudioCommand + mov r4, r0 + mov r0, #3 + strh r5, [r4, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r1, #0 + moveq r1, #0x100 + strh r1, [r4, #6] + mov r1, #0 + mov r0, r4 + strh r1, [r4, #8] + bl SendAudioCommand + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02018270: .word 0x000003E6 +_02018274: .word _022A4BEC + arm_func_end PlayMeById + + arm_func_start sub_02018278 +sub_02018278: ; 0x02018278 + stmdb sp!, {r3, lr} + bl sub_02018B50 + ldr r2, _020182A4 ; =0x000003E6 + ldr r1, _020182A8 ; =_022A4BEC + mov r0, #0xc + strh r2, [r1, #0xc] + bl AllocAudioCommand + mov r1, #0 + strh r1, [r0, #8] + bl SendAudioCommand + ldmia sp!, {r3, pc} + .align 2, 0 +_020182A4: .word 0x000003E6 +_020182A8: .word _022A4BEC + arm_func_end sub_02018278 + + arm_func_start sub_020182AC +sub_020182AC: ; 0x020182AC + ldr ip, _020182B4 ; =sub_0201A480 + bx ip + .align 2, 0 +_020182B4: .word sub_0201A480 + arm_func_end sub_020182AC + + arm_func_start PlaySeByIdVolume +PlaySeByIdVolume: ; 0x020182B8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + ldr r1, _02018318 ; =_0209916C + mov r2, r6 + mov r3, r5 + mov r0, #8 + bl Debug_Print + cmp r6, #0x3f00 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0xd + cmp r5, #0x100 + movhi r5, #0x100 + bl sub_02018A78 + mov r4, r0 + mov r0, #4 + strh r6, [r4, #4] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r5, #0 + mov r0, r4 + strh r5, [r4, #8] + bl SendAudioCommand2 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02018318: .word _0209916C + arm_func_end PlaySeByIdVolume + + arm_func_start sub_0201831C +sub_0201831C: ; 0x0201831C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + mov r6, r2 + mov r7, r1 + mov r5, r3 + str r6, [sp] + ldr r1, _0201839C ; =_0209918C + mov r2, r8 + mov r3, r7 + mov r0, #8 + str r5, [sp, #4] + bl Debug_Print + cmp r8, #0x3f00 + beq _02018394 + mov r0, #0xe + cmp r6, #0x100 + movhi r6, #0x100 + bl sub_02018A78 + mov r4, r0 + strh r8, [r4, #4] + mov r0, #4 + strh r7, [r4, #6] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r6, #0 + strh r6, [r4, #8] + mov r0, r4 + strh r5, [r4, #0xa] + bl SendAudioCommand2 +_02018394: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201839C: .word _0209918C + arm_func_end sub_0201831C + + arm_func_start sub_020183A0 +sub_020183A0: ; 0x020183A0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + mov r5, r1 + ldr r1, _020183E0 ; =_020991C8 + mov r2, r6 + mov r3, r4 + mov r0, #8 + bl Debug_Print + mov r0, #0x10 + bl sub_02018A78 + strh r6, [r0, #4] + strh r5, [r0, #6] + strh r4, [r0, #8] + bl SendAudioCommand2 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_020183E0: .word _020991C8 + arm_func_end sub_020183A0 + + arm_func_start sub_020183E4 +sub_020183E4: ; 0x020183E4 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + mov r5, r1 + ldr r1, _02018424 ; =_020991F0 + mov r2, r6 + mov r3, r4 + mov r0, #8 + bl Debug_Print + mov r0, #0x11 + bl sub_02018A78 + strh r6, [r0, #4] + strh r5, [r0, #6] + strh r4, [r0, #0xa] + bl SendAudioCommand2 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02018424: .word _020991F0 + arm_func_end sub_020183E4 + + arm_func_start sub_02018428 +sub_02018428: ; 0x02018428 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, _0201845C ; =_02099210 + mov r2, r4 + mov r0, #8 + bl Debug_Print + mov r0, #0xf + bl sub_02018A78 + strh r4, [r0, #4] + mov r1, #0 + strh r1, [r0, #6] + bl SendAudioCommand2 + ldmia sp!, {r4, pc} + .align 2, 0 +_0201845C: .word _02099210 + arm_func_end sub_02018428 + + arm_func_start sub_02018460 +sub_02018460: ; 0x02018460 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr r1, _02018498 ; =_02099224 + mov r2, r5 + mov r3, r4 + mov r0, #8 + bl Debug_Print + mov r0, #0xf + bl sub_02018A78 + strh r5, [r0, #4] + strh r4, [r0, #6] + bl SendAudioCommand2 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02018498: .word _02099224 + arm_func_end sub_02018460 + + arm_func_start sub_0201849C +sub_0201849C: ; 0x0201849C + ldr ip, _020184A4 ; =sub_0201906C + bx ip + .align 2, 0 +_020184A4: .word sub_0201906C + arm_func_end sub_0201849C + + arm_func_start sub_020184A8 +sub_020184A8: ; 0x020184A8 + ldr ip, _020184B0 ; =sub_02019260 + bx ip + .align 2, 0 +_020184B0: .word sub_02019260 + arm_func_end sub_020184A8 + + arm_func_start sub_020184B4 +sub_020184B4: ; 0x020184B4 + ldr ip, _020184BC ; =sub_0201929C + bx ip + .align 2, 0 +_020184BC: .word sub_0201929C + arm_func_end sub_020184B4 + + arm_func_start sub_020184C0 +sub_020184C0: ; 0x020184C0 + ldr ip, _020184C8 ; =sub_020192D0 + bx ip + .align 2, 0 +_020184C8: .word sub_020192D0 + arm_func_end sub_020184C0 + + arm_func_start sub_020184CC +sub_020184CC: ; 0x020184CC + stmdb sp!, {r3, lr} + bl InitSoundSystem + ldr r0, _020185CC ; =_020AF7C0 + bl sub_02002C40 + ldr r0, _020185D0 ; =_022A4C00 + mov r1, #0x11 + bl sub_02002F34 + ldr r0, _020185D4 ; =_022A4C28 + mov r1, #0x11 + bl sub_02002F34 + mov r1, #0x10 + ldr r0, _020185D8 ; =_020AF7E4 + mov r2, r1 + bl sub_02002A9C + mov r2, #0 + ldr r1, _020185DC ; =AUDIO_COMMANDS_BUFFER + mov r0, r2 +_02018510: + add r2, r2, #1 + cmp r2, #0x10 + str r0, [r1], #0x20 + blt _02018510 + ldr r0, _020185E0 ; =_020AF780 + ldr r1, _020185E4 ; =0x00000701 + ldr r0, [r0, #0x34] + bl MemAlloc + ldr r2, _020185E0 ; =_020AF780 + ldr r1, _020185E4 ; =0x00000701 + str r0, [r2, #0x30] + ldr r0, [r2, #0xc] + bl MemAlloc + ldr r2, _020185E0 ; =_020AF780 + ldr r1, _020185E4 ; =0x00000701 + str r0, [r2, #8] + ldr r0, [r2, #0x20] + bl MemAlloc + ldr r2, _020185E0 ; =_020AF780 + ldr r1, _020185E8 ; =_020AF7AC + str r0, [r2, #0x1c] + ldr r0, _020185EC ; =_020AF96C + mov r2, #0 + bl sub_02002778 + ldr r0, _020185F0 ; =_020AFA48 + ldr r1, _020185F4 ; =_020AF784 + mov r2, #0 + bl sub_02002778 + ldr r0, _020185F8 ; =_020AF890 + ldr r1, _020185FC ; =_020AF798 + mov r2, #0 + bl sub_02002778 + ldr r0, _020185CC ; =_020AF7C0 + bl sub_02002E98 + ldr r0, _020185EC ; =_020AF96C + bl sub_020027E8 + ldr r0, _020185CC ; =_020AF7C0 + bl sub_02002CB4 + ldr r0, _020185CC ; =_020AF7C0 + mov r1, #8 + bl sub_02002CAC + ldr r0, _020185CC ; =_020AF7C0 + bl sub_02002E98 + mov r1, #1 + ldr r0, _020185E0 ; =_020AF780 + strb r1, [r0, #1] + ldmia sp!, {r3, pc} + .align 2, 0 +_020185CC: .word _020AF7C0 +_020185D0: .word _022A4C00 +_020185D4: .word _022A4C28 +_020185D8: .word _020AF7E4 +_020185DC: .word AUDIO_COMMANDS_BUFFER +_020185E0: .word _020AF780 +_020185E4: .word 0x00000701 +_020185E8: .word _020AF7AC +_020185EC: .word _020AF96C +_020185F0: .word _020AFA48 +_020185F4: .word _020AF784 +_020185F8: .word _020AF890 +_020185FC: .word _020AF798 + arm_func_end sub_020184CC + + arm_func_start sub_02018600 +sub_02018600: ; 0x02018600 + stmdb sp!, {r3, lr} + bl ManipBgmPlayback + ldr r0, _02018624 ; =_020AFA48 + bl sub_020027E8 + ldr r0, _02018628 ; =_020AF890 + bl sub_020027E8 +_02018618: + bl sub_02003AB0 + bl ManipBgmPlayback + b _02018618 + .align 2, 0 +_02018624: .word _020AFA48 +_02018628: .word _020AF890 + arm_func_end sub_02018600 + + arm_func_start sub_0201862C +sub_0201862C: ; 0x0201862C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov fp, #1 + ldr sl, _020187F0 ; =_022A4C28 + ldr sb, _020187F4 ; =_022A4C00 + ldr r4, _020187F8 ; =_020AF780 + mov r6, #2 + mov r5, #0 + add r8, sp, #0 + mov r7, fp +_02018650: + mov r0, sb + mov r1, r8 + mov r2, r7 + bl sub_02002F98 + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #1 + ldreqb r0, [r4, #1] + beq _02018650 + mov r0, r6 + bl Debug_GetDebugFlag + cmp r0, #0 + bne _020187D0 + ldr r1, [sp] + ldr r0, [r1] + cmp r0, #0x11 + addls pc, pc, r0, lsl #2 + b _020187D0 +_02018698: ; jump table + b _020187D0 ; case 0 + b _020187D0 ; case 1 + b _020186E0 ; case 2 + b _020186E0 ; case 3 + b _020186E0 ; case 4 + b _020186E0 ; case 5 + b _020186E0 ; case 6 + b _020186E0 ; case 7 + b _020186E0 ; case 8 + b _020186E0 ; case 9 + b _020186E0 ; case 10 + b _020186E0 ; case 11 + b _020186E0 ; case 12 + b _020186F0 ; case 13 + b _020186F0 ; case 14 + b _02018790 ; case 15 + b _020186F0 ; case 16 + b _020186F0 ; case 17 +_020186E0: + mov r0, sl + mov r2, fp + bl sub_02002F7C + b _02018650 +_020186F0: + ldrh r0, [r1, #4] + bl sub_0201AAA0 + cmp r0, #0 + bne _02018714 + ldr r1, [sp] + mov r0, sl + mov r2, #1 + bl sub_02002F7C + b _02018650 +_02018714: + ldr r3, [sp] + ldr r0, [r3] + sub r0, r0, #0xd + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _020187D0 +_0201872C: ; jump table + b _02018740 ; case 0 + b _02018750 ; case 1 + b _020187D0 ; case 2 + b _02018768 ; case 3 + b _0201877C ; case 4 +_02018740: + ldrh r0, [r3, #4] + ldrh r1, [r3, #8] + bl PlaySe + b _020187D0 +_02018750: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrh r2, [r3, #8] + ldrsh r3, [r3, #0xa] + bl PlaySeFullSpec + b _020187D0 +_02018768: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrh r2, [r3, #8] + bl SeChangeVolume + b _020187D0 +_0201877C: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrsh r2, [r3, #0xa] + bl SeChangePan + b _020187D0 +_02018790: + ldrh r0, [r1, #4] + cmp r0, #0x3f00 + beq _020187BC + bl sub_0201AAA0 + cmp r0, #0 + beq _020187BC + ldr r1, [sp] + ldrh r0, [r1, #4] + ldrh r1, [r1, #6] + bl StopSe + b _020187D0 +_020187BC: + ldr r1, [sp] + mov r0, sl + mov r2, #1 + bl sub_02002F7C + b _02018650 +_020187D0: + ldr r0, _020187FC ; =_020AF7C0 + bl sub_02002CB4 + ldr r1, [sp] + ldr r0, _020187FC ; =_020AF7C0 + str r5, [r1] + ldr r1, _02018800 ; =_020AF7E4 + bl sub_02002ECC + b _02018650 + .align 2, 0 +_020187F0: .word _022A4C28 +_020187F4: .word _022A4C00 +_020187F8: .word _020AF780 +_020187FC: .word _020AF7C0 +_02018800: .word _020AF7E4 + arm_func_end sub_0201862C + + arm_func_start sub_02018804 +sub_02018804: ; 0x02018804 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 +_0201880C: + ldr r0, _02018A64 ; =_022A4C28 + add r1, sp, #0 + mov r2, #1 + bl sub_02002F98 + ldr r3, [sp] + ldr r0, [r3] + cmp r0, #0x11 + addls pc, pc, r0, lsl #2 + b _02018A40 +_02018830: ; jump table + b _02018A40 ; case 0 + b _02018A40 ; case 1 + b _02018878 ; case 2 + b _02018880 ; case 3 + b _020188B4 ; case 4 + b _02018900 ; case 5 + b _0201890C ; case 6 + b _0201891C ; case 7 + b _02018950 ; case 8 + b _0201899C ; case 9 + b _020189A8 ; case 10 + b _020189B8 ; case 11 + b _020189D0 ; case 12 + b _020189DC ; case 13 + b _020189F0 ; case 14 + b _02018A0C ; case 15 + b _02018A1C ; case 16 + b _02018A30 ; case 17 +_02018878: + bl SoundDriverReset + b _02018A40 +_02018880: + ldr r4, _02018A68 ; =0x000003E6 + b _0201888C +_02018888: + bl sub_02003AB0 +_0201888C: + bl sub_0201A19C + cmp r0, r4 + bne _02018888 + ldr r2, [sp] + ldrh r0, [r2, #4] + ldrh r1, [r2, #8] + ldrh r2, [r2, #6] + bl PlayBgm + bl sub_02003AB0 + b _02018A40 +_020188B4: + ldr r4, _02018A68 ; =0x000003E6 + b _020188C0 +_020188BC: + bl sub_02003AB0 +_020188C0: + bl sub_0201A19C + cmp r0, r4 + bne _020188BC + ldr r4, _02018A6C ; =0x000003E7 + b _020188D8 +_020188D4: + bl sub_02003AB0 +_020188D8: + bl sub_02019824 + cmp r0, r4 + bne _020188D4 + ldr r2, [sp] + ldrh r0, [r2, #4] + ldrh r1, [r2, #8] + ldrh r2, [r2, #6] + bl PlayBgm + bl sub_02003AB0 + b _02018A40 +_02018900: + ldrh r0, [r3, #8] + bl StopBgm + b _02018A40 +_0201890C: + ldrh r0, [r3, #8] + ldrh r1, [r3, #6] + bl ChangeBgm + b _02018A40 +_0201891C: + ldr r4, _02018A68 ; =0x000003E6 + b _02018928 +_02018924: + bl sub_02003AB0 +_02018928: + bl sub_0201A19C + cmp r0, r4 + bne _02018924 + ldr r2, [sp] + ldrh r0, [r2, #4] + ldrh r1, [r2, #8] + ldrh r2, [r2, #6] + bl PlayBgm2 + bl sub_02003AB0 + b _02018A40 +_02018950: + ldr r4, _02018A68 ; =0x000003E6 + b _0201895C +_02018958: + bl sub_02003AB0 +_0201895C: + bl sub_0201A19C + cmp r0, r4 + bne _02018958 + ldr r4, _02018A6C ; =0x000003E7 + b _02018974 +_02018970: + bl sub_02003AB0 +_02018974: + bl sub_02019D58 + cmp r0, r4 + bne _02018970 + ldr r2, [sp] + ldrh r0, [r2, #4] + ldrh r1, [r2, #8] + ldrh r2, [r2, #6] + bl PlayBgm2 + bl sub_02003AB0 + b _02018A40 +_0201899C: + ldrh r0, [r3, #8] + bl StopBgm2 + b _02018A40 +_020189A8: + ldrh r0, [r3, #8] + ldrh r1, [r3, #6] + bl ChangeBgm2 + b _02018A40 +_020189B8: + ldrh r0, [r3, #4] + ldrh r1, [r3, #8] + ldrh r2, [r3, #6] + bl PlayME + bl sub_02003AB0 + b _02018A40 +_020189D0: + ldrh r0, [r3, #8] + bl StopME + b _02018A40 +_020189DC: + ldrh r0, [r3, #4] + ldrh r1, [r3, #8] + bl PlaySe + bl sub_02003AB0 + b _02018A40 +_020189F0: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrh r2, [r3, #8] + ldrsh r3, [r3, #0xa] + bl PlaySeFullSpec + bl sub_02003AB0 + b _02018A40 +_02018A0C: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + bl StopSe + b _02018A40 +_02018A1C: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrh r2, [r3, #8] + bl SeChangeVolume + b _02018A40 +_02018A30: + ldrh r0, [r3, #4] + ldrh r1, [r3, #6] + ldrsh r2, [r3, #0xa] + bl SeChangePan +_02018A40: + ldr r0, _02018A70 ; =_020AF7C0 + bl sub_02002CB4 + ldr r2, [sp] + mov r3, #0 + ldr r0, _02018A70 ; =_020AF7C0 + ldr r1, _02018A74 ; =_020AF7E4 + str r3, [r2] + bl sub_02002ECC + b _0201880C + .align 2, 0 +_02018A64: .word _022A4C28 +_02018A68: .word 0x000003E6 +_02018A6C: .word 0x000003E7 +_02018A70: .word _020AF7C0 +_02018A74: .word _020AF7E4 + arm_func_end sub_02018804 + + arm_func_start sub_02018A78 +sub_02018A78: ; 0x02018A78 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _02018AD8 ; =_020AF7C0 + ldr r1, _02018ADC ; =_020AF7E4 + bl sub_02002D14 + mov r1, #0 + ldr r4, _02018AE0 ; =AUDIO_COMMANDS_BUFFER + b _02018AC0 +_02018A98: + ldr r0, [r4] + cmp r0, #0 + bne _02018AB8 + ldr r0, _02018AD8 ; =_020AF7C0 + str r5, [r4] + bl sub_02002E98 + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} +_02018AB8: + add r1, r1, #1 + add r4, r4, #0x20 +_02018AC0: + cmp r1, #0x10 + blt _02018A98 + ldr r0, _02018AD8 ; =_020AF7C0 + bl sub_02002E98 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02018AD8: .word _020AF7C0 +_02018ADC: .word _020AF7E4 +_02018AE0: .word AUDIO_COMMANDS_BUFFER + arm_func_end sub_02018A78 + + arm_func_start SendAudioCommand2 +SendAudioCommand2: ; 0x02018AE4 + stmdb sp!, {r4, lr} + ldr r1, _02018B3C ; =_022A4C00 + mov r4, r0 + ldr r2, [r1, #0x24] + ldr r0, [r1, #0x14] + cmp r2, r0 + bne _02018B0C + ldr r0, _02018B40 ; =_022A4C00 + ldr r1, _02018B44 ; =_02099240 + bl sub_02002FB4 +_02018B0C: + ldr r0, _02018B48 ; =_020AF7C0 + bl sub_02002CB4 + ldr r1, _02018B4C ; =_020AF780 + mov r2, #1 + ldr r0, _02018B48 ; =_020AF7C0 + strb r2, [r1] + bl sub_02002E98 + ldr r0, _02018B40 ; =_022A4C00 + mov r1, r4 + mov r2, #1 + bl sub_02002F7C + ldmia sp!, {r4, pc} + .align 2, 0 +_02018B3C: .word _022A4C00 +_02018B40: .word _022A4C00 +_02018B44: .word _02099240 +_02018B48: .word _020AF7C0 +_02018B4C: .word _020AF780 + arm_func_end SendAudioCommand2 + + arm_func_start sub_02018B50 +sub_02018B50: ; 0x02018B50 + ldr ip, _02018B60 ; =sub_02002D14 + ldr r0, _02018B64 ; =_020AF7C0 + ldr r1, _02018B68 ; =_020AF7E4 + bx ip + .align 2, 0 +_02018B60: .word sub_02002D14 +_02018B64: .word _020AF7C0 +_02018B68: .word _020AF7E4 + arm_func_end sub_02018B50 + + arm_func_start AllocAudioCommand +AllocAudioCommand: ; 0x02018B6C + mov r3, #0 + ldr r2, _02018BA4 ; =AUDIO_COMMANDS_BUFFER + b _02018B94 +_02018B78: + ldr r1, [r2] + cmp r1, #0 + streq r0, [r2] + moveq r0, r2 + bxeq lr + add r3, r3, #1 + add r2, r2, #0x20 +_02018B94: + cmp r3, #0x10 + blt _02018B78 + mov r0, #0 + bx lr + .align 2, 0 +_02018BA4: .word AUDIO_COMMANDS_BUFFER + arm_func_end AllocAudioCommand + + arm_func_start SendAudioCommand +SendAudioCommand: ; 0x02018BA8 + stmdb sp!, {r4, lr} + ldr r1, _02018BF8 ; =_022A4C00 + mov r4, r0 + ldr r2, [r1, #0x24] + ldr r0, [r1, #0x14] + cmp r2, r0 + bne _02018BD0 + ldr r0, _02018BFC ; =_022A4C00 + ldr r1, _02018C00 ; =_02099240 + bl sub_02002FB4 +_02018BD0: + ldr r1, _02018C04 ; =_020AF780 + mov r2, #1 + ldr r0, _02018C08 ; =_020AF7C0 + strb r2, [r1] + bl sub_02002E98 + ldr r0, _02018BFC ; =_022A4C00 + mov r1, r4 + mov r2, #1 + bl sub_02002F7C + ldmia sp!, {r4, pc} + .align 2, 0 +_02018BF8: .word _022A4C00 +_02018BFC: .word _022A4C00 +_02018C00: .word _02099240 +_02018C04: .word _020AF780 +_02018C08: .word _020AF7C0 + arm_func_end SendAudioCommand + + arm_func_start sub_02018C0C +sub_02018C0C: ; 0x02018C0C + ldr ip, _02018C1C ; =sub_02002ECC + ldr r0, _02018C20 ; =_020AF7C0 + ldr r1, _02018C24 ; =_020AF7E4 + bx ip + .align 2, 0 +_02018C1C: .word sub_02002ECC +_02018C20: .word _020AF7C0 +_02018C24: .word _020AF7E4 + arm_func_end sub_02018C0C + + arm_func_start InitSoundSystem +InitSoundSystem: ; 0x02018C28 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x50 + ldr r0, _02018E44 ; =_020AFB28 + bl sub_02002C40 + ldr r0, _02018E44 ; =_020AFB28 + mov r1, #4 + bl sub_02002CAC + bl SND_Init + ldr r0, _02018E48 ; =0x0000FFFF + mov r1, #0 + bl Snd_LockChannel + add r0, sp, #0x10 + bl DseDriver_LoadDefaultSettings + mov r0, #0x10000 + mov r1, #2 + bl MemAlloc + ldr r2, _02018E4C ; =_022A4E50 + mov r1, #0x3c000 + str r0, [r2] + mov r0, #0 + mov r2, #0x14 + mov r3, #2 + bl MemArenaAlloc + ldr r1, _02018E4C ; =_022A4E50 + mov r2, #0x10000 + str r0, [r1, #4] + ldr r1, [r1] + add r0, sp, #0x10 + bl DseDriver_ConfigureHeap + add r0, sp, #0x10 + mov r1, #0 + mov r2, #4 + bl sub_0206C36C + add r0, sp, #0x10 + mov r1, #0 + mov r2, #0xf + bl sub_0206C39C + add r0, sp, #0x10 + bl DseDriver_Init + ldr r1, _02018E50 ; =_0209939C + add r0, sp, #8 + bl sub_02019314 + mov r1, #0 + ldr r0, [sp, #8] + mov r2, r1 + bl DseSwd_LoadBank + mov r1, r0 + ldr r2, _02018E54 ; =_022A4E58 + ldr r0, _02018E58 ; =_020993B4 + str r1, [r2, #0x80] + bl Debug_Print0 + ldr r1, _02018E5C ; =_020993D0 + add r0, sp, #8 + bl sub_02019314 + ldr r0, [sp, #8] + bl DseSe_Load + mov r1, r0 + ldr r0, _02018E54 ; =_022A4E58 + str r1, [r0, #0x7c] + ldr r0, _02018E60 ; =_020993E8 + bl Debug_Print0 + ldr r1, _02018E64 ; =_02099404 + add r0, sp, #0 + bl sub_02019314 + mov r1, #0 + ldr r0, [sp] + mov r2, r1 + bl DseSwd_LoadBank + mov r1, r0 + ldr r2, _02018E54 ; =_022A4E58 + ldr r0, _02018E68 ; =_02099418 + str r1, [r2, #0x8c] + bl Debug_Print0 + ldr r1, _02018E6C ; =_02099434 + add r0, sp, #0 + bl sub_02019314 + ldr r0, [sp] + bl DseSe_Load + mov r1, r0 + ldr r2, _02018E54 ; =_022A4E58 + ldr r0, _02018E70 ; =_02099448 + str r1, [r2, #0x88] + bl Debug_Print0 + ldr r0, _02018E54 ; =_022A4E58 + mov r2, #0 + str r2, [r0, #0xc4] + str r2, [r0, #0x18] + str r2, [r0, #0x1c] + str r2, [r0, #0x44] + ldr r1, _02018E74 ; =0x000003E7 + str r2, [r0, #0x64] + strh r1, [r0, #0x20] + strh r1, [r0, #0x48] + sub r1, r1, #1 + strh r1, [r0, #0x68] + str r2, [r0, #0x94] + mov r1, #0x3f00 + strh r1, [r0, #0x98] + strh r1, [r0, #0x9a] + ldr r0, _02018E78 ; =_022A4E7C + bl ZInit8 + ldr r0, _02018E7C ; =_022A4E84 + bl ZInit8 + ldr r0, _02018E80 ; =_022A4E8C + bl ZInit8 + ldr r0, _02018E84 ; =_022A4EA4 + bl ZInit8 + ldr r0, _02018E88 ; =_022A4EAC + bl ZInit8 + ldr r0, _02018E8C ; =_022A4EB4 + bl ZInit8 + ldr r0, _02018E90 ; =_022A4EC4 + bl ZInit8 + ldr r0, _02018E94 ; =_022A4ECC + bl ZInit8 + ldr r0, _02018E98 ; =_022A4EF4 + bl ZInit8 + ldr r4, _02018E9C ; =_022A4EFC + mov r5, #0 +_02018E04: + add r0, r4, r5, lsl #3 + bl ZInit8 + add r5, r5, #1 + cmp r5, #4 + blt _02018E04 + mov r1, #0 + ldr r0, _02018EA0 ; =_020AFB4C + mov r2, r1 + mov r3, r1 + bl DseSwd_LoadMainBank + ldr r1, _02018E54 ; =_022A4E58 + str r0, [r1, #4] + ldr r0, _02018E44 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02018E44: .word _020AFB28 +_02018E48: .word 0x0000FFFF +_02018E4C: .word _022A4E50 +_02018E50: .word _0209939C +_02018E54: .word _022A4E58 +_02018E58: .word _020993B4 +_02018E5C: .word _020993D0 +_02018E60: .word _020993E8 +_02018E64: .word _02099404 +_02018E68: .word _02099418 +_02018E6C: .word _02099434 +_02018E70: .word _02099448 +_02018E74: .word 0x000003E7 +_02018E78: .word _022A4E7C +_02018E7C: .word _022A4E84 +_02018E80: .word _022A4E8C +_02018E84: .word _022A4EA4 +_02018E88: .word _022A4EAC +_02018E8C: .word _022A4EB4 +_02018E90: .word _022A4EC4 +_02018E94: .word _022A4ECC +_02018E98: .word _022A4EF4 +_02018E9C: .word _022A4EFC +_02018EA0: .word _020AFB4C + arm_func_end InitSoundSystem + + arm_func_start ManipBgmPlayback +ManipBgmPlayback: ; 0x02018EA4 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _0201904C ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019050 ; =_022A4E58 + ldr r1, [r0, #0x18] + cmp r1, #0 + bne _02018F5C + ldr r1, [r0, #0x1c] + cmp r1, #2 + bne _02018F0C + ldr r0, [r0] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _02018F0C + ldr r0, _02019050 ; =_022A4E58 + ldr r1, _02019054 ; =_02099464 + ldrh r2, [r0, #0x20] + mov r0, #7 + bl Debug_Print + bl sub_02019408 + ldr r0, _02019050 ; =_022A4E58 + mov r2, #0 + ldr r1, _02019058 ; =0x000003E7 + str r2, [r0, #0x1c] + strh r1, [r0, #0x20] +_02018F0C: + ldr r0, _02019050 ; =_022A4E58 + ldr r1, [r0, #0x44] + cmp r1, #2 + bne _0201903C + ldr r0, [r0, #8] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _0201903C + ldr r0, _02019050 ; =_022A4E58 + ldr r1, _0201905C ; =_02099470 + ldrh r2, [r0, #0x48] + mov r0, #7 + bl Debug_Print + bl sub_02019488 + ldr r0, _02019050 ; =_022A4E58 + mov r2, #0 + ldr r1, _02019058 ; =0x000003E7 + str r2, [r0, #0x44] + strh r1, [r0, #0x48] + b _0201903C +_02018F5C: + cmp r1, #1 + ldreq r1, [r0, #0x64] + cmpeq r1, #2 + bne _0201903C + ldr r0, [r0, #0x10] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _0201903C + bl sub_02019508 + ldr r0, _02019050 ; =_022A4E58 + mov r2, #0 + ldr r1, _02019060 ; =0x000003E6 + str r2, [r0, #0x64] + strh r1, [r0, #0x68] + ldr r1, [r0, #0x1c] + cmp r1, #2 + bne _02018FE0 + ldrh r2, [r0, #0x20] + ldr r1, _02019064 ; =_0209947C + mov r0, #7 + bl Debug_Print + ldr r0, _02019050 ; =_022A4E58 + mov ip, #4 + ldrh r2, [r0, #0x22] + ldr r0, [r0] + add r1, sp, #0 + rsb r2, r2, r2, lsl #7 + mov r2, r2, asr #8 + add r3, r2, #0x3e80000 + mov r2, #0 + str r3, [sp, #0xc] + str ip, [sp] + bl ResumeBgm +_02018FE0: + ldr r0, _02019050 ; =_022A4E58 + ldr r1, [r0, #0x44] + cmp r1, #2 + bne _02019030 + ldrh r2, [r0, #0x48] + ldr r1, _02019068 ; =_0209948C + mov r0, #7 + bl Debug_Print + ldr r0, _02019050 ; =_022A4E58 + mov ip, #4 + ldrh r2, [r0, #0x4a] + ldr r0, [r0, #8] + add r1, sp, #0 + rsb r2, r2, r2, lsl #7 + mov r2, r2, asr #8 + add r3, r2, #0x3e80000 + mov r2, #0 + str r3, [sp, #0xc] + str ip, [sp] + bl ResumeBgm +_02019030: + ldr r0, _02019050 ; =_022A4E58 + mov r1, #0 + str r1, [r0, #0x18] +_0201903C: + ldr r0, _0201904C ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_0201904C: .word _020AFB28 +_02019050: .word _022A4E58 +_02019054: .word _02099464 +_02019058: .word 0x000003E7 +_0201905C: .word _02099470 +_02019060: .word 0x000003E6 +_02019064: .word _0209947C +_02019068: .word _0209948C + arm_func_end ManipBgmPlayback + + arm_func_start sub_0201906C +sub_0201906C: ; 0x0201906C + stmdb sp!, {r3, lr} + ldr r0, _020190C0 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _020190C4 ; =_022A4E58 + ldr r1, [r0, #0x94] + cmp r1, #2 + bne _020190B4 + ldr r0, [r0, #0xdc] + mov r1, #0 + bl DseSe_HasPlayingInstances + cmp r0, #0 + bne _020190B4 + bl sub_02019790 + ldr r0, _020190C4 ; =_022A4E58 + mov r1, #0x3f00 + strh r1, [r0, #0x98] + mov r1, #0 + str r1, [r0, #0x94] +_020190B4: + ldr r0, _020190C0 ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r3, pc} + .align 2, 0 +_020190C0: .word _020AFB28 +_020190C4: .word _022A4E58 + arm_func_end sub_0201906C + + arm_func_start SoundDriverReset +SoundDriverReset: ; 0x020190C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _0201924C ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _02019250 ; =_0209949C + mov r0, #6 + bl Debug_Print + ldr r4, _02019254 ; =_022A4E58 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02019184 + ldr r5, _0201924C ; =_020AFB28 + b _0201910C +_020190F8: + mov r0, r5 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r5 + bl sub_02002CB4 +_0201910C: + ldr r0, [r4, #0x64] + cmp r0, #1 + beq _020190F8 + cmp r0, #2 + bne _02019174 + ldr r0, _02019254 ; =_022A4E58 + ldr r0, [r0, #0x10] + bl DseBgm_IsPlaying + cmp r0, #0 + ble _02019174 + ldr r0, _02019254 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0, #0x10] + bl DseBgm_Stop + ldr r5, _0201924C ; =_020AFB28 + ldr r4, _02019254 ; =_022A4E58 + b _02019164 +_02019150: + mov r0, r5 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r5 + bl sub_02002CB4 +_02019164: + ldr r0, [r4, #0x10] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _02019150 +_02019174: + bl sub_02019508 + ldr r1, _02019258 ; =0x000003E6 + ldr r0, _02019254 ; =_022A4E58 + strh r1, [r0, #0x68] +_02019184: + mov r7, #0 + ldr r6, _0201925C ; =0x000003E7 + ldr sl, _0201924C ; =_020AFB28 + ldr sb, _02019254 ; =_022A4E58 + mov r8, r7 + mov r4, r7 + mov r5, r7 +_020191A0: + ldr r0, [sb, #0x1c] + cmp r0, #2 + bne _020191D4 + ldr r0, [sb] + mov r1, r8 + bl DseBgm_Stop + ldr r0, [sb] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _020191D4 + bl sub_02019408 + str r7, [sb, #0x1c] + strh r6, [sb, #0x20] +_020191D4: + ldr r0, [sb, #0x44] + cmp r0, #2 + bne _02019208 + ldr r0, [sb, #8] + mov r1, r5 + bl DseBgm_Stop + ldr r0, [sb, #8] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _02019208 + bl sub_02019488 + str r4, [sb, #0x44] + strh r6, [sb, #0x48] +_02019208: + ldr r0, [sb, #0x1c] + cmp r0, #0 + ldrne r0, [sb, #0x44] + cmpne r0, #0 + beq _02019234 + mov r0, sl + bl sub_02002E98 + bl sub_02003AB0 + mov r0, sl + bl sub_02002CB4 + b _020191A0 +_02019234: + mov r0, #0x3f00 + mov r1, #0 + bl StopSe + ldr r0, _0201924C ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0201924C: .word _020AFB28 +_02019250: .word _0209949C +_02019254: .word _022A4E58 +_02019258: .word 0x000003E6 +_0201925C: .word 0x000003E7 + arm_func_end SoundDriverReset + + arm_func_start sub_02019260 +sub_02019260: ; 0x02019260 + stmdb sp!, {r3, lr} + ldr r0, _02019294 ; =_020AFB24 + ldrb r0, [r0] + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02019298 ; =_020AFB28 + bl sub_02002CB4 + mov r0, #1 + bl sub_0206C620 + ldr r0, _02019294 ; =_020AFB24 + mov r1, #1 + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02019294: .word _020AFB24 +_02019298: .word _020AFB28 + arm_func_end sub_02019260 + + arm_func_start sub_0201929C +sub_0201929C: ; 0x0201929C + stmdb sp!, {r3, lr} + ldr r0, _020192C8 ; =_020AFB28 + bl sub_02002CB4 + mov r0, #0 + bl sub_0206C6BC + ldr r0, _020192CC ; =0x0000FFFF + mov r1, #0 + bl Snd_UnlockChannel + ldr r0, _020192C8 ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r3, pc} + .align 2, 0 +_020192C8: .word _020AFB28 +_020192CC: .word 0x0000FFFF + arm_func_end sub_0201929C + + arm_func_start sub_020192D0 +sub_020192D0: ; 0x020192D0 + stmdb sp!, {r3, lr} + ldr r0, _020192FC ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019300 ; =0x0000FFFF + mov r1, #0 + bl Snd_LockChannel + mov r0, #0 + bl sub_0206C754 + ldr r0, _020192FC ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r3, pc} + .align 2, 0 +_020192FC: .word _020AFB28 +_02019300: .word 0x0000FFFF + arm_func_end sub_020192D0 + + arm_func_start sub_02019304 +sub_02019304: ; 0x02019304 + ldr r0, _02019310 ; =_022A4E50 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_02019310: .word _022A4E50 + arm_func_end sub_02019304 + + arm_func_start sub_02019314 +sub_02019314: ; 0x02019314 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + mov r5, r0 + mov r4, r1 + bl FileRom_InitDataTransfer + add r0, sp, #0 + bl FileRom_Veneer_FileInit + add r0, sp, #0 + mov r1, r4 + bl FileRom_HandleOpen + add r0, sp, #0 + bl FileGetSize + str r0, [r5, #4] + ldr r0, _02019388 ; =_022A4E50 + ldr r1, [r5, #4] + ldr r0, [r0, #4] + mov r2, #2 + bl MemLocateSet + str r0, [r5] + add r0, sp, #0 + ldmia r5, {r1, r2} + bl FileRom_HandleRead + mov r4, r0 + add r0, sp, #0 + bl FileClose + bl FileRom_StopDataTransfer + mov r0, r4 + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02019388: .word _022A4E50 + arm_func_end sub_02019314 + + arm_func_start LoadDseFile +LoadDseFile: ; 0x0201938C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x48 + mov r5, r0 + mov r4, r1 + bl FileRom_InitDataTransfer + add r0, sp, #0 + bl FileRom_Veneer_FileInit + add r0, sp, #0 + mov r1, r4 + bl FileRom_HandleOpen + add r0, sp, #0 + bl FileGetSize + str r0, [r5, #4] + ldr r0, _02019400 ; =_022A4E50 + ldr r1, [r5, #4] + ldr r0, [r0, #4] + ldr r2, _02019404 ; =0x00000302 + bl MemLocateSet + str r0, [r5] + add r0, sp, #0 + ldmia r5, {r1, r2} + bl FileRom_HandleRead + mov r4, r0 + add r0, sp, #0 + bl FileClose + bl FileRom_StopDataTransfer + mov r0, r4 + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02019400: .word _022A4E50 +_02019404: .word 0x00000302 + arm_func_end LoadDseFile + + arm_func_start sub_02019408 +sub_02019408: ; 0x02019408 + stmdb sp!, {r3, lr} + ldr r0, _0201947C ; =_022A4E8C + bl PointsToZero + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02019480 ; =_022A4E58 + ldr r0, [r0] + bl DseBgm_Unload + ldr r0, _02019480 ; =_022A4E58 + ldr r0, [r0, #4] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_Unload + ldr r0, _02019484 ; =_022A4E50 + ldr r1, _02019480 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x34] + bl MemLocateUnset + ldr r0, _02019484 ; =_022A4E50 + ldr r1, _02019480 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x24] + bl MemLocateUnset + ldr r0, _02019484 ; =_022A4E50 + ldr r1, _02019480 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x2c] + bl MemLocateUnset + ldmia sp!, {r3, pc} + .align 2, 0 +_0201947C: .word _022A4E8C +_02019480: .word _022A4E58 +_02019484: .word _022A4E50 + arm_func_end sub_02019408 + + arm_func_start sub_02019488 +sub_02019488: ; 0x02019488 + stmdb sp!, {r3, lr} + ldr r0, _020194FC ; =_022A4EB4 + bl PointsToZero + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02019500 ; =_022A4E58 + ldr r0, [r0, #8] + bl DseBgm_Unload + ldr r0, _02019500 ; =_022A4E58 + ldr r0, [r0, #0xc] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_Unload + ldr r0, _02019504 ; =_022A4E50 + ldr r1, _02019500 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x5c] + bl MemLocateUnset + ldr r0, _02019504 ; =_022A4E50 + ldr r1, _02019500 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x4c] + bl MemLocateUnset + ldr r0, _02019504 ; =_022A4E50 + ldr r1, _02019500 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x54] + bl MemLocateUnset + ldmia sp!, {r3, pc} + .align 2, 0 +_020194FC: .word _022A4EB4 +_02019500: .word _022A4E58 +_02019504: .word _022A4E50 + arm_func_end sub_02019488 + + arm_func_start sub_02019508 +sub_02019508: ; 0x02019508 + stmdb sp!, {r3, lr} + ldr r0, _02019568 ; =_022A4ECC + bl PointsToZero + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0201956C ; =_022A4E58 + ldr r0, [r0, #0x10] + bl DseBgm_Unload + ldr r0, _0201956C ; =_022A4E58 + ldr r0, [r0, #0x14] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_Unload + ldr r0, _02019570 ; =_022A4E50 + ldr r1, _0201956C ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x74] + bl MemLocateUnset + ldr r0, _02019570 ; =_022A4E50 + ldr r1, _0201956C ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x6c] + bl MemLocateUnset + ldmia sp!, {r3, pc} + .align 2, 0 +_02019568: .word _022A4ECC +_0201956C: .word _022A4E58 +_02019570: .word _022A4E50 + arm_func_end sub_02019508 + + arm_func_start PlaySeLoad +PlaySeLoad: ; 0x02019574 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10c + mov r6, r0 + mov r1, r6, asr #8 + and r4, r1, #0xff + and r5, r6, #0xff + bl sub_0201AAA0 + cmp r0, #0 + movne r0, #0 + bne _02019758 + cmp r5, #0 + moveq r0, #0 + beq _02019758 + ldr r0, _02019760 ; =_022A4E58 + ldrh r0, [r0, #0x9a] + cmp r0, r6 + moveq r0, #1 + beq _02019758 + cmp r0, #0x3f00 + beq _020195C8 + bl sub_02019790 +_020195C8: + ldr r0, _02019760 ; =_022A4E58 + mov r1, #1 + str r1, [r0, #0x94] + ldr r1, _02019764 ; =_020AFB6C + strh r6, [r0, #0x9a] + mov r2, #0 + str r2, [r0, #0xc4] + ldr r2, [r1, r4, lsl #2] + ldr r1, _02019768 ; =_020994B0 + add r0, sp, #0xc + bl sprintf + ldr r1, _0201976C ; =_020994C0 + add r3, sp, #0xc + mov r2, r6 + mov r0, #8 + bl Debug_Print + ldr r0, _02019770 ; =_020AFB28 + bl sub_02002E98 + ldr r0, _02019774 ; =_022A4EF4 + add r1, sp, #0xc + bl LoadDseFile + ldr r0, _02019770 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019760 ; =_022A4E58 + ldr r0, [r0, #0x9c] + bl DseSe_Load + ldr r2, _02019760 ; =_022A4E58 + add r1, sp, #4 + str r0, [r2, #0xc8] + add r0, r0, r5, lsl #16 + str r0, [r2, #0xdc] + mov r2, #4 + bl DseSe_GetUsedBankIDs + mov r7, r0 + ldr r1, _02019778 ; =_020994D8 + mov r2, r6 + mov r3, r5 + mov r8, #0 + mov r0, #8 + str r7, [sp] + bl Debug_Print + mov sb, r8 + add r6, sp, #4 + mov fp, #8 + ldr r5, _0201977C ; =_022A4EFC + ldr r4, _02019760 ; =_022A4E58 + b _0201970C +_02019684: + mov r0, sb, lsl #1 + ldrh r2, [r6, r0] + ldr r1, _02019780 ; =_02099500 + mov r0, fp + and sl, r2, #0xff + str r2, [sp] + mov r2, sb + mov r3, sl + bl Debug_Print + ldr r1, _02019784 ; =_02099514 + mov r2, sl + add r0, sp, #0xc + bl sprintf + ldr r1, _02019788 ; =_02099528 + mov r0, #8 + mov r2, r8 + add r3, sp, #0xc + bl Debug_Print + ldr r0, _02019770 ; =_020AFB28 + bl sub_02002E98 + add r0, r5, r8, lsl #3 + add r1, sp, #0xc + bl LoadDseFile + ldr r0, _02019770 ; =_020AFB28 + bl sub_02002CB4 + add r0, r4, r8, lsl #3 + mov r1, #0 + ldr r0, [r0, #0xa4] + mov r2, r1 + bl DseSwd_LoadBank + add r1, r4, r8, lsl #2 + str r0, [r1, #0xcc] + add r8, r8, #1 + add sb, sb, #1 +_0201970C: + cmp sb, r7 + blt _02019684 + ldr r0, _02019760 ; =_022A4E58 + cmp r8, #0 + str r8, [r0, #0xc4] + movne r0, #1 + bne _02019758 + mov r1, #0x3f00 + strh r1, [r0, #0x9a] + ldr r0, [r0, #0xc8] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSe_Unload + ldr r0, _0201978C ; =_022A4E50 + ldr r1, _02019760 ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x9c] + bl MemLocateUnset + mov r0, #0 +_02019758: + add sp, sp, #0x10c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02019760: .word _022A4E58 +_02019764: .word _020AFB6C +_02019768: .word _020994B0 +_0201976C: .word _020994C0 +_02019770: .word _020AFB28 +_02019774: .word _022A4EF4 +_02019778: .word _020994D8 +_0201977C: .word _022A4EFC +_02019780: .word _02099500 +_02019784: .word _02099514 +_02019788: .word _02099528 +_0201978C: .word _022A4E50 + arm_func_end PlaySeLoad + + arm_func_start sub_02019790 +sub_02019790: ; 0x02019790 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _0201981C ; =_022A4E58 + ldr r5, [r4, #0xc4] + cmp r5, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, pc} + mov r6, #0 + str r6, [r4, #0xc4] + ldr r7, _02019820 ; =_022A4E50 + b _020197DC +_020197B4: + add r0, r4, r6, lsl #2 + ldr r0, [r0, #0xcc] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_Unload + add r1, r4, r6, lsl #3 + ldr r0, [r7, #4] + ldr r1, [r1, #0xa4] + bl MemLocateUnset + add r6, r6, #1 +_020197DC: + cmp r6, r5 + blt _020197B4 + ldr r0, _0201981C ; =_022A4E58 + ldr r0, [r0, #0xc8] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSe_Unload + ldr r0, _02019820 ; =_022A4E50 + ldr r1, _0201981C ; =_022A4E58 + ldr r0, [r0, #4] + ldr r1, [r1, #0x9c] + bl MemLocateUnset + ldr r0, _0201981C ; =_022A4E58 + mov r1, #0x3f00 + strh r1, [r0, #0x9a] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0201981C: .word _022A4E58 +_02019820: .word _022A4E50 + arm_func_end sub_02019790 + + arm_func_start sub_02019824 +sub_02019824: ; 0x02019824 + stmdb sp!, {r4, lr} + ldr r0, _02019848 ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _0201984C ; =_022A4E58 + ldr r0, _02019848 ; =_020AFB28 + ldrh r4, [r1, #0x20] + bl sub_02002E98 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02019848: .word _020AFB28 +_0201984C: .word _022A4E58 + arm_func_end sub_02019824 + + arm_func_start IsSongOver +IsSongOver: ; 0x02019850 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r0, _020198B0 ; =_020AFB28 + mov r4, #0 + bl sub_02002CB4 + ldr r0, _020198B4 ; =_022A4E58 + ldr r1, [r0, #0x1c] + cmp r1, #2 + bne _0201989C + ldr r0, [r0] + add r2, sp, #0 + mov r1, #0xa + bl DseSequence_GetParameter + ldr r0, _020198B4 ; =_022A4E58 + ldr r2, [sp] + ldr r1, [r0, #0x40] + cmp r2, r1 + strgt r2, [r0, #0x40] + movgt r4, #1 +_0201989C: + ldr r0, _020198B0 ; =_020AFB28 + bl sub_02002E98 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020198B0: .word _020AFB28 +_020198B4: .word _022A4E58 + arm_func_end IsSongOver + + arm_func_start PlayBgm +PlayBgm: ; 0x020198B8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + mov r6, r0 + ldr r0, _02019B00 ; =_020AFB28 + mov r5, r1 + mov r4, r2 + bl sub_02002CB4 + ldr r1, _02019B04 ; =_0209953C + mov r2, r6 + mov r3, r4 + mov r0, #7 + str r5, [sp] + bl Debug_Print + ldr r0, _02019B08 ; =_022A4E58 + ldrh r0, [r0, #0x48] + cmp r6, r0 + bne _02019914 + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002E98 + mov r0, #0 + bl StopBgm2 + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002CB4 +_02019914: + ldr r1, _02019B08 ; =_022A4E58 + ldr r0, _02019B0C ; =0x000003E7 + ldrh r1, [r1, #0x20] + cmp r1, r0 + beq _02019940 + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002E98 + mov r0, #0 + bl StopBgm + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002CB4 +_02019940: + cmp r6, #1 + blo _02019950 + cmp r6, #0xc9 + bls _02019970 +_02019950: + ldr r1, _02019B08 ; =_022A4E58 + mov r0, #0 + ldr r2, _02019B0C ; =0x000003E7 + str r0, [r1, #0x1c] + ldr r0, _02019B00 ; =_020AFB28 + strh r2, [r1, #0x20] + bl sub_02002E98 + b _02019AF8 +_02019970: + ldr r0, _02019B08 ; =_022A4E58 + mov r1, #1 + str r1, [r0, #0x1c] + strh r6, [r0, #0x20] + strh r4, [r0, #0x22] + mov r1, #0 + str r1, [r0, #0x3c] + str r1, [r0, #0x40] + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _02019AE4 + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002E98 + ldr r1, _02019B10 ; =_02099554 + add r0, sp, #0x18 + mov r2, r6 + bl sprintf + ldr r0, _02019B14 ; =_022A4E8C + add r1, sp, #0x18 + bl sub_02019314 + ldr r1, _02019B18 ; =_0209956C + add r0, sp, #0x18 + mov r2, r6 + bl sprintf + ldr r0, _02019B1C ; =_022A4E7C + add r1, sp, #0x18 + bl sub_02019314 + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019B08 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0, #0x24] + mov r2, r1 + bl DseSwd_LoadBank + ldr r2, _02019B08 ; =_022A4E58 + mov r1, r0, lsl #0x10 + str r0, [r2, #4] + mov r0, r1, lsr #0x10 + mov r1, #0 + bl DseSwd_LoadWaves + mov r1, r0 + ldr r0, _02019B20 ; =_022A4E50 + ldr r2, _02019B08 ; =_022A4E58 + ldr r0, [r0, #4] + str r1, [r2, #0x30] + mov r2, #2 + bl MemLocateSet + ldr r1, _02019B08 ; =_022A4E58 + str r0, [r1, #0x2c] + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002E98 + bl FileRom_InitDataTransfer + bl sub_02003AB0 + ldr r0, _02019B08 ; =_022A4E58 + ldr r2, [r0, #4] + ldr r1, [r0, #0x2c] + mov r0, r2, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_LoadWaves +_02019A5C: + bl sub_02003AB0 + bl DseSwd_IsBankLoading + cmp r0, #0 + bne _02019A5C + bl FileRom_StopDataTransfer + ldr r0, _02019B00 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019B08 ; =_022A4E58 + ldr r0, [r0, #0x34] + bl DseBgm_Load + ldr r3, _02019B08 ; =_022A4E58 + ldr r1, _02019B24 ; =sub_0201AABC + mov r2, #0 + str r0, [r3] + bl DseBgm_SetSignalCallback + mov r0, #0x3e8 + mov r1, #4 + str r1, [sp, #4] + mul r0, r5, r0 + mov r1, #0x3c + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + rsb r1, r4, r4, lsl #7 + mov r0, r0, lsl #0x10 + add r0, r0, r1, asr #8 + str r0, [sp, #0x10] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02019B08 ; =_022A4E58 + add r1, sp, #4 + ldr r0, [r0] + mov r2, #1 + bl ResumeBgm +_02019AE4: + ldr r1, _02019B08 ; =_022A4E58 + mov r2, #2 + ldr r0, _02019B00 ; =_020AFB28 + str r2, [r1, #0x1c] + bl sub_02002E98 +_02019AF8: + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02019B00: .word _020AFB28 +_02019B04: .word _0209953C +_02019B08: .word _022A4E58 +_02019B0C: .word 0x000003E7 +_02019B10: .word _02099554 +_02019B14: .word _022A4E8C +_02019B18: .word _0209956C +_02019B1C: .word _022A4E7C +_02019B20: .word _022A4E50 +_02019B24: .word sub_0201AABC + arm_func_end PlayBgm + + arm_func_start StopBgm +StopBgm: ; 0x02019B28 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r0, _02019C3C ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _02019C40 ; =_02099584 + mov r2, r4 + mov r0, #7 + bl Debug_Print + ldr r5, _02019C44 ; =_022A4E58 + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _02019C2C + ldr r6, _02019C3C ; =_020AFB28 + b _02019B78 +_02019B64: + mov r0, r6 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r6 + bl sub_02002CB4 +_02019B78: + ldr r0, [r5, #0x1c] + cmp r0, #1 + beq _02019B64 + cmp r0, #2 + bne _02019C2C + mov r0, #0x3e8 + mul r0, r4, r0 + mov r1, #0x3c + bl _s32_div_f + mov r1, r0, lsl #0x10 + ldr r2, _02019C44 ; =_022A4E58 + mov r1, r1, lsr #0x10 + ldr r0, [r2] + bl DseBgm_Stop + ldr r0, _02019C44 ; =_022A4E58 + str r4, [sp] + ldrh r3, [r0, #0x20] + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x1c] + ldr r0, _02019C48 ; =_02099594 + bl Debug_Print0 + cmp r4, #0 + beq _02019BE4 + ldr r0, _02019C44 ; =_022A4E58 + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _02019C2C +_02019BE4: + ldr r5, _02019C3C ; =_020AFB28 + ldr r4, _02019C44 ; =_022A4E58 + b _02019C04 +_02019BF0: + mov r0, r5 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r5 + bl sub_02002CB4 +_02019C04: + ldr r0, [r4] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _02019BF0 + bl sub_02019408 + ldr r0, _02019C44 ; =_022A4E58 + mov r2, #0 + ldr r1, _02019C4C ; =0x000003E7 + str r2, [r0, #0x1c] + strh r1, [r0, #0x20] +_02019C2C: + ldr r0, _02019C3C ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02019C3C: .word _020AFB28 +_02019C40: .word _02099584 +_02019C44: .word _022A4E58 +_02019C48: .word _02099594 +_02019C4C: .word 0x000003E7 + arm_func_end StopBgm + + arm_func_start ChangeBgm +ChangeBgm: ; 0x02019C50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + ldr r0, _02019CF8 ; =_020AFB28 + mov r4, r1 + bl sub_02002CB4 + ldr r1, _02019CFC ; =_020995BC + mov r2, r4 + mov r3, r5 + mov r0, #7 + bl Debug_Print + ldr r0, _02019D00 ; =_022A4E58 + ldr r1, [r0, #0x1c] + cmp r1, #0 + beq _02019CE8 + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _02019CE0 + mov r0, #0x3e8 + mul r0, r5, r0 + mov r2, #4 + mov r1, #0x3c + str r2, [sp] + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, #4 + ldr r1, _02019D00 ; =_022A4E58 + rsb r3, r4, r4, lsl #7 + mov r0, r0, lsl #0x10 + add r3, r0, r3, asr #8 + ldr r0, [r1] + add r1, sp, #0 + str r3, [sp, #0xc] + str r2, [sp] + bl DseBgm_SetFades +_02019CE0: + ldr r0, _02019D00 ; =_022A4E58 + strh r4, [r0, #0x22] +_02019CE8: + ldr r0, _02019CF8 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02019CF8: .word _020AFB28 +_02019CFC: .word _020995BC +_02019D00: .word _022A4E58 + arm_func_end ChangeBgm + + arm_func_start sub_02019D04 +sub_02019D04: ; 0x02019D04 + stmdb sp!, {r4, lr} + ldr r0, _02019D50 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019D54 ; =_022A4E58 + ldr r1, [r0, #0x1c] + cmp r1, #0 + beq _02019D3C + ldr r1, [r0, #0x3c] + cmp r1, #0 + subgt r1, r1, #1 + movgt r4, #1 + strgt r1, [r0, #0x3c] + movle r4, #0 + b _02019D40 +_02019D3C: + mov r4, #1 +_02019D40: + ldr r0, _02019D50 ; =_020AFB28 + bl sub_02002E98 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02019D50: .word _020AFB28 +_02019D54: .word _022A4E58 + arm_func_end sub_02019D04 + + arm_func_start sub_02019D58 +sub_02019D58: ; 0x02019D58 + stmdb sp!, {r4, lr} + ldr r0, _02019D7C ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _02019D80 ; =_022A4E58 + ldr r0, _02019D7C ; =_020AFB28 + ldrh r4, [r1, #0x48] + bl sub_02002E98 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02019D7C: .word _020AFB28 +_02019D80: .word _022A4E58 + arm_func_end sub_02019D58 + + arm_func_start PlayBgm2 +PlayBgm2: ; 0x02019D84 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + mov r6, r0 + ldr r0, _02019FC0 ; =_020AFB28 + mov r5, r1 + mov r4, r2 + bl sub_02002CB4 + ldr r1, _02019FC4 ; =_020995D0 + mov r2, r6 + mov r3, r4 + mov r0, #7 + str r5, [sp] + bl Debug_Print + ldr r0, _02019FC8 ; =_022A4E58 + ldrh r0, [r0, #0x20] + cmp r6, r0 + bne _02019DE0 + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002E98 + mov r0, #0 + bl StopBgm + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002CB4 +_02019DE0: + ldr r1, _02019FC8 ; =_022A4E58 + ldr r0, _02019FCC ; =0x000003E7 + ldrh r1, [r1, #0x48] + cmp r1, r0 + beq _02019E0C + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002E98 + mov r0, #0 + bl StopBgm2 + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002CB4 +_02019E0C: + cmp r6, #1 + blo _02019E1C + cmp r6, #0xc9 + bls _02019E3C +_02019E1C: + ldr r1, _02019FC8 ; =_022A4E58 + mov r0, #0 + ldr r2, _02019FCC ; =0x000003E7 + str r0, [r1, #0x44] + ldr r0, _02019FC0 ; =_020AFB28 + strh r2, [r1, #0x48] + bl sub_02002E98 + b _02019FB8 +_02019E3C: + ldr r0, _02019FC8 ; =_022A4E58 + mov r1, #1 + str r1, [r0, #0x44] + strh r6, [r0, #0x48] + strh r4, [r0, #0x4a] + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _02019FA4 + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002E98 + ldr r1, _02019FD0 ; =_02099554 + add r0, sp, #0x18 + mov r2, r6 + bl sprintf + ldr r0, _02019FD4 ; =_022A4EB4 + add r1, sp, #0x18 + bl LoadDseFile + ldr r1, _02019FD8 ; =_0209956C + add r0, sp, #0x18 + mov r2, r6 + bl sprintf + ldr r0, _02019FDC ; =_022A4EA4 + add r1, sp, #0x18 + bl LoadDseFile + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019FC8 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0, #0x4c] + mov r2, r1 + bl DseSwd_LoadBank + ldr r2, _02019FC8 ; =_022A4E58 + mov r1, r0, lsl #0x10 + str r0, [r2, #0xc] + mov r0, r1, lsr #0x10 + mov r1, #0 + bl DseSwd_LoadWaves + mov r1, r0 + ldr r0, _02019FE0 ; =_022A4E50 + ldr r2, _02019FC8 ; =_022A4E58 + ldr r0, [r0, #4] + str r1, [r2, #0x58] + mov r2, #2 + bl MemLocateSet + ldr r1, _02019FC8 ; =_022A4E58 + str r0, [r1, #0x54] + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002E98 + bl FileRom_InitDataTransfer + bl sub_02003AB0 + ldr r0, _02019FC8 ; =_022A4E58 + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x54] + mov r0, r2, lsl #0x10 + mov r0, r0, lsr #0x10 + bl DseSwd_LoadWaves +_02019F1C: + bl sub_02003AB0 + bl DseSwd_IsBankLoading + cmp r0, #0 + bne _02019F1C + bl FileRom_StopDataTransfer + ldr r0, _02019FC0 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _02019FC8 ; =_022A4E58 + ldr r0, [r0, #0x5c] + bl DseBgm_Load + ldr r3, _02019FC8 ; =_022A4E58 + ldr r1, _02019FE4 ; =sub_0201AABC + mov r2, #0 + str r0, [r3, #8] + bl DseBgm_SetSignalCallback + mov r0, #0x3e8 + mov r1, #4 + str r1, [sp, #4] + mul r0, r5, r0 + mov r1, #0x3c + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + rsb r1, r4, r4, lsl #7 + mov r0, r0, lsl #0x10 + add r0, r0, r1, asr #8 + str r0, [sp, #0x10] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _02019FC8 ; =_022A4E58 + add r1, sp, #4 + ldr r0, [r0, #8] + mov r2, #1 + bl ResumeBgm +_02019FA4: + ldr r1, _02019FC8 ; =_022A4E58 + mov r2, #2 + ldr r0, _02019FC0 ; =_020AFB28 + str r2, [r1, #0x44] + bl sub_02002E98 +_02019FB8: + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02019FC0: .word _020AFB28 +_02019FC4: .word _020995D0 +_02019FC8: .word _022A4E58 +_02019FCC: .word 0x000003E7 +_02019FD0: .word _02099554 +_02019FD4: .word _022A4EB4 +_02019FD8: .word _0209956C +_02019FDC: .word _022A4EA4 +_02019FE0: .word _022A4E50 +_02019FE4: .word sub_0201AABC + arm_func_end PlayBgm2 + + arm_func_start StopBgm2 +StopBgm2: ; 0x02019FE8 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + ldr r0, _0201A0D8 ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _0201A0DC ; =_020995E8 + mov r2, r4 + mov r0, #7 + bl Debug_Print + ldr r5, _0201A0E0 ; =_022A4E58 + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _0201A0CC + ldr r6, _0201A0D8 ; =_020AFB28 + b _0201A034 +_0201A020: + mov r0, r6 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r6 + bl sub_02002CB4 +_0201A034: + ldr r0, [r5, #0x44] + cmp r0, #1 + beq _0201A020 + cmp r0, #2 + bne _0201A0CC + mov r0, #0x3e8 + mul r0, r4, r0 + mov r1, #0x3c + bl _s32_div_f + mov r1, r0, lsl #0x10 + ldr r2, _0201A0E0 ; =_022A4E58 + mov r1, r1, lsr #0x10 + ldr r0, [r2, #8] + bl DseBgm_Stop + cmp r4, #0 + beq _0201A084 + ldr r0, _0201A0E0 ; =_022A4E58 + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0201A0CC +_0201A084: + ldr r5, _0201A0D8 ; =_020AFB28 + ldr r4, _0201A0E0 ; =_022A4E58 + b _0201A0A4 +_0201A090: + mov r0, r5 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r5 + bl sub_02002CB4 +_0201A0A4: + ldr r0, [r4, #8] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _0201A090 + bl sub_02019488 + ldr r0, _0201A0E0 ; =_022A4E58 + mov r2, #0 + ldr r1, _0201A0E4 ; =0x000003E7 + str r2, [r0, #0x44] + strh r1, [r0, #0x48] +_0201A0CC: + ldr r0, _0201A0D8 ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0201A0D8: .word _020AFB28 +_0201A0DC: .word _020995E8 +_0201A0E0: .word _022A4E58 +_0201A0E4: .word 0x000003E7 + arm_func_end StopBgm2 + + arm_func_start ChangeBgm2 +ChangeBgm2: ; 0x0201A0E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + ldr r0, _0201A190 ; =_020AFB28 + mov r4, r1 + bl sub_02002CB4 + ldr r1, _0201A194 ; =_020995F8 + mov r2, r4 + mov r3, r5 + mov r0, #7 + bl Debug_Print + ldr r0, _0201A198 ; =_022A4E58 + ldr r1, [r0, #0x44] + cmp r1, #0 + beq _0201A180 + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _0201A178 + mov r0, #0x3e8 + mul r0, r5, r0 + mov r2, #4 + mov r1, #0x3c + str r2, [sp] + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, #4 + ldr r1, _0201A198 ; =_022A4E58 + rsb r3, r4, r4, lsl #7 + mov r0, r0, lsl #0x10 + add r3, r0, r3, asr #8 + ldr r0, [r1, #8] + add r1, sp, #0 + str r3, [sp, #0xc] + str r2, [sp] + bl DseBgm_SetFades +_0201A178: + ldr r0, _0201A198 ; =_022A4E58 + strh r4, [r0, #0x4a] +_0201A180: + ldr r0, _0201A190 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0201A190: .word _020AFB28 +_0201A194: .word _020995F8 +_0201A198: .word _022A4E58 + arm_func_end ChangeBgm2 + + arm_func_start sub_0201A19C +sub_0201A19C: ; 0x0201A19C + stmdb sp!, {r4, lr} + ldr r0, _0201A1C0 ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _0201A1C4 ; =_022A4E58 + ldr r0, _0201A1C0 ; =_020AFB28 + ldrh r4, [r1, #0x68] + bl sub_02002E98 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0201A1C0: .word _020AFB28 +_0201A1C4: .word _022A4E58 + arm_func_end sub_0201A19C + + arm_func_start PlayME +PlayME: ; 0x0201A1C8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x98 + mov r6, r0 + ldr r0, _0201A3F0 ; =_020AFB28 + mov r5, r1 + mov r4, r2 + bl sub_02002CB4 + ldr r1, _0201A3F4 ; =_0209960C + mov r2, r6 + mov r3, r4 + mov r0, #7 + str r5, [sp] + bl Debug_Print + ldr r7, _0201A3F8 ; =_022A4E58 + cmp r6, #0xd + ldr r0, [r7, #0x18] + movhi r6, #0 + cmp r0, #0 + bne _0201A2B0 + mov r0, #1 + str r0, [r7, #0x18] + str r0, [r7, #0x64] + ldr r8, _0201A3F0 ; =_020AFB28 + strh r6, [r7, #0x68] +_0201A228: + ldr r0, [r7, #0x1c] + cmp r0, #0 + beq _0201A268 + cmp r0, #2 + bne _0201A250 + ldr r0, _0201A3F8 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0] + bl DseBgm_Stop + b _0201A268 +_0201A250: + mov r0, r8 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r8 + bl sub_02002CB4 + b _0201A228 +_0201A268: + ldr r8, _0201A3F0 ; =_020AFB28 + ldr r7, _0201A3F8 ; =_022A4E58 +_0201A270: + ldr r0, [r7, #0x44] + cmp r0, #0 + beq _0201A304 + cmp r0, #2 + bne _0201A298 + ldr r0, _0201A3F8 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0, #8] + bl DseBgm_Stop + b _0201A304 +_0201A298: + mov r0, r8 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r8 + bl sub_02002CB4 + b _0201A270 +_0201A2B0: + ldr r0, [r7, #0x64] + cmp r0, #2 + bne _0201A304 + ldr r0, _0201A3F0 ; =_020AFB28 + bl sub_02002E98 + mov r0, #0 + bl StopME + ldr r0, _0201A3F0 ; =_020AFB28 + bl sub_02002CB4 + ldr r8, _0201A3F0 ; =_020AFB28 + b _0201A2F0 +_0201A2DC: + mov r0, r8 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r8 + bl sub_02002CB4 +_0201A2F0: + ldr r0, [r7, #0x10] + bl DseBgm_IsPlaying + cmp r0, #0 + bne _0201A2DC + bl sub_02019508 +_0201A304: + ldr r1, _0201A3F8 ; =_022A4E58 + mov r0, #1 + str r0, [r1, #0x18] + str r0, [r1, #0x64] + ldr r0, _0201A3F0 ; =_020AFB28 + strh r6, [r1, #0x68] + bl sub_02002E98 + ldr r1, _0201A3FC ; =_02099620 + add r0, sp, #0x18 + mov r2, r6 + bl sprintf + ldr r0, _0201A400 ; =_022A4ECC + add r1, sp, #0x18 + bl sub_02019314 + ldr r1, _0201A404 ; =_02099634 + add r0, sp, #0x18 + bl sprintf + ldr r0, _0201A408 ; =_022A4EC4 + add r1, sp, #0x18 + bl sub_02019314 + ldr r0, _0201A3F0 ; =_020AFB28 + bl sub_02002CB4 + ldr r0, _0201A3F8 ; =_022A4E58 + mov r1, #0 + ldr r0, [r0, #0x6c] + mov r2, r1 + bl DseSwd_LoadBank + ldr r1, _0201A3F8 ; =_022A4E58 + str r0, [r1, #0x14] + ldr r0, [r1, #0x74] + bl DseBgm_Load + ldr r1, _0201A3F8 ; =_022A4E58 + mov r2, #4 + str r0, [r1, #0x10] + mov r0, #0x3e8 + mul r0, r5, r0 + mov r1, #0x3c + str r2, [sp, #4] + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + rsb r1, r4, r4, lsl #7 + mov r0, r0, lsl #0x10 + add r0, r0, r1, asr #8 + str r0, [sp, #0x10] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _0201A3F8 ; =_022A4E58 + add r1, sp, #4 + ldr r0, [r0, #0x10] + mov r2, #1 + bl ResumeBgm + ldr r1, _0201A3F8 ; =_022A4E58 + mov r2, #2 + ldr r0, _0201A3F0 ; =_020AFB28 + str r2, [r1, #0x64] + bl sub_02002E98 + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201A3F0: .word _020AFB28 +_0201A3F4: .word _0209960C +_0201A3F8: .word _022A4E58 +_0201A3FC: .word _02099620 +_0201A400: .word _022A4ECC +_0201A404: .word _02099634 +_0201A408: .word _022A4EC4 + arm_func_end PlayME + + arm_func_start StopME +StopME: ; 0x0201A40C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0201A474 ; =_020AFB28 + bl sub_02002CB4 + ldr r1, _0201A478 ; =_02099644 + mov r2, r4 + mov r0, #7 + bl Debug_Print + ldr r0, _0201A47C ; =_022A4E58 + ldr r1, [r0, #0x18] + cmp r1, #1 + ldreq r0, [r0, #0x64] + cmpeq r0, #2 + bne _0201A468 + mov r0, #0x3e8 + mul r0, r4, r0 + mov r1, #0x3c + bl _s32_div_f + mov r1, r0, lsl #0x10 + ldr r2, _0201A47C ; =_022A4E58 + mov r1, r1, lsr #0x10 + ldr r0, [r2, #0x10] + bl DseBgm_Stop +_0201A468: + ldr r0, _0201A474 ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r4, pc} + .align 2, 0 +_0201A474: .word _020AFB28 +_0201A478: .word _02099644 +_0201A47C: .word _022A4E58 + arm_func_end StopME + + arm_func_start sub_0201A480 +sub_0201A480: ; 0x0201A480 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r1, r7, asr #8 + ldr r0, _0201A4F4 ; =_020AFB28 + and r5, r7, #0xff + and r4, r1, #0xff + mov r6, #0 + bl sub_02002CB4 + cmp r5, #0 + cmpne r4, #0x3f + beq _0201A4E4 + cmp r4, #1 + bne _0201A4D4 + ldr r0, _0201A4F8 ; =_022A4E58 + mov r1, r5, lsl #0x10 + ldr r0, [r0, #0x88] + mov r1, r1, lsr #0x10 + bl DseSe_HasPlayingInstances + cmp r0, #0 + movgt r6, #1 + b _0201A4E4 +_0201A4D4: + ldr r0, _0201A4F8 ; =_022A4E58 + ldrh r0, [r0, #0x98] + cmp r0, r7 + moveq r6, #1 +_0201A4E4: + ldr r0, _0201A4F4 ; =_020AFB28 + bl sub_02002E98 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0201A4F4: .word _020AFB28 +_0201A4F8: .word _022A4E58 + arm_func_end sub_0201A480 + + arm_func_start PlaySe +PlaySe: ; 0x0201A4FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r2, r5, asr #8 + ldr r0, _0201A660 ; =_020AFB28 + mov r7, r1 + and r6, r2, #0xff + and r4, r5, #0xff + bl sub_02002CB4 + ldr r1, _0201A664 ; =_02099650 + mov r2, r5 + mov r3, r7 + mov r0, #8 + bl Debug_Print + rsb r0, r7, r7, lsl #7 + mov r0, r0, asr #8 + mov r1, #4 + str r0, [sp, #0xc] + str r1, [sp] + cmp r4, #0 + beq _0201A650 + cmp r6, #0x3f + bne _0201A578 + ldr r3, _0201A668 ; =_022A4E58 + add r2, sp, #0 + ldr r0, [r3, #0x7c] + mov r1, #0 + add r0, r0, r4, lsl #16 + str r0, [r3, #0x84] + bl DseSe_Play + b _0201A650 +_0201A578: + cmp r6, #1 + bne _0201A5A0 + ldr r3, _0201A668 ; =_022A4E58 + add r2, sp, #0 + ldr r0, [r3, #0x88] + mov r1, #0 + add r0, r0, r4, lsl #16 + str r0, [r3, #0x90] + bl DseSe_Play + b _0201A650 +_0201A5A0: + ldr r0, _0201A668 ; =_022A4E58 + mov r1, #1 + ldrh r2, [r0, #0x98] + ldr r3, [r0, #0x94] + str r1, [r0, #0x94] + cmp r3, #0 + strh r5, [r0, #0x98] + cmpne r2, #0x3f00 + beq _0201A60C + mov r1, #0 + ldr r0, [r0, #0xdc] + mov r2, r1 + bl DseSe_Stop + ldr r8, _0201A660 ; =_020AFB28 + mov r7, #0 + ldr r6, _0201A668 ; =_022A4E58 + b _0201A5F8 +_0201A5E4: + mov r0, r8 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r8 + bl sub_02002CB4 +_0201A5F8: + ldr r0, [r6, #0xdc] + mov r1, r7 + bl DseSe_HasPlayingInstances + cmp r0, #0 + bgt _0201A5E4 +_0201A60C: + mov r0, r5 + bl PlaySeLoad + cmp r0, #0 + ldreq r0, _0201A668 ; =_022A4E58 + mov r1, #0 + streq r1, [r0, #0x94] + moveq r1, #0x3f00 + streqh r1, [r0, #0x98] + beq _0201A650 + ldr r3, _0201A668 ; =_022A4E58 + mov r0, #2 + str r0, [r3, #0x94] + ldr r0, [r3, #0xc8] + add r2, sp, #0 + add r0, r0, r4, lsl #16 + str r0, [r3, #0xdc] + bl DseSe_Play +_0201A650: + ldr r0, _0201A660 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201A660: .word _020AFB28 +_0201A664: .word _02099650 +_0201A668: .word _022A4E58 + arm_func_end PlaySe + + arm_func_start PlaySeFullSpec +PlaySeFullSpec: ; 0x0201A66C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x1c + mov sb, r0 + mov r4, sb, asr #8 + ldr r0, _0201A81C ; =_020AFB28 + mov r8, r1 + mov r7, r2 + mov r6, r3 + and r4, r4, #0xff + and r5, sb, #0xff + bl sub_02002CB4 + str r7, [sp] + str r6, [sp, #4] + mov r0, #8 + ldr r1, _0201A820 ; =_02099660 + mov r2, sb + mov r3, r8 + bl Debug_Print + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x3e8 + mul r0, r8, r0 + mov r1, #0x3c + bl _s32_div_f + rsb r2, r7, r7, lsl #7 + rsb r1, r6, r6, lsl #6 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + add r0, r0, r2, asr #8 + str r0, [sp, #0x14] + cmp r5, #0 + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + mov r0, r0, asr #8 + add r0, r0, #0x40 + str r0, [sp, #0x18] + mov r0, #0xc + str r0, [sp, #8] + beq _0201A80C + cmp r4, #0x3f + bne _0201A734 + ldr r3, _0201A824 ; =_022A4E58 + add r2, sp, #8 + ldr r0, [r3, #0x7c] + mov r1, #0 + add r0, r0, r5, lsl #16 + str r0, [r3, #0x84] + bl DseSe_Play + b _0201A80C +_0201A734: + cmp r4, #1 + bne _0201A75C + ldr r3, _0201A824 ; =_022A4E58 + add r2, sp, #8 + ldr r0, [r3, #0x88] + mov r1, #0 + add r0, r0, r5, lsl #16 + str r0, [r3, #0x90] + bl DseSe_Play + b _0201A80C +_0201A75C: + ldr r0, _0201A824 ; =_022A4E58 + mov r1, #1 + ldrh r2, [r0, #0x98] + ldr r3, [r0, #0x94] + str r1, [r0, #0x94] + cmp r3, #0 + strh sb, [r0, #0x98] + cmpne r2, #0x3f00 + beq _0201A7C8 + mov r1, #0 + ldr r0, [r0, #0xdc] + mov r2, r1 + bl DseSe_Stop + ldr r7, _0201A81C ; =_020AFB28 + mov r6, #0 + ldr r4, _0201A824 ; =_022A4E58 + b _0201A7B4 +_0201A7A0: + mov r0, r7 + bl sub_02002E98 + bl sub_02003AB0 + mov r0, r7 + bl sub_02002CB4 +_0201A7B4: + ldr r0, [r4, #0xdc] + mov r1, r6 + bl DseSe_HasPlayingInstances + cmp r0, #0 + bgt _0201A7A0 +_0201A7C8: + mov r0, sb + bl PlaySeLoad + cmp r0, #0 + ldreq r0, _0201A824 ; =_022A4E58 + mov r1, #0 + streq r1, [r0, #0x94] + moveq r1, #0x3f00 + streqh r1, [r0, #0x98] + beq _0201A80C + ldr r3, _0201A824 ; =_022A4E58 + mov r0, #2 + str r0, [r3, #0x94] + ldr r0, [r3, #0xc8] + add r2, sp, #8 + add r0, r0, r5, lsl #16 + str r0, [r3, #0xdc] + bl DseSe_Play +_0201A80C: + ldr r0, _0201A81C ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0201A81C: .word _020AFB28 +_0201A820: .word _02099660 +_0201A824: .word _022A4E58 + arm_func_end PlaySeFullSpec + + arm_func_start SeChangeVolume +SeChangeVolume: ; 0x0201A828 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + mov r8, r0 + mov r3, r8, asr #8 + ldr r0, _0201A8F4 ; =_020AFB28 + mov r7, r1 + mov r6, r2 + and r4, r3, #0xff + and r5, r8, #0xff + bl sub_02002CB4 + ldr r1, _0201A8F8 ; =_02099684 + mov r2, r8 + mov r3, r7 + str r6, [sp] + mov r0, #8 + bl Debug_Print + mov r0, #0x3e8 + mul r0, r7, r0 + mov r1, #4 + str r1, [sp, #4] + mov r1, #0x3c + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, #4 + rsb r2, r6, r6, lsl #7 + str r0, [sp, #4] + mov r0, r1, lsl #0x10 + add r0, r0, r2, asr #8 + str r0, [sp, #0x10] + cmp r5, #0 + beq _0201A8E4 + cmp r4, #0x3f + ldreq r0, _0201A8FC ; =_022A4E58 + ldreq r0, [r0, #0x7c] + addeq r0, r0, r5, lsl #16 + beq _0201A8D8 + cmp r4, #1 + ldreq r0, _0201A8FC ; =_022A4E58 + ldreq r0, [r0, #0x88] + addeq r0, r0, r5, lsl #16 + ldrne r0, _0201A8FC ; =_022A4E58 + ldrne r0, [r0, #0xc8] + addne r0, r0, r5, lsl #16 +_0201A8D8: + add r2, sp, #4 + mov r1, #0 + bl sub_0206F5C8 +_0201A8E4: + ldr r0, _0201A8F4 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201A8F4: .word _020AFB28 +_0201A8F8: .word _02099684 +_0201A8FC: .word _022A4E58 + arm_func_end SeChangeVolume + + arm_func_start SeChangePan +SeChangePan: ; 0x0201A900 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + mov r8, r0 + mov r3, r8, asr #8 + ldr r0, _0201A9D8 ; =_020AFB28 + mov r7, r1 + mov r6, r2 + and r4, r3, #0xff + and r5, r8, #0xff + bl sub_02002CB4 + ldr r1, _0201A9DC ; =_020996A4 + mov r2, r8 + mov r3, r7 + str r6, [sp] + mov r0, #8 + bl Debug_Print + mov r0, #0x3e8 + mul r0, r7, r0 + mov r1, #4 + str r1, [sp, #4] + mov r1, #0x3c + bl _s32_div_f + rsb r2, r6, r6, lsl #6 + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + mov r2, r1, asr #8 + mov r0, r0, lsl #0x10 + mov r1, #8 + str r1, [sp, #4] + add r1, r2, #0x40 + mov r0, r0, lsr #0x10 + add r0, r1, r0, lsl #16 + str r0, [sp, #0x14] + cmp r5, #0 + beq _0201A9C8 + cmp r4, #0x3f + ldreq r0, _0201A9E0 ; =_022A4E58 + ldreq r0, [r0, #0x7c] + addeq r0, r0, r5, lsl #16 + beq _0201A9BC + cmp r4, #1 + ldreq r0, _0201A9E0 ; =_022A4E58 + ldreq r0, [r0, #0x88] + addeq r0, r0, r5, lsl #16 + ldrne r0, _0201A9E0 ; =_022A4E58 + ldrne r0, [r0, #0xc8] + addne r0, r0, r5, lsl #16 +_0201A9BC: + add r2, sp, #4 + mov r1, #0 + bl sub_0206F5C8 +_0201A9C8: + ldr r0, _0201A9D8 ; =_020AFB28 + bl sub_02002E98 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201A9D8: .word _020AFB28 +_0201A9DC: .word _020996A4 +_0201A9E0: .word _022A4E58 + arm_func_end SeChangePan + + arm_func_start StopSe +StopSe: ; 0x0201A9E4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r2, r7, asr #8 + ldr r0, _0201AA94 ; =_020AFB28 + mov r5, r1 + and r6, r2, #0xff + and r4, r7, #0xff + bl sub_02002CB4 + ldr r1, _0201AA98 ; =_020996C0 + mov r2, r7 + mov r3, r5 + mov r0, #8 + bl Debug_Print + cmp r7, #0x3f00 + bne _0201AA2C + mov r0, #0 + bl DseSe_StopAll + b _0201AA88 +_0201AA2C: + cmp r4, #0 + beq _0201AA88 + cmp r6, #0x3f + ldreq r0, _0201AA9C ; =_022A4E58 + ldreq r0, [r0, #0x7c] + addeq r4, r0, r4, lsl #16 + beq _0201AA64 + cmp r6, #1 + ldreq r0, _0201AA9C ; =_022A4E58 + ldreq r0, [r0, #0x88] + addeq r4, r0, r4, lsl #16 + ldrne r0, _0201AA9C ; =_022A4E58 + ldrne r0, [r0, #0xc8] + addne r4, r0, r4, lsl #16 +_0201AA64: + mov r0, #0x3e8 + mul r0, r5, r0 + mov r1, #0x3c + bl _s32_div_f + mov r1, r0, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r0, r4 + mov r1, #0 + bl DseSe_Stop +_0201AA88: + ldr r0, _0201AA94 ; =_020AFB28 + bl sub_02002E98 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0201AA94: .word _020AFB28 +_0201AA98: .word _020996C0 +_0201AA9C: .word _022A4E58 + arm_func_end StopSe + + arm_func_start sub_0201AAA0 +sub_0201AAA0: ; 0x0201AAA0 + mov r0, r0, asr #8 + and r0, r0, #0xff + cmp r0, #0x3f + cmpne r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end sub_0201AAA0 + + arm_func_start sub_0201AABC +sub_0201AABC: ; 0x0201AABC + ldr r1, _0201AAD4 ; =_022A4E58 + mov r0, #0 + ldr r2, [r1, #0x3c] + add r2, r2, #1 + str r2, [r1, #0x3c] + bx lr + .align 2, 0 +_0201AAD4: .word _022A4E58 + arm_func_end sub_0201AABC + + arm_func_start FillCopyToFlatVramCommand +FillCopyToFlatVramCommand: ; 0x0201AAD8 + ldrb ip, [sp] + cmp ip, #1 + cmpne ip, #2 + moveq r3, r3, lsl #1 + str r3, [r0] + str r2, [r0, #4] + str r1, [r0, #8] + ldrb r2, [sp] + ldrh r1, [sp, #4] + strb r2, [r0, #0xe] + strh r1, [r0, #0xc] + mov r0, r3 + bx lr + arm_func_end FillCopyToFlatVramCommand + + arm_func_start ExecuteCopyToFlatVramCommand +ExecuteCopyToFlatVramCommand: ; 0x0201AB0C + stmdb sp!, {r3, lr} + mov ip, r0 + ldr r1, [ip, #4] + cmp r1, #0 + beq _0201AB7C + ldrb r0, [ip, #0xe] + cmp r0, #0 + bne _0201AB40 + mov r0, r1 + ldr r1, [ip, #8] + ldr r2, [ip] + bl MTi_CpuCopy32 + ldmia sp!, {r3, pc} +_0201AB40: + cmp r0, #1 + bne _0201AB60 + ldr r2, [ip] + ldrh r3, [ip, #0xc] + ldr r0, [ip, #8] + mov r2, r2, asr #1 + bl CopyAndInterleave + ldmia sp!, {r3, pc} +_0201AB60: + cmp r0, #2 + ldmneia sp!, {r3, pc} + ldr r2, [ip] + ldr r0, [ip, #8] + mov r2, r2, asr #1 + bl CopyAndInterleave0 + ldmia sp!, {r3, pc} +_0201AB7C: + ldr r1, [ip, #8] + ldr r2, [ip] + mov r0, #0 + bl MTi_CpuClear32 + ldmia sp!, {r3, pc} + arm_func_end ExecuteCopyToFlatVramCommand + + arm_func_start sub_0201AB90 +sub_0201AB90: ; 0x0201AB90 + ldr ip, _0201ABA8 ; =MemZero + add r2, r0, #0xe00 + mov r3, #0 + mov r1, #0xe00 + strh r3, [r2] + bx ip + .align 2, 0 +_0201ABA8: .word MemZero + arm_func_end sub_0201AB90 + + arm_func_start DecodeFragmentByteAssemblyTable +DecodeFragmentByteAssemblyTable: ; 0x0201ABAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x18 + mov r7, #0 + mov sb, r0 + mov r8, r1 + mov r6, r7 + add r5, sp, #8 + b _0201ABF8 +_0201ABCC: + str r6, [sp] + str r6, [sp, #4] + ldr r2, [sb], #0xc + mov r0, r5 + mov r1, r8 + bl FillCopyToFlatVramCommand + mov r4, r0 + mov r0, r5 + bl ExecuteCopyToFlatVramCommand + add r8, r8, r4 + add r7, r7, r4 +_0201ABF8: + ldr r3, [sb, #4] + cmp r3, #0 + bne _0201ABCC + mov r0, r7 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end DecodeFragmentByteAssemblyTable + + arm_func_start sub_0201AC10 +sub_0201AC10: ; 0x0201AC10 + add r0, r0, #0xe00 + mov r1, #0 + strh r1, [r0] + bx lr + arm_func_end sub_0201AC10 + + arm_func_start sub_0201AC20 +sub_0201AC20: ; 0x0201AC20 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrb lr, [sp, #0x10] + ldrh ip, [sp, #0x14] + mov r4, r0 + str lr, [sp] + str ip, [sp, #4] + add r0, r4, #0xe00 + ldrsh r0, [r0] + add r0, r4, r0, lsl #4 + bl FillCopyToFlatVramCommand + add r0, r4, #0xe00 + ldrsh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end sub_0201AC20 + + arm_func_start sub_0201AC64 +sub_0201AC64: ; 0x0201AC64 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x30] + add r4, sl, #0xe00 + mov fp, #1 + mov r5, #0 + b _0201AD30 +_0201AC90: + ldrsh r0, [r4] + cmp r0, #0xe0 + bge _0201AD3C + cmp r7, #0 + beq _0201ACB8 + cmp r7, #1 + beq _0201ACD8 + cmp r7, #2 + beq _0201ACF8 + b _0201AD1C +_0201ACB8: + str r5, [sp] + str r5, [sp, #4] + ldr r2, [sb] + mov r1, r8 + add r0, sl, r0, lsl #4 + bl FillCopyToFlatVramCommand + mov r3, r0 + b _0201AD1C +_0201ACD8: + str fp, [sp] + str r6, [sp, #4] + ldr r2, [sb] + mov r1, r8 + add r0, sl, r0, lsl #4 + bl FillCopyToFlatVramCommand + mov r3, r0 + b _0201AD1C +_0201ACF8: + mov r1, #2 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + ldr r2, [sb] + mov r1, r8 + add r0, sl, r0, lsl #4 + bl FillCopyToFlatVramCommand + mov r3, r0 +_0201AD1C: + ldrsh r0, [r4] + add r8, r8, r3 + add sb, sb, #0xc + add r0, r0, #1 + strh r0, [r4] +_0201AD30: + ldr r3, [sb, #4] + cmp r3, #0 + bne _0201AC90 +_0201AD3C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_0201AC64 + + arm_func_start sub_0201AD44 +sub_0201AD44: ; 0x0201AD44 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + add r0, r6, #0xe00 + ldrsh r5, [r0] + mov r4, #0 + b _0201AD70 +_0201AD5C: + add r0, r6, r4, lsl #4 + bl ExecuteCopyToFlatVramCommand + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_0201AD70: + cmp r4, r5 + blt _0201AD5C + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0201AD44 + + arm_func_start sub_0201AD7C +sub_0201AD7C: ; 0x0201AD7C + add r0, r0, #0x14 + bx lr + arm_func_end sub_0201AD7C + + arm_func_start sub_0201AD84 +sub_0201AD84: ; 0x0201AD84 + add r0, r0, #0x50 + bx lr + arm_func_end sub_0201AD84 + + arm_func_start sub_0201AD8C +sub_0201AD8C: ; 0x0201AD8C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r0, r2 + mov r5, #0 + mov ip, #1 + b _0201ADC0 +_0201ADA4: + add r2, r1, r5 + and r2, r2, #0xff + ldrh lr, [r4, #0x7a] + mov r2, r2, asr #4 + add r5, r5, #0x10 + orr r2, lr, ip, lsl r2 + strh r2, [r4, #0x7a] +_0201ADC0: + cmp r5, r0 + blt _0201ADA4 + mov ip, r0, lsr #0x1f + rsb r2, ip, r0, lsl #28 + adds r2, ip, r2, ror #28 + beq _0201ADF8 + add r2, r1, r0 + sub r2, r2, #1 + and r2, r2, #0xff + ldrh lr, [r4, #0x7a] + mov r2, r2, asr #4 + mov ip, #1 + orr r2, lr, ip, lsl r2 + strh r2, [r4, #0x7a] +_0201ADF8: + mov r1, r1, lsl #0x10 + mov r2, r3 + mov r3, r0 + add r0, r4, #0x14 + mov r1, r1, lsr #0x10 + bl FillPaletteDataRgba + add r0, r4, #0x14 + bl MarkPaletteDataAsNeedingUpdate + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0201AD8C + + arm_func_start sub_0201AE1C +sub_0201AE1C: ; 0x0201AE1C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov lr, #0 + add ip, r4, r1, lsl #1 + mov r5, #1 + b _0201AE50 +_0201AE34: + add r0, r2, lr + and r0, r0, #0xff + ldrh r6, [ip, #0x7c] + mov r0, r0, asr #4 + add lr, lr, #0x10 + orr r0, r6, r5, lsl r0 + strh r0, [ip, #0x7c] +_0201AE50: + cmp lr, r3 + blt _0201AE34 + mov ip, r3, lsr #0x1f + rsb r0, ip, r3, lsl #28 + adds r0, ip, r0, ror #28 + beq _0201AE90 + add r0, r2, r3 + sub r0, r0, #1 + and r0, r0, #0xff + add r6, r4, #0x7c + mov r5, r1, lsl #1 + ldrh lr, [r6, r5] + mov r0, r0, asr #4 + mov ip, #1 + orr r0, lr, ip, lsl r0 + strh r0, [r6, r5] +_0201AE90: + add r0, r2, r1, lsl #8 + mov r1, r0, lsl #0x10 + ldr r2, [sp, #0x10] + add r0, r4, #0x50 + mov r1, r1, lsr #0x10 + bl FillPaletteDataRgba + add r0, r4, #0x50 + bl MarkPaletteDataAsNeedingUpdate + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0201AE1C + + arm_func_start sub_0201AEB4 +sub_0201AEB4: ; 0x0201AEB4 + ldrh r3, [r0, #0x7a] + mov r1, r1, asr #4 + mov r2, #1 + orr r1, r3, r2, lsl r1 + strh r1, [r0, #0x7a] + bx lr + arm_func_end sub_0201AEB4 + + arm_func_start sub_0201AECC +sub_0201AECC: ; 0x0201AECC + stmdb sp!, {r3, lr} + add lr, r0, #0x7c + mov ip, r1, lsl #1 + ldrh r3, [lr, ip] + mov r0, r2, asr #4 + mov r1, #1 + orr r0, r3, r1, lsl r0 + strh r0, [lr, ip] + ldmia sp!, {r3, pc} + arm_func_end sub_0201AECC + + arm_func_start sub_0201AEF0 +sub_0201AEF0: ; 0x0201AEF0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r1, #0x9c + bl MemZero + strb r4, [r5, #0x79] + ldrb r0, [r5, #0x78] + orr r0, r0, #2 + strb r0, [r5, #0x78] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0201AEF0 + + arm_func_start sub_0201AF18 +sub_0201AF18: ; 0x0201AF18 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r3, r1 + mov r1, #0 + mov r2, #0x100 + mov r4, r0 + str r1, [sp] + bl sub_0200A124 + mov r2, #0 + mov r1, r4 + str r2, [sp] + add r0, r4, #0x14 + mov r3, #0x100 + bl sub_0200A478 + ldrb r0, [r4, #0x78] + orr r0, r0, #4 + strb r0, [r4, #0x78] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_0201AF18 + + arm_func_start sub_0201AF64 +sub_0201AF64: ; 0x0201AF64 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + mov r3, r1 + mov ip, #0 + add r0, r4, #0x3c + mov r1, #2 + mov r2, #0x1000 + str ip, [sp] + bl sub_0200A124 + mov r2, #0 + str r2, [sp] + add r0, r4, #0x50 + add r1, r4, #0x3c + mov r3, #0x1000 + bl sub_0200A478 + ldrb r0, [r4, #0x78] + orr r0, r0, #8 + strb r0, [r4, #0x78] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_0201AF64 + + arm_func_start sub_0201AFB8 +sub_0201AFB8: ; 0x0201AFB8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r0, [r4, #0x78] + mov r0, r0, lsl #0x1d + movs r0, r0, lsr #0x1f + beq _0201AFE0 + add r0, r4, #0x14 + bl sub_0200A510 + mov r0, r4 + bl sub_0200A180 +_0201AFE0: + ldrb r0, [r4, #0x78] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1f + ldmeqia sp!, {r4, pc} + add r0, r4, #0x50 + bl sub_0200A510 + add r0, r4, #0x3c + bl sub_0200A180 + ldmia sp!, {r4, pc} + arm_func_end sub_0201AFB8 + + arm_func_start sub_0201B004 +sub_0201B004: ; 0x0201B004 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldrb r1, [r7, #0x78] + mov r2, r1, lsl #0x1d + movs r2, r2, lsr #0x1f + beq _0201B158 + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + beq _0201B14C + ldrb r0, [r7, #8] + cmp r0, #0 + beq _0201B150 + mov r4, #0 +_0201B038: + mov r2, r4, lsl #4 + and r0, r2, #0xff + ldrh r1, [r7, #0x7a] + mov r0, r0, asr #4 + mov r3, #1 + tst r1, r3, lsl r0 + moveq r3, #0 + tst r3, #0xff + beq _0201B12C + mov r0, r2, lsl #0x10 + ldr r1, [r7, #0x10] + mov r3, r0, asr #0x10 + add r5, r1, r3, lsl #1 + ldr r2, [r7, #0xc] + mov r0, r5 + mov r1, #0x20 + add r6, r2, r3, lsl #1 + bl DC_FlushRange + ldr r0, [r7] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0201B0A4 +_0201B090: ; jump table + b _0201B0A4 ; case 0 + b _0201B0C0 ; case 1 + b _0201B0DC ; case 2 + b _0201B0F8 ; case 3 + b _0201B114 ; case 4 +_0201B0A4: + mov r1, #0 +_0201B0A8: + ldrh r0, [r5], #2 + add r1, r1, #1 + cmp r1, #0x10 + strh r0, [r6], #2 + blt _0201B0A8 + b _0201B12C +_0201B0C0: + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, #0x20 + bl Memcpy32 + bl GX_EndLoadBGExtPltt + b _0201B12C +_0201B0DC: + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, #0x20 + bl Memcpy32 + bl GX_EndLoadOBJExtPltt + b _0201B12C +_0201B0F8: + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, #0x20 + bl Memcpy32 + bl GXS_EndLoadBGExtPltt + b _0201B12C +_0201B114: + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, #0x20 + bl Memcpy32 + bl GXS_EndLoadOBJExtPltt +_0201B12C: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x10 + blt _0201B038 + mov r0, #0 + strb r0, [r7, #8] + b _0201B150 +_0201B14C: + bl sub_0200A184 +_0201B150: + mov r0, #0 + strh r0, [r7, #0x7a] +_0201B158: + ldrb r0, [r7, #0x78] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1f + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r0, r7, #0x3c + bl sub_0200A184 + mov r3, #0 + mov r2, r3 +_0201B178: + add r0, r3, #1 + mov r0, r0, lsl #0x10 + add r1, r7, r3, lsl #1 + mov r3, r0, asr #0x10 + strh r2, [r1, #0x7c] + cmp r3, #0x10 + blt _0201B178 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0201B004 + + arm_func_start sub_0201B198 +sub_0201B198: ; 0x0201B198 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + ldr r5, [sp, #0x20] + mov r8, r1 + mov r4, r0 + mov r1, #0x70 + mov r7, r2 + mov r6, r3 + bl MemZero + strb r5, [r4, #0xe] + strb r6, [r4] + stmib r4, {r7, r8} + ldr r0, [r4, #4] + bl sub_0201AC10 + mov r0, #2 + strh r0, [r4, #0xc] + cmp r6, #0 + moveq r0, #0x6400000 + movne r0, #0x6600000 + str r0, [r4, #0x64] + cmp r5, #0 + bne _0201B210 + mov ip, #0 + add r0, r4, #0x20 + mov r1, #0x70 + mov r2, #0x140 + mov r3, #0x7000000 + str ip, [sp] + bl InitOamInfo + b _0201B284 +_0201B210: + cmp r5, #1 + bne _0201B238 + ldr r3, _0201B294 ; =0x07000400 + mov ip, #0 + add r0, r4, #0x20 + mov r1, #0x70 + mov r2, #0x140 + str ip, [sp] + bl InitOamInfo + b _0201B284 +_0201B238: + cmp r5, #2 + bne _0201B260 + ldr r3, _0201B298 ; =0x07000380 + mov ip, #0 + add r0, r4, #0x20 + mov r1, #0x10 + mov r2, #0x140 + str ip, [sp] + bl InitOamInfo + b _0201B284 +_0201B260: + cmp r5, #3 + bne _0201B284 + ldr r3, _0201B29C ; =0x07000780 + mov ip, #0 + add r0, r4, #0x20 + mov r1, #0x10 + mov r2, #0x140 + str ip, [sp] + bl InitOamInfo +_0201B284: + mov r0, r4 + bl sub_0201B2A0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0201B294: .word 0x07000400 +_0201B298: .word 0x07000380 +_0201B29C: .word 0x07000780 + arm_func_end sub_0201B198 + + arm_func_start sub_0201B2A0 +sub_0201B2A0: ; 0x0201B2A0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + str r0, [r4, #0x40] + add r0, r4, #0x20 + bl ClearGroupedOamObjsAndGroups + ldrb r0, [r4, #0x1c] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0x10 + mov r1, #0xc + bl MemZero + mov r0, #0 + strb r0, [r4, #0x1c] + ldmia sp!, {r4, pc} + arm_func_end sub_0201B2A0 + + arm_func_start sub_0201B2DC +sub_0201B2DC: ; 0x0201B2DC + stmdb sp!, {r4, r5, r6, lr} + mov ip, #0 + cmp r1, #0 + moveq r0, ip + ldmeqia sp!, {r4, r5, r6, pc} + ldrh r6, [r0, #0xc] + ldrh r4, [r3, #4] + ldr r5, _0201B384 ; =_020AFC28 + mov lr, r6, lsr #0x1f + rsb r3, lr, r6, lsl #30 + add r3, lr, r3, ror #30 + mov r3, r3, lsl #1 + ldrsh r3, [r5, r3] + cmp r4, #0 + ldr lr, [r0, #0x64] + mul r5, r2, r3 + bne _0201B35C + ldrh r3, [sp, #0x10] + mov r0, r1 + cmp r3, #0x10 + bhs _0201B344 + mov r2, ip + add r1, r5, lr + bl DecodeFragmentByteAssemblyTable + mov ip, r0 + b _0201B37C +_0201B344: + mov r3, ip + add r1, r5, lr + mov r2, #2 + bl DecodeFragmentByteAssemblyTable + mov ip, r0 + b _0201B37C +_0201B35C: + cmp r4, #1 + bne _0201B37C + ldrh r3, [sp, #0x10] + mov r0, r1 + mov r2, ip + add r1, r5, lr + bl DecodeFragmentByteAssemblyTable + mov ip, r0 +_0201B37C: + mov r0, ip + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0201B384: .word _020AFC28 + arm_func_end sub_0201B2DC + + arm_func_start sub_0201B388 +sub_0201B388: ; 0x0201B388 + stmdb sp!, {r3, r4, r5, lr} + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrh lr, [r0, #0xc] + ldrb ip, [r3, #0xa] + ldr r5, _0201B438 ; =_020AFC28 + mov r4, lr, lsr #0x1f + rsb lr, r4, lr, lsl #30 + add r4, r4, lr, ror #30 + mov r4, r4, lsl #1 + ldrsh lr, [r5, r4] + cmp ip, #0xff + ldr r4, [r0, #0x64] + mul r5, r2, lr + ldreqh r2, [sp, #0x10] + andeq ip, r2, #0xff + ldrh r2, [r3, #4] + cmp r2, #0 + bne _0201B414 + cmp ip, #0x10 + bhs _0201B3F8 + mov r3, #0 + str r3, [sp] + ldr r0, [r0, #4] + add r2, r5, r4 + bl sub_0201AC64 + b _0201B430 +_0201B3F8: + mov r2, #0 + str r2, [sp] + ldr r0, [r0, #4] + add r2, r5, r4 + mov r3, #2 + bl sub_0201AC64 + b _0201B430 +_0201B414: + cmp r2, #1 + bne _0201B430 + mov r3, #0 + str r3, [sp] + ldr r0, [r0, #4] + add r2, r5, r4 + bl sub_0201AC64 +_0201B430: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0201B438: .word _020AFC28 + arm_func_end sub_0201B388 + + arm_func_start LoadObjPalette +LoadObjPalette: ; 0x0201B43C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r1 + ldrb r1, [r6, #0xa] + mov r7, r0 + ldrh r0, [r6, #4] + mov r5, r2 + cmp r1, #0xff + movne r5, r1 + cmp r0, #0 + bne _0201B4B8 + cmp r5, #0x10 + bhs _0201B48C + ldrsh r2, [r6, #6] + mov r1, r5, lsl #4 + ldr r0, [r7, #8] + ldr r3, [r6] + and r1, r1, #0xff + and r2, r2, #0xff + bl sub_0201AD8C + b _0201B534 +_0201B48C: + ldr r1, [r6] + sub r0, r5, #0x10 + str r1, [sp] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + ldr r0, [r7, #8] + and r1, r1, #0xff + mov r2, #0 + mov r3, #0x10 + bl sub_0201AE1C + b _0201B534 +_0201B4B8: + cmp r0, #1 + bne _0201B534 + ldrb r0, [r6, #0xb] + cmp r0, #0 + beq _0201B518 + ldrsh r1, [r6, #6] + mov r4, #0 + mov sb, #0x10 + mov r0, r1, asr #3 + add r8, r1, r0, lsr #28 + b _0201B50C +_0201B4E4: + ldr r0, [r6] + add r1, r5, r4 + add r0, r0, r4, lsl #6 + str r0, [sp] + ldrh r2, [r6, #8] + ldr r0, [r7, #8] + mov r3, sb + and r1, r1, #0xff + bl sub_0201AE1C + add r4, r4, #1 +_0201B50C: + cmp r4, r8, asr #4 + blt _0201B4E4 + b _0201B534 +_0201B518: + ldr r0, [r6] + and r1, r5, #0xff + str r0, [sp] + ldrh r2, [r6, #8] + ldrh r3, [r6, #6] + ldr r0, [r7, #8] + bl sub_0201AE1C +_0201B534: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end LoadObjPalette + + arm_func_start sub_0201B53C +sub_0201B53C: ; 0x0201B53C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + mov r5, r3 + ldrh ip, [r4, #4] + ldr r3, _0201B5F4 ; =_020AFC30 + mov r6, r0 + mov r0, ip, lsl #1 + ldrh r7, [r3, r0] + mov r3, #0 + cmp r7, #0 + bne _0201B57C + ldrh r0, [sp, #0x1c] + cmp r0, #0x10 + movhs r0, #1 + movlo r0, r7 + b _0201B580 +_0201B57C: + mov r0, r7 +_0201B580: + mov ip, r2, lsl #0x10 + ldrsh r2, [r6, #0xc] + cmp r7, #0 + cmpeq r0, #1 + mov r0, r1 + moveq r3, #1 + mov r1, ip, asr #0x10 + bl sub_0201B5F8 + ldrb r1, [sp, #0x24] + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + cmp r1, #0 + bne _0201B5D0 + ldrh ip, [sp, #0x1c] + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, r4 + str ip, [sp] + bl sub_0201B388 +_0201B5D0: + ldrb r0, [sp, #0x28] + cmp r0, #0 + bne _0201B5EC + ldrh r2, [sp, #0x1c] + mov r0, r6 + mov r1, r4 + bl LoadObjPalette +_0201B5EC: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0201B5F4: .word _020AFC30 + arm_func_end sub_0201B53C + + arm_func_start sub_0201B5F8 +sub_0201B5F8: ; 0x0201B5F8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r4, r0 + mov r5, r1 + mov r1, r4 + add r0, sp, #0 + mov r6, r2 + mov r4, r3 + bl sub_0201B678 + ldrh r3, [sp, #8] + ldr r0, _0201B670 ; =0x000003FF + ldr r1, _0201B674 ; =_020996D8 + mov r2, r6, lsl #1 + and r0, r3, r0 + mov r0, r0, lsl #0x10 + ldrsh r1, [r1, r2] + mov r0, r0, asr #0x10 + cmp r4, #0 + mov r0, r0, lsl r1 + mov r0, r0, lsl #0x10 + movne r1, #1 + mov r0, r0, asr #0x10 + moveq r1, #0 + mov r0, r0, lsl r1 + mov r0, r0, lsl #0x10 + add r0, r5, r0, asr #16 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0201B670: .word 0x000003FF +_0201B674: .word _020996D8 + arm_func_end sub_0201B5F8 + + arm_func_start sub_0201B678 +sub_0201B678: ; 0x0201B678 + ldrh r3, [r1] + ldr r2, _0201B6D0 ; =0x0000FCFF + strh r3, [r0] + ldrh ip, [r1, #2] + sub r3, r2, #0xb00 + strh ip, [r0, #2] + ldrh ip, [r1, #4] + and r2, ip, r2 + strh r2, [r0, #4] + ldrh r2, [r1, #6] + and r2, r2, r3 + strh r2, [r0, #6] + ldrh r2, [r1, #8] + strh r2, [r0, #8] + ldrh r2, [r1, #4] + ldrh r3, [r1, #6] + mov r1, r2, lsl #0x16 + and r2, r3, #0xe00 + mov r1, r1, lsr #0x12 + orr r1, r1, r2, asr #9 + strh r1, [r0, #0xa] + bx lr + .align 2, 0 +_0201B6D0: .word 0x0000FCFF + arm_func_end sub_0201B678 + + arm_func_start AddWanFragmentToOam +AddWanFragmentToOam: ; 0x0201B6D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov r5, r0 + mov r6, r2 + mov r7, r1 + mov r4, r3 + ldrsh r1, [r6, #4] + ldrsh r2, [r5, #0xc] + ldrb r3, [r6, #0xe] + mov r0, r7 + bl sub_0201B5F8 + ldr r1, [r5, #0x40] + str r0, [sp, #4] + cmp r1, #0x80 + mvnge r0, #0 + bge _0201B9A4 + ldrh r2, [r6, #0xa] + ldrh r3, [r6, #8] + ldrb sl, [r6, #0xf] + and r8, r2, #0xff + ldrh r2, [r6, #0xc] + add r0, sp, #0x16 + mov r1, r7 + str r2, [sp] + and sb, r3, #0xff + ldrh r7, [r6, #6] + ldrsh fp, [r6, #2] + ldrsh r6, [r6] + bl sub_0201B678 + ldrsb r0, [sp, #0x19] + adds r7, r7, r0 + movmi r7, #0 + cmp r7, #0x140 + ldrge r7, _0201B9AC ; =0x0000013F + cmp r4, #0 + bne _0201B790 + add r3, sp, #0x1a + ldrh r0, [r3] + add r4, sp, #0xe + ldrh r2, [r3, #2] + ldrh r1, [r3, #4] + strh r0, [r4] + ldrh r0, [r3, #6] + strh r2, [r4, #2] + strh r1, [r4, #4] + strh r0, [r4, #6] + b _0201B7E8 +_0201B790: + add lr, sp, #0x1a + ldrh r1, [r4] + ldrh r2, [lr] + ldrh r0, [r4, #6] + add ip, sp, #0xe + and r1, r2, r1 + orr r0, r0, r1 + strh r0, [ip] + ldrh r2, [lr, #2] + ldrh r1, [r4, #2] + ldrh r3, [r4, #8] + ldrh r0, [lr, #4] + and r1, r2, r1 + orr r1, r3, r1 + strh r1, [ip, #2] + ldrh r1, [r4, #4] + ldrh r2, [r4, #0xa] + ldrh r3, [lr, #6] + and r0, r0, r1 + orr r0, r2, r0 + strh r0, [ip, #4] + strh r3, [ip, #6] +_0201B7E8: + ldrh r1, [sp, #0x12] + mov r2, #0x400 + rsb r2, r2, #0 + and r1, r1, r2 + ldrh r0, [sp, #0x10] + strh r1, [sp, #0x12] + and r1, r0, r2, lsr #23 + sub r0, r6, #0x100 + add r4, r1, r0 + ldr r1, [sp, #4] + ldrh r0, [sp, #0x12] + mov r1, r1, lsl #0x10 + mov r2, r2, lsr #0x16 + and r1, r2, r1, lsr #16 + orr r1, r0, r1 + mov r3, r4, lsl #0x10 + mov r0, r3, asr #0x10 + strh r1, [sp, #0x12] + bl sub_0201B9B0 + cmp r0, #0 + mvnne r7, #0 + bne _0201B950 + ldrh r1, [sp, #0x10] + mov r0, #0x200 + rsb r0, r0, #0 + and r1, r1, r0 + strh r1, [sp, #0x10] + ldrh r3, [sp, #0x14] + mov r1, r0, lsr #0x14 + sub r2, fp, #0x200 + and r1, r1, r3, asr #4 + add r6, r1, r2 + ldrh r3, [sp, #0x10] + mov r1, r6, lsl #0x10 + and r2, r4, r0, lsr #23 + mov r0, r1, asr #0x10 + orr r1, r3, r2 + strh r1, [sp, #0x10] + bl sub_0201B9D4 + cmp r0, #0 + mvnne r7, #0 + bne _0201B950 + ldrh r1, [sp, #0xe] + ldrh r0, [sp, #0x14] + and r2, r6, #0xff + bic r1, r1, #0xff + strh r1, [sp, #0xe] + ldrh r3, [sp, #0xe] + mov r1, r0, asr #1 + ldr r0, [sp] + orr r2, r3, r2 + bic r2, r2, #0x2000 + strh r2, [sp, #0xe] + ldrh r2, [sp, #0xe] + mov r0, r0, lsl #0x1f + tst r1, #1 + orr r0, r2, r0, lsr #18 + strh r0, [sp, #0xe] + bne _0201B928 + cmp sl, #0 + beq _0201B8FC + ldrh r1, [sp, #0x12] + mov r0, sb, lsl #0x1c + bic r1, r1, #0xf000 + strh r1, [sp, #0x12] + ldrh r1, [sp, #0x12] + orr r0, r1, r0, lsr #16 + strh r0, [sp, #0x12] + b _0201B928 +_0201B8FC: + ldrh r2, [sp, #0x12] + and r1, sb, #0xf + bic r0, r2, #0xf000 + strh r0, [sp, #0x12] + mov r0, r2, asr #0xc + and r0, r0, #0xf + add r0, r0, r1 + ldrh r1, [sp, #0x12] + mov r0, r0, lsl #0x1c + orr r0, r1, r0, lsr #16 + strh r0, [sp, #0x12] +_0201B928: + ldrh r1, [sp, #0x12] + bic r0, r1, #0xf000 + strh r0, [sp, #0x12] + mov r0, r1, asr #0xc + and r0, r0, #0xf + add r0, r0, r8 + ldrh r1, [sp, #0x12] + mov r0, r0, lsl #0x1c + orr r0, r1, r0, lsr #16 + strh r0, [sp, #0x12] +_0201B950: + cmp r7, #0 + mvnlt r0, #1 + blt _0201B9A4 + ldr r1, [r5, #0x40] + ldr r0, [r5, #0x20] + cmp r1, r0 + bge _0201B9A0 + ldrh r4, [sp, #0xe] + ldrh r3, [sp, #0x10] + ldrh r0, [sp, #0x12] + add r1, sp, #8 + mov r2, r7 + strh r0, [sp, #0xc] + strh r4, [sp, #8] + strh r3, [sp, #0xa] + add r0, r5, #0x20 + bl AddObjToUngroupedOamObjs + ldr r0, [r5, #0x40] + add r0, r0, #1 + str r0, [r5, #0x40] +_0201B9A0: + mov r0, #0 +_0201B9A4: + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0201B9AC: .word 0x0000013F + arm_func_end AddWanFragmentToOam + + arm_func_start sub_0201B9B0 +sub_0201B9B0: ; 0x0201B9B0 + mvn r1, #0x3f + cmp r0, r1 + blt _0201B9C4 + cmp r0, #0x100 + blt _0201B9CC +_0201B9C4: + mov r0, #1 + bx lr +_0201B9CC: + mov r0, #0 + bx lr + arm_func_end sub_0201B9B0 + + arm_func_start sub_0201B9D4 +sub_0201B9D4: ; 0x0201B9D4 + mvn r1, #0x3f + cmp r0, r1 + blt _0201B9E8 + cmp r0, #0xc0 + blt _0201B9F0 +_0201B9E8: + mov r0, #1 + bx lr +_0201B9F0: + mov r0, #0 + bx lr + arm_func_end sub_0201B9D4 + + arm_func_start AddSimpleObjToOam +AddSimpleObjToOam: ; 0x0201B9F8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldr r3, [r4, #0x40] + cmp r3, #0x80 + mvnge r0, #0 + bge _0201BA90 + cmp r2, #0 + blt _0201BA24 + cmp r2, #0x140 + blt _0201BA2C +_0201BA24: + mvn r0, #1 + b _0201BA90 +_0201BA2C: + ldr r0, [r4, #0x20] + cmp r3, r0 + bge _0201BA8C + ldrh lr, [r1] + ldr r3, _0201BA98 ; =0x00000FFF + add r0, r4, #0x20 + strh lr, [sp] + ldrh ip, [r1, #2] + and lr, lr, #0xff00 + strh ip, [sp, #2] + ldrh ip, [r1, #4] + strh ip, [sp, #4] + ldrh ip, [r1, #6] + add r1, sp, #0 + and r3, r3, ip, asr #4 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + and r3, r3, #0xff + orr r3, lr, r3 + strh r3, [sp] + bl AddObjToUngroupedOamObjs + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] +_0201BA8C: + mov r0, #0 +_0201BA90: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0201BA98: .word 0x00000FFF + arm_func_end AddSimpleObjToOam + + arm_func_start GroupOamAttributesWrapper +GroupOamAttributesWrapper: ; 0x0201BA9C + ldr ip, _0201BAA8 ; =GroupOamObjs + add r0, r0, #0x20 + bx ip + .align 2, 0 +_0201BAA8: .word GroupOamObjs + arm_func_end GroupOamAttributesWrapper + + arm_func_start CopyAttributesToOamWrapper +CopyAttributesToOamWrapper: ; 0x0201BAAC + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x20 + bl SetShouldCopyToOam + add r0, r4, #0x20 + bl CopyAttributesToOam + ldmia sp!, {r4, pc} + arm_func_end CopyAttributesToOamWrapper + + arm_func_start ChangeSimpleObjTexture +ChangeSimpleObjTexture: ; 0x0201BAC8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldrb r5, [sp, #0x18] + ldrb r4, [sp, #0x1c] + str r5, [sp] + str r4, [sp, #4] + ldrh ip, [r0, #0xc] + ldr r4, [r0, #0x64] + ldr r5, _0201BB1C ; =_020AFC28 + mov lr, ip, lsr #0x1f + rsb ip, lr, ip, lsl #30 + add ip, lr, ip, ror #30 + mov ip, ip, lsl #1 + ldrsh ip, [r5, ip] + mov r5, r1 + ldr r0, [r0, #4] + smlabb r1, r2, ip, r4 + mov r2, r5 + bl sub_0201AC20 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0201BB1C: .word _020AFC28 + arm_func_end ChangeSimpleObjTexture + + arm_func_start sub_0201BB20 +sub_0201BB20: ; 0x0201BB20 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #4] + bl sub_0201AD44 + ldr r0, [r4, #4] + bl sub_0201AC10 + ldmia sp!, {r4, pc} + arm_func_end sub_0201BB20 + + arm_func_start InitObjGraphicsControls +InitObjGraphicsControls: ; 0x0201BB3C + stmdb sp!, {r3, lr} + mov r0, #0x1f00 + mov r1, #0 + bl MemAlloc + ldr r2, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r1, #0x1f00 + str r0, [r2] + bl MemZero + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x1c0 + bl sub_0201AB90 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x3c4 + add r0, r0, #0xc00 + bl sub_0201AB90 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x1c0 + bl sub_0201AC10 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x3c4 + add r0, r0, #0xc00 + bl sub_0201AC10 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1c8 + add r0, r0, #0x1c00 + bl sub_0201AEF0 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, _0201BCC0 ; =0x05000200 + ldr r0, [r0] + add r0, r0, #0x1c8 + add r0, r0, #0x1c00 + bl sub_0201AF18 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, _0201BCC4 ; =0x06894000 + ldr r0, [r0] + add r0, r0, #0x1c8 + add r0, r0, #0x1c00 + bl sub_0201AF64 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x264 + add r0, r0, #0x1c00 + bl sub_0201AEF0 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, _0201BCC8 ; =0x05000600 + ldr r0, [r0] + add r0, r0, #0x264 + add r0, r0, #0x1c00 + bl sub_0201AF18 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r3, #0 + ldr r0, [r0] + str r3, [sp] + add r1, r0, #0x1c8 + add r1, r1, #0x1c00 + add r2, r0, #0x1c0 + bl sub_0201B198 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r3, #1 + ldr r2, [r0] + str r3, [sp] + add r0, r2, #0x70 + add r1, r2, #0x264 + add r1, r1, #0x1c00 + add r2, r2, #0x3c4 + add r2, r2, #0xc00 + bl sub_0201B198 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r1, #2 + ldr r2, [r0] + mov r3, #0 + str r1, [sp] + add r0, r2, #0xe0 + add r1, r2, #0x1c8 + add r1, r1, #0x1c00 + add r2, r2, #0x1c0 + bl sub_0201B198 + ldr r0, _0201BCBC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r1, #3 + ldr r2, [r0] + mov r3, #1 + str r1, [sp] + add r0, r2, #0x150 + add r1, r2, #0x264 + add r1, r1, #0x1c00 + add r2, r2, #0x3c4 + add r2, r2, #0xc00 + bl sub_0201B198 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BCBC: .word OBJ_GRAPHICS_CONTROLS_PTR +_0201BCC0: .word 0x05000200 +_0201BCC4: .word 0x06894000 +_0201BCC8: .word 0x05000600 + arm_func_end InitObjGraphicsControls + + arm_func_start sub_0201BCCC +sub_0201BCCC: ; 0x0201BCCC + ldr r1, _0201BCEC ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r2, #0x9c + ldr r1, [r1] + ldr ip, _0201BCF0 ; =sub_0201AD7C + add r1, r1, #0x1c8 + add r1, r1, #0x1c00 + mla r0, r2, r0, r1 + bx ip + .align 2, 0 +_0201BCEC: .word OBJ_GRAPHICS_CONTROLS_PTR +_0201BCF0: .word sub_0201AD7C + arm_func_end sub_0201BCCC + + arm_func_start sub_0201BCF4 +sub_0201BCF4: ; 0x0201BCF4 + ldr r1, _0201BD14 ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r2, #0x9c + ldr r1, [r1] + ldr ip, _0201BD18 ; =sub_0201AD84 + add r1, r1, #0x1c8 + add r1, r1, #0x1c00 + mla r0, r2, r0, r1 + bx ip + .align 2, 0 +_0201BD14: .word OBJ_GRAPHICS_CONTROLS_PTR +_0201BD18: .word sub_0201AD84 + arm_func_end sub_0201BCF4 + + arm_func_start sub_0201BD1C +sub_0201BD1C: ; 0x0201BD1C + ldr r3, _0201BD4C ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r2, #0x9c + ldr ip, [r3] + and r3, r0, #1 + add r0, ip, #0x1c8 + add r0, r0, #0x1c00 + mla r2, r1, r2, r0 + ldrb r0, [r2, #0x78] + bic r0, r0, #1 + orr r0, r0, r3 + strb r0, [r2, #0x78] + bx lr + .align 2, 0 +_0201BD4C: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BD1C + + arm_func_start sub_0201BD50 +sub_0201BD50: ; 0x0201BD50 + stmdb sp!, {r3, lr} + ldr r3, _0201BD7C ; =OBJ_GRAPHICS_CONTROLS_PTR + mov r2, #0x9c + ldr r3, [r3] + mov ip, r0 + add r0, r3, #0x1c8 + add r0, r0, #0x1c00 + mla r0, r1, r2, r0 + mov r1, ip + bl sub_0201AEB4 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BD7C: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BD50 + + arm_func_start sub_0201BD80 +sub_0201BD80: ; 0x0201BD80 + stmdb sp!, {r3, lr} + ldr ip, _0201BDB0 ; =OBJ_GRAPHICS_CONTROLS_PTR + mov lr, r0 + ldr ip, [ip] + mov r3, #0x9c + add r0, ip, #0x1c8 + add r0, r0, #0x1c00 + mla r0, r2, r3, r0 + mov r2, r1 + mov r1, lr + bl sub_0201AECC + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BDB0: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BD80 + + arm_func_start CopyAttributesToOamBothScreens +CopyAttributesToOamBothScreens: ; 0x0201BDB4 + stmdb sp!, {r3, lr} + mov r0, #8 + bl sub_0200302C + ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + bl CopyAttributesToOamWrapper + ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x70 + bl CopyAttributesToOamWrapper + mov r0, #8 + bl sub_020030FC + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BDE8: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end CopyAttributesToOamBothScreens + + arm_func_start sub_0201BDEC +sub_0201BDEC: ; 0x0201BDEC + stmdb sp!, {r3, lr} + mov r0, #8 + bl sub_0200302C + ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0xe0 + bl CopyAttributesToOamWrapper + ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x150 + bl CopyAttributesToOamWrapper + mov r0, #8 + bl sub_020030FC + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BE24: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BDEC + + arm_func_start sub_0201BE28 +sub_0201BE28: ; 0x0201BE28 + stmdb sp!, {r3, lr} + ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x1c8 + add r0, r0, #0x1c00 + bl sub_0201AFB8 + ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x264 + add r0, r0, #0x1c00 + bl sub_0201AFB8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BE58: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BE28 + + arm_func_start GroupOamAttributesBothScreens +GroupOamAttributesBothScreens: ; 0x0201BE5C + stmdb sp!, {r3, lr} + ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + bl GroupOamAttributesWrapper + ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x70 + bl GroupOamAttributesWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BE80: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end GroupOamAttributesBothScreens + + arm_func_start sub_0201BE84 +sub_0201BE84: ; 0x0201BE84 + stmdb sp!, {r3, lr} + ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0xe0 + bl GroupOamAttributesWrapper + ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x150 + bl GroupOamAttributesWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BEAC: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BE84 + + arm_func_start sub_0201BEB0 +sub_0201BEB0: ; 0x0201BEB0 + stmdb sp!, {r3, lr} + mov r0, #8 + bl sub_0200302C + ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x1c8 + add r0, r0, #0x1c00 + bl sub_0201B004 + ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x264 + add r0, r0, #0x1c00 + bl sub_0201B004 + ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + bl sub_0201BB20 + ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x70 + bl sub_0201BB20 + mov r0, #8 + bl sub_020030FC + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BF0C: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BEB0 + + arm_func_start sub_0201BF10 +sub_0201BF10: ; 0x0201BF10 + stmdb sp!, {r3, lr} + mov r0, #8 + bl sub_0200302C + ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0xe0 + bl sub_0201BB20 + ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x150 + bl sub_0201BB20 + mov r0, #8 + bl sub_020030FC + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BF48: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BF10 + + arm_func_start sub_0201BF4C +sub_0201BF4C: ; 0x0201BF4C + stmdb sp!, {r3, lr} + bl sub_0201BEB0 + bl sub_0201BF10 + bl CopyAttributesToOamBothScreens + bl sub_0201BDEC + ldmia sp!, {r3, pc} + arm_func_end sub_0201BF4C + + arm_func_start sub_0201BF64 +sub_0201BF64: ; 0x0201BF64 + stmdb sp!, {r3, lr} + ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + bl sub_0201B2A0 + ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x70 + bl sub_0201B2A0 + ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0xe0 + bl sub_0201B2A0 + ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r0, [r0] + add r0, r0, #0x150 + bl sub_0201B2A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201BFA8: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BF64 + + arm_func_start sub_0201BFAC +sub_0201BFAC: ; 0x0201BFAC + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr ip, _0201BFEC ; =OBJ_GRAPHICS_CONTROLS_PTR + str r3, [sp] + ldr lr, [ip] + ldr ip, [sp, #0x10] + mov r3, #0x70 + mov r4, r0 + mla r0, ip, r3, lr + mov ip, r1 + mov r3, r2 + mov r1, r4 + mov r2, ip + bl sub_0201B2DC + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0201BFEC: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201BFAC + + arm_func_start CopyAndInterleaveWrapper +CopyAndInterleaveWrapper: ; 0x0201BFF0 + ldr ip, _0201BFFC ; =CopyAndInterleave + mov r2, r2, asr #1 + bx ip + .align 2, 0 +_0201BFFC: .word CopyAndInterleave + arm_func_end CopyAndInterleaveWrapper + + arm_func_start InitOamAdjustmentInfo +InitOamAdjustmentInfo: ; 0x0201C000 + ldr r2, _0201C024 ; =0x0000FFFF + mov r1, #0 + strh r2, [r0] + strh r2, [r0, #2] + strh r2, [r0, #4] + strh r1, [r0, #6] + strh r1, [r0, #8] + strh r1, [r0, #0xa] + bx lr + .align 2, 0 +_0201C024: .word 0x0000FFFF + arm_func_end InitOamAdjustmentInfo + + arm_func_start sub_0201C028 +sub_0201C028: ; 0x0201C028 + strh r1, [r0] + strh r2, [r0, #2] + ldrh r1, [sp] + strh r3, [r0, #4] + ldrh r2, [sp, #4] + strh r1, [r0, #6] + ldrh r1, [sp, #8] + strh r2, [r0, #8] + strh r1, [r0, #0xa] + bx lr + arm_func_end sub_0201C028 + + arm_func_start InitAnimationControl +InitAnimationControl: ; 0x0201C050 + stmdb sp!, {r4, lr} + mov r1, #0x7c + mov r4, r0 + bl MemZero + mov r1, #0 + str r1, [r4, #0x68] + str r1, [r4, #0x6c] + strh r1, [r4, #0x70] + mov r0, #0xff + strh r1, [r4, #0x72] + strb r0, [r4, #0x43] + add r0, r0, #0xff00 + strh r0, [r4, #0x36] + mov r0, #9 + strb r0, [r4, #0x40] + add r0, r4, #0x10 + bl InitOamAdjustmentInfo + ldrh r0, [r4, #2] + bic r0, r0, #0x8000 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + orr r0, r0, #0x200 + strh r0, [r4, #2] + ldmia sp!, {r4, pc} + arm_func_end InitAnimationControl + + arm_func_start InitAnimationControlWithSet__0201C0B0 +InitAnimationControlWithSet__0201C0B0: ; 0x0201C0B0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl InitAnimationControl + ldrh r0, [r4, #2] + orr r0, r0, #1 + strh r0, [r4, #2] + ldmia sp!, {r4, pc} + arm_func_end InitAnimationControlWithSet__0201C0B0 + + arm_func_start InitAnimationControlWithSet__0201C0CC +InitAnimationControlWithSet__0201C0CC: ; 0x0201C0CC + stmdb sp!, {r4, lr} + mov r4, r0 + bl InitAnimationControl + ldrh r0, [r4, #2] + orr r0, r0, #1 + strh r0, [r4, #2] + ldmia sp!, {r4, pc} + arm_func_end InitAnimationControlWithSet__0201C0CC + + arm_func_start SetSpriteIdForAnimationControl +SetSpriteIdForAnimationControl: ; 0x0201C0E8 + strh r1, [r0, #0x70] + ldrsh r2, [r0, #0x70] + ldrsh r1, [r0, #0x72] + cmp r2, r1 + strneh r2, [r0, #0x72] + movne r1, #0xff + strneb r1, [r0, #0x43] + bx lr + arm_func_end SetSpriteIdForAnimationControl + + arm_func_start sub_0201C108 +sub_0201C108: ; 0x0201C108 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r0, [r4, #0x70] + cmp r0, #0 + bne _0201C124 + ldr r0, _0201C134 ; =_020996E0 + bl Debug_Print0 +_0201C124: + ldrh r0, [r4, #2] + orr r0, r0, #0x8000 + strh r0, [r4, #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_0201C134: .word _020996E0 + arm_func_end sub_0201C108 + + arm_func_start sub_0201C138 +sub_0201C138: ; 0x0201C138 + ldr ip, _0201C140 ; =InitAnimationControl + bx ip + .align 2, 0 +_0201C140: .word InitAnimationControl + arm_func_end sub_0201C138 + + arm_func_start sub_0201C144 +sub_0201C144: ; 0x0201C144 + stmdb sp!, {r3, lr} + ldr r1, _0201C178 ; =_020AFC3C + ldr r1, [r1, r2, lsl #2] + mov r1, r1, lsl #0x10 + add r0, r0, r1, asr #16 + sub r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, asr #0x10 + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201C178: .word _020AFC3C + arm_func_end sub_0201C144 + + arm_func_start SetAnimationForAnimationControlInternal +SetAnimationForAnimationControlInternal: ; 0x0201C17C + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [sp, #0x18] + ldmia r1, {ip, lr} + mov r5, #0 + mov r4, r4, lsl #0x10 + strh r5, [r0] + strh r5, [r0, #6] + mov r4, r4, asr #0x10 + strh r4, [r0, #8] + strh r4, [r0, #0xa] + strh r5, [r0, #0xc] + mov r5, #1 + ldrb r4, [sp, #0x1c] + strh r5, [r0, #4] + ldrh r5, [r0] + cmp r4, #0 + orr r4, r5, #0x8000 + strh r4, [r0] + ldrneh r4, [r0] + mov r5, #0 + orrne r4, r4, #0x1000 + strneh r4, [r0] + ldr r4, [ip, #8] + add r4, r4, r2, lsl #3 + ldrh r4, [r4, #4] + cmp r3, r4 + strh r5, [r0, #0x20] + movge r3, #0 + ldr r4, [sp, #0x10] + strh r5, [r0, #0x22] + strh r4, [r0, #0x32] + sub r4, r5, #1 + strh r4, [r0, #0x3a] + strh r4, [r0, #0x3c] + str r5, [r0, #0x28] + str r5, [r0, #0x2c] + strh r5, [r0, #0xc] + strh r2, [r0, #0x76] + strh r3, [r0, #0x78] + ldr r4, [ip] + cmp lr, #0 + str r4, [r0, #0x54] + ldrne r5, [lr] + cmp lr, #0 + str r5, [r0, #0x58] + ldrne r4, [lr, #4] + moveq r4, #0 + str r4, [r0, #0x5c] + cmp lr, #0 + ldrnesh r4, [lr, #0xa] + ldrb lr, [sp, #0x14] + ldreqsh r4, [ip, #0x14] + and r4, r4, #1 + strh r4, [r0, #0x60] + ldr r4, [ip, #4] + str r4, [r0, #0x50] + ldrb r4, [sp, #0x20] + strb lr, [r0, #0x41] + strb r4, [r0, #0x7a] + ldrb r1, [r1, #8] + cmp r1, #1 + beq _0201C29C + ldr r1, [ip, #8] + ldr r1, [r1] + ldr r1, [r1, r3, lsl #2] + str r1, [r0, #0x48] + str r1, [r0, #0x4c] + ldr r1, [ip, #8] + ldrh r1, [r1, #4] + strh r1, [r0, #0x30] + ldr r1, [ip, #8] + b _0201C2C0 +_0201C29C: + ldrsh r1, [ip, #0xc] + strh r1, [r0, #0x30] + ldr r1, [ip, #8] + ldr r1, [r1, r2, lsl #3] + ldr r1, [r1, r3, lsl #2] + str r1, [r0, #0x48] + str r1, [r0, #0x4c] + ldr r1, [ip, #8] + add r1, r1, r2, lsl #3 +_0201C2C0: + ldrh r1, [r1, #6] + strh r1, [r0, #0x62] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SetAnimationForAnimationControlInternal + + arm_func_start SetAnimationForAnimationControl +SetAnimationForAnimationControl: ; 0x0201C2CC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + ldrsh r0, [r7, #0x70] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SpriteTypeInWanTable + cmp r0, #0 + beq _0201C304 + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _0201C348 +_0201C304: + mov r0, r7 + bl GetWanForAnimationControl + ldrb r3, [sp, #0x28] + str r4, [sp] + mov r1, r0 + ldr r2, [sp, #0x2c] + str r3, [sp, #4] + ldrb r0, [sp, #0x30] + str r2, [sp, #8] + ldrb r4, [sp, #0x34] + str r0, [sp, #0xc] + mov r0, r7 + mov r3, r6 + mov r2, #0 + str r4, [sp, #0x10] + bl SetAnimationForAnimationControlInternal + b _0201C3E0 +_0201C348: + ldrsh r0, [r7, #0x70] + mov r1, r6, lsl #0x10 + mov r1, r1, asr #0x10 + bl WanTableSpriteHasAnimationGroup + cmp r0, #0 + mov r0, r7 + beq _0201C3A4 + bl GetWanForAnimationControl + str r4, [sp] + ldrb r3, [sp, #0x28] + mov r1, r0 + ldr r2, [sp, #0x2c] + str r3, [sp, #4] + str r2, [sp, #8] + ldrb r0, [sp, #0x30] + ldrb r4, [sp, #0x34] + mov r2, r6 + str r0, [sp, #0xc] + mov r0, r7 + mov r3, r5 + str r4, [sp, #0x10] + bl SetAnimationForAnimationControlInternal + b _0201C3E0 +_0201C3A4: + bl GetWanForAnimationControl + str r4, [sp] + ldrb r3, [sp, #0x28] + mov r1, r0 + ldr r2, [sp, #0x2c] + str r3, [sp, #4] + str r2, [sp, #8] + ldrb r0, [sp, #0x30] + ldrb r4, [sp, #0x34] + mov r3, r5 + str r0, [sp, #0xc] + mov r0, r7 + mov r2, #0 + str r4, [sp, #0x10] + bl SetAnimationForAnimationControlInternal +_0201C3E0: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end SetAnimationForAnimationControl + + arm_func_start GetWanForAnimationControl +GetWanForAnimationControl: ; 0x0201C3E8 + ldr r1, [r0, #0x68] + cmp r1, #0 + ldrne r0, [r1, #4] + bxne lr + ldr r1, _0201C414 ; =WAN_TABLE + ldrsh r2, [r0, #0x70] + ldr r1, [r1] + mov r0, #0x38 + smlabb r0, r2, r0, r1 + ldr r0, [r0, #0x30] + bx lr + .align 2, 0 +_0201C414: .word WAN_TABLE + arm_func_end GetWanForAnimationControl + + arm_func_start SetAndPlayAnimationForAnimationControl +SetAndPlayAnimationForAnimationControl: ; 0x0201C418 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldrb r4, [sp, #0x18] + ldr ip, [sp, #0x1c] + ldrb lr, [sp, #0x20] + stmia sp, {r4, ip} + ldrb ip, [sp, #0x24] + str lr, [sp, #8] + mov r4, r0 + str ip, [sp, #0xc] + bl SetAnimationForAnimationControl + ldr r1, [r4, #0x4c] + mov r0, r4 + bl LoadAnimationFrameAndIncrementInAnimationControl + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end SetAndPlayAnimationForAnimationControl + + arm_func_start SwitchAnimationControlToNextFrame +SwitchAnimationControlToNextFrame: ; 0x0201C458 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0201D1B0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldrsh r0, [r4, #0x3a] + cmp r0, #0 + blt _0201C4F4 + ldrh r0, [r4] + tst r0, #0x4000 + ldmneia sp!, {r4, pc} + ldrh r1, [r4, #0xc] + ldrsh r0, [r4, #4] + add r0, r1, r0 + strh r0, [r4, #0xc] + ldrsh r1, [r4, #0xa] + cmp r1, #0 + beq _0201C4C0 + ldrsh r0, [r4, #4] + sub r0, r1, r0 + strh r0, [r4, #0xa] + ldrsh r0, [r4, #0xa] + cmp r0, #0 + movlt r0, #0 + strlth r0, [r4, #0xa] + ldmia sp!, {r4, pc} +_0201C4C0: + ldrsh r1, [r4, #6] + cmp r1, #0 + beq _0201C4E8 + ldrsh r0, [r4, #4] + sub r0, r1, r0 + strh r0, [r4, #6] + ldrsh r0, [r4, #6] + cmp r0, #0 + movlt r0, #0 + strlth r0, [r4, #6] +_0201C4E8: + ldrsh r0, [r4, #6] + cmp r0, #0 + ldmgtia sp!, {r4, pc} +_0201C4F4: + ldr r0, [r4, #0x4c] + ldrb r0, [r0] + cmp r0, #0 + bne _0201C550 + ldrh r0, [r4] + tst r0, #0x1000 + beq _0201C544 + ldrh r1, [r4, #0x62] + ldr r2, [r4, #0x48] + mov r0, #0xc + mla r0, r1, r0, r2 + str r0, [r4, #0x4c] + ldrsh r0, [r4, #8] + cmp r0, #0 + beq _0201C550 + bl Rand16Bit + ldrsh r1, [r4, #8] + and r0, r1, r0 + strh r0, [r4, #0xa] + b _0201C550 +_0201C544: + orr r0, r0, #0x2000 + strh r0, [r4] + ldmia sp!, {r4, pc} +_0201C550: + ldr r1, [r4, #0x4c] + mov r0, r4 + bl LoadAnimationFrameAndIncrementInAnimationControl + ldmia sp!, {r4, pc} + arm_func_end SwitchAnimationControlToNextFrame + + arm_func_start LoadAnimationFrameAndIncrementInAnimationControl +LoadAnimationFrameAndIncrementInAnimationControl: ; 0x0201C560 + ldrh r2, [r0] + orr r2, r2, #0x800 + strh r2, [r0] + ldrb r2, [r1] + strh r2, [r0, #6] + ldrsh r2, [r1, #2] + strh r2, [r0, #0x3a] + ldrsh r2, [r1, #4] + strh r2, [r0, #0x20] + ldrsh r2, [r1, #6] + strh r2, [r0, #0x22] + ldrsh r2, [r1, #8] + strh r2, [r0, #0x24] + ldrsh r2, [r1, #0xa] + strh r2, [r0, #0x26] + ldrb r2, [r1, #1] + str r2, [r0, #0x28] + ldrb r1, [r1, #1] + ldr r2, [r0, #0x2c] + orr r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x4c] + add r1, r1, #0xc + str r1, [r0, #0x4c] + bx lr + arm_func_end LoadAnimationFrameAndIncrementInAnimationControl + + arm_func_start sub_0201C5C4 +sub_0201C5C4: ; 0x0201C5C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x90 + mov r8, r0 + ldrh r0, [r8] + tst r0, #0x8000 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0201CF40 + ldrsh r0, [r8, #0x3a] + mov fp, #0 + cmp r0, #0 + bge _0201C618 + mov r0, r8 + bl SwitchAnimationControlToNextFrame + ldrh r0, [r8] + tst r0, #0x8000 + movne r0, #1 + moveq r0, fp + tst r0, #0xff + beq _0201CF40 +_0201C618: + ldrsh r1, [r8, #0x3c] + ldrsh r0, [r8, #0x3a] + cmp r1, r0 + ldrh r0, [r8, #2] + movne fp, #1 + bicne r0, r0, #0x100 + strneh r0, [r8, #2] + bne _0201C640 + tst r0, #0x100 + movne fp, #1 +_0201C640: + ldrb r0, [r8, #0x7a] + cmp r0, #4 + bhs _0201CEC8 + ldrsh r0, [r8, #0x70] + bl SpriteTypeInWanTable + cmp r0, #3 + bne _0201C928 + mov r0, r8 + bl GetWanForAnimationControl + ldr r6, [r0] + ldr r5, [r0, #4] + ldr sl, [r6, #0x10] + mov r0, #0 + ldr r3, [r5] + mov r7, r0 + str r0, [sp, #0x44] + ldr r0, [r5, #4] + ldrsh r1, [r8, #0x3a] + ldr r2, [r6] + cmp sl, #0 + str r0, [sp, #0x48] + ldr r4, [r3] + ldr sb, [r2, r1, lsl #2] + beq _0201C6CC + ldrsh r0, [r8, #0x78] + str r0, [sp, #0x20] + ldr r1, [sp, #0x20] + ldrh r0, [r8, #0xc] + add r1, sl, r1, lsl #3 + ldr r1, [r1, #4] + bl _s32_div_f + ldr r0, [sp, #0x20] + ldr r0, [sl, r0, lsl #3] + ldrb r0, [r0, r1] + str r0, [sp, #0x44] +_0201C6CC: + cmp r5, #0 + cmpne fp, #0 + beq _0201C7D8 + ldrh r0, [r8, #2] + tst r0, #0x8000 + bne _0201C7D8 + ldr r0, [sp, #0x48] + ldr r0, [r0] + str r0, [sp, #0x84] + ldr r0, [sp, #0x48] + ldrsh r0, [r0, #6] + strh r0, [sp, #0x8a] + ldrsh r0, [r5, #0xa] + cmp r0, #2 + bne _0201C72C + ldrsh r2, [r4, #4] + ldrsh r0, [r4, #6] + mov r1, #2 + smulbb r2, r2, r0 + mov r0, r2, asr #1 + add r0, r2, r0, lsr #30 + strh r1, [sp, #0x88] + mov r5, r0, asr #2 + b _0201C79C +_0201C72C: + cmp r0, #0 + bne _0201C754 + ldrsh r2, [r4, #4] + ldrsh r0, [r4, #6] + mov r1, #0 + smulbb r0, r2, r0 + add r0, r0, r0, lsr #31 + strh r1, [sp, #0x88] + mov r5, r0, asr #1 + b _0201C79C +_0201C754: + cmp r0, #3 + bne _0201C774 + ldrsh r2, [r4, #4] + ldrsh r1, [r4, #6] + mov r0, #3 + strh r0, [sp, #0x88] + smulbb r5, r2, r1 + b _0201C79C +_0201C774: + cmp r0, #4 + ldrsh r2, [r4, #4] + ldreqsh r1, [r4, #6] + moveq r0, #4 + streqh r0, [sp, #0x88] + smulbbeq r5, r2, r1 + ldrnesh r1, [r4, #6] + movne r0, #1 + smulbbne r5, r2, r1 + strneh r0, [sp, #0x88] +_0201C79C: + ldr r0, _0201CF48 ; =_020AFC70 + ldrb r2, [r8, #0x40] + ldr r0, [r0] + ldrb r3, [r8, #0x41] + add r1, sp, #0x84 + add r0, r0, #0xcc + bl sub_0201E408 + ldrh r1, [r8, #0x32] + ldr r0, [r4] + mov r2, r5 + mov r3, #0 + bl sub_0201E050 + ldrh r0, [r8, #2] + orr r0, r0, #0x8000 + strh r0, [r8, #2] +_0201C7D8: + ldr r0, [sp, #0x44] + and r0, r0, #0xf8 + mov r0, r0, asr #3 + str r0, [sp, #0x24] +_0201C7E8: + ldr r0, _0201CF48 ; =_020AFC70 + ldrsh r2, [r8, #0x1c] + ldr r5, [r0] + ldrsh r0, [r8, #0x20] + ldrh sl, [sb, #0x20] + ldrsh ip, [r8, #0x1e] + ldrsh r3, [r8, #0x22] + add r2, r2, r0 + ldrb r4, [r8, #0x41] + ldrb r1, [r8, #0x40] + add r3, ip, r3 + add ip, sl, #0x39 + ldrh r0, [r8, #0x32] + ldr r5, [r5, #0xe0] + mov sl, #3 + add r1, r4, r1, lsl #8 + strh sl, [sp, #0x5c] + add r4, r5, r1, lsl #1 + str r0, [sp, #0x60] + strh ip, [sp, #0x5e] + mov r0, r4, lsl #0x10 + ldr r1, [sb] + mov r4, r7 + add r0, r1, r0, lsr #16 + add r1, r7, #1 + and r7, r1, #0xff + add r5, sp, #0x68 + str r0, [sp, #0x64] + add sl, sb, #0x10 + mov r1, #4 +_0201C860: + ldrh r0, [sl], #2 + subs r1, r1, #1 + strh r0, [r5], #2 + bne _0201C860 + ldrh r5, [sb, #0x18] + add r0, sp, #0x7e + add r1, sb, #0x1a + strh r5, [sp, #0x70] + ldrsh r5, [sb, #4] + strh r5, [sp, #0x72] + ldrsh sl, [sb, #6] + add r5, r5, r2 + add r2, sl, r3 + strh r5, [sp, #0x72] + strh r2, [sp, #0x74] + ldrsh r2, [sb, #8] + strh r2, [sp, #0x76] + ldrsh r2, [sb, #0xa] + strh r2, [sp, #0x78] + ldrh r2, [sb, #0xc] + strh r2, [sp, #0x7a] + ldrh r2, [sb, #0xe] + strh r2, [sp, #0x7c] + ldrh r2, [sb, #0x1e] + strb r4, [sp, #0x82] + strh r2, [sp, #0x80] + ldrb r2, [sb, #0x1d] + and r2, r2, #0xf8 + mov r2, r2, asr #3 + strb r2, [sp, #0x83] + bl Rgb8ToRgb5 + ldr r0, [r6, #0x10] + mov r1, #0x3f + cmp r0, #0 + ldrne r0, [sp, #0x24] + strneb r0, [sp, #0x83] + mov r0, r7 + bl _s32_div_f + ldrh r0, [r8, #2] + and r7, r1, #0xff + tst r0, #2 + bne _0201C910 + add r0, sp, #0x5c + bl EnqueueRender3dTexture +_0201C910: + ldrb r0, [sb, #0x22] + cmp r0, #0 + addeq sb, sb, #0x28 + beq _0201C7E8 + mov r4, #1 + b _0201CF04 +_0201C928: + ldrb r2, [r8, #0x7a] + ldr r1, _0201CF4C ; =_020AFC50 + mov r0, r8 + ldr r1, [r1, r2, lsl #2] + str r1, [sp, #0x40] + bl GetWanForAnimationControl + mov r1, #0 + ldrh r3, [r8, #0x60] + str r1, [sp, #0x2c] + ldr r2, _0201CF50 ; =_020AFC30 + mov r1, r3, lsl #1 + ldrh r1, [r2, r1] + str r1, [sp, #0x28] + ldrsh r2, [r8, #0x3a] + ldr r3, [r8, #0x54] + ldr r1, [sp, #0x2c] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + ldr r7, [r0, #4] + ldr r1, [sp, #0x28] + ldrb r0, [r8, #0x41] + ldr r6, [r3, r2, lsl #2] + cmp r1, #0 + str r0, [sp, #0x30] + bne _0201C9B4 + ldr r0, [sp, #0x30] + cmp r0, #0x10 + blo _0201C9B4 + sub r0, r0, #0x10 + mov r1, r0, lsl #0x10 + mov r0, #1 + str r0, [sp, #0x28] + str r0, [sp, #0x38] + mov r0, r1, lsr #0x10 + str r0, [sp, #0x30] +_0201C9B4: + ldrh r2, [r8, #2] + tst r2, #0x20 + addne r0, r8, #0x10 + strne r0, [sp, #0x2c] + cmp r7, #0 + cmpne fp, #0 + beq _0201CCFC + ldrh r0, [r7, #8] + tst r0, #1 + beq _0201CCFC + tst r2, #0x8000 + bne _0201CCFC + ldr r0, [sp, #0x40] + mov r1, #0 + ldrh r5, [r7, #0xe] + ldrh sb, [r8, #0x32] + mov r4, r1 + tst r2, #0x80 + movne r1, #1 + tst r2, #0x40 + and r0, r0, #0xff + movne r4, #1 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0201CCE0 +_0201CA18: ; jump table + b _0201CA28 ; case 0 + b _0201CAD0 ; case 1 + b _0201CB80 ; case 2 + b _0201CC30 ; case 3 +_0201CA28: + cmp r1, #0 + bne _0201CAB0 + mov sl, #0 + b _0201CAA8 +_0201CA38: + ldr r0, [r8, #0x58] + ldrb r1, [r8, #0x41] + ldr r0, [r0, sl, lsl #2] + mov r2, sb + str r0, [sp, #0x3c] + str r1, [sp] + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [sp, #0x3c] + ldr r0, [r0] + ldr r3, [r8, #0x5c] + bl sub_0201B388 + ldr r2, [r8, #0x5c] + ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrh r3, [r2, #4] + ldr r1, [r1] + ldr r0, [sp, #0x3c] + ldrh r2, [r1, #0xc] + ldr r1, _0201CF50 ; =_020AFC30 + mov r3, r3, lsl #1 + ldrh r1, [r1, r3] + ldr r0, [r0, #4] + bl sub_0201C144 + add r0, sb, r0 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, lsr #0x10 +_0201CAA8: + cmp sl, r5 + blo _0201CA38 +_0201CAB0: + cmp r4, #0 + bne _0201CCE0 + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrb r2, [r8, #0x41] + ldr r0, [r0] + ldr r1, [r8, #0x5c] + bl LoadObjPalette + b _0201CCE0 +_0201CAD0: + cmp r1, #0 + bne _0201CB5C + mov sl, #0 + b _0201CB54 +_0201CAE0: + ldr r0, [r8, #0x58] + ldrb r1, [r8, #0x41] + ldr r0, [r0, sl, lsl #2] + mov r2, sb + str r0, [sp, #0x14] + str r1, [sp] + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [sp, #0x14] + ldr r0, [r0] + ldr r3, [r8, #0x5c] + add r0, r0, #0x70 + bl sub_0201B388 + ldr r2, [r8, #0x5c] + ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrh r3, [r2, #4] + ldr r1, [r1] + ldr r0, [sp, #0x14] + ldrh r2, [r1, #0x7c] + ldr r1, _0201CF50 ; =_020AFC30 + mov r3, r3, lsl #1 + ldrh r1, [r1, r3] + ldr r0, [r0, #4] + bl sub_0201C144 + add r0, sb, r0 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, lsr #0x10 +_0201CB54: + cmp sl, r5 + blo _0201CAE0 +_0201CB5C: + cmp r4, #0 + bne _0201CCE0 + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrb r2, [r8, #0x41] + ldr r0, [r0] + ldr r1, [r8, #0x5c] + add r0, r0, #0x70 + bl LoadObjPalette + b _0201CCE0 +_0201CB80: + cmp r1, #0 + bne _0201CC0C + mov sl, #0 + b _0201CC04 +_0201CB90: + ldr r0, [r8, #0x58] + ldrb r1, [r8, #0x41] + ldr r0, [r0, sl, lsl #2] + mov r2, sb + str r0, [sp, #0x18] + str r1, [sp] + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [sp, #0x18] + ldr r0, [r0] + ldr r3, [r8, #0x5c] + add r0, r0, #0xe0 + bl sub_0201B388 + ldr r2, [r8, #0x5c] + ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrh r3, [r2, #4] + ldr r1, [r1] + ldr r0, [sp, #0x18] + ldrh r2, [r1, #0xec] + ldr r1, _0201CF50 ; =_020AFC30 + mov r3, r3, lsl #1 + ldrh r1, [r1, r3] + ldr r0, [r0, #4] + bl sub_0201C144 + add r0, sb, r0 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, lsr #0x10 +_0201CC04: + cmp sl, r5 + blo _0201CB90 +_0201CC0C: + cmp r4, #0 + bne _0201CCE0 + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrb r2, [r8, #0x41] + ldr r0, [r0] + ldr r1, [r8, #0x5c] + add r0, r0, #0xe0 + bl LoadObjPalette + b _0201CCE0 +_0201CC30: + cmp r1, #0 + bne _0201CCC0 + mov sl, #0 + b _0201CCB8 +_0201CC40: + ldr r0, [r8, #0x58] + ldrb r1, [r8, #0x41] + ldr r0, [r0, sl, lsl #2] + mov r2, sb + str r0, [sp, #0x1c] + str r1, [sp] + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [sp, #0x1c] + ldr r0, [r0] + ldr r3, [r8, #0x5c] + add r0, r0, #0x150 + bl sub_0201B388 + ldr r1, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r2, [r8, #0x5c] + ldr r1, [r1] + ldrh r3, [r2, #4] + add r1, r1, #0x100 + ldrh r2, [r1, #0x5c] + ldr r0, [sp, #0x1c] + ldr r1, _0201CF50 ; =_020AFC30 + mov r3, r3, lsl #1 + ldrh r1, [r1, r3] + ldr r0, [r0, #4] + bl sub_0201C144 + add r0, sb, r0 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, lsr #0x10 +_0201CCB8: + cmp sl, r5 + blo _0201CC40 +_0201CCC0: + cmp r4, #0 + bne _0201CCE0 + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrb r2, [r8, #0x41] + ldr r0, [r0] + ldr r1, [r8, #0x5c] + add r0, r0, #0x150 + bl LoadObjPalette +_0201CCE0: + ldrh r1, [r8, #2] + ldr r0, _0201CF58 ; =0x0000FFFF + orr r1, r1, #0x8000 + strh r1, [r8, #2] + ldrb r1, [r8, #0x41] + strb r1, [r8, #0x43] + strh r0, [r8, #0x36] +_0201CCFC: + ldr r0, [sp, #0x40] + mov r1, #0x70 + mul r5, r0, r1 + cmp fp, #0 + moveq sb, #1 + ldr sl, _0201CF58 ; =0x0000FFFF + movne sb, #0 +_0201CD18: + cmp sb, #0 + mov r4, #0 + bne _0201CD34 + ldrsh r0, [r6] + cmp r0, #0 + strgeh r0, [r8, #0x36] + bge _0201CD38 +_0201CD34: + strh sl, [r8, #0x36] +_0201CD38: + ldrsh r3, [r8, #0x1e] + ldrsh r2, [r8, #0x22] + ldrsh r1, [r8, #0x1c] + ldrsh r0, [r8, #0x20] + add r2, r3, r2 + add r0, r1, r0 + strh r2, [sp, #0x4e] + strh r0, [sp, #0x4c] + ldrh r0, [r8, #0x32] + strh r0, [sp, #0x50] + ldrh r0, [r8, #0x38] + strh r0, [sp, #0x52] + ldr r0, [sp, #0x30] + strh r0, [sp, #0x54] + ldrb r0, [r8, #0x42] + strh r0, [sp, #0x56] + ldr r0, [sp, #0x28] + strh r0, [sp, #0x58] + ldr r0, [sp, #0x38] + strb r0, [sp, #0x5a] + ldrh r0, [r8, #2] + tst r0, #0x1000 + movne r0, #1 + moveq r0, #0 + strb r0, [sp, #0x5b] + ldrh r0, [r8, #2] + tst r0, #2 + bne _0201CDD4 + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r3, [sp, #0x2c] + ldr r0, [r0] + mov r1, r6 + add r0, r0, r5 + add r2, sp, #0x4c + bl AddWanFragmentToOam + cmp r0, #0 + movne r0, #1 + moveq r4, #1 + strne r0, [sp, #0x34] +_0201CDD4: + ldrh r2, [r8, #2] + tst r2, #0x200 + movne r4, #1 + cmp r4, #0 + cmpne r7, #0 + beq _0201CE80 + ldrh r0, [r7, #8] + tst r0, #1 + bne _0201CE80 + ldrh r0, [r8, #0x36] + cmp r0, sl + beq _0201CE80 + ldrb r3, [r8, #0x41] + ldrb r1, [r8, #0x43] + mov r0, #1 + cmp r3, r1 + beq _0201CE24 + tst r2, #0x40 + moveq r0, #0 + strb r3, [r8, #0x43] +_0201CE24: + ldrh r2, [r8, #0x36] + ldr r3, [r8, #0x58] + ldrh r1, [r8, #2] + ldr r3, [r3, r2, lsl #2] + ldr r2, [r8, #0x5c] + tst r1, #0x80 + str r2, [sp] + ldrb r2, [r8, #0x41] + movne r1, #1 + moveq r1, #0 + str r2, [sp, #4] + mov r2, #0 + and r4, r1, #0xff + str r2, [sp, #8] + str r4, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0201CF54 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrh r2, [r8, #0x32] + ldr r0, [r0] + mov r1, r6 + add r0, r0, r5 + bl sub_0201B53C + strh sl, [r8, #0x36] +_0201CE80: + ldrh r0, [r6, #6] + mov r0, r0, asr #0xb + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addeq r6, r6, #0xa + beq _0201CD18 + ldrh r0, [r8, #2] + tst r0, #0x200 + movne r0, #0 + strne r0, [sp, #0x34] + ldr r0, [sp, #0x34] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r4, r0, #0xff + b _0201CF04 +_0201CEC8: + bne _0201CF04 + ldrsh r0, [r8, #0x3a] + ldr r1, [r8, #0x54] + ldr r3, [r1, r0, lsl #2] + mov r0, #0 + mov r1, #1 +_0201CEE0: + ldrh r2, [r3, #6] + mov r2, r2, asr #0xb + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + addeq r3, r3, #0xa + beq _0201CEE0 + mov r4, #1 +_0201CF04: + cmp r4, #0 + ldrneh r0, [r8, #2] + bicne r0, r0, #0x100 + strneh r0, [r8, #2] + bne _0201CF28 + cmp fp, #0 + ldrneh r0, [r8, #2] + orrne r0, r0, #0x100 + strneh r0, [r8, #2] +_0201CF28: + ldrsh r0, [r8, #0x3a] + strh r0, [r8, #0x3c] + ldrh r0, [r8] + tst r0, #0x800 + bicne r0, r0, #0x800 + strneh r0, [r8] +_0201CF40: + add sp, sp, #0x90 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0201CF48: .word _020AFC70 +_0201CF4C: .word _020AFC50 +_0201CF50: .word _020AFC30 +_0201CF54: .word OBJ_GRAPHICS_CONTROLS_PTR +_0201CF58: .word 0x0000FFFF + arm_func_end sub_0201C5C4 + + arm_func_start sub_0201CF5C +sub_0201CF5C: ; 0x0201CF5C + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0201C5C4 + ldrh r0, [r4, #2] + tst r0, #0x10 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl SwitchAnimationControlToNextFrame + ldmia sp!, {r4, pc} + arm_func_end sub_0201CF5C + + arm_func_start sub_0201CF80 +sub_0201CF80: ; 0x0201CF80 + ldrb r1, [r0, #0x41] + add r1, r1, #1 + strb r1, [r0, #0x43] + bx lr + arm_func_end sub_0201CF80 + + arm_func_start sub_0201CF90 +sub_0201CF90: ; 0x0201CF90 + stmdb sp!, {r3, lr} + mov ip, #0 + strh ip, [r0] + strh ip, [r0, #2] + ldrh r3, [r1] + tst r3, #0x8000 + movne ip, #1 + tst ip, #0xff + ldmeqia sp!, {r3, pc} + cmp r2, #4 + ldmhsia sp!, {r3, pc} + ldrsh ip, [r1, #0x3a] + mvn r3, #0 + cmp ip, r3 + ldrne r3, [r1, #0x50] + cmpne r3, #0 + beq _0201D024 + add ip, r3, ip, lsl #4 + mov r3, r2, lsl #2 + ldrsh lr, [ip, r3] + cmp lr, #0x63 + addeq r3, ip, r3 + ldreqsh r3, [r3, #2] + cmpeq r3, #0x63 + moveq r1, #0x63 + streqh r1, [r0] + streqh r1, [r0, #2] + ldmeqia sp!, {r3, pc} + ldrsh r3, [r1, #0x20] + add r2, ip, r2, lsl #2 + add r3, r3, lr + strh r3, [r0] + ldrsh r3, [r1, #0x22] + ldrsh r1, [r2, #2] + add r1, r3, r1 + strh r1, [r0, #2] + ldmia sp!, {r3, pc} +_0201D024: + mov r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + ldmia sp!, {r3, pc} + arm_func_end sub_0201CF90 + + arm_func_start sub_0201D034 +sub_0201D034: ; 0x0201D034 + stmdb sp!, {r4, r5, r6, lr} + ldrh r3, [r2] + tst r3, #0x8000 + movne r3, #1 + moveq r3, #0 + tst r3, #0xff + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r2, #0x50] + cmp r4, #0 + beq _0201D0CC + ldrsh r3, [r2, #0x3a] + mov ip, #0 + mov r5, #0x63 + add r3, r4, r3, lsl #4 + b _0201D0C0 +_0201D070: + mov r4, ip, lsl #2 + ldrsh r6, [r3, r4] + cmp r6, #0x63 + addeq r4, r3, r4 + ldreqsh r4, [r4, #2] + cmpeq r4, #0x63 + streqh r5, [r0] + streqh r5, [r0, #2] + beq _0201D0B4 + ldrsh r4, [r2, #0x20] + add lr, r3, ip, lsl #2 + add r4, r4, r6 + strh r4, [r0] + ldrsh r4, [r2, #0x22] + ldrsh lr, [lr, #2] + add r4, r4, lr + strh r4, [r0, #2] +_0201D0B4: + add ip, ip, #1 + add r0, r0, #4 + and ip, ip, #0xff +_0201D0C0: + cmp ip, r1 + blo _0201D070 + ldmia sp!, {r4, r5, r6, pc} +_0201D0CC: + mov r2, #0 + mov r3, r2 + b _0201D0EC +_0201D0D8: + strh r3, [r0] + add r2, r2, #1 + strh r3, [r0, #2] + add r0, r0, #4 + and r2, r2, #0xff +_0201D0EC: + cmp r2, r1 + blo _0201D0D8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0201D034 + + arm_func_start sub_0201D0F8 +sub_0201D0F8: ; 0x0201D0F8 + strb r1, [r0, #0x40] + bx lr + arm_func_end sub_0201D0F8 + + arm_func_start sub_0201D100 +sub_0201D100: ; 0x0201D100 + ldr ip, _0201D10C ; =sub_0201DC4C + ldrsh r0, [r0, #0x70] + bx ip + .align 2, 0 +_0201D10C: .word sub_0201DC4C + arm_func_end sub_0201D100 + + arm_func_start FillOamAttributeInfo +FillOamAttributeInfo: ; 0x0201D110 + add r3, r0, #0x10 + mov r2, #6 +_0201D118: + ldrh r0, [r1], #2 + subs r2, r2, #1 + strh r0, [r3], #2 + bne _0201D118 + bx lr + arm_func_end FillOamAttributeInfo + + arm_func_start sub_0201D12C +sub_0201D12C: ; 0x0201D12C + ldrh r3, [r0, #2] + and r2, r1, #3 + ldr r1, _0201D16C ; =0x0000F3FF + orr r3, r3, #0x20 + strh r3, [r0, #2] + ldrh r3, [r0, #0x14] + mov r2, r2, lsl #0x10 + and r3, r3, r1 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x1a] + and r1, r3, r1 + strh r1, [r0, #0x1a] + ldrh r1, [r0, #0x1a] + orr r1, r1, r2, lsr #6 + strh r1, [r0, #0x1a] + bx lr + .align 2, 0 +_0201D16C: .word 0x0000F3FF + arm_func_end sub_0201D12C + + arm_func_start AnimationControlGetAllocForMaxFrame +AnimationControlGetAllocForMaxFrame: ; 0x0201D170 + stmdb sp!, {r3, lr} + bl GetWanForAnimationControl + cmp r0, #0 + ldrne r0, [r0] + ldrnesh r0, [r0, #0xe] + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end AnimationControlGetAllocForMaxFrame + + arm_func_start sub_0201D18C +sub_0201D18C: ; 0x0201D18C + mov r1, #0 + strh r1, [r0] + bx lr + arm_func_end sub_0201D18C + + arm_func_start sub_0201D198 +sub_0201D198: ; 0x0201D198 + cmp r1, #0 + ldrh r1, [r0] + orrne r1, r1, #0x4000 + biceq r1, r1, #0x4000 + strh r1, [r0] + bx lr + arm_func_end sub_0201D198 + + arm_func_start sub_0201D1B0 +sub_0201D1B0: ; 0x0201D1B0 + ldrh r0, [r0] + tst r0, #0x2000 + movne r0, #0 + bxne lr + tst r0, #0x8000 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end sub_0201D1B0 + + arm_func_start sub_0201D1D4 +sub_0201D1D4: ; 0x0201D1D4 + ldr r0, [r0, #0x2c] + bx lr + arm_func_end sub_0201D1D4 + + arm_func_start DeleteWanTableEntry +DeleteWanTableEntry: ; 0x0201D1DC + stmdb sp!, {r4, lr} + mov r2, #0x38 + smlabb r4, r1, r2, r0 + ldrb r0, [r4, #0x20] + cmp r0, #0 + beq _0201D204 + mov r0, r4 + mov r1, r2 + bl MemZero + ldmia sp!, {r4, pc} +_0201D204: + ldr r0, [r4, #0x34] + cmp r0, #0 + ldrnesh r0, [r4, #0x2c] + cmpne r0, #0 + ldmeqia sp!, {r4, pc} + sub r0, r0, #1 + strh r0, [r4, #0x2c] + ldrsh r0, [r4, #0x2c] + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #0x34] + bl MemFree + mov r0, r4 + mov r1, #0x38 + bl MemZero + ldmia sp!, {r4, pc} + arm_func_end DeleteWanTableEntry + + arm_func_start AllocateWanTableEntry +AllocateWanTableEntry: ; 0x0201D244 + stmdb sp!, {r3, r4, r5, lr} + add r1, r0, #0x1500 + mov lr, #1 + ldrsh r4, [r1, #0xa] + ldrsh r5, [r1, #8] + mov ip, lr + mov r3, #0x38 + b _0201D2C4 +_0201D264: + cmp r4, r5 + movge r4, ip + smlabb r1, r4, r3, r0 + ldr r1, [r1, #0x34] + cmp r1, #0 + bne _0201D2AC + add r2, r4, #1 + add r1, r0, #0x1500 + strh r2, [r1, #0xa] + ldrsh r3, [r1, #0xa] + ldrsh r2, [r1, #8] + cmp r3, r2 + movge r2, #1 + strgeh r2, [r1, #0xa] + mov r1, #0x38 + bl MemZero + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} +_0201D2AC: + add r1, lr, #1 + add r2, r4, #1 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov lr, r1, asr #0x10 + mov r4, r2, asr #0x10 +_0201D2C4: + cmp lr, r5 + blt _0201D264 + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end AllocateWanTableEntry + + arm_func_start FindWanTableEntry +FindWanTableEntry: ; 0x0201D2D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + add r0, r6, #0x1500 + mov r5, r1 + ldrsh r4, [r0, #8] + mov r8, #1 + mov r7, #0x38 + b _0201D324 +_0201D2F4: + smlabb r0, r8, r7, r6 + ldrb r1, [r0, #0x21] + cmp r1, #1 + bne _0201D318 + mov r1, r5 + bl strcmp + cmp r0, #0 + moveq r0, r8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_0201D318: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 +_0201D324: + cmp r8, r4 + blt _0201D2F4 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end FindWanTableEntry + + arm_func_start GetLoadedWanTableEntry +GetLoadedWanTableEntry: ; 0x0201D334 + stmdb sp!, {r3, r4, r5, lr} + add r3, r0, #0x1500 + ldrsh r5, [r3, #8] + mov r4, #1 + mov ip, #0x38 + b _0201D37C +_0201D34C: + smlabb lr, r4, ip, r0 + ldrb r3, [lr, #0x21] + cmp r3, #2 + ldreqh r3, [lr, #0x22] + cmpeq r1, r3 + ldreqh r3, [lr, #0x24] + cmpeq r2, r3 + moveq r0, r4 + ldmeqia sp!, {r3, r4, r5, pc} + add r3, r4, #1 + mov r3, r3, lsl #0x10 + mov r4, r3, asr #0x10 +_0201D37C: + cmp r4, r5 + blt _0201D34C + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GetLoadedWanTableEntry + + arm_func_start sub_0201D38C +sub_0201D38C: ; 0x0201D38C + stmdb sp!, {r4, lr} + ldr r1, _0201D3B8 ; =0x00001510 + mov r4, r0 + bl MemZero + add r1, r4, #0x1500 + mov r2, #1 + strh r2, [r1, #0xa] + add r0, r4, #0x1000 + strb r2, [r0, #0x50c] + strh r2, [r1, #0xa] + ldmia sp!, {r4, pc} + .align 2, 0 +_0201D3B8: .word 0x00001510 + arm_func_end sub_0201D38C + + arm_func_start InitWanTable +InitWanTable: ; 0x0201D3BC + stmdb sp!, {r4, lr} + mov r1, #0x1500 + mov r4, r0 + bl MemZero + add r0, r4, #0x1500 + mov r1, #0x60 + strh r1, [r0, #8] + ldmia sp!, {r4, pc} + arm_func_end InitWanTable + + arm_func_start LoadWanTableEntry +LoadWanTableEntry: ; 0x0201D3DC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r5, r0 + mov r6, r1 + mov r7, r2 + bl FindWanTableEntry + mvn r1, #0 + cmp r0, r1 + beq _0201D418 + mov r1, #0x38 + smlabb r2, r0, r1, r5 + ldrsh r1, [r2, #0x2c] + add r1, r1, #1 + strh r1, [r2, #0x2c] + b _0201D47C +_0201D418: + mov r0, r5 + bl AllocateWanTableEntry + mov r4, r0 + mov r0, #0x38 + smlabb r5, r4, r0, r5 + mov r3, #1 + add r0, sp, #0 + mov r1, r6 + mov r2, r7 + strb r3, [r5, #0x21] + bl LoadFileFromRom + ldr r1, [sp] + mov r0, r5 + str r1, [r5, #0x34] + ldr r2, [sp, #4] + mov r1, r6 + str r2, [r5, #0x28] + bl strcpy + ldrsh r1, [r5, #0x2c] + add r0, r5, #0x30 + add r1, r1, #1 + strh r1, [r5, #0x2c] + ldr r1, [r5, #0x34] + bl HandleSir0TranslationVeneer + mov r0, r4 +_0201D47C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LoadWanTableEntry + + arm_func_start LoadWanTableEntryFromPack +LoadWanTableEntryFromPack: ; 0x0201D484 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl GetLoadedWanTableEntry + mvn r1, #0 + cmp r0, r1 + beq _0201D4C0 + mov r1, #0x38 + smlabb r2, r0, r1, sb + ldrsh r1, [r2, #0x2c] + add r1, r1, #1 + strh r1, [r2, #0x2c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0201D4C0: + mov r0, sb + bl AllocateWanTableEntry + mov r5, r0 + mov r0, #0x38 + smlabb r4, r5, r0, sb + ldrb r0, [sp, #0x20] + mov r1, #2 + strb r1, [r4, #0x21] + strh r8, [r4, #0x22] + strh r7, [r4, #0x24] + cmp r0, #0 + beq _0201D53C + add r0, sb, #0x1000 + ldr sb, [r0, #0x500] + mov r0, r8 + mov r1, r7 + bl DirectoryFileMngr_GetDirectoryFileSize + mov r0, r8 + mov r1, r7 + mov r2, sb + bl DirectoryFileMngr_LoadDirectoryFile + mov r0, sb + bl GetAtSize + mov r7, r0 + mov r1, r6 + bl MemAlloc + mov r1, r7 + mov r2, sb + mov r6, r0 + bl DecompressAtNormalVeneer + b _0201D56C +_0201D53C: + mov r0, r8 + mov r1, r7 + bl DirectoryFileMngr_GetDirectoryFileSize + mov r1, r6 + mov sb, r0 + bl MemAlloc + mov r6, r0 + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl DirectoryFileMngr_LoadDirectoryFile + str sb, [r4, #0x28] +_0201D56C: + str r6, [r4, #0x34] + ldrsh r1, [r4, #0x2c] + add r0, r4, #0x30 + add r1, r1, #1 + strh r1, [r4, #0x2c] + ldr r1, [r4, #0x34] + bl HandleSir0TranslationVeneer + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end LoadWanTableEntryFromPack + + arm_func_start LoadWanTableEntryFromPackUseProvidedMemory +LoadWanTableEntryFromPackUseProvidedMemory: ; 0x0201D590 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl GetLoadedWanTableEntry + mvn r1, #0 + cmp r0, r1 + beq _0201D5CC + mov r1, #0x38 + smlabb r2, r0, r1, sb + ldrsh r1, [r2, #0x2c] + add r1, r1, #1 + strh r1, [r2, #0x2c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0201D5CC: + mov r0, sb + bl AllocateWanTableEntry + ldrb r1, [sp, #0x20] + mov r5, r0 + mov r0, #0x38 + smlabb r4, r5, r0, sb + cmp r1, #0 + beq _0201D62C + add r0, sb, #0x1000 + ldr sb, [r0, #0x500] + mov r0, r8 + mov r1, r7 + bl DirectoryFileMngr_GetDirectoryFileSize + mov r0, r8 + mov r1, r7 + mov r2, sb + bl DirectoryFileMngr_LoadDirectoryFile + mov r0, sb + bl GetAtSize + mov r2, sb + mov r1, r0 + mov r0, r6 + bl DecompressAtNormalVeneer + b _0201D648 +_0201D62C: + mov r0, r8 + mov r1, r7 + bl DirectoryFileMngr_GetDirectoryFileSize + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl DirectoryFileMngr_LoadDirectoryFile +_0201D648: + mov r0, #2 + strb r0, [r4, #0x21] + strh r8, [r4, #0x22] + strh r7, [r4, #0x24] + str r6, [r4, #0x34] + ldrsh r1, [r4, #0x2c] + add r0, r4, #0x30 + add r1, r1, #1 + strh r1, [r4, #0x2c] + ldr r1, [r4, #0x34] + bl HandleSir0TranslationVeneer + mov r1, #1 + mov r0, r5 + strb r1, [r4, #0x20] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end LoadWanTableEntryFromPackUseProvidedMemory + + arm_func_start ReplaceWanFromBinFile +ReplaceWanFromBinFile: ; 0x0201D684 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldrb ip, [sp, #0x18] + mov r4, #0x38 + smlabb r6, r1, r4, r0 + mov r5, r2 + mov r4, r3 + cmp ip, #0 + beq _0201D6E8 + add r0, r0, #0x1000 + ldr r7, [r0, #0x500] + mov r0, r5 + mov r1, r4 + ldr r8, [r6, #0x34] + bl DirectoryFileMngr_GetDirectoryFileSize + mov r0, r5 + mov r1, r4 + mov r2, r7 + bl DirectoryFileMngr_LoadDirectoryFile + mov r0, r7 + bl GetAtSize + mov r2, r7 + mov r1, r0 + mov r0, r8 + bl DecompressAtNormalVeneer + b _0201D708 +_0201D6E8: + ldr r7, [r6, #0x34] + mov r0, r5 + mov r1, r4 + bl DirectoryFileMngr_GetDirectoryFileSize + mov r0, r5 + mov r1, r4 + mov r2, r7 + bl DirectoryFileMngr_LoadDirectoryFile +_0201D708: + ldr r1, [r6, #0x34] + add r0, r6, #0x30 + bl HandleSir0TranslationVeneer + mov r0, #2 + strb r0, [r6, #0x21] + strh r5, [r6, #0x22] + strh r4, [r6, #0x24] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ReplaceWanFromBinFile + + arm_func_start DeleteWanTableEntryVeneer +DeleteWanTableEntryVeneer: ; 0x0201D72C + ldr ip, _0201D734 ; =DeleteWanTableEntry + bx ip + .align 2, 0 +_0201D734: .word DeleteWanTableEntry + arm_func_end DeleteWanTableEntryVeneer + + arm_func_start sub_0201D738 +sub_0201D738: ; 0x0201D738 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + add r3, r6, #0x1000 + ldr r3, [r3, #0x500] + mov r5, r1 + mov r4, r2 + cmp r3, #0 + beq _0201D75C + bl sub_0201D778 +_0201D75C: + mov r0, r5 + mov r1, r4 + bl MemAlloc + add r1, r6, #0x1000 + str r0, [r1, #0x500] + str r5, [r1, #0x504] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0201D738 + + arm_func_start sub_0201D778 +sub_0201D778: ; 0x0201D778 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x1000 + ldr r0, [r0, #0x500] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MemFree + add r0, r4, #0x1000 + mov r1, #0 + str r1, [r0, #0x500] + str r1, [r0, #0x504] + ldmia sp!, {r4, pc} + arm_func_end sub_0201D778 + + arm_func_start sub_0201D7A8 +sub_0201D7A8: ; 0x0201D7A8 + stmdb sp!, {r3, lr} + ldr r0, _0201D7D8 ; =0x00001510 + mov r1, #0 + bl MemAlloc + ldr r2, _0201D7DC ; =_020AFC64 + ldr r1, _0201D7D8 ; =0x00001510 + str r0, [r2, #4] + bl MemZero + ldr r0, _0201D7DC ; =_020AFC64 + ldr r0, [r0, #4] + bl sub_0201D38C + ldmia sp!, {r3, pc} + .align 2, 0 +_0201D7D8: .word 0x00001510 +_0201D7DC: .word _020AFC64 + arm_func_end sub_0201D7A8 + + arm_func_start sub_0201D7E0 +sub_0201D7E0: ; 0x0201D7E0 + ldr r2, _0201D7FC ; =_020AFC64 + mov r3, r0 + ldr r0, [r2, #4] + mov r2, r1 + ldr ip, _0201D800 ; =sub_0201D738 + mov r1, r3 + bx ip + .align 2, 0 +_0201D7FC: .word _020AFC64 +_0201D800: .word sub_0201D738 + arm_func_end sub_0201D7E0 + + arm_func_start sub_0201D804 +sub_0201D804: ; 0x0201D804 + ldr r0, _0201D814 ; =_020AFC64 + ldr ip, _0201D818 ; =sub_0201D778 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0201D814: .word _020AFC64 +_0201D818: .word sub_0201D778 + arm_func_end sub_0201D804 + + arm_func_start sub_0201D81C +sub_0201D81C: ; 0x0201D81C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldrb r4, [sp, #0x2c] + ldr r5, [r0, #4] + mov sl, r1 + mov sb, r2 + cmp r4, #0 + ldrh r7, [r5, #0xe] + beq _0201D848 + cmp r4, #1 + beq _0201D8E4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0201D848: + cmp r3, #0 + beq _0201D8C0 + mov r8, #0 + ldr fp, _0201D988 ; =_020AFC30 + ldr r4, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR + b _0201D8B8 +_0201D860: + ldr r0, [r5] + mov r2, sl + ldr r6, [r0, r8, lsl #2] + str sb, [sp] + ldr r0, [r4] + ldr r3, [r5, #4] + mov r1, r6 + bl sub_0201B388 + ldr r1, [r5, #4] + ldr r0, [r4] + ldrh r1, [r1, #4] + ldrh r2, [r0, #0xc] + ldr r0, [r6, #4] + mov r1, r1, lsl #1 + ldrh r1, [fp, r1] + bl sub_0201D990 + add r0, sl, r0 + add r1, r8, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov sl, r0, lsr #0x10 + mov r8, r1, lsr #0x10 +_0201D8B8: + cmp r8, r7 + blo _0201D860 +_0201D8C0: + ldrb r0, [sp, #0x28] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [r5, #4] + ldr r0, [r0] + mov r2, sb + bl LoadObjPalette + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0201D8E4: + cmp r3, #0 + beq _0201D960 + mov r6, #0 + ldr fp, _0201D988 ; =_020AFC30 + ldr r4, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR + b _0201D958 +_0201D8FC: + ldr r0, [r5] + mov r2, sl + ldr r8, [r0, r6, lsl #2] + str sb, [sp] + ldr r0, [r4] + ldr r3, [r5, #4] + mov r1, r8 + add r0, r0, #0x70 + bl sub_0201B388 + ldr r1, [r5, #4] + ldr r0, [r4] + ldrh r1, [r1, #4] + ldrh r2, [r0, #0x7c] + ldr r0, [r8, #4] + mov r1, r1, lsl #1 + ldrh r1, [fp, r1] + bl sub_0201D990 + add r0, sl, r0 + add r1, r6, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov sl, r0, lsr #0x10 + mov r6, r1, lsr #0x10 +_0201D958: + cmp r6, r7 + blo _0201D8FC +_0201D960: + ldrb r0, [sp, #0x28] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _0201D98C ; =OBJ_GRAPHICS_CONTROLS_PTR + ldr r1, [r5, #4] + ldr r0, [r0] + mov r2, sb + add r0, r0, #0x70 + bl LoadObjPalette + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0201D988: .word _020AFC30 +_0201D98C: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201D81C + + arm_func_start sub_0201D990 +sub_0201D990: ; 0x0201D990 + stmdb sp!, {r3, lr} + ldr r1, _0201D9C4 ; =_020AFC3C + ldr r1, [r1, r2, lsl #2] + mov r1, r1, lsl #0x10 + add r0, r0, r1, asr #16 + sub r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, asr #0x10 + bl _s32_div_f + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201D9C4: .word _020AFC3C + arm_func_end sub_0201D990 + + arm_func_start sub_0201D9C8 +sub_0201D9C8: ; 0x0201D9C8 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldrb lr, [sp, #0x14] + ldr ip, _0201D9FC ; =_020AFC64 + mov r3, #1 + stmia sp, {r3, lr} + ldr lr, [ip, #4] + mov ip, #0x38 + smlabb r0, r0, ip, lr + ldr r0, [r0, #0x30] + bl sub_0201D81C + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201D9FC: .word _020AFC64 + arm_func_end sub_0201D9C8 + + arm_func_start sub_0201DA00 +sub_0201DA00: ; 0x0201DA00 + ldrb r1, [r0, #8] + ldr r0, [r0] + cmp r1, #0 + cmpne r1, #2 + ldreq r0, [r0, #8] + ldreqsh r0, [r0, #4] + ldrnesh r0, [r0, #0xc] + bx lr + arm_func_end sub_0201DA00 + + arm_func_start sub_0201DA20 +sub_0201DA20: ; 0x0201DA20 + ldr r2, _0201DA3C ; =_020AFC64 + mov r1, #0x38 + ldr r2, [r2, #4] + ldr ip, _0201DA40 ; =sub_0201DA00 + smlabb r0, r0, r1, r2 + ldr r0, [r0, #0x30] + bx ip + .align 2, 0 +_0201DA3C: .word _020AFC64 +_0201DA40: .word sub_0201DA00 + arm_func_end sub_0201DA20 + + arm_func_start WanHasAnimationGroup +WanHasAnimationGroup: ; 0x0201DA44 + ldr r2, [r0] + ldrsh r0, [r2, #0xc] + cmp r1, r0 + bge _0201DA70 + cmp r1, #0 + blt _0201DA70 + ldr r0, [r2, #8] + add r0, r0, r1, lsl #3 + ldrh r0, [r0, #4] + cmp r0, #0 + bne _0201DA78 +_0201DA70: + mov r0, #0 + bx lr +_0201DA78: + mov r0, #1 + bx lr + arm_func_end WanHasAnimationGroup + + arm_func_start WanTableSpriteHasAnimationGroup +WanTableSpriteHasAnimationGroup: ; 0x0201DA80 + ldr r3, _0201DA9C ; =_020AFC64 + mov r2, #0x38 + ldr r3, [r3, #4] + ldr ip, _0201DAA0 ; =WanHasAnimationGroup + smlabb r0, r0, r2, r3 + ldr r0, [r0, #0x30] + bx ip + .align 2, 0 +_0201DA9C: .word _020AFC64 +_0201DAA0: .word WanHasAnimationGroup + arm_func_end WanTableSpriteHasAnimationGroup + + arm_func_start sub_0201DAA4 +sub_0201DAA4: ; 0x0201DAA4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r5, [r0, #4] + mov sl, r1 + mov sb, r2 + cmp r3, #0 + ldrh r7, [r5, #0xe] + beq _0201DACC + cmp r3, #1 + beq _0201DB38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0201DACC: + mov r8, #0 + mov r6, r8 + ldr r4, _0201DBB0 ; =_020AFC30 + ldr fp, _0201DBB4 ; =OBJ_GRAPHICS_CONTROLS_PTR + b _0201DB2C +_0201DAE0: + str r6, [sp] + ldmia r5, {r0, r2} + ldr r0, [r0, r8, lsl #2] + mov r1, sl + mov r3, sb + bl sub_0201BFAC + ldr r2, [r5, #4] + ldr r1, [fp] + ldrh r3, [r2, #4] + ldrh r2, [r1, #0xc] + mov r1, r3, lsl #1 + ldrh r1, [r4, r1] + bl sub_0201D990 + add r0, sl, r0 + add r1, r8, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov sl, r0, lsr #0x10 + mov r8, r1, lsr #0x10 +_0201DB2C: + cmp r8, r7 + blo _0201DAE0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0201DB38: + mov r8, #0 + mov r4, #1 + ldr fp, _0201DBB0 ; =_020AFC30 + b _0201DBA4 +_0201DB48: + ldr r0, [r5] + mov r1, sl + ldr r6, [r0, r8, lsl #2] + mov r3, sb + str r4, [sp] + ldr r2, [r5, #4] + mov r0, r6 + bl sub_0201BFAC + ldr r2, [r5, #4] + ldr r0, _0201DBB4 ; =OBJ_GRAPHICS_CONTROLS_PTR + ldrh r3, [r2, #4] + ldr r1, [r0] + ldr r0, [r6, #4] + ldrh r2, [r1, #0x7c] + mov r1, r3, lsl #1 + ldrh r1, [fp, r1] + bl sub_0201D990 + add r0, sl, r0 + add r1, r8, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov sl, r0, lsr #0x10 + mov r8, r1, lsr #0x10 +_0201DBA4: + cmp r8, r7 + blo _0201DB48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0201DBB0: .word _020AFC30 +_0201DBB4: .word OBJ_GRAPHICS_CONTROLS_PTR + arm_func_end sub_0201DAA4 + + arm_func_start sub_0201DBB8 +sub_0201DBB8: ; 0x0201DBB8 + stmdb sp!, {r3, lr} + ldr lr, _0201DBD8 ; =_020AFC64 + mov ip, #0x38 + ldr lr, [lr, #4] + smlabb r0, r0, ip, lr + ldr r0, [r0, #0x30] + bl sub_0201DAA4 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201DBD8: .word _020AFC64 + arm_func_end sub_0201DBB8 + + arm_func_start sub_0201DBDC +sub_0201DBDC: ; 0x0201DBDC + ldr r0, [r0, #4] + ldr r1, [r0, #4] + cmp r1, #0 + moveq r0, #0 + bxeq lr + ldrh r0, [r1, #4] + cmp r0, #1 + bne _0201DC30 + ldrb r0, [r1, #0xb] + cmp r0, #0 + ldrsh r0, [r1, #6] + addne r1, r0, #0xf + movne r0, r1, asr #3 + addne r0, r1, r0, lsr #28 + movne r0, r0, lsl #0xc + addeq r1, r0, #0xff + moveq r0, r1, asr #7 + addeq r0, r1, r0, lsr #24 + moveq r0, r0, lsl #8 + mov r0, r0, asr #0x10 + bx lr +_0201DC30: + ldrsh r0, [r1, #6] + add r1, r0, #0xf + mov r0, r1, asr #3 + add r0, r1, r0, lsr #28 + mov r0, r0, lsl #0xc + mov r0, r0, asr #0x10 + bx lr + arm_func_end sub_0201DBDC + + arm_func_start sub_0201DC4C +sub_0201DC4C: ; 0x0201DC4C + ldr r2, _0201DC68 ; =_020AFC64 + mov r1, #0x38 + ldr r2, [r2, #4] + ldr ip, _0201DC6C ; =sub_0201DBDC + smlabb r0, r0, r1, r2 + ldr r0, [r0, #0x30] + bx ip + .align 2, 0 +_0201DC68: .word _020AFC64 +_0201DC6C: .word sub_0201DBDC + arm_func_end sub_0201DC4C + + arm_func_start SpriteTypeInWanTable +SpriteTypeInWanTable: ; 0x0201DC70 + ldr r2, _0201DC8C ; =_020AFC64 + mov r1, #0x38 + ldr r2, [r2, #4] + smlabb r0, r0, r1, r2 + ldr r0, [r0, #0x30] + ldrb r0, [r0, #8] + bx lr + .align 2, 0 +_0201DC8C: .word _020AFC64 + arm_func_end SpriteTypeInWanTable + + arm_func_start sub_0201DC90 +sub_0201DC90: ; 0x0201DC90 + stmdb sp!, {r3, lr} + ldr r0, _0201DCC8 ; =0x000007C4 + mov r1, #0 + bl MemAlloc + ldr r2, _0201DCCC ; =_020AFC6C + ldr r1, _0201DCC8 ; =0x000007C4 + str r0, [r2] + bl MemZero + ldr r0, _0201DCCC ; =_020AFC6C + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x700 + strh r1, [r0, #0xc0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201DCC8: .word 0x000007C4 +_0201DCCC: .word _020AFC6C + arm_func_end sub_0201DC90 + + arm_func_start sub_0201DCD0 +sub_0201DCD0: ; 0x0201DCD0 + stmdb sp!, {r3, lr} + ldr r0, _0201DCF0 ; =_020AFC6C + ldr r0, [r0] + bl MemFree + ldr r0, _0201DCF0 ; =_020AFC6C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201DCF0: .word _020AFC6C + arm_func_end sub_0201DCD0 + + arm_func_start sub_0201DCF4 +sub_0201DCF4: ; 0x0201DCF4 + ldr r0, _0201DD44 ; =_020AFC6C + mov r2, #0 + ldr r1, [r0] + mov r3, #1 + strb r2, [r1, #0x7c2] + ldr r2, [r0] + mov r1, #0x7c + b _0201DD30 +_0201DD14: + smlabb r0, r3, r1, r2 + ldrh r0, [r0, #2] + tst r0, #1 + bxeq lr + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 +_0201DD30: + cmp r3, #0x10 + blt _0201DD14 + mov r0, #1 + strb r0, [r2, #0x7c2] + bx lr + .align 2, 0 +_0201DD44: .word _020AFC6C + arm_func_end sub_0201DCF4 + + arm_func_start sub_0201DD48 +sub_0201DD48: ; 0x0201DD48 + stmdb sp!, {r4, r5, r6, lr} + ldr r5, _0201DD8C ; =_020AFC6C + mov r6, #1 + mov r4, #0x7c +_0201DD58: + ldr r0, [r5] + smlabb r0, r6, r4, r0 + ldrh r1, [r0, #2] + tst r1, #1 + beq _0201DD70 + bl sub_0201CF5C +_0201DD70: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + blt _0201DD58 + bl sub_0201DCF4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0201DD8C: .word _020AFC6C + arm_func_end sub_0201DD48 + + arm_func_start sub_0201DD90 +sub_0201DD90: ; 0x0201DD90 + stmdb sp!, {r3, lr} + mov r0, #0x2ec + mov r1, #0 + bl MemAlloc + ldr r1, _0201DDF0 ; =_020AFC70 + str r0, [r1] + bl sub_0201E614 + ldr r0, _0201DDF0 ; =_020AFC70 + ldr r1, _0201DDF4 ; =0x06860000 + ldr r0, [r0] + add r2, r1, #0x30000 + add r0, r0, #0xbc + mov r3, #0x80 + bl sub_0201E190 + ldr r0, _0201DDF0 ; =_020AFC70 + ldr r2, _0201DDF8 ; =0x06890000 + ldr r1, [r0] + mov r0, #0x2000 + str r0, [sp] + add r0, r1, #0xcc + add r1, r1, #0xbc + mov r3, #0 + bl sub_0201E314 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201DDF0: .word _020AFC70 +_0201DDF4: .word 0x06860000 +_0201DDF8: .word 0x06890000 + arm_func_end sub_0201DD90 + + arm_func_start sub_0201DDFC +sub_0201DDFC: ; 0x0201DDFC + stmdb sp!, {r3, lr} + bl sub_0201E5B0 + bl GeomSwapBuffers + bl sub_0201E544 + ldmia sp!, {r3, pc} + arm_func_end sub_0201DDFC + + arm_func_start sub_0201DE10 +sub_0201DE10: ; 0x0201DE10 + stmdb sp!, {r3, lr} + ldr r0, _0201DE48 ; =_020AFC70 + ldr r0, [r0] + add r0, r0, #0xcc + bl sub_0201E424 + ldr r0, _0201DE48 ; =_020AFC70 + ldr r0, [r0] + add r0, r0, #0xbc + bl PerformPlannedTextureVramTransfer + ldr r0, _0201DE48 ; =_020AFC70 + ldr r0, [r0] + add r0, r0, #0xbc + bl ResetPlannedVramTransfer + ldmia sp!, {r3, pc} + .align 2, 0 +_0201DE48: .word _020AFC70 + arm_func_end sub_0201DE10 + + arm_func_start LoadWteFromRom +LoadWteFromRom: ; 0x0201DE4C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x10c + mov r5, r1 + mov r6, r0 + ldr r1, _0201DEBC ; =_02099714 + add r0, sp, #0xc + mov r4, r2 + bl strcpy + add r0, sp, #0xc + mov r1, r5 + bl strcat + add r0, sp, #4 + add r1, sp, #0xc + mov r2, r4 + bl LoadFileFromRom + ldr r1, [sp, #4] + add r0, sp, #0 + bl HandleSir0Translation + ldr r0, [sp] + ldr r1, _0201DEC0 ; =_0209971C + mov r2, #4 + bl strncmp + ldr r0, [sp, #4] + str r0, [r6] + ldr r0, [sp] + str r0, [r6, #4] + add sp, sp, #0x10c + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0201DEBC: .word _02099714 +_0201DEC0: .word _0209971C + arm_func_end LoadWteFromRom + + arm_func_start LoadWteFromFileDirectory +LoadWteFromFileDirectory: ; 0x0201DEC4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + mov r4, r0 + mov r0, r1 + mov r1, r2 + add r2, sp, #0 + bl DirectoryFileMngr_OpenDirectoryFile + ldr r1, [sp] + add r0, sp, #8 + bl HandleSir0Translation + ldr r0, [sp, #8] + ldr r1, _0201DF14 ; =_0209971C + mov r2, #4 + bl strncmp + ldr r0, [sp] + str r0, [r4] + ldr r0, [sp, #8] + str r0, [r4, #4] + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0201DF14: .word _0209971C + arm_func_end LoadWteFromFileDirectory + + arm_func_start UnloadWte +UnloadWte: ; 0x0201DF18 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + bl MemFree + mov r0, #0 + str r0, [r4] + str r0, [r4, #4] + ldmia sp!, {r4, pc} + arm_func_end UnloadWte + + arm_func_start sub_0201DF38 +sub_0201DF38: ; 0x0201DF38 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x108 + mov r6, r0 + mov r0, #8 + mov r5, r1 + bl MemAlloc + mov r4, r0 + ldr r1, _0201DFAC ; =_02099714 + add r0, sp, #8 + bl strcpy + add r0, sp, #8 + mov r1, r6 + bl strcat + add r0, sp, #0 + add r1, sp, #8 + mov r2, r5 + bl LoadFileFromRom + ldr r5, [sp] + ldr r1, _0201DFB0 ; =_02099720 + str r5, [r4] + mov r0, r5 + mov r2, #4 + bl strncmp + ldr r1, [r5, #0xc] + mov r0, r4 + add r1, r5, r1 + str r1, [r4, #4] + add sp, sp, #0x108 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0201DFAC: .word _02099714 +_0201DFB0: .word _02099720 + arm_func_end sub_0201DF38 + + arm_func_start LoadWtuFromBin +LoadWtuFromBin: ; 0x0201DFB4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r1, r5 + mov r0, #8 + bl MemAlloc + mov r4, r0 + add r2, sp, #0 + mov r0, r7 + mov r1, r6 + mov r3, r5 + bl DirectoryFileMngr_OpenDirectoryFile + ldr r5, [sp] + ldr r1, _0201E01C ; =_02099720 + str r5, [r4] + mov r0, r5 + mov r2, #4 + bl strncmp + ldr r1, [r5, #0xc] + mov r0, r4 + add r1, r5, r1 + str r1, [r4, #4] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0201E01C: .word _02099720 + arm_func_end LoadWtuFromBin + + arm_func_start sub_0201E020 +sub_0201E020: ; 0x0201E020 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r0] + bl MemFree + ldr r0, [r4] + bl MemFree + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end sub_0201E020 + + arm_func_start sub_0201E050 +sub_0201E050: ; 0x0201E050 + stmdb sp!, {r3, lr} + ldr ip, _0201E07C ; =_020AFC70 + str r3, [sp] + ldr ip, [ip] + mov lr, r1 + mov r3, r2 + mov r1, r0 + mov r2, lr + add r0, ip, #0xbc + bl PlanCopyTextureToTextureVram + ldmia sp!, {r3, pc} + .align 2, 0 +_0201E07C: .word _020AFC70 + arm_func_end sub_0201E050 + + arm_func_start sub_0201E080 +sub_0201E080: ; 0x0201E080 + stmdb sp!, {r3, lr} + mov r2, #2 + ldr r1, _0201E0AC ; =_020AFC70 + str r2, [sp] + mov r2, #0 + ldr ip, [r1] + mov r1, r0 + mov r3, r2 + add r0, ip, #0xbc + bl PlanCopyTextureToTextureVram + ldmia sp!, {r3, pc} + .align 2, 0 +_0201E0AC: .word _020AFC70 + arm_func_end sub_0201E080 + + arm_func_start ProcessWte +ProcessWte: ; 0x0201E0B0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov ip, r1 + ldr r1, [r6, #4] + mov r5, r2 + mov r4, r3 + cmp r1, #0 + beq _0201E0F4 + mov r0, #0 + str r0, [sp] + ldr r0, _0201E128 ; =_020AFC70 + ldr r3, [r6, #8] + ldr r0, [r0] + mov r2, ip + add r0, r0, #0xbc + bl PlanCopyTextureToTextureVram +_0201E0F4: + ldr r0, [r6, #0x18] + cmp r0, #0 + beq _0201E120 + ldr r0, _0201E128 ; =_020AFC70 + str r4, [sp] + ldr r0, [r0] + ldrsh r2, [r6, #0x1c] + ldr r1, [r6, #0x18] + mov r3, r5 + add r0, r0, #0xcc + bl sub_0201E3AC +_0201E120: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0201E128: .word _020AFC70 + arm_func_end ProcessWte + + arm_func_start sub_0201E12C +sub_0201E12C: ; 0x0201E12C + ldr ip, _0201E138 ; =ProcessWte + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0201E138: .word ProcessWte + arm_func_end sub_0201E12C + + arm_func_start DelayWteFree +DelayWteFree: ; 0x0201E13C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r2, #2 + ldr r1, _0201E180 ; =_020AFC70 + str r2, [sp] + mov r4, r0 + ldr r0, [r1] + mov r2, #0 + ldr r1, [r4] + mov r3, r2 + add r0, r0, #0xbc + bl PlanCopyTextureToTextureVram + mov r0, #0 + str r0, [r4] + str r0, [r4, #4] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0201E180: .word _020AFC70 + arm_func_end DelayWteFree + + arm_func_start sub_0201E184 +sub_0201E184: ; 0x0201E184 + mov r0, r0, lsl #9 + mov r0, r0, asr #0x10 + bx lr + arm_func_end sub_0201E184 + + arm_func_start sub_0201E190 +sub_0201E190: ; 0x0201E190 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov ip, #0x1c + mul r4, r3, ip + mov r7, r0 + mov r6, r1 + mov r0, r4 + mov r1, #0 + mov r5, r2 + bl MemAlloc + mov r1, r4 + str r0, [r7] + bl MemZero + mov r0, #0 + strh r0, [r7, #0xc] + str r6, [r7, #4] + str r5, [r7, #8] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0201E190 + + arm_func_start ResetPlannedVramTransfer +ResetPlannedVramTransfer: ; 0x0201E1D4 + mov r1, #0 + strh r1, [r0, #0xc] + bx lr + arm_func_end ResetPlannedVramTransfer + + arm_func_start PlanCopyTextureToTextureVram +PlanCopyTextureToTextureVram: ; 0x0201E1E0 + stmdb sp!, {r4, lr} + ldrsh r4, [r0, #0xc] + cmp r4, #0x80 + mvnge r0, #0 + ldmgeia sp!, {r4, pc} + ldr lr, [r0] + mov ip, #0x1c + smlabb ip, r4, ip, lr + str r3, [ip, #4] + str r1, [ip, #8] + ldrb r3, [sp, #8] + str r2, [ip, #0xc] + mov r1, #0 + str r3, [ip, #0x10] + strb r1, [ip, #0x14] + ldrsh r1, [r0, #0xc] + add r1, r1, #1 + strh r1, [r0, #0xc] + ldrsh r0, [r0, #0xc] + ldmia sp!, {r4, pc} + arm_func_end PlanCopyTextureToTextureVram + + arm_func_start PerformPlannedTextureVramTransfer +PerformPlannedTextureVramTransfer: ; 0x0201E230 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r0 + ldrsh r7, [r4, #0xc] + mov r6, #0 + ldr fp, _0201E310 ; =_022A4F38 + mov r5, #0x1c + b _0201E304 +_0201E24C: + ldr r0, [r4] + smlabb r1, r6, r5, r0 + ldr r0, [r1, #0x10] + cmp r0, #0 + beq _0201E274 + cmp r0, #1 + beq _0201E2C8 + cmp r0, #2 + beq _0201E2F0 + b _0201E2F8 +_0201E274: + ldr sl, [r1, #8] + cmp sl, #0 + beq _0201E2A4 + ldr sb, [r1, #4] + ldr r8, [r1, #0xc] + bl GX_BeginLoadTex + mov r0, sl + mov r1, r8 + mov r2, sb + bl GX_LoadTex + bl GX_EndLoadTex + b _0201E2F8 +_0201E2A4: + ldr r8, [r1, #4] + ldr sb, [r1, #0xc] + bl GX_BeginLoadTex + mov r0, fp + mov r1, sb + mov r2, r8 + bl GX_LoadTex + bl GX_EndLoadTex + b _0201E2F8 +_0201E2C8: + ldr sl, [r1, #4] + ldr sb, [r1, #0xc] + ldr r8, [r1, #8] + bl GX_BeginLoadTexPltt + mov r0, r8 + mov r1, sb + mov r2, sl + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + b _0201E2F8 +_0201E2F0: + ldr r0, [r1, #8] + bl MemFree +_0201E2F8: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0201E304: + cmp r6, r7 + blt _0201E24C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0201E310: .word _022A4F38 + arm_func_end PerformPlannedTextureVramTransfer + + arm_func_start sub_0201E314 +sub_0201E314: ; 0x0201E314 + stmdb sp!, {r4, lr} + ldr ip, [sp, #8] + mov r4, r0 + mov r0, ip, asr #7 + add r0, ip, r0, lsr #24 + stmia r4, {r1, ip} + mov r0, r0, asr #8 + str r0, [r4, #8] + mov r1, #0 + strb r1, [r4, #0xc] + str r2, [r4, #0x10] + str r3, [r4, #0x14] + mov r0, ip, lsl #1 + bl MemAlloc + str r0, [r4, #0x18] + ldr r0, [r4, #8] + mov r1, #0 + bl MemAlloc + str r0, [r4, #0x1c] + ldr r1, [r4, #4] + ldr r0, [r4, #0x18] + mov r1, r1, lsl #1 + bl MemZero + ldr r0, [r4, #0x1c] + ldr r1, [r4, #8] + bl MemZero + ldmia sp!, {r4, pc} + arm_func_end sub_0201E314 + + arm_func_start sub_0201E380 +sub_0201E380: ; 0x0201E380 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + ldr r2, [r5, #0x18] + add r0, r3, r4, lsl #8 + add r0, r2, r0, lsl #1 + bl Rgb8ToRgb5 + ldr r0, [r5, #0x1c] + mov r1, #1 + strb r1, [r0, r4] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_0201E380 + + arm_func_start sub_0201E3AC +sub_0201E3AC: ; 0x0201E3AC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldrsh r4, [sp, #0x20] + mov r7, r3 + mov sl, r0 + add r6, r4, r7, lsl #8 + mov sb, r1 + mov r8, r2 + mov r5, #0 + mov r4, #1 + b _0201E3FC +_0201E3D4: + ldr r1, [sl, #0x18] + add r0, r5, r6 + add r0, r1, r0, lsl #1 + add r1, sb, r5, lsl #2 + bl Rgb8ToRgb5 + add r0, r5, #1 + ldr r1, [sl, #0x1c] + mov r0, r0, lsl #0x10 + strb r4, [r7, r1] + mov r5, r0, asr #0x10 +_0201E3FC: + cmp r5, r8 + blt _0201E3D4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end sub_0201E3AC + + arm_func_start sub_0201E408 +sub_0201E408: ; 0x0201E408 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, r2 + ldrsh r2, [r1, #6] + ldr r1, [r1] + bl sub_0201E3AC + ldmia sp!, {r3, pc} + arm_func_end sub_0201E408 + + arm_func_start sub_0201E424 +sub_0201E424: ; 0x0201E424 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r5, #0 + mov r6, r0 + mov r4, #1 + mov r8, #0x200 + mov r7, r5 + b _0201E480 +_0201E444: + ldr r0, [r6, #0x1c] + ldrb r0, [r0, r5] + cmp r0, #0 + beq _0201E47C + str r4, [sp] + ldr r1, [r6, #0x18] + ldr r2, [r6, #0x14] + ldr r0, [r6] + mov r3, r8 + add r1, r1, r5, lsl #9 + add r2, r2, r5, lsl #9 + bl PlanCopyTextureToTextureVram + ldr r0, [r6, #0x1c] + strb r7, [r0, r5] +_0201E47C: + add r5, r5, #1 +_0201E480: + ldr r0, [r6, #8] + cmp r5, r0 + blt _0201E444 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end sub_0201E424 + + arm_func_start GeomSetTexImageParam +GeomSetTexImageParam: ; 0x0201E494 + ldr ip, [sp, #0xc] + mov r0, r0, lsl #0x1a + orr r0, r0, ip, lsr #3 + orr r0, r0, r1, lsl #30 + orr r0, r0, r2, lsl #20 + ldr r1, [sp] + orr r0, r0, r3, lsl #23 + ldr r2, [sp, #4] + orr r0, r0, r1, lsl #16 + ldr r3, [sp, #8] + orr r1, r0, r2, lsl #18 + ldr r0, _0201E4D0 ; =0x040004A8 + orr r1, r1, r3, lsl #29 + str r1, [r0] + bx lr + .align 2, 0 +_0201E4D0: .word 0x040004A8 + arm_func_end GeomSetTexImageParam + + arm_func_start GeomSetVertexCoord16 +GeomSetVertexCoord16: ; 0x0201E4D4 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r1, lsl #0x10 + mov r1, r2, lsl #0x10 + ldr r2, _0201E500 ; =0x0400048C + orr r0, r3, r0, lsr #16 + str r0, [r2] + mov r0, r1, lsr #0x10 + str r0, [r2] + bx lr + .align 2, 0 +_0201E500: .word 0x0400048C + arm_func_end GeomSetVertexCoord16 + + arm_func_start InitRender3dData +InitRender3dData: ; 0x0201E504 + stmdb sp!, {r3, lr} + ldr r0, _0201E540 ; =RENDER_3D + ldr r0, [r0, #0x40] + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r0, #0x1a00 + mov r1, #0 + bl MemAlloc + ldr r1, _0201E540 ; =RENDER_3D + mov r2, #0 + str r0, [r1, #0x40] + strh r2, [r1] + mov r0, #0x80 + strh r0, [r1, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201E540: .word RENDER_3D + arm_func_end InitRender3dData + + arm_func_start sub_0201E544 +sub_0201E544: ; 0x0201E544 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r1, r0 + mov r2, r0 + mov r3, r0 + str r0, [sp, #0xc] + bl GeomSetTexImageParam + ldr r0, _0201E5A4 ; =RENDER_3D + mvn r1, #0 + str r1, [r0, #8] + bl sub_01FF8F04 + ldr r2, _0201E5A8 ; =0x3F1F00C0 + ldr r1, _0201E5AC ; =0x040004A4 + ldr r0, _0201E5A4 ; =RENDER_3D + str r2, [r1] + mov r1, #0 + strh r1, [r0] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201E5A4: .word RENDER_3D +_0201E5A8: .word 0x3F1F00C0 +_0201E5AC: .word 0x040004A4 + arm_func_end sub_0201E544 + + arm_func_start sub_0201E5B0 +sub_0201E5B0: ; 0x0201E5B0 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + bl Render3dProcessQueue + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r1, r0 + mov r2, r0 + mov r3, r0 + str r0, [sp, #0xc] + bl GeomSetTexImageParam + ldr r0, _0201E608 ; =RENDER_3D + mvn r1, #0 + str r1, [r0, #8] + bl sub_01FF8F04 + ldr r1, _0201E60C ; =0x3F1F00C0 + ldr r0, _0201E610 ; =0x040004A4 + str r1, [r0] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201E608: .word RENDER_3D +_0201E60C: .word 0x3F1F00C0 +_0201E610: .word 0x040004A4 + arm_func_end sub_0201E5B0 + + arm_func_start sub_0201E614 +sub_0201E614: ; 0x0201E614 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #0xbc + bl MemZero + bl InitRender3dData + mov r0, r4 + bl sub_0201E634 + ldmia sp!, {r4, pc} + arm_func_end sub_0201E614 + + arm_func_start sub_0201E634 +sub_0201E634: ; 0x0201E634 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r2, #0 + str r2, [r4, #0xa0] + mov r0, #0x100000 + str r0, [r4, #0xa4] + ldr r0, _0201E70C ; =0x007FFFFF + str r2, [r4, #0xa8] + mov r1, #0xc0000 + str r1, [r4, #0xac] + mov r1, #0x1000 + str r1, [r4, #0xb0] + str r0, [r4, #0xb4] + str r2, [r4] + str r2, [r4, #4] + str r1, [r4, #8] + str r2, [r4, #0x18] + str r2, [r4, #0x1c] + mov r0, r0, lsl #0xc + str r0, [r4, #0x20] + str r2, [r4, #0x24] + str r1, [r4, #0x28] + ldr r1, _0201E710 ; =0xBFFF0000 + ldr r0, _0201E714 ; =0x04000580 + str r2, [r4, #0x2c] + str r1, [r0] + ldr r0, [r4, #0xb0] + mov r1, #0x400000 + str r0, [sp] + ldr r2, [r4, #0xb4] + mov r0, #1 + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0x60 + str r0, [sp, #0x10] + ldr r0, [r4, #0xa8] + ldr r1, [r4, #0xac] + ldr r2, [r4, #0xa0] + ldr r3, [r4, #0xa4] + bl G3i_OrthoW_ + ldr r1, _0201E718 ; =0x0400044C + mov r2, #0 + mov r0, r4 + str r2, [r1] + add ip, r4, #0x30 + add r1, r4, #0x24 + add r2, r4, #0x18 + mov r3, #1 + str ip, [sp] + bl G3i_LookAt_ + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0201E70C: .word 0x007FFFFF +_0201E710: .word 0xBFFF0000 +_0201E714: .word 0x04000580 +_0201E718: .word 0x0400044C + arm_func_end sub_0201E634 + + arm_func_start GeomSwapBuffers +GeomSwapBuffers: ; 0x0201E71C + ldr r0, _0201E72C ; =0x04000540 + mov r1, #1 + str r1, [r0] + bx lr + .align 2, 0 +_0201E72C: .word 0x04000540 + arm_func_end GeomSwapBuffers + + arm_func_start InitRender3dElement64 +InitRender3dElement64: ; 0x0201E730 + stmdb sp!, {r4, lr} + mov r1, #0x40 + mov r4, r0 + bl MemZero + mov r0, #0xff + strb r0, [r4, #0x2c] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2f] + mov r0, #0x1000 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + mov r0, #0x40 + strh r0, [r4, #0x2a] + mov r0, #0 + strb r0, [r4, #0x3e] + ldmia sp!, {r4, pc} + arm_func_end InitRender3dElement64 + + arm_func_start sub_0201E774 +sub_0201E774: ; 0x0201E774 + stmdb sp!, {r4, lr} + ldrh ip, [r1, #0xc] + mov r4, r0 + mov r0, r3 + strh ip, [r4, #0x14] + ldrsh r3, [r1, #0x10] + strh r3, [r4, #0x16] + ldrsh r3, [r1, #0x12] + strh r3, [r4, #0x18] + ldrsh r3, [r1, #0x14] + strh r3, [r4, #0x1a] + ldrsh r3, [r1, #0x16] + ldrsh r1, [sp, #8] + strh r3, [r4, #0x1c] + str r2, [r4, #0x20] + bl GetPaletteBaseAddress__0201E858 + str r0, [r4, #0x24] + ldmia sp!, {r4, pc} + arm_func_end sub_0201E774 + + arm_func_start GetPaletteBaseAddress__0201E858 +GetPaletteBaseAddress__0201E858: ; 0x0201E7BC + ldr r2, _0201E7D4 ; =_020AFC70 + add r0, r1, r0, lsl #8 + ldr r1, [r2] + ldr r1, [r1, #0xe0] + add r0, r1, r0, lsl #1 + bx lr + .align 2, 0 +_0201E7D4: .word _020AFC70 + arm_func_end GetPaletteBaseAddress__0201E858 + + arm_func_start sub_0201E7D8 +sub_0201E7D8: ; 0x0201E7D8 + stmdb sp!, {r4, lr} + ldr ip, [r1] + mov r4, r0 + ldrh lr, [ip, #8] + mov ip, r2, lsl #3 + ldrsh r0, [sp, #8] + strh lr, [r4, #0x14] + ldr lr, [r1, #4] + ldrsh ip, [lr, ip] + strh ip, [r4, #0x16] + ldr ip, [r1, #4] + add ip, ip, r2, lsl #3 + ldrsh ip, [ip, #2] + strh ip, [r4, #0x18] + ldr ip, [r1, #4] + add ip, ip, r2, lsl #3 + ldrsh ip, [ip, #4] + strh ip, [r4, #0x1a] + ldr ip, [r1, #4] + ldrsh r1, [sp, #0xc] + add r2, ip, r2, lsl #3 + ldrsh r2, [r2, #6] + strh r2, [r4, #0x1c] + str r3, [r4, #0x20] + bl GetPaletteBaseAddress__0201E858 + str r0, [r4, #0x24] + ldmia sp!, {r4, pc} + arm_func_end sub_0201E7D8 + + arm_func_start Render3d64Texture0x7 +Render3d64Texture0x7: ; 0x0201E844 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r0 + bl NewRender3dTexture + ldrsh r1, [r4] + mov r5, #0 + strh r1, [r0, #0x16] + ldrsh r1, [r4, #2] + strh r1, [r0, #0x18] + ldrsh r1, [r4, #8] + strh r1, [r0, #0x1a] + ldrsh r1, [r4, #0xa] + strh r1, [r0, #0x1c] + ldrb r2, [r4, #0x2e] + ldrb r1, [r4, #0x2d] + ldrb r6, [r4, #0x2c] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, r6, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x22] + ldrb r1, [r4, #0x2f] + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x27] + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x1e] + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x20] + ldrh r1, [r4, #0x28] + strh r1, [r0, #0x24] + ldr r1, [r4, #0x20] + str r1, [r0, #4] + ldr r1, [r4, #0x24] + str r1, [r0, #8] + ldrb r1, [r4, #0x3e] + strb r1, [r0, #0x26] + ldrh r1, [r4, #0x2a] + strh r1, [r0, #2] + ldrh r1, [r4, #0x14] + strh r1, [r0, #0x14] +_0201E8F0: + mov r1, #0x18 + mul r6, r5, r1 + mov r1, r6, lsl #0x10 + mov ip, r1, asr #0x10 + mov r1, #0x1f + mov r3, #0x18 + and r7, r5, #1 + mov lr, #0 + mov r2, r1 + mov sb, r3 +_0201E918: + mul r8, lr, sb + ldrsh sl, [r4] + tst lr, #1 + add sl, sl, r8 + strh sl, [r0, #0x16] + ldrsh sl, [r4, #2] + add sl, sl, r6 + strh sl, [r0, #0x18] + strh r8, [r0, #0xc] + strh ip, [r0, #0xe] + strh r3, [r0, #0x10] + strh r3, [r0, #0x12] + beq _0201E988 + cmp r7, #0 + streqh r2, [r0, #0x22] + beq _0201E9C0 + ldrb r8, [r4, #0x2e] + ldrb sl, [r4, #0x2d] + ldrb fp, [r4, #0x2c] + and r8, r8, #0xf8 + mov r8, r8, lsl #0x17 + and fp, fp, #0xf8 + and sl, sl, #0xf8 + mov sl, sl, lsl #2 + orr r8, sl, r8, lsr #16 + orr r8, r8, fp, asr #3 + strh r8, [r0, #0x22] + b _0201E9C0 +_0201E988: + cmp r7, #0 + strneh r1, [r0, #0x22] + bne _0201E9C0 + ldrb r8, [r4, #0x2e] + ldrb sl, [r4, #0x2d] + ldrb fp, [r4, #0x2c] + and r8, r8, #0xf8 + mov r8, r8, lsl #0x17 + and fp, fp, #0xf8 + and sl, sl, #0xf8 + mov sl, sl, lsl #2 + orr r8, sl, r8, lsr #16 + orr r8, r8, fp, asr #3 + strh r8, [r0, #0x22] +_0201E9C0: + add r8, lr, #1 + mov r8, r8, lsl #0x10 + mov lr, r8, asr #0x10 + cmp lr, #0xa + blt _0201E918 + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + cmp r5, #8 + blt _0201E8F0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Render3d64Texture0x7 + + arm_func_start Render3d64WindowFrame +Render3d64WindowFrame: ; 0x0201E9EC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + mov sl, r0 + add r5, sp, #0xc + mov r6, sl + mov r4, #4 +_0201EA04: + ldmia r6!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0201EA04 + mov r0, #5 + strb r0, [sp, #0x48] + ldrsh r1, [sl, #4] + ldrsh r2, [sl, #6] + cmp r1, #0x10 + addle r0, r1, r1, lsr #31 + movgt r3, #8 + movle r0, r0, lsl #0xf + movle r3, r0, asr #0x10 + cmp r2, #0x10 + addle r0, r2, r2, lsr #31 + movgt r6, #8 + movle r0, r0, lsl #0xf + movle r6, r0, asr #0x10 + ldrsh r0, [sl] + str r0, [sp] + ldrsh r8, [sl, #2] + ldr r4, [sp] + add r0, sp, #0xc + add r4, r4, r3 + add r5, r8, r6 + mov r4, r4, lsl #0x10 + mov r7, r5, lsl #0x10 + mov r5, r4, asr #0x10 + mov r4, r7, asr #0x10 + ldr r7, [sp] + add sb, r8, r2 + strh r7, [sp, #0xc] + ldr r7, [sp] + mov r2, sb, lsl #0x10 + add fp, r7, r1 + sub r1, fp, r3 + mov r3, r1, lsl #0x10 + sub r1, sb, r6 + mov r7, r1, lsl #0x10 + mov r1, fp, lsl #0x10 + mov r6, r3, asr #0x10 + strh r8, [sp, #0xe] + strh r5, [sp, #0x10] + strh r4, [sp, #0x12] + ldrsh ip, [sl, #0x16] + mov r1, r1, asr #0x10 + mov r3, #8 + strh ip, [sp, #0x22] + ldrsh ip, [sl, #0x18] + mov r7, r7, asr #0x10 + str r1, [sp, #8] + strh ip, [sp, #0x24] + strh r3, [sp, #0x26] + strh r3, [sp, #0x28] + mov r1, r2, asr #0x10 + str r1, [sp, #4] + bl EnqueueRender3d64Tiling + strh r5, [sp, #0xc] + strh r8, [sp, #0xe] + strh r6, [sp, #0x10] + strh r4, [sp, #0x12] + ldrsh r2, [sl, #0x16] + add r0, sp, #0xc + mov r1, #8 + add r2, r2, #8 + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + strh r6, [sp, #0xc] + strh r8, [sp, #0xe] + strh fp, [sp, #0x10] + strh r4, [sp, #0x12] + ldrsh r2, [sl, #0x16] + mov r1, #8 + add r0, sp, #0xc + add r2, r2, #0x10 + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + ldr r0, [sp] + strh r4, [sp, #0xe] + strh r5, [sp, #0x10] + strh r7, [sp, #0x12] + strh r0, [sp, #0xc] + ldrsh r0, [sl, #0x16] + strh r0, [sp, #0x22] + ldrsh r0, [sl, #0x18] + add r0, r0, #8 + strh r0, [sp, #0x24] + mov r1, #8 + add r0, sp, #0xc + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + strh r6, [sp, #0xc] + strh r4, [sp, #0xe] + ldr r0, [sp, #8] + mov r1, #8 + strh r0, [sp, #0x10] + strh r7, [sp, #0x12] + ldrsh r2, [sl, #0x16] + add r0, sp, #0xc + add r2, r2, #0x10 + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + add r2, r2, #8 + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + ldr r0, [sp] + mov r1, #8 + strh r0, [sp, #0xc] + strh r7, [sp, #0xe] + strh r5, [sp, #0x10] + strh sb, [sp, #0x12] + ldrsh r2, [sl, #0x16] + add r0, sp, #0xc + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + add r2, r2, #0x10 + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + strh r5, [sp, #0xc] + strh r7, [sp, #0xe] + strh r6, [sp, #0x10] + ldr r0, [sp, #4] + mov r1, #8 + strh r0, [sp, #0x12] + ldrsh r2, [sl, #0x16] + add r0, sp, #0xc + add r2, r2, #8 + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + add r2, r2, #0x10 + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + strh r6, [sp, #0xc] + strh r7, [sp, #0xe] + ldr r0, [sp, #8] + mov r1, #8 + strh r0, [sp, #0x10] + ldr r0, [sp, #4] + strh r0, [sp, #0x12] + ldrsh r2, [sl, #0x16] + add r0, sp, #0xc + add r2, r2, #0x10 + strh r2, [sp, #0x22] + ldrsh r2, [sl, #0x18] + add r2, r2, #0x10 + strh r2, [sp, #0x24] + strh r1, [sp, #0x26] + strh r1, [sp, #0x28] + bl EnqueueRender3d64Tiling + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end Render3d64WindowFrame + + arm_func_start EnqueueRender3d64Tiling +EnqueueRender3d64Tiling: ; 0x0201EC9C + stmdb sp!, {r4, lr} + mov r4, r0 + bl NewRender3dTiling + ldrsh r2, [r4] + mov r1, #0 + strh r2, [r0, #0x16] + ldrsh r2, [r4, #2] + strh r2, [r0, #0x18] + ldrsh r2, [r4, #4] + strh r2, [r0, #0x1a] + ldrsh r2, [r4, #2] + strh r2, [r0, #0x1c] + ldrsh r2, [r4] + strh r2, [r0, #0x1e] + ldrsh r2, [r4, #6] + strh r2, [r0, #0x20] + ldrsh r2, [r4, #4] + strh r2, [r0, #0x22] + ldrsh r2, [r4, #6] + strh r2, [r0, #0x24] +_0201ECEC: + ldrb r3, [r4, #0x2e] + ldrb r2, [r4, #0x2d] + ldrb lr, [r4, #0x2c] + and ip, r3, #0xf8 + and r3, r2, #0xf8 + mov r2, ip, lsl #0x17 + mov ip, r3, lsl #2 + add r3, r0, r1, lsl #1 + add r1, r1, #1 + and lr, lr, #0xf8 + orr r2, ip, r2, lsr #16 + orr r2, r2, lr, asr #3 + strh r2, [r3, #0x26] + cmp r1, #4 + blt _0201ECEC + ldrb r1, [r4, #0x2f] + add r3, r4, #0x16 + add r2, r0, #0xc + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x31] + ldrh ip, [r4, #0x28] + mov r1, #4 + strh ip, [r0, #0x2e] + ldr ip, [r4, #0x20] + str ip, [r0, #4] + ldr ip, [r4, #0x24] + str ip, [r0, #8] + ldrb ip, [r4, #0x3e] + strb ip, [r0, #0x30] + ldrh ip, [r4, #0x2a] + strh ip, [r0, #2] + ldrh r4, [r4, #0x14] + strh r4, [r0, #0x14] +_0201ED74: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0201ED74 + ldmia sp!, {r4, pc} + arm_func_end EnqueueRender3d64Tiling + + arm_func_start Render3d64Tiling +Render3d64Tiling: ; 0x0201ED88 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl NewRender3dTiling + mov r1, #0 +_0201ED98: + mov r2, r1, lsl #2 + ldrsh r2, [r4, r2] + add ip, r0, r1, lsl #2 + add r5, r4, r1, lsl #2 + strh r2, [ip, #0x16] + ldrsh r2, [r5, #2] + add r3, r0, r1, lsl #1 + add r1, r1, #1 + strh r2, [ip, #0x18] + ldrb ip, [r5, #0x2e] + ldrb r2, [r5, #0x2d] + ldrb r5, [r5, #0x2c] + and lr, ip, #0xf8 + and ip, r2, #0xf8 + mov r2, lr, lsl #0x17 + mov ip, ip, lsl #2 + and r5, r5, #0xf8 + orr r2, ip, r2, lsr #16 + orr r2, r2, r5, asr #3 + strh r2, [r3, #0x26] + cmp r1, #4 + blt _0201ED98 + ldrb r1, [r4, #0x2f] + add r3, r4, #0x16 + add r2, r0, #0xc + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x31] + ldrh ip, [r4, #0x28] + mov r1, #4 + strh ip, [r0, #0x2e] + ldr ip, [r4, #0x20] + str ip, [r0, #4] + ldr ip, [r4, #0x24] + str ip, [r0, #8] + ldrb ip, [r4, #0x3e] + strb ip, [r0, #0x30] + ldrh ip, [r4, #0x2a] + strh ip, [r0, #2] + ldrh r4, [r4, #0x14] + strh r4, [r0, #0x14] +_0201EE3C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0201EE3C + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Render3d64Tiling + + arm_func_start Render3d64Quadrilateral +Render3d64Quadrilateral: ; 0x0201EE50 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl NewRender3dQuadrilateral + mov r1, #0 +_0201EE60: + mov r2, r1, lsl #2 + ldrsh r2, [r4, r2] + add ip, r0, r1, lsl #2 + add r5, r4, r1, lsl #2 + strh r2, [ip, #4] + ldrsh r2, [r5, #2] + add r3, r0, r1, lsl #1 + add r1, r1, #1 + strh r2, [ip, #6] + ldrb ip, [r5, #0x2e] + ldrb r2, [r5, #0x2d] + ldrb r5, [r5, #0x2c] + and lr, ip, #0xf8 + and ip, r2, #0xf8 + mov r2, lr, lsl #0x17 + mov ip, ip, lsl #2 + and r5, r5, #0xf8 + orr r2, ip, r2, lsr #16 + orr r2, r2, r5, asr #3 + strh r2, [r3, #0x1a] + cmp r1, #4 + blt _0201EE60 + ldrb r1, [r4, #0x2f] + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x23] + ldrb r1, [r4, #0x3e] + strb r1, [r0, #0x22] + ldrh r1, [r4, #0x2a] + strh r1, [r0, #2] + ldrb r1, [r4, #0x3d] + tst r1, #2 + movne r1, #1 + moveq r1, #0 + strb r1, [r0, #0x24] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Render3d64Quadrilateral + + arm_func_start Render3d64RectangleMulticolor +Render3d64RectangleMulticolor: ; 0x0201EEF0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl NewRender3dRectangle + ldrh r1, [r4] + strh r1, [r0, #4] + ldrh r1, [r4, #2] + strh r1, [r0, #6] + ldrh r1, [r4, #4] + strh r1, [r0, #8] + ldrh r1, [r4, #6] + strh r1, [r0, #0xa] + ldrh r1, [r4, #8] + strh r1, [r0, #0xc] + ldrh r1, [r4, #0xa] + strh r1, [r0, #0xe] + ldrb r1, [r4, #0x2f] + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x23] + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x14] + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x16] + ldrh r1, [r4, #0x28] + strh r1, [r0, #0x18] + ldrb r1, [r4, #0x3e] + strb r1, [r0, #0x22] + ldrh r1, [r4, #0x2a] + strh r1, [r0, #2] + ldrb r1, [r4, #0x3d] + tst r1, #2 + movne r1, #1 + moveq r1, #0 + strb r1, [r0, #0x24] + tst r1, #0xff + ldrb r2, [r4, #0x2e] + ldrb r1, [r4, #0x2d] + beq _0201F034 + ldrb ip, [r4, #0x2c] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, ip, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x1a] + ldrb r2, [r4, #0x32] + ldrb r1, [r4, #0x31] + ldrb ip, [r4, #0x30] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, ip, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x1c] + ldrb r2, [r4, #0x36] + ldrb r1, [r4, #0x35] + ldrb ip, [r4, #0x34] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, ip, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x1e] + ldrb r2, [r4, #0x3a] + ldrb r1, [r4, #0x39] + ldrb r4, [r4, #0x38] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, r4, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x20] + ldmia sp!, {r4, pc} +_0201F034: + ldrb r4, [r4, #0x2c] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, r4, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x1a] + ldmia sp!, {r4, pc} + arm_func_end Render3d64RectangleMulticolor + + arm_func_start Render3d64Rectangle +Render3d64Rectangle: ; 0x0201F05C + stmdb sp!, {r4, lr} + mov r4, r0 + bl NewRender3dRectangle + ldrh r1, [r4] + mov r2, #0 + strh r1, [r0, #4] + ldrh r1, [r4, #2] + strh r1, [r0, #6] + ldrh r1, [r4, #4] + strh r1, [r0, #8] + ldrh r1, [r4, #6] + strh r1, [r0, #0xa] + ldrh r1, [r4, #8] + strh r1, [r0, #0xc] + ldrh r1, [r4, #0xa] + strh r1, [r0, #0xe] + ldrb r3, [r4, #0x2e] + ldrb r1, [r4, #0x2d] + ldrb lr, [r4, #0x2c] + and ip, r3, #0xf8 + and r3, r1, #0xf8 + mov r1, ip, lsl #0x17 + mov r3, r3, lsl #2 + and ip, lr, #0xf8 + orr r1, r3, r1, lsr #16 + orr r1, r1, ip, asr #3 + strh r1, [r0, #0x1a] + ldrb r1, [r4, #0x2f] + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x23] + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x14] + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x16] + ldrh r1, [r4, #0x28] + strh r1, [r0, #0x18] + ldrb r1, [r4, #0x3e] + strb r1, [r0, #0x22] + ldrh r1, [r4, #0x2a] + strh r1, [r0, #2] + strb r2, [r0, #0x24] + ldmia sp!, {r4, pc} + arm_func_end Render3d64Rectangle + + arm_func_start Render3d64Nothing +Render3d64Nothing: ; 0x0201F108 + bx lr + arm_func_end Render3d64Nothing + + arm_func_start Render3d64Texture +Render3d64Texture: ; 0x0201F10C + stmdb sp!, {r4, lr} + mov r4, r0 + bl NewRender3dTexture + ldrsh r1, [r4] + add ip, r4, #0x16 + add r3, r0, #0xc + strh r1, [r0, #0x16] + ldrsh r1, [r4, #2] + mov r2, #4 + strh r1, [r0, #0x18] + ldrsh r1, [r4, #8] + strh r1, [r0, #0x1a] + ldrsh r1, [r4, #0xa] + strh r1, [r0, #0x1c] +_0201F144: + ldrh r1, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + bne _0201F144 + ldrb r2, [r4, #0x2e] + ldrb r1, [r4, #0x2d] + ldrb ip, [r4, #0x2c] + and r3, r2, #0xf8 + and r2, r1, #0xf8 + mov r1, r3, lsl #0x17 + mov r2, r2, lsl #2 + and r3, ip, #0xf8 + orr r1, r2, r1, lsr #16 + orr r1, r1, r3, asr #3 + strh r1, [r0, #0x22] + ldrb r1, [r4, #0x2f] + and r1, r1, #0xf8 + mov r1, r1, asr #3 + strb r1, [r0, #0x27] + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x1e] + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x20] + ldrh r1, [r4, #0x28] + strh r1, [r0, #0x24] + ldr r1, [r4, #0x20] + str r1, [r0, #4] + ldr r1, [r4, #0x24] + str r1, [r0, #8] + ldrb r1, [r4, #0x3e] + strb r1, [r0, #0x26] + ldrh r1, [r4, #0x2a] + strh r1, [r0, #2] + ldrh r1, [r4, #0x14] + strh r1, [r0, #0x14] + ldmia sp!, {r4, pc} + arm_func_end Render3d64Texture + + arm_func_start Render3dElement64 +Render3dElement64: ; 0x0201F1D4 + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x3d] + tst r1, #2 + ldmneia sp!, {r3, pc} + ldrb r1, [r0, #0x2f] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldrb r2, [r0, #0x3c] + ldr r1, _0201F204 ; =RENDER_3D_FUNCTIONS_64 + ldr r1, [r1, r2, lsl #2] + blx r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0201F204: .word RENDER_3D_FUNCTIONS_64 + arm_func_end Render3dElement64 + + arm_func_start sub_0201F208 +sub_0201F208: ; 0x0201F208 + stmdb sp!, {r3, lr} + ldr r0, _0201F240 ; =0x00001544 + mov r1, #0 + bl MemAlloc + ldr r2, _0201F244 ; =_020AFCE4 + ldr r1, _0201F240 ; =0x00001544 + str r0, [r2] + bl MemZero + ldr r0, _0201F244 ; =_020AFCE4 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1500 + strh r1, [r0, #0x40] + ldmia sp!, {r3, pc} + .align 2, 0 +_0201F240: .word 0x00001544 +_0201F244: .word _020AFCE4 + arm_func_end sub_0201F208 + + arm_func_start sub_0201F248 +sub_0201F248: ; 0x0201F248 + ldr r1, _0201F29C ; =_020AFCE4 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1000 + strb r2, [r0, #0x542] + ldr r3, [r1] + mov r1, #0x44 + b _0201F284 +_0201F268: + smlabb r0, r2, r1, r3 + ldrb r0, [r0, #0x40] + cmp r0, #0 + bxeq lr + add r0, r2, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 +_0201F284: + cmp r2, #0x50 + blt _0201F268 + add r0, r3, #0x1000 + mov r1, #1 + strb r1, [r0, #0x542] + bx lr + .align 2, 0 +_0201F29C: .word _020AFCE4 + arm_func_end sub_0201F248 + + arm_func_start sub_0201F2A0 +sub_0201F2A0: ; 0x0201F2A0 + ldr ip, _0201F2A8 ; =Render3dElement64 + bx ip + .align 2, 0 +_0201F2A8: .word Render3dElement64 + arm_func_end sub_0201F2A0 + + arm_func_start sub_0201F2AC +sub_0201F2AC: ; 0x0201F2AC + stmdb sp!, {r4, lr} + ldr r2, _0201F2E0 ; =_020AFCE4 + mov r1, #0x44 + smulbb r4, r0, r1 + ldr r0, [r2] + add r0, r0, r4 + bl InitRender3dElement64 + ldr r0, _0201F2E0 ; =_020AFCE4 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4 + strb r1, [r0, #0x40] + ldmia sp!, {r4, pc} + .align 2, 0 +_0201F2E0: .word _020AFCE4 + arm_func_end sub_0201F2AC + + arm_func_start sub_0201F2E4 +sub_0201F2E4: ; 0x0201F2E4 + stmdb sp!, {r4, lr} + mov r4, #0 +_0201F2EC: + mov r0, r4 + bl sub_0201F2AC + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x50 + blt _0201F2EC + ldr r0, _0201F320 ; =_020AFCE4 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1500 + strh r1, [r0, #0x40] + ldmia sp!, {r4, pc} + .align 2, 0 +_0201F320: .word _020AFCE4 + arm_func_end sub_0201F2E4 + + arm_func_start sub_0201F324 +sub_0201F324: ; 0x0201F324 + ldr r2, _0201F344 ; =_020AFCE4 + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + ldrb r1, [r0, #0x40] + cmp r1, #0 + moveq r0, #0 + bx lr + .align 2, 0 +_0201F344: .word _020AFCE4 + arm_func_end sub_0201F324 + + arm_func_start sub_0201F348 +sub_0201F348: ; 0x0201F348 + ldr r3, _0201F368 ; =_020AFCE4 + mov r2, #0x44 + ldr r3, [r3] + smlabb r2, r0, r2, r3 + ldrb r0, [r2, #0x40] + cmp r0, #0 + strneb r1, [r2, #0x41] + bx lr + .align 2, 0 +_0201F368: .word _020AFCE4 + arm_func_end sub_0201F348 + + arm_func_start sub_0201F36C +sub_0201F36C: ; 0x0201F36C + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _0201F460 ; =_020AFCE4 + mov ip, #0 + ldr lr, [r0] + mov r5, ip + add r0, lr, #0x1500 + ldrsh r4, [r0, #0x40] + mov r2, #0x44 + b _0201F3F8 +_0201F390: + cmp r4, #0x50 + movge r4, r5 + smlabb r3, r4, r2, lr + ldrb r0, [r3, #0x40] + cmp r0, #0 + bne _0201F3E0 + ldr r1, _0201F460 ; =_020AFCE4 + mov r0, #1 + strb r0, [r3, #0x40] + ldr r0, [r1] + add r2, r4, #1 + add r0, r0, #0x1500 + strh r2, [r0, #0x40] + ldr r0, [r1] + add r0, r0, #0x1500 + ldrsh r1, [r0, #0x40] + cmp r1, #0x50 + movge r1, #0 + strgeh r1, [r0, #0x40] + b _0201F410 +_0201F3E0: + add r0, ip, #1 + add r1, r4, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov ip, r0, asr #0x10 + mov r4, r1, asr #0x10 +_0201F3F8: + cmp ip, #0x50 + blt _0201F390 + mov r1, #1 + add r0, lr, #0x1000 + strb r1, [r0, #0x542] + sub r4, r1, #2 +_0201F410: + mvn r0, #0 + cmp r4, r0 + moveq r0, r4 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0201F460 ; =_020AFCE4 + mov r0, #0x44 + smulbb r5, r4, r0 + ldr r0, [r1] + add r0, r0, r5 + bl InitRender3dElement64 + ldr r1, _0201F460 ; =_020AFCE4 + mov r3, #1 + ldr r2, [r1] + mov r0, r4 + add r2, r2, r5 + strb r3, [r2, #0x40] + ldr r1, [r1] + add r1, r1, r5 + strb r3, [r1, #0x41] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0201F460: .word _020AFCE4 + arm_func_end sub_0201F36C + + arm_func_start sub_0201F464 +sub_0201F464: ; 0x0201F464 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _0201F4B0 ; =_020AFCE4 + mov r4, #0 + ldr r5, [r0] +_0201F474: + ldrb r0, [r5, #0x40] + cmp r0, #0 + ldrneb r0, [r5, #0x41] + cmpne r0, #0 + beq _0201F490 + mov r0, r5 + bl Render3dElement64 +_0201F490: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x50 + add r5, r5, #0x44 + blt _0201F474 + bl sub_0201F248 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0201F4B0: .word _020AFCE4 + arm_func_end sub_0201F464 + + arm_func_start HandleSir0Translation +HandleSir0Translation: ; 0x0201F4B4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldrb r2, [r4] + mov r5, r0 + mov r0, #0 + cmp r2, #0x53 + ldreqb r1, [r4, #1] + cmpeq r1, #0x49 + ldreqb r1, [r4, #2] + cmpeq r1, #0x52 + ldreqb r1, [r4, #3] + cmpeq r1, #0x30 + bne _0201F500 + mov r1, #0x4f + mov r0, r4 + strb r1, [r4, #3] + bl ConvertPointersSir0 + mov r0, #1 + b _0201F520 +_0201F500: + cmp r2, #0x53 + ldreqb r1, [r4, #1] + cmpeq r1, #0x49 + ldreqb r1, [r4, #2] + cmpeq r1, #0x52 + ldreqb r1, [r4, #3] + cmpeq r1, #0x4f + moveq r0, #2 +_0201F520: + cmp r0, #0 + ldrne r1, [r4, #4] + strne r1, [r5] + streq r4, [r5] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end HandleSir0Translation + + arm_func_start ConvertPointersSir0 +ConvertPointersSir0: ; 0x0201F534 + stmdb sp!, {r4, r5} + ldr r1, [r0, #8] + mov r3, r0 + add r1, r1, r0 +_0201F544: + mov r2, #0 +_0201F548: + ldrb r4, [r1] + add r1, r1, #1 + mov r2, r2, lsl #7 + and r5, r4, #0x7f + orr r2, r2, r5 + and r5, r4, #0x80 + cmp r5, #0 + bne _0201F548 + cmp r2, #0 + beq _0201F584 + add r3, r3, r2 + ldr r2, [r3] + add r2, r2, r0 + str r2, [r3] + b _0201F544 +_0201F584: + ldmia sp!, {r4, r5} + bx lr + arm_func_end ConvertPointersSir0 + + arm_func_start HandleSir0TranslationVeneer +HandleSir0TranslationVeneer: ; 0x0201F58C + ldr ip, _0201F594 ; =HandleSir0Translation + bx ip + .align 2, 0 +_0201F594: .word HandleSir0Translation + arm_func_end HandleSir0TranslationVeneer + + arm_func_start FillPaletteInitInfo +FillPaletteInitInfo: ; 0x0201F598 + str r1, [r0] + strh r2, [r0, #4] + ldrsh r1, [sp] + strh r3, [r0, #6] + ldrb r2, [sp, #4] + strh r1, [r0, #8] + mov r1, #0 + strb r2, [r0, #0xa] + strb r1, [r0, #0xb] + bx lr + arm_func_end FillPaletteInitInfo + + arm_func_start DecompressAtNormalVeneer +DecompressAtNormalVeneer: ; 0x0201F5C0 + ldr ip, _0201F5C8 ; =DecompressAtNormal + bx ip + .align 2, 0 +_0201F5C8: .word DecompressAtNormal + arm_func_end DecompressAtNormalVeneer + + arm_func_start DecompressAtNormal +DecompressAtNormal: ; 0x0201F5CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldrb r5, [r2] + mov ip, #0 + ldrb r4, [r2, #5] + cmp r5, #0x50 + ldreqb r6, [r2, #1] + ldrb r3, [r2, #6] + mov lr, ip + cmpeq r6, #0x4b + ldreqb r6, [r2, #2] + add r3, r4, r3, lsl #8 + mov r4, #8 + cmpeq r6, #0x44 + ldreqb r6, [r2, #3] + cmpeq r6, #0x50 + bne _0201F644 + ldrb r7, [r2, #0x10] + ldrb r6, [r2, #0x11] + ldrb r8, [r2, #0x12] + ldrb r5, [r2, #0x13] + add r6, r7, r6, lsl #8 + add r6, r6, r8, lsl #16 + add r5, r6, r5, lsl #24 + cmp r1, #0 + cmpne r1, r5 + movne r0, ip + bne _0201FA08 + mov r5, #0x14 + b _0201F6B4 +_0201F644: + cmp r5, #0x41 + ldreqb r6, [r2, #1] + cmpeq r6, #0x54 + ldreqb r6, [r2, #2] + cmpeq r6, #0x34 + ldreqb r6, [r2, #3] + cmpeq r6, #0x50 + bne _0201F688 + ldrb r6, [r2, #0x10] + ldrb r5, [r2, #0x11] + cmp r1, #0 + add r5, r6, r5, lsl #8 + cmpne r1, r5 + movne r0, #0 + bne _0201FA08 + mov r5, #0x12 + b _0201F6B4 +_0201F688: + cmp r5, #0x41 + ldreqb r5, [r2, #1] + cmpeq r5, #0x54 + ldreqb r5, [r2, #2] + cmpeq r5, #0x33 + ldreqb r5, [r2, #3] + cmpeq r5, #0x50 + moveq r5, #0x10 + beq _0201F6B4 + mov r0, #0 + b _0201FA08 +_0201F6B4: + ldrb r6, [r2, #4] + cmp r6, #0x4e + bne _0201F6E8 + mov r4, #0 + b _0201F6D8 +_0201F6C8: + add r1, r2, r4 + ldrb r1, [r1, #7] + strb r1, [r0, r4] + add r4, r4, #1 +_0201F6D8: + cmp r4, r3 + blt _0201F6C8 + mov r0, r4 + b _0201FA08 +_0201F6E8: + ldrb r6, [r2, #7] + ldrb sb, [r2, #8] + ldrb r8, [r2, #9] + add r6, r6, #3 + str r6, [sp, #0x18] + add r6, sb, #3 + str r6, [sp, #0x14] + add r6, r8, #3 + ldrb r7, [r2, #0xa] + str r6, [sp, #0x10] + ldrb sl, [r2, #0xb] + add r6, r7, #3 + str r6, [sp, #0xc] + add r6, sl, #3 + ldrb r7, [r2, #0xf] + ldrb fp, [r2, #0xc] + str r6, [sp, #8] + ldrb r8, [r2, #0xe] + add r6, fp, #3 + str r6, [sp, #4] + ldrb r6, [r2, #0xd] + add fp, r8, #3 + add sl, r7, #3 + add r6, r6, #3 + str r6, [sp] + b _0201F9FC +_0201F750: + cmp r1, #0 + beq _0201F764 + cmp ip, r1 + movge r0, #0 + bge _0201FA08 +_0201F764: + cmp r4, #8 + ldreqb lr, [r2, r5] + addeq r5, r5, #1 + moveq r4, #0 + tst lr, #0x80 + bne _0201F9E4 + ldrb r8, [r2, r5] + ldr sb, [sp, #0x18] + add r7, r2, r5 + and r6, r8, #0xf0 + mov r6, r6, asr #4 + add r6, r6, #3 + cmp r6, sb + ldr sb, [sp, #0x14] + moveq r6, #0x1f + cmp r6, sb + ldr sb, [sp, #0x10] + moveq r6, #0x1e + cmp r6, sb + ldr sb, [sp, #0xc] + moveq r6, #0x1d + cmp r6, sb + ldr sb, [sp, #8] + moveq r6, #0x1c + cmp r6, sb + ldr sb, [sp, #4] + moveq r6, #0x1b + cmp r6, sb + ldr sb, [sp] + moveq r6, #0x1a + cmp r6, sb + moveq r6, #0x19 + cmp r6, fp + moveq r6, #0x18 + cmp r6, sl + moveq r6, #0x17 + sub sb, r6, #0x17 + and r8, r8, #0xf + cmp sb, #8 + addls pc, pc, sb, lsl #2 + b _0201F9A8 +_0201F808: ; jump table + b _0201F97C ; case 0 + b _0201F950 ; case 1 + b _0201F924 ; case 2 + b _0201F8FC ; case 3 + b _0201F8D0 ; case 4 + b _0201F8A4 ; case 5 + b _0201F878 ; case 6 + b _0201F850 ; case 7 + b _0201F82C ; case 8 +_0201F82C: + add r5, r5, #1 + add r7, r0, ip + orr r6, r8, r8, lsl #4 + strb r6, [r0, ip] + and r6, r8, #0xf + orr r6, r6, r6, lsl #4 + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F850: + add r5, r5, #1 + add r6, r8, #1 + and r6, r6, #0xf + orr r7, r6, r8, lsl #4 + orr r6, r6, r6, lsl #4 + strb r7, [r0, ip] + add r7, r0, ip + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F878: + add r5, r5, #1 + add r6, r0, ip + sub r7, r8, #1 + and r7, r7, #0xf + orr r7, r7, r8, lsl #4 + strb r7, [r0, ip] + and r7, r8, #0xf + orr r7, r7, r7, lsl #4 + strb r7, [r6, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F8A4: + add r5, r5, #1 + add r7, r0, ip + orr r6, r8, r8, lsl #4 + strb r6, [r0, ip] + sub r6, r8, #1 + mov r6, r6, lsl #0x1c + and r8, r8, #0xf + orr r6, r8, r6, lsr #24 + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F8D0: + add r5, r5, #1 + add r7, r0, ip + orr r6, r8, r8, lsl #4 + strb r6, [r0, ip] + mov r6, r8, lsl #0x1c + sub r8, r8, #1 + and r8, r8, #0xf + orr r6, r8, r6, lsr #24 + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F8FC: + add r5, r5, #1 + sub r6, r8, #1 + and r6, r6, #0xf + orr r7, r6, r8, lsl #4 + orr r6, r6, r6, lsl #4 + strb r7, [r0, ip] + add r7, r0, ip + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F924: + add r5, r5, #1 + add r6, r0, ip + add r7, r8, #1 + and r7, r7, #0xf + orr r7, r7, r8, lsl #4 + strb r7, [r0, ip] + and r7, r8, #0xf + orr r7, r7, r7, lsl #4 + strb r7, [r6, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F950: + add r5, r5, #1 + add r7, r0, ip + orr r6, r8, r8, lsl #4 + strb r6, [r0, ip] + add r6, r8, #1 + mov r6, r6, lsl #0x1c + and r8, r8, #0xf + orr r6, r8, r6, lsr #24 + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F97C: + add r5, r5, #1 + add r7, r0, ip + orr r6, r8, r8, lsl #4 + strb r6, [r0, ip] + mov r6, r8, lsl #0x1c + add r8, r8, #1 + and r8, r8, #0xf + orr r6, r8, r6, lsr #24 + strb r6, [r7, #1] + add ip, ip, #2 + b _0201F9F4 +_0201F9A8: + ldrb sb, [r7, #1] + sub r7, ip, #0x1000 + add r5, r5, #2 + add r8, sb, r8, lsl #8 + add sb, r8, r7 + mov r8, #0 + b _0201F9D8 +_0201F9C4: + ldrb r7, [r0, sb] + add sb, sb, #1 + add r8, r8, #1 + strb r7, [r0, ip] + add ip, ip, #1 +_0201F9D8: + cmp r8, r6 + blt _0201F9C4 + b _0201F9F4 +_0201F9E4: + ldrb r6, [r2, r5] + add r5, r5, #1 + strb r6, [r0, ip] + add ip, ip, #1 +_0201F9F4: + add r4, r4, #1 + mov lr, lr, lsl #1 +_0201F9FC: + cmp r5, r3 + blt _0201F750 + mov r0, ip +_0201FA08: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end DecompressAtNormal + + arm_func_start DecompressAtHalf +DecompressAtHalf: ; 0x0201FA10 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + ldrb r4, [r2] + ldrb r6, [r2, #5] + ldrb r5, [r2, #6] + cmp r4, #0x50 + mov ip, #0 + add sl, r6, r5, lsl #8 + ldreqb r5, [r2, #1] + str ip, [sp, #0x30] + mov lr, #8 + cmpeq r5, #0x4b + ldreqb r5, [r2, #2] + cmpeq r5, #0x44 + ldreqb r5, [r2, #3] + cmpeq r5, #0x50 + bne _0201FA88 + ldrb r6, [r2, #0x10] + ldrb r5, [r2, #0x11] + ldrb r7, [r2, #0x12] + ldrb r4, [r2, #0x13] + add r5, r6, r5, lsl #8 + add r5, r5, r7, lsl #16 + add r4, r5, r4, lsl #24 + cmp r1, #0 + cmpne r1, r4 + movne r0, ip + bne _0201FF44 + mov r8, #0x14 + b _0201FB18 +_0201FA88: + cmp r4, #0x41 + ldreqb r5, [r2, #1] + cmpeq r5, #0x54 + ldreqb r5, [r2, #2] + cmpeq r5, #0x34 + ldreqb r5, [r2, #3] + cmpeq r5, #0x50 + bne _0201FAEC + ldrb r4, [r2, #4] + ldrb r6, [r2, #0x10] + ldrb r5, [r2, #0x11] + cmp r4, #0x4e + add r4, r6, r5, lsl #8 + bne _0201FAD4 + cmp r1, #0 + cmpne r1, sl + beq _0201FB18 + mov r0, #0 + b _0201FF44 +_0201FAD4: + cmp r1, #0 + cmpne r1, r4 + movne r0, #0 + bne _0201FF44 + mov r8, #0x12 + b _0201FB18 +_0201FAEC: + cmp r4, #0x41 + ldreqb r4, [r2, #1] + cmpeq r4, #0x54 + ldreqb r4, [r2, #2] + cmpeq r4, #0x33 + ldreqb r4, [r2, #3] + cmpeq r4, #0x50 + moveq r8, #0x10 + beq _0201FB18 + mov r0, #0 + b _0201FF44 +_0201FB18: + ldrb r4, [r2, #4] + cmp r4, #0x4e + bne _0201FB78 + mov r5, #0 + b _0201FB68 +_0201FB2C: + add r6, r2, r5 + ldrb r4, [r6, #7] + add r1, r0, r5, lsl #1 + ands r4, r4, #0xf + strb r4, [r0, r5, lsl #1] + orrne r4, r4, r3 + strneb r4, [r1] + ldrb r4, [r6, #7] + add r5, r5, #1 + and r4, r4, #0xf0 + mov r4, r4, asr #4 + strb r4, [r1, #1] + ands r4, r4, #0xff + orrne r4, r4, r3 + strneb r4, [r1, #1] +_0201FB68: + cmp r5, sl + blt _0201FB2C + mov r0, r5 + b _0201FF44 +_0201FB78: + ldrb r4, [r2, #7] + ldrb r7, [r2, #8] + ldrb r6, [r2, #9] + add r4, r4, #3 + str r4, [sp, #0x24] + add r4, r7, #3 + str r4, [sp, #0x20] + add r4, r6, #3 + ldrb r5, [r2, #0xa] + str r4, [sp, #0x1c] + ldrb sb, [r2, #0xb] + add r4, r5, #3 + str r4, [sp, #0x18] + add r4, sb, #3 + str r4, [sp, #0x14] + ldrb r4, [r2, #0xc] + ldrb r6, [r2, #0xd] + ldrb r5, [r2, #0xe] + add r4, r4, #3 + str r4, [sp, #0x10] + add r4, r6, #3 + str r4, [sp, #0xc] + add r4, r5, #3 + str r4, [sp, #8] + ldrb r4, [r2, #0xf] + mov r1, r1, lsl #1 + add r4, r4, #3 + str r4, [sp, #4] + b _0201FF38 +_0201FBEC: + cmp r1, #0 + beq _0201FC00 + cmp ip, r1 + movge r0, #0 + bge _0201FF44 +_0201FC00: + cmp lr, #8 + ldreqb r4, [r2, r8] + addeq r8, r8, #1 + moveq lr, #0 + streq r4, [sp, #0x30] + ldr r4, [sp, #0x30] + tst r4, #0x80 + bne _0201FEEC + add r4, r2, r8 + str r4, [sp] + ldrb r4, [r2, r8] + ldr sb, [sp, #0x24] + str r4, [sp, #0x28] + ldr r5, [sp, #0x28] + ldr r6, [sp, #0x28] + ldr r7, [sp, #0x28] + and r4, r4, #0xf0 + mov r4, r4, asr #4 + ands fp, r5, #0xf + add r6, r6, #1 + sub r7, r7, #1 + mov r5, fp + add r4, r4, #3 + and r6, r6, #0xf + orrne r5, fp, r3 + cmp r6, #0 + and r7, r7, #0xf + orrne r6, r6, r3 + cmp r7, #0 + orrne r7, r7, r3 + cmp r4, sb + ldr sb, [sp, #0x20] + moveq r4, #0x1f + cmp r4, sb + ldr sb, [sp, #0x1c] + moveq r4, #0x1e + cmp r4, sb + ldr sb, [sp, #0x18] + moveq r4, #0x1d + cmp r4, sb + ldr sb, [sp, #0x14] + moveq r4, #0x1c + cmp r4, sb + ldr sb, [sp, #0x10] + moveq r4, #0x1b + cmp r4, sb + ldr sb, [sp, #0xc] + moveq r4, #0x1a + cmp r4, sb + ldr sb, [sp, #8] + moveq r4, #0x19 + cmp r4, sb + ldr sb, [sp, #4] + moveq r4, #0x18 + cmp r4, sb + moveq r4, #0x17 + sub sb, r4, #0x17 + str sb, [sp, #0x2c] + cmp sb, #8 + addls pc, pc, sb, lsl #2 + b _0201FEAC +_0201FCF4: ; jump table + b _0201FE80 ; case 0 + b _0201FE54 ; case 1 + b _0201FE28 ; case 2 + b _0201FDFC ; case 3 + b _0201FDC8 ; case 4 + b _0201FD9C ; case 5 + b _0201FD70 ; case 6 + b _0201FD44 ; case 7 + b _0201FD18 ; case 8 +_0201FD18: + and r5, r5, #0xff + strb r5, [r0, ip] + add r8, r8, #1 + add r4, ip, #1 + strb r5, [r0, r4] + add r4, ip, #2 + strb r5, [r0, r4] + add r4, ip, #3 + strb r5, [r0, r4] + add ip, ip, #4 + b _0201FF28 +_0201FD44: + and r4, r6, #0xff + strb r4, [r0, ip] + add r8, r8, #1 + add r6, ip, #1 + strb r5, [r0, r6] + add r5, ip, #2 + strb r4, [r0, r5] + add r5, ip, #3 + strb r4, [r0, r5] + add ip, ip, #4 + b _0201FF28 +_0201FD70: + strb r7, [r0, ip] + and r5, r5, #0xff + add r8, r8, #1 + add r4, ip, #1 + strb r5, [r0, r4] + add r4, ip, #2 + strb r5, [r0, r4] + add r4, ip, #3 + strb r5, [r0, r4] + add ip, ip, #4 + b _0201FF28 +_0201FD9C: + and r5, r5, #0xff + strb r5, [r0, ip] + add r8, r8, #1 + add r4, ip, #1 + strb r5, [r0, r4] + add r4, ip, #2 + strb r5, [r0, r4] + add r4, ip, #3 + strb r7, [r0, r4] + add ip, ip, #4 + b _0201FF28 +_0201FDC8: + orr r5, fp, r3 + add r8, r8, #1 + and r4, r5, #0xff + sub r6, r5, #1 + strb r4, [r0, ip] + add r5, ip, #1 + strb r4, [r0, r5] + add r5, ip, #2 + strb r6, [r0, r5] + add r5, ip, #3 + strb r4, [r0, r5] + add ip, ip, #4 + b _0201FF28 +_0201FDFC: + and r4, r7, #0xff + strb r4, [r0, ip] + add r8, r8, #1 + add r6, ip, #1 + strb r5, [r0, r6] + add r5, ip, #2 + strb r4, [r0, r5] + add r5, ip, #3 + strb r4, [r0, r5] + add ip, ip, #4 + b _0201FF28 +_0201FE28: + strb r6, [r0, ip] + and r5, r5, #0xff + add r8, r8, #1 + add r4, ip, #1 + strb r5, [r0, r4] + add r4, ip, #2 + strb r5, [r0, r4] + add r4, ip, #3 + strb r5, [r0, r4] + add ip, ip, #4 + b _0201FF28 +_0201FE54: + and r5, r5, #0xff + strb r5, [r0, ip] + add r8, r8, #1 + add r4, ip, #1 + strb r5, [r0, r4] + add r4, ip, #2 + strb r5, [r0, r4] + add r4, ip, #3 + strb r6, [r0, r4] + add ip, ip, #4 + b _0201FF28 +_0201FE80: + and r4, r5, #0xff + strb r4, [r0, ip] + add r8, r8, #1 + add r5, ip, #1 + strb r4, [r0, r5] + add r5, ip, #2 + strb r6, [r0, r5] + add r5, ip, #3 + strb r4, [r0, r5] + add ip, ip, #4 + b _0201FF28 +_0201FEAC: + ldr r5, [sp] + add r8, r8, #2 + ldrb r6, [r5, #1] + sub r5, ip, #0x2000 + add r6, r6, fp, lsl #8 + add r7, r5, r6, lsl #1 + mov r6, #0 + b _0201FEE0 +_0201FECC: + ldrb r5, [r0, r7] + add r7, r7, #1 + add r6, r6, #1 + strb r5, [r0, ip] + add ip, ip, #1 +_0201FEE0: + cmp r6, r4, lsl #1 + blt _0201FECC + b _0201FF28 +_0201FEEC: + ldrb r5, [r2, r8] + add r4, r0, ip + ands r5, r5, #0xf + strb r5, [r0, ip] + orrne r5, r5, r3 + strneb r5, [r4] + ldrb r5, [r2, r8] + add ip, ip, #2 + add r8, r8, #1 + and r5, r5, #0xf0 + mov r5, r5, asr #4 + strb r5, [r4, #1] + ands r5, r5, #0xff + orrne r5, r5, r3 + strneb r5, [r4, #1] +_0201FF28: + ldr r4, [sp, #0x30] + add lr, lr, #1 + mov r4, r4, lsl #1 + str r4, [sp, #0x30] +_0201FF38: + cmp r8, sl + blt _0201FBEC + mov r0, ip +_0201FF44: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end DecompressAtHalf + + arm_func_start DecompressAtFromMemoryPointerVeneer +DecompressAtFromMemoryPointerVeneer: ; 0x0201FF4C + ldr ip, _0201FF54 ; =DecompressAtFromMemoryPointer + bx ip + .align 2, 0 +_0201FF54: .word DecompressAtFromMemoryPointer + arm_func_end DecompressAtFromMemoryPointerVeneer + + arm_func_start DecompressAtFromMemoryPointer +DecompressAtFromMemoryPointer: ; 0x0201FF58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov r5, r2 + ldrb r4, [r5, #5] + ldrb r3, [r5, #6] + ldr r2, _0202046C ; =_022A5038 + mov r7, #0 + str r0, [r2] + str r0, [r2, #0xc] + str r7, [r2, #4] + str r7, [r2, #8] + ldrb r0, [r5] + mov r6, r1 + add r1, r4, r3, lsl #8 + cmp r0, #0x50 + str r1, [sp, #0x28] + ldreqb r1, [r5, #1] + str r7, [sp, #0x24] + mov sl, #8 + cmpeq r1, #0x4b + ldreqb r1, [r5, #2] + cmpeq r1, #0x44 + ldreqb r1, [r5, #3] + cmpeq r1, #0x50 + bne _0201FFF0 + ldrb r1, [r5, #0x10] + ldrb r0, [r5, #0x11] + ldrb r2, [r5, #0x12] + ldrb r3, [r5, #0x13] + add r0, r1, r0, lsl #8 + add r0, r0, r2, lsl #16 + add r0, r0, r3, lsl #24 + cmp r6, #0 + cmpne r6, r0 + movne r0, r7 + bne _02020464 + mov r4, #0x14 + b _02020060 +_0201FFF0: + cmp r0, #0x41 + ldreqb r1, [r5, #1] + cmpeq r1, #0x54 + ldreqb r1, [r5, #2] + cmpeq r1, #0x34 + ldreqb r1, [r5, #3] + cmpeq r1, #0x50 + bne _02020034 + ldrb r1, [r5, #0x10] + ldrb r0, [r5, #0x11] + cmp r6, #0 + add r0, r1, r0, lsl #8 + cmpne r6, r0 + movne r0, #0 + bne _02020464 + mov r4, #0x12 + b _02020060 +_02020034: + cmp r0, #0x41 + ldreqb r0, [r5, #1] + cmpeq r0, #0x54 + ldreqb r0, [r5, #2] + cmpeq r0, #0x33 + ldreqb r0, [r5, #3] + cmpeq r0, #0x50 + moveq r4, #0x10 + beq _02020060 + mov r0, #0 + b _02020464 +_02020060: + ldrb r0, [r5, #4] + cmp r0, #0x4e + bne _0202009C + mov r4, #0 + b _02020084 +_02020074: + add r0, r5, r4 + ldrb r0, [r0, #7] + bl WriteByteFromMemoryPointer + add r4, r4, #1 +_02020084: + ldr r0, [sp, #0x28] + cmp r4, r0 + blt _02020074 + bl sub_020204CC + mov r0, r4 + b _02020464 +_0202009C: + ldrb r0, [r5, #7] + ldrb fp, [r5, #8] + ldrb sb, [r5, #9] + add r0, r0, #3 + str r0, [sp, #0x20] + add r0, fp, #3 + str r0, [sp, #0x1c] + add r0, sb, #3 + ldrb r8, [r5, #0xa] + str r0, [sp, #0x18] + ldrb r3, [r5, #0xb] + add r0, r8, #3 + str r0, [sp, #0x14] + add r0, r3, #3 + ldrb r2, [r5, #0xc] + str r0, [sp, #0x10] + ldrb r1, [r5, #0xd] + add r0, r2, #3 + str r0, [sp, #0xc] + add r0, r1, #3 + str r0, [sp, #8] + ldrb r0, [r5, #0xe] + ldrb r1, [r5, #0xf] + add r0, r0, #3 + str r0, [sp, #4] + add r0, r1, #3 + str r0, [sp] + b _02020450 +_0202010C: + cmp r6, #0 + beq _02020120 + cmp r7, r6 + movge r0, #0 + bge _02020464 +_02020120: + cmp sl, #8 + ldreqb r0, [r5, r4] + addeq r4, r4, #1 + moveq sl, #0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x24] + tst r0, #0x80 + bne _02020430 + ldrb r2, [r5, r4] + add r0, r5, r4 + and r1, r2, #0xf0 + mov r1, r1, asr #4 + add r8, r1, #3 + ldr r1, [sp, #0x20] + and sb, r2, #0xf + cmp r8, r1 + ldr r1, [sp, #0x1c] + moveq r8, #0x1f + cmp r8, r1 + ldr r1, [sp, #0x18] + moveq r8, #0x1e + cmp r8, r1 + ldr r1, [sp, #0x14] + moveq r8, #0x1d + cmp r8, r1 + ldr r1, [sp, #0x10] + moveq r8, #0x1c + cmp r8, r1 + ldr r1, [sp, #0xc] + moveq r8, #0x1b + cmp r8, r1 + ldr r1, [sp, #8] + moveq r8, #0x1a + cmp r8, r1 + ldr r1, [sp, #4] + moveq r8, #0x19 + cmp r8, r1 + ldr r1, [sp] + moveq r8, #0x18 + cmp r8, r1 + moveq r8, #0x17 + sub r1, r8, #0x17 + cmp r1, #8 + addls pc, pc, r1, lsl #2 + b _02020398 +_020201D4: ; jump table + b _02020368 ; case 0 + b _02020338 ; case 1 + b _02020308 ; case 2 + b _020202DC ; case 3 + b _020202AC ; case 4 + b _0202027C ; case 5 + b _0202024C ; case 6 + b _02020220 ; case 7 + b _020201F8 ; case 8 +_020201F8: + add r4, r4, #1 + orr r0, sb, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + and r0, sb, #0xf + orr r0, r0, r0, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_02020220: + add r4, r4, #1 + add r0, sb, #1 + and r8, r0, #0xf + orr r0, r8, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + orr r0, r8, r8, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_0202024C: + add r4, r4, #1 + sub r0, sb, #1 + and r0, r0, #0xf + orr r0, r0, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + and r0, sb, #0xf + orr r0, r0, r0, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_0202027C: + add r4, r4, #1 + orr r0, sb, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + sub r0, sb, #1 + mov r1, r0, lsl #0x1c + and r0, sb, #0xf + orr r0, r0, r1, lsr #24 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_020202AC: + add r4, r4, #1 + orr r0, sb, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + mov r1, sb, lsl #0x1c + sub r0, sb, #1 + and r0, r0, #0xf + orr r0, r0, r1, lsr #24 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_020202DC: + add r4, r4, #1 + sub r0, sb, #1 + and r8, r0, #0xf + orr r0, r8, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + orr r0, r8, r8, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_02020308: + add r4, r4, #1 + add r0, sb, #1 + and r0, r0, #0xf + orr r0, r0, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + and r0, sb, #0xf + orr r0, r0, r0, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_02020338: + add r4, r4, #1 + orr r0, sb, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r0, sb, #1 + mov r1, r0, lsl #0x1c + and r0, sb, #0xf + orr r0, r0, r1, lsr #24 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_02020368: + add r4, r4, #1 + orr r0, sb, sb, lsl #4 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + mov r1, sb, lsl #0x1c + add r0, sb, #1 + and r0, r0, #0xf + orr r0, r0, r1, lsr #24 + and r0, r0, #0xff + bl WriteByteFromMemoryPointer + add r7, r7, #2 + b _02020440 +_02020398: + ldrb r1, [r0, #1] + sub r0, r7, #0x1000 + add r4, r4, #2 + add r1, r1, sb, lsl #8 + add sb, r1, r0 + mov fp, #0 + b _02020424 +_020203B4: + ldr r0, _0202046C ; =_022A5038 + ldr r1, [r0, #0xc] + mov r0, sb, asr #1 + add r0, sb, r0, lsr #30 + mov r0, r0, asr #2 + ldr r1, [r1, r0, lsl #2] + and r0, sb, #3 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _020203EC +_020203DC: ; jump table + b _020203EC ; case 0 + b _020203F4 ; case 1 + b _02020400 ; case 2 + b _0202040C ; case 3 +_020203EC: + and r0, r1, #0xff + b _02020414 +_020203F4: + mov r0, r1, lsr #8 + and r0, r0, #0xff + b _02020414 +_02020400: + mov r0, r1, lsr #0x10 + and r0, r0, #0xff + b _02020414 +_0202040C: + mov r0, r1, lsr #0x18 + and r0, r0, #0xff +_02020414: + bl WriteByteFromMemoryPointer + add r7, r7, #1 + add sb, sb, #1 + add fp, fp, #1 +_02020424: + cmp fp, r8 + blt _020203B4 + b _02020440 +_02020430: + ldrb r0, [r5, r4] + bl WriteByteFromMemoryPointer + add r7, r7, #1 + add r4, r4, #1 +_02020440: + ldr r0, [sp, #0x24] + add sl, sl, #1 + mov r0, r0, lsl #1 + str r0, [sp, #0x24] +_02020450: + ldr r0, [sp, #0x28] + cmp r4, r0 + blt _0202010C + bl sub_020204CC + mov r0, r7 +_02020464: + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0202046C: .word _022A5038 + arm_func_end DecompressAtFromMemoryPointer + + arm_func_start WriteByteFromMemoryPointer +WriteByteFromMemoryPointer: ; 0x02020470 + ldr r1, _020204C4 ; =_022A5038 + ldr r2, _020204C8 ; =_020997A4 + ldr r3, [r1, #8] + ldr ip, [r1, #4] + ldr r2, [r2, r3, lsl #2] + orr r2, ip, r0, lsl r2 + str r2, [r1, #4] + ldr r0, [r1] + str r2, [r0] + ldr r0, [r1, #8] + add r0, r0, #1 + str r0, [r1, #8] + cmp r0, #4 + bxne lr + ldr r2, [r1] + mov r0, #0 + add r2, r2, #4 + str r2, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + bx lr + .align 2, 0 +_020204C4: .word _022A5038 +_020204C8: .word _020997A4 + arm_func_end WriteByteFromMemoryPointer + + arm_func_start sub_020204CC +sub_020204CC: ; 0x020204CC + ldr r0, _020204E8 ; =_022A5038 + ldr r1, [r0, #8] + cmp r1, #0 + ldrne r1, [r0, #4] + ldrne r0, [r0] + strne r1, [r0] + bx lr + .align 2, 0 +_020204E8: .word _022A5038 + arm_func_end sub_020204CC + + arm_func_start GetAtSize +GetAtSize: ; 0x020204EC + ldrb r2, [r0] + cmp r2, #0x50 + ldreqb r1, [r0, #1] + cmpeq r1, #0x4b + ldreqb r1, [r0, #2] + cmpeq r1, #0x44 + ldreqb r1, [r0, #3] + cmpeq r1, #0x50 + bne _02020530 + ldrb r2, [r0, #0x10] + ldrb r1, [r0, #0x11] + ldrb r3, [r0, #0x12] + ldrb ip, [r0, #0x13] + add r0, r2, r1, lsl #8 + add r0, r0, r3, lsl #16 + add r0, r0, ip, lsl #24 + bx lr +_02020530: + cmp r2, #0x41 + ldreqb r1, [r0, #1] + cmpeq r1, #0x54 + ldreqb r1, [r0, #2] + cmpeq r1, #0x34 + ldreqb r1, [r0, #3] + cmpeq r1, #0x50 + ldreqb r1, [r0, #0x10] + ldreqb r0, [r0, #0x11] + addeq r0, r1, r0, lsl #8 + bxeq lr + cmp r2, #0x41 + ldreqb r1, [r0, #1] + cmpeq r1, #0x54 + ldreqb r0, [r0, #2] + cmpeq r0, #0x33 + moveq r0, #0 + movne r0, #0 + bx lr + arm_func_end GetAtSize + + arm_func_start sub_0202057C +sub_0202057C: ; 0x0202057C + stmdb sp!, {lr} + sub sp, sp, #0x54 + add r0, sp, #0 + bl GetDsFirmwareUserSettingsVeneer + ldrsb r0, [sp] + bl sub_020205C0 +#ifdef EUROPE + bl sub_0202059C +#endif + add sp, sp, #0x54 + ldmia sp!, {pc} + arm_func_end sub_0202057C + + arm_func_start sub_0202059C +sub_0202059C: ; 0x0202059C +#ifdef EUROPE + stmdb sp!, {r4, lr} + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + ldmeqia sp!, {r4, pc} + ldr r1, _02020680 ; =LANGUAGE_INFO_DATA + ldr r0, _02020684 ; =_02099C04_EU + ldrsb r1, [r1] + mov r2, r4 + bl Debug_Print0 + ldr r1, _02020680 ; =LANGUAGE_INFO_DATA + mov r0, r4 + strb r4, [r1] + bl sub_020206C0_EU + ldr r1, _02020680 ; =LANGUAGE_INFO_DATA + strb r0, [r1, #1] + ldmia sp!, {r4, pc} + .align 2, 0 +_02020680: .word LANGUAGE_INFO_DATA +_02020684: .word _02099C04_EU +#else + bx lr +#endif + arm_func_end sub_0202059C + + arm_func_start GetLanguageType +GetLanguageType: ; 0x020205A0 + ldr r0, _020205AC ; =LANGUAGE_INFO_DATA + ldrsb r0, [r0, #1] + bx lr + .align 2, 0 +_020205AC: .word LANGUAGE_INFO_DATA + arm_func_end GetLanguageType + +#ifdef EUROPE + arm_func_start sub_02020698_EU +sub_02020698_EU: ; 0x02020698 + and r0, r0, #0xff + cmp r0, #4 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end sub_02020698_EU +#endif + + arm_func_start GetLanguage +GetLanguage: ; 0x020205B0 + ldr r0, _020205BC ; =LANGUAGE_INFO_DATA + ldrsb r0, [r0] + bx lr + .align 2, 0 +_020205BC: .word LANGUAGE_INFO_DATA + arm_func_end GetLanguage + +#ifdef EUROPE + arm_func_start sub_020206C0_EU +sub_020206C0_EU: ; 0x020206C0 + cmp r0, #0 + blt _020206D8_EU + cmp r0, #5 + ldrlt r1, _020206E0_EU ; =_02099BF0_EU + ldrltsb r0, [r1, r0] + bxlt lr +_020206D8_EU: + mvn r0, #0 + bx lr + .align 2, 0 +_020206E0_EU: .word _02099BF0_EU + arm_func_end sub_020206C0_EU +#endif + + arm_func_start sub_020205C0 +sub_020205C0: ; 0x020205C0 + cmp r0, #0 + blt _020205D8 + cmp r0, #9 + ldrlt r1, _020205E0 ; =_020997B4 + ldrltsb r0, [r1, r0] + bxlt lr +_020205D8: + mvn r0, #0 + bx lr + .align 2, 0 +_020205E0: .word _020997B4 + arm_func_end sub_020205C0 + + arm_func_start sub_020205E4 +sub_020205E4: ; 0x020205E4 + stmdb sp!, {r3, lr} + bl sub_0202057C + bl sub_020257FC + bl sub_02023610 + ldmia sp!, {r3, pc} + arm_func_end sub_020205E4 + + arm_func_start sub_020205F8 +sub_020205F8: ; 0x020205F8 + stmdb sp!, {r3, lr} + bl sub_0200B768 + bl LoadStringFile +#ifndef JAPAN + bl sub_0202088C +#endif + ldmia sp!, {r3, pc} + arm_func_end sub_020205F8 + + arm_func_start sub_0202060C +sub_0202060C: ; 0x0202060C + cmp r0, #0 + mvneq r0, #0 + bxeq lr + cmp r0, #0x61 + blo _0202062C + cmp r0, #0x66 + subls r0, r0, #0x57 + bxls lr +_0202062C: + cmp r0, #0x41 + blo _02020640 + cmp r0, #0x46 + subls r0, r0, #0x37 + bxls lr +_02020640: + cmp r0, #0x30 + blo _02020654 + cmp r0, #0x39 + subls r0, r0, #0x30 + bxls lr +_02020654: + mov r0, #0 + bx lr + arm_func_end sub_0202060C + + arm_func_start sub_0202065C +sub_0202065C: ; 0x0202065C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + ldr r6, [r4] + ldrb r0, [r6] + cmp r0, #0x7e + bne _020206C8 + ldrb r0, [r6, #1] + bl sub_0202060C + movs r5, r0 + addmi r0, r6, #1 + strmi r0, [r4] + movmi r0, #0 + ldmmiia sp!, {r4, r5, r6, pc} + ldrb r0, [r6, #2] + bl sub_0202060C + cmp r0, #0 + addlt r1, r6, #2 + movlt r0, r5, lsl #0x10 + strlt r1, [r4] + movlt r0, r0, lsr #0x10 + ldmltia sp!, {r4, r5, r6, pc} + add r0, r0, r5, lsl #4 + add r1, r6, #3 + mov r0, r0, lsl #0x10 + str r1, [r4] + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, r5, r6, pc} +_020206C8: + cmp r0, #0x81 + blo _020206D8 + cmp r0, #0x84 + bls _020206E0 +_020206D8: + cmp r0, #0x87 + bne _020206F0 +_020206E0: + ldrb r1, [r6, #1]! + orr r0, r1, r0, lsl #8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 +_020206F0: + add r1, r6, #1 + str r1, [r4] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_0202065C + + arm_func_start sub_020206FC +sub_020206FC: ; 0x020206FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r1 + ldr r5, [sb] + mov sl, r0 + ldrb r0, [r5] + mov r8, r2 + ldr r4, [sl] + cmp r0, #0x7e + bne _020207F0 + ldrb r0, [r5, #1] + mov r6, #0 + bl sub_0202060C + movs r7, r0 + bpl _02020754 + ldrb r2, [r5] + add r1, r4, #1 + add r0, r5, #1 + strb r2, [r4] + str r1, [sl] + str r0, [sb] + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02020754: + add r0, r4, #1 + cmp r0, r8 + ldrb r0, [r5, #2] + moveq r6, #1 + bl sub_0202060C + cmp r0, #0 + bge _020207A4 + cmp r6, #0 + bne _02020790 + ldrb r1, [r5] + add r0, r4, #2 + strb r1, [r4] + ldrb r1, [r5, #1] + strb r1, [r4, #1] + str r0, [sl] +_02020790: + add r1, r5, #2 + mov r0, r7, lsl #0x10 + str r1, [sb] + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_020207A4: + add r1, r4, #2 + cmp r1, r8 + moveq r6, #1 + cmp r6, #0 + bne _020207D8 + ldrb r2, [r5] + add r1, r4, #3 + strb r2, [r4] + ldrb r2, [r5, #1] + strb r2, [r4, #1] + ldrb r2, [r5, #2] + strb r2, [r4, #2] + str r1, [sl] +_020207D8: + add r0, r0, r7, lsl #4 + add r1, r5, #3 + mov r0, r0, lsl #0x10 + str r1, [sb] + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_020207F0: + cmp r0, #0x81 + blo _02020800 + cmp r0, #0x84 + bls _02020808 +_02020800: + cmp r0, #0x87 + bne _02020850 +_02020808: + ldrb r2, [r5, #1] + add r1, r4, #1 + cmp r1, r8 + orr r0, r2, r0, lsl #8 + mov r0, r0, lsl #0x10 + addeq r1, r5, #2 + mov r0, r0, lsr #0x10 + streq r1, [sb] + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r3, [r5] + add r2, r5, #2 + add r1, r4, #2 + strb r3, [r4] + ldrb r3, [r5, #1] + strb r3, [r4, #1] + str r2, [sb] + str r1, [sl] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02020850: + strb r0, [r4] + add r1, r5, #1 + str r1, [sb] + add r1, r4, #1 + str r1, [sl] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end sub_020206FC + + arm_func_start sub_02020868 +sub_02020868: ; 0x02020868 + b _02020870 +_0202086C: + add r0, r0, #1 +_02020870: + ldrb r1, [r0] + cmp r1, #0 + bne _0202086C + bx lr + arm_func_end sub_02020868 + + arm_func_start sub_02020880 +sub_02020880: ; 0x02020880 + ldr ip, _02020888 ; =strstr + bx ip + .align 2, 0 +_02020888: .word strstr + arm_func_end sub_02020880 + +#ifndef JAPAN + arm_func_start sub_0202088C +sub_0202088C: ; 0x0202088C +#ifdef EUROPE + stmdb sp!, {r3, lr} + bl GetLanguage + ldr r1, _020209E0 ; =_020B05B0_EU + mov r2, r0, lsl #1 + ldrh r2, [r1, r2] + ldr r1, _020209E4 ; =_020B05AC_EU + cmp r0, #2 + strh r2, [r1] + strh r2, [r1, #2] + moveq r0, #0x2e + streqh r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_020209E0: .word _020B05B0_EU +_020209E4: .word _020B05AC_EU +#else + bx lr +#endif + arm_func_end sub_0202088C +#endif + + arm_func_start sub_02020890 +sub_02020890: ; 0x02020890 + cmp r1, #0 + beq _020208C0 + ldr ip, [r0] +_0202089C: + cmp ip, r2 + moveq r0, #0 + streqb r0, [r2, #-1] + bxeq lr + ldrb r3, [r1], #1 + cmp r3, #0 + strneb r3, [ip], #1 + bne _0202089C + str ip, [r0] +_020208C0: + mov r0, #1 + bx lr + arm_func_end sub_02020890 + + arm_func_start StrcmpTag +StrcmpTag: ; 0x020208C8 + ldrb r2, [r1], #1 + ldrb r3, [r0], #1 + cmp r2, #0 + bne _020208F0 + cmp r3, #0 + cmpne r3, #0x3a + cmpne r3, #0x5d + moveq r0, #1 + movne r0, #0 + bx lr +_020208F0: + cmp r3, #0 + moveq r0, #0 + bxeq lr + cmp r3, r2 + beq StrcmpTag + mov r0, #0 + bx lr + arm_func_end StrcmpTag + + arm_func_start AtoiTag +AtoiTag: ; 0x0202090C + mov r3, #0 + mov r1, #0xa +_02020914: + ldrb r2, [r0], #1 + cmp r2, #0 + cmpne r2, #0x3a + cmpne r2, #0x5d + moveq r0, r3 + bxeq lr + cmp r2, #0x30 + blo _02020914 + cmp r2, #0x39 + mlals r2, r3, r1, r2 + subls r3, r2, #0x30 + b _02020914 + arm_func_end AtoiTag + + arm_func_start sub_02020944 +sub_02020944: ; 0x02020944 + bx lr + arm_func_end sub_02020944 + + arm_func_start sub_02020948 +sub_02020948: ; 0x02020948 + stmdb sp!, {r4, lr} + ldrb r4, [r0] + cmp r4, #0x41 + blo _02020A24 + cmp r4, #0x5a + bhi _02020A24 + add r0, r0, #1 + bl AtoiTag + mov r0, r0, lsl #0x10 + cmp r4, #0x49 + mov r0, r0, asr #0x10 + bgt _0202099C + cmp r4, #0x48 + blt _02020990 + beq _020209DC + cmp r4, #0x49 + beq _02020A0C + b _02020A1C +_02020990: + cmp r4, #0x42 + ldmeqia sp!, {r4, pc} + b _02020A1C +_0202099C: + cmp r4, #0x52 + bgt _020209AC + beq _020209EC + b _02020A1C +_020209AC: + cmp r4, #0x54 + bgt _02020A1C + cmp r4, #0x53 + blt _02020A1C + beq _020209CC + cmp r4, #0x54 + beq _020209FC + b _02020A1C +_020209CC: + add r0, r0, #0x21 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_020209DC: + add r0, r0, #0x29 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_020209EC: + add r0, r0, #0x32 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_020209FC: + add r0, r0, #0x3c + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_02020A0C: + add r0, r0, #0x43 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_02020A1C: + mvn r0, #0 + ldmia sp!, {r4, pc} +_02020A24: + cmp r4, #0x30 + blo _02020A44 + cmp r4, #0x39 + bhi _02020A44 + bl AtoiTag + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} +_02020A44: + mvn r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_02020948 + + arm_func_start sub_02020A4C +sub_02020A4C: ; 0x02020A4C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetLanguageType + cmp r0, #3 + ldreq r4, _02020A94 ; =_0209995C + ldrne r4, _02020A98 ; =_0209990C + b _02020A80 +_02020A68: + mov r0, r5 + bl StrcmpTag + cmp r0, #0 + ldrneh r0, [r4, #4] + ldmneia sp!, {r3, r4, r5, pc} + add r4, r4, #8 +_02020A80: + ldr r1, [r4] + cmp r1, #0 + bne _02020A68 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02020A94: .word _0209995C +_02020A98: .word _0209990C + arm_func_end sub_02020A4C + + arm_func_start sub_02020A9C +sub_02020A9C: ; 0x02020A9C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + mov r5, r2 + mov lr, r4 + mov ip, #5 +_02020AB4: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02020AB4 + ldr r0, [r6] + str r0, [lr] + str r5, [r4, #0x54] + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _02020AE8 + ldr r0, [r4, #0x54] + add r1, r4, #8 + blx r2 +_02020AE8: + mov r0, #0 + str r0, [r4, #0x58] + mov r0, #0x78 + mov r1, #0x3c + str r0, [r4, #0x6c] + mov r0, r4 + str r1, [r4, #0x70] + sub r1, r1, #0x3d + str r1, [r4, #0x74] + bl sub_02020B14 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02020A9C + + arm_func_start sub_02020B14 +sub_02020B14: ; 0x02020B14 + mov r3, #0 + str r3, [r0, #0x5c] + strb r3, [r0, #0x9d] + ldr r2, [r0] + ldr r1, [r0, #4] + str r2, [r0, #0x90] + str r1, [r0, #0x94] + mov r2, r3 +_02020B34: + add r1, r0, r3 + add r3, r3, #1 + strb r2, [r1, #0x99] + cmp r3, #4 + blt _02020B34 + bx lr + arm_func_end sub_02020B14 + + arm_func_start sub_02020B4C +sub_02020B4C: ; 0x02020B4C + ldr r2, [r1] + ldr r1, [r1, #4] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + bx lr + arm_func_end sub_02020B4C + + arm_func_start sub_02020B60 +sub_02020B60: ; 0x02020B60 + ldr r2, [r1] + ldr r1, [r1, #4] + str r2, [r0, #0x90] + str r1, [r0, #0x94] + bx lr + arm_func_end sub_02020B60 + + arm_func_start sub_02020B74 +sub_02020B74: ; 0x02020B74 + stmdb sp!, {r3, lr} + mov r2, r0 + strb r1, [r2, #0x98] + ldr r0, [r2, #0x54] + ldr r2, [r2, #0x30] + and r1, r1, #0xff + blx r2 + ldmia sp!, {r3, pc} + arm_func_end sub_02020B74 + + arm_func_start sub_02020B94 +sub_02020B94: ; 0x02020B94 + stmdb sp!, {r3, lr} + mov r2, r0 + strb r1, [r2, #0x98] + strb r1, [r2, #0x9c] + ldrb r1, [r2, #0x98] + ldr r0, [r2, #0x54] + ldr r2, [r2, #0x30] + blx r2 + ldmia sp!, {r3, pc} + arm_func_end sub_02020B94 + + arm_func_start sub_02020BB8 +sub_02020BB8: ; 0x02020BB8 + str r1, [r0, #0x6c] + str r2, [r0, #0x70] + bx lr + arm_func_end sub_02020BB8 + + arm_func_start sub_02020BC4 +sub_02020BC4: ; 0x02020BC4 + stmdb sp!, {r4, lr} + mov r4, r0 + tst r1, #0x400 + movne r0, #1 + moveq r0, #0 + strh r1, [r4, #0x60] + strb r0, [r4, #0x62] + tst r1, #2 + movne r0, #3 + strne r0, [r4, #0x5c] + bne _02020C50 + tst r1, #4 + beq _02020C14 + mov r0, #3 + str r0, [r4, #0x5c] + ldr r1, [r4] + ldr r0, [r4, #4] + str r1, [r4, #0x90] + str r0, [r4, #0x94] + b _02020C50 +_02020C14: + ldr r0, [r4, #0x5c] + cmp r0, #1 + movne r0, #3 + strne r0, [r4, #0x5c] + bne _02020C40 + ldr r1, [r4, #0x6c] + mov r0, #0xc + str r1, [r4, #0x7c] + str r0, [r4, #0x5c] + mov r0, #1 + strb r0, [r4, #0x9d] +_02020C40: + ldr r1, [r4] + ldr r0, [r4, #4] + str r1, [r4, #0x90] + str r0, [r4, #0x94] +_02020C50: + str r2, [r4, #0x88] + str r2, [r4, #0x84] + mov r1, #0 + strh r1, [r4, #0x8c] + str r1, [r4, #0xa4] + strb r1, [r4, #0xa8] + add r2, r4, #0xac + mov r0, r1 +_02020C70: + add r1, r1, #1 + cmp r1, #4 + strb r0, [r2], #0x18 + blt _02020C70 + mov r1, #0x44 + strb r1, [r4, #0x98] + str r0, [r4, #0xa0] + bl Debug_GetDebugFlag + cmp r0, #0 + movne r0, #4 + moveq r0, #1 + str r0, [r4, #0x64] + mov r0, #1 + str r0, [r4, #0x68] + mov r0, #0 + str r0, [r4, #0x78] + str r0, [r4, #0x7c] + str r0, [r4, #0x80] + ldrb r1, [r4, #0x98] + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x30] + blx r2 + ldmia sp!, {r4, pc} + arm_func_end sub_02020BC4 + + arm_func_start sub_02020CCC +sub_02020CCC: ; 0x02020CCC + ldr r1, [r0, #0x5c] + cmp r1, #1 + bne _02020CF4 + ldr r2, [r0, #0x6c] + mov r1, #0xb + str r2, [r0, #0x7c] + str r1, [r0, #0x5c] + mov r1, #1 + strb r1, [r0, #0x9d] + bx lr +_02020CF4: + cmp r1, #0x10 + bxeq lr + ldr r2, [r0, #0x6c] + mov r1, #0xe + str r2, [r0, #0x7c] + str r1, [r0, #0x5c] + mov r1, #1 + strb r1, [r0, #0x9d] + bx lr + arm_func_end sub_02020CCC + + arm_func_start sub_02020D18 +sub_02020D18: ; 0x02020D18 + ldr r1, [r0, #0x5c] + cmp r1, #1 + bxne lr + ldr r2, [r0, #0x6c] + mov r1, #0xd + str r2, [r0, #0x7c] + str r1, [r0, #0x5c] + mov r1, #1 + strb r1, [r0, #0x9d] + bx lr + arm_func_end sub_02020D18 + + arm_func_start sub_02020D40 +sub_02020D40: ; 0x02020D40 + ldr r1, [r0, #0x5c] + cmp r1, #1 + moveq r1, #2 + streq r1, [r0, #0x5c] + bx lr + arm_func_end sub_02020D40 + + arm_func_start sub_02020D54 +sub_02020D54: ; 0x02020D54 + ldr r0, [r0, #0x5c] + bx lr + arm_func_end sub_02020D54 + + arm_func_start sub_02020D5C +sub_02020D5C: ; 0x02020D5C + ldr r0, [r0, #0x5c] + cmp r0, #0 + cmpne r0, #1 + cmpne r0, #2 + cmpne r0, #0x10 + moveq r0, #0 + movne r0, #1 + bx lr + arm_func_end sub_02020D5C + + arm_func_start sub_02020D7C +sub_02020D7C: ; 0x02020D7C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r4, #0 + mov ip, #0x18 + b _02020DB8 +_02020D94: + mla r0, r4, ip, r7 + mov r5, r6 + add lr, r0, #0xac + ldmia lr!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + ldmia lr, {r0, r1} + stmia r5, {r0, r1} + add r6, r6, #0x18 + add r4, r4, #1 +_02020DB8: + ldr r0, [r7, #0xa4] + cmp r4, r0 + blt _02020D94 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02020D7C + + arm_func_start AnalyzeText +AnalyzeText: ; 0x02020DC8 +#ifdef EUROPE +#define ANALYZE_TEXT_STACK_OFFSET 8 +#define ANALYZE_TEXT_LOAD_OFFSET -0x10 +#else +#define ANALYZE_TEXT_STACK_OFFSET 0 +#define ANALYZE_TEXT_LOAD_OFFSET 0 +#endif + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET + mov r4, r0 + ldr r0, [r4, #0x78] + add r0, r0, #1 + str r0, [r4, #0x78] + ldr r0, [r4, #0x5c] + cmp r0, #0x10 + addls pc, pc, r0, lsl #2 + b _02021EC4 +_02020DF0: ; jump table + b _02021EC4 ; case 0 + b _02021EC4 ; case 1 + b _02021EC4 ; case 2 + b _02020E34 ; case 3 + b _02020EC4 ; case 4 + b _02020E4C ; case 5 + b _02020E4C ; case 6 + b _02021C90 ; case 7 + b _02021CE4 ; case 8 + b _02021CE4 ; case 9 + b _02021CE4 ; case 10 + b _02021CE4 ; case 11 + b _02021CE4 ; case 12 + b _02021CE4 ; case 13 + b _02021E90 ; case 14 + b _02021E9C ; case 15 + b _02021EC4 ; case 16 +_02020E34: + ldrh r0, [r4, #0x60] + tst r0, #0x8000 + bne _02020E4C + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x28] + blx r1 +_02020E4C: + ldr r1, [r4, #0x5c] + sub r0, r1, #5 + cmp r0, #1 + bhi _02020EBC + cmp r1, #5 + bne _02020E74 + ldrh r0, [r4, #0x60] + tst r0, #0x1000 + beq _02020E74 + bl sub_02017CEC +_02020E74: + ldrh r0, [r4, #0x60] + tst r0, #0x20 + bne _02020EA8 + tst r0, #0x800 + beq _02020EA8 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x18] + blx r1 + cmp r0, #0 + movne r0, #1 + strneb r0, [r4, #0x62] + movne r0, #0 + strne r0, [r4, #0x7c] +_02020EA8: + ldr r0, [r4, #0x7c] + sub r0, r0, #1 + str r0, [r4, #0x7c] + cmp r0, #0 + bgt _02021EC4 +_02020EBC: + mov r0, #4 + str r0, [r4, #0x5c] +_02020EC4: + ldrb r0, [r4, #0x62] + cmp r0, #0 + movne r0, #0x400 + ldreq r0, [r4, #0x64] + str r0, [r4, #0x80] + mov r0, #0 + str r0, [r4, #0x7c] + b _02021BFC +_02020EE4: + ldr r0, [r4, #0x88] + ldrb r0, [r0] + strh r0, [r4, #0x8c] + cmp r0, #0x5b + bne _02021AB4 + ldr r0, [r4, #0x88] + ldrb r5, [r0] + strh r5, [r4, #0x8c] + cmp r5, #0x5b + bne _02021A70 + ldr r0, [r4, #0x88] + mov r6, #1 + add r0, r0, #1 + str r0, [r4, #0x88] + str r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + add r0, sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET +_02020F24: + ldr r1, [r4, #0x88] + mov r2, r1 + add r1, r1, #1 + str r1, [r4, #0x88] + ldrb r1, [r2] + cmp r1, #0x5d + beq _02020F54 + cmp r1, #0x3a + ldreq r1, [r4, #0x88] + streq r1, [r0, r6, lsl #2] + addeq r6, r6, #1 + b _02020F24 +_02020F54: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldrb r7, [r0] + cmp r7, #0x41 + blo _02021A38 + cmp r7, #0x5a + bhi _02021A38 + sub r1, r7, #0x42 + cmp r1, #0x15 + addls pc, pc, r1, lsl #2 + b _02021A10 +_02020F7C: ; jump table + b _02020FD4 ; case 0 + b _02021040 ; case 1 + b _02021A10 ; case 2 + b _02021A10 ; case 3 + b _0202134C ; case 4 +#ifdef EUROPE + b _0202155C ; case 5 +#else + b _02021A10 ; case 5 +#endif + b _020212F0 ; case 6 + b _02021A10 ; case 7 + b _02021A10 ; case 8 + b _02021404 ; case 9 + b _0202145C ; case 10 + b _02021694 ; case 11 + b _02021A10 ; case 12 + b _02021A10 ; case 13 + b _020217C4 ; case 14 + b _02021A10 ; case 15 + b _02021868 ; case 16 + b _020218D8 ; case 17 + b _02021A10 ; case 18 + b _02021A10 ; case 19 + b _02021A10 ; case 20 + b _020219AC ; case 21 +_02020FD4: + ldr r1, _02021ED0 ; =_020999AC + bl StrcmpTag + cmp r0, #0 + beq _02021018 + ldr r1, [r4, #8] + ldr r3, [r4, #0x94] + ldr r2, [r4, #0x14] + ldr r0, [r4, #0x54] + ldr r5, [r4, #0x48] + add r2, r3, r2 + sub r3, r1, #4 + mov r1, #2 + blx r5 + ldr r0, [r4, #0x94] + add r0, r0, #3 + str r0, [r4, #0x94] + b _02021AA0 +_02021018: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0xe8] + ldr r0, [r0, #0xe4] + str r1, [sp, #0x6c + ANALYZE_TEXT_STACK_OFFSET] + str r0, [sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET + bl Debug_FatalError +_02021040: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EDC ; =_020999C8 + bl StrcmpTag + cmp r0, #0 + beq _02021104 + cmp r6, #2 + bne _02021098 + ldrb r1, [r4, #0x9c] + cmp r1, #0 + ldrne r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + strneb r1, [r4, #0x99] + ldrneb r0, [r0] + strneb r0, [r4, #0x9c] + bne _020210F0 + ldrb r0, [r4, #0x98] + strb r0, [r4, #0x99] + ldrb r0, [r4, #0xa8] + cmp r0, #0 + ldreq r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + ldreqb r0, [r0] + streqb r0, [r4, #0x98] + b _020210F0 +_02021098: + cmp r6, #3 + bne _020210F0 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldrb r2, [r4, #0x9c] + cmp r2, #0 + cmpne r0, #3 + beq _020210D0 + add r1, r4, r0 + ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] + strb r2, [r1, #0x99] + ldrb r0, [r0] + strb r0, [r4, #0x9c] + b _020210F0 +_020210D0: + ldrb r1, [r4, #0x98] + add r0, r4, r0 + strb r1, [r0, #0x99] + ldrb r0, [r4, #0xa8] + cmp r0, #0 + ldreq r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] + ldreqb r0, [r0] + streqb r0, [r4, #0x98] +_020210F0: + ldrb r1, [r4, #0x98] + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x30] + blx r2 + b _02021AA0 +_02021104: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EE0 ; =_020999CC + bl StrcmpTag + cmp r0, #0 + beq _020211C4 + cmp r6, #1 + bne _02021158 + ldrb r0, [r4, #0x9c] + cmp r0, #0 + ldrneb r1, [r4, #0x99] + movne r0, #0 + strneb r1, [r4, #0x9c] + strneb r0, [r4, #0x99] + bne _020211B0 + ldrb r0, [r4, #0xa8] + cmp r0, #0 + ldreqb r0, [r4, #0x99] + streqb r0, [r4, #0x98] + mov r0, #0 + strb r0, [r4, #0x99] + b _020211B0 +_02021158: + cmp r6, #2 + bne _020211B0 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldrb r1, [r4, #0x9c] + cmp r1, #0 + cmpne r0, #3 + beq _02021190 + add r2, r4, r0 + ldrb r1, [r2, #0x99] + mov r0, #0 + strb r1, [r4, #0x9c] + strb r0, [r2, #0x99] + b _020211B0 +_02021190: + ldrb r1, [r4, #0xa8] + cmp r1, #0 + addeq r1, r4, r0 + ldreqb r1, [r1, #0x99] + add r0, r4, r0 + streqb r1, [r4, #0x98] + mov r1, #0 + strb r1, [r0, #0x99] +_020211B0: + ldrb r1, [r4, #0x98] + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x30] + blx r2 + b _02021AA0 +_020211C4: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EE4 ; =_020999D0 + bl StrcmpTag + cmp r0, #0 + beq _02021200 + ldr r0, [r4, #0x88] + ldr r1, [r4, #0x38] + ldr r2, [r4, #0x3c] + bl sub_02022118 + ldr r1, [r4, #8] + sub r0, r1, r0 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r4, #0x90] + b _02021AA0 +_02021200: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EE8 ; =_020999D4 + bl StrcmpTag + cmp r0, #0 + beq _02021278 + ldr r0, [r4, #0xc] + mov r1, #1 + str r0, [r4, #0x94] + str r1, [r4, #0xa0] + mov r0, #9 + str r0, [r4, #0x5c] + strb r1, [r4, #0x9d] + ldr r0, [r4, #0x88] + ldrb r0, [r0] + cmp r0, #0xd + cmpne r0, #0xa + bne _02021260 + ldr r0, [r4, #0x88] + add r0, r0, #1 + str r0, [r4, #0x88] + ldrh r0, [r4, #0x60] + tst r0, #0x40 + movne r0, #7 + strne r0, [r4, #0x5c] +_02021260: + ldrh r0, [r4, #0x60] + tst r0, #0x80 + movne r0, #7 + strne r0, [r4, #0x5c] + mov r0, #1 + b _02021AA4 +_02021278: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EEC ; =_020999D8 + bl StrcmpTag + cmp r0, #0 + beq _0202129C + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + str r0, [r4, #0x90] + b _02021AA0 +_0202129C: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EF0 ; =_020999E4 + bl StrcmpTag + cmp r0, #0 + beq _020212C8 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldr r1, [r4, #0x90] + add r0, r1, r0 + str r0, [r4, #0x90] + b _02021AA0 +_020212C8: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0xf8 - ANALYZE_TEXT_STACK_OFFSET] + ldr r0, [r0, #0xf4 - ANALYZE_TEXT_STACK_OFFSET] + str r1, [sp, #0x64 + ANALYZE_TEXT_STACK_OFFSET] + str r0, [sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET + bl Debug_FatalError +_020212F0: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EF4 ; =_020999F0 + bl StrcmpTag + cmp r0, #0 + beq _02021324 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x94] + add r0, r0, r0, lsr #31 + add r0, r1, r0, asr #1 + str r0, [r4, #0x94] + b _02021AA0 +_02021324: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x100] + ldr r0, [r0, #0xfc] + str r1, [sp, #0x5c + ANALYZE_TEXT_STACK_OFFSET] + str r0, [sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET + bl Debug_FatalError +_0202134C: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EF8 ; =_020999F4 + bl StrcmpTag + cmp r0, #0 + beq _020213A8 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl sub_02020A4C + movs r3, r0 + beq _020213F4 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r5, [r4, #0x40] + blx r5 + ldr r1, [r4, #0x90] + add r0, r1, r0 + str r0, [r4, #0x90] + ldr r0, [r4, #0x68] + str r0, [r4, #0x7c] + ldr r0, [r4, #0x80] + sub r0, r0, #1 + str r0, [r4, #0x80] + b _020213F4 +_020213A8: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021EFC ; =_020999F8 + bl StrcmpTag + cmp r0, #0 + beq _020213CC + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + str r0, [r4, #0x58] + b _020213F4 +_020213CC: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] +#ifdef EUROPE + ldr r1, [r0, #0x108] + ldr r0, [r0, #0x104] + str r1, [sp, #0x5c] + str r0, [sp, #0x58] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x58 + bl Debug_FatalError +_020213F4: + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x34] + blx r1 + b _02021AA0 +_0202155C: + ldr r1, _020220C4 ; =_02099E64_EU + bl StrcmpTag + cmp r0, #0 + beq _02021598 + ldr r1, _020220C8 ; =_020B05AC_EU + ldr r0, [r4, #0x54] + ldrh r3, [r1] + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r5, [r4, #0x40] + blx r5 + ldr r0, [r4, #0x90] + add r0, r0, #6 + str r0, [r4, #0x90] + b _02021AA0 +_02021598: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x78] + ldr r1, [r0, #0x90] + ldr r0, [r0, #0x8c] + str r1, [sp, #0x54] + str r0, [sp, #0x50] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x50 + bl Debug_FatalError +_02021404: + ldr r0, [sp, #0x78] +#else + ldr r1, [r0, #0xa0] + ldr r0, [r0, #0x9c] + str r1, [sp, #0x54] + str r0, [sp, #0x50] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x50 + bl Debug_FatalError +_020213F4: + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x34] + blx r1 + b _02021AA0 +_02021404: +#endif + ldr r1, _02021F00 ; =_020999FC + bl StrcmpTag + cmp r0, #0 + beq _02021434 + ldrh r0, [r4, #0x60] + tst r0, #1 + bne _02021AA0 + mov r0, #8 + str r0, [r4, #0x5c] + mov r0, #1 + strb r0, [r4, #0x9d] + b _02021AA4 +_02021434: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x98 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x94 + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x4c] + str r0, [sp, #0x48] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x48 + bl Debug_FatalError +_0202145C: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F04 ; =_02099A00 + bl StrcmpTag + cmp r0, #0 + beq _020214E8 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldr r2, [r4, #0xa4] + mov r1, #0x18 + mul r3, r2, r1 + add r2, r4, #0xac + mov r1, #1 + strb r1, [r2, r3] + add r3, r2, r3 + strh r0, [r3, #2] + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r2, [r4, #0x94] + ldr r1, [r4, #0x90] + sub r0, r0, #1 + str r1, [r3, #0xc] + str r2, [r3, #0x10] + ldr r1, [r3, #0xc] + stmib r3, {r1, r2} + str r0, [r3, #0x14] + ldrh r0, [r4, #0x60] + tst r0, #0x100 + bne _02021AA0 + ldrb r0, [r4, #0x98] + mov r1, #0x54 + strb r0, [r4, #0xa8] + strb r1, [r4, #0x98] + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x30] + blx r2 + b _02021AA0 +_020214E8: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F08 ; =_02099A04 + bl StrcmpTag + cmp r0, #0 + beq _02021588 + ldr r3, [r4, #0xa4] + add r1, r4, #0xac + mov r0, #0x18 + mla r2, r3, r0, r1 + add r0, r3, #1 + str r0, [r4, #0xa4] + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + str r1, [r2, #0xc] + str r0, [r2, #0x10] + ldr r0, [r2, #0xc] + sub r0, r0, #1 + str r0, [r2, #0xc] + ldr r0, [r4, #0x14] + ldr r1, [r2, #0x10] + sub r0, r0, #1 + add r0, r1, r0 + str r0, [r2, #0x10] + ldrb r0, [r4, #0xa8] + cmp r0, #0 + beq _0202156C + strb r0, [r4, #0x98] + mov r0, #0 + strb r0, [r4, #0xa8] + ldrb r1, [r4, #0x98] + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x30] + blx r2 +_0202156C: + ldrh r0, [r4, #0x60] + tst r0, #0x100 + beq _02021AA0 + mov r0, #7 + str r0, [r4, #0x5c] + mov r0, #1 + b _02021AA4 +_02021588: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F0C ; =_02099A08 + bl StrcmpTag + cmp r0, #0 + beq _0202166C + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + mov r5, r0 + ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + mov r6, r0 + ldr r0, _02021F10 ; =_020997E4 + mov r1, r5, lsl #1 + mov r7, #0 + ldrh sb, [r0, r1] + mov r5, r7 + b _02021654 +_020215CC: + ldr r1, [r4, #0x38] + mov r0, sb + mov r8, r5 + blx r1 + ldr r2, [r4, #0x90] + ldr r1, [r4, #8] + add r0, r2, r0 + cmp r0, r1 + ble _02021608 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r1, [r4, #0x94] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x94] +_02021608: + ldrb r0, [r4, #0x98] + cmp r0, #0x54 + beq _02021630 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r8, [r4, #0x40] + mov r3, sb + blx r8 + mov r8, r0 +_02021630: + ldr r0, [r4, #0x90] + add r7, r7, #1 + add r0, r0, r8 + str r0, [r4, #0x90] + ldr r0, [r4, #0x68] + str r0, [r4, #0x7c] + ldr r0, [r4, #0x80] + sub r0, r0, #1 + str r0, [r4, #0x80] +_02021654: + cmp r7, r6 + blt _020215CC + ldr r0, [r4, #0x90] + add r0, r0, #1 + str r0, [r4, #0x90] + b _02021AA0 +_0202166C: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x90 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x8c + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x40 + bl Debug_FatalError +_02021694: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F14 ; =_02099A10 + bl StrcmpTag + cmp r0, #0 + beq _020216F8 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl sub_02020948 + mov r3, r0 + mvn r0, #0 + cmp r3, r0 + beq _02021AA0 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r5, [r4, #0x44] + blx r5 + ldr r1, [r4, #0x90] + add r0, r1, r0 + str r0, [r4, #0x90] + ldr r0, [r4, #0x68] + str r0, [r4, #0x7c] + ldr r0, [r4, #0x80] + sub r0, r0, #1 + str r0, [r4, #0x80] + b _02021AA0 +_020216F8: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F18 ; =_02099A14 + bl StrcmpTag + cmp r0, #0 + beq _02021728 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldr r2, [r4, #0x90] + mov r1, #6 + mla r1, r0, r1, r2 + str r1, [r4, #0x90] + b _02021AA0 +_02021728: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F1C ; =_02099A18 + bl StrcmpTag + cmp r0, #0 + beq _02021764 +#ifdef EUROPE + ldr r1, _020220C8 ; =_020B05AC_EU + ldr r0, [r4, #0x54] + ldrh r3, [r1, #2] +#else + ldr r0, [r4, #0x54] +#endif + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r5, [r4, #0x40] +#ifndef EUROPE + mov r3, #0x2c +#endif + blx r5 + ldr r0, [r4, #0x90] + add r0, r0, #6 + str r0, [r4, #0x90] + b _02021AA0 +_02021764: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F20 ; =_02099A1C + bl StrcmpTag + cmp r0, #0 + beq _0202179C + ldrh r0, [r4, #0x60] + tst r0, #1 + bne _02021AA0 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl sub_02017C50 + b _02021AA0 +_0202179C: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x88 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x84 + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x3c] + str r0, [sp, #0x38] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x38 + bl Debug_FatalError +_020217C4: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F24 ; =_02099A24 + bl StrcmpTag + cmp r0, #0 + beq _02021840 + ldr r1, [r4, #0xc] + mov r0, #0 + str r1, [r4, #0x94] + str r0, [r4, #0xa0] + mov r0, #9 + str r0, [r4, #0x5c] + mov r0, #1 + strb r0, [r4, #0x9d] + ldr r0, [r4, #0x88] + ldrb r0, [r0] + cmp r0, #0xd + cmpne r0, #0xa + bne _02021828 + ldr r0, [r4, #0x88] + add r0, r0, #1 + str r0, [r4, #0x88] + ldrh r0, [r4, #0x60] + tst r0, #0x40 + movne r0, #7 + strne r0, [r4, #0x5c] +_02021828: + ldrh r0, [r4, #0x60] + tst r0, #0x80 + movne r0, #7 + strne r0, [r4, #0x5c] + mov r0, #1 + b _02021AA4 +_02021840: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x80 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x7c + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x34] + str r0, [sp, #0x30] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x30 + bl Debug_FatalError +_02021868: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F28 ; =_02099A28 + bl StrcmpTag + cmp r0, #0 + beq _020218B0 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r1, [r4, #0x94] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x94] + ldrh r0, [r4, #0x60] + tst r0, #0x40 + beq _02021AA0 + mov r0, #7 + str r0, [r4, #0x5c] + mov r0, #1 + b _02021AA4 +_020218B0: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x78 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x74 + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x2c] + str r0, [sp, #0x28] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x28 + bl Debug_FatalError +_020218D8: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F2C ; =_02099A2C + bl StrcmpTag + cmp r0, #0 + beq _02021904 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + ldr r1, [r4, #0x90] + add r0, r1, r0 + str r0, [r4, #0x90] + b _02021AA0 +_02021904: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F30 ; =_02099A30 + bl StrcmpTag + cmp r0, #0 + movne r0, #0x400 + strne r0, [r4, #0x80] + bne _02021AA0 + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F34 ; =_02099A34 + bl StrcmpTag + cmp r0, #0 + beq _0202194C + ldrb r0, [r4, #0x62] + cmp r0, #0 + movne r0, #0x400 + ldreq r0, [r4, #0x64] + str r0, [r4, #0x80] + b _02021AA0 +_0202194C: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F38 ; =_02099A38 + bl StrcmpTag + cmp r0, #0 + beq _02021984 + ldrh r0, [r4, #0x60] + tst r0, #1 + bne _02021AA0 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl PlaySeByIdVolumeWrapper + b _02021AA0 +_02021984: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x70 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x6c + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x24] + str r0, [sp, #0x20] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x20 + bl Debug_FatalError +_020219AC: + ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, _02021F3C ; =_02099A40 + bl StrcmpTag + cmp r0, #0 + beq _020219E8 + ldrh r0, [r4, #0x60] + tst r0, #1 + bne _02021AA0 + ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET] + bl AtoiTag + str r0, [r4, #0x7c] + mov r0, #6 + str r0, [r4, #0x5c] + mov r0, #1 + b _02021AA4 +_020219E8: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x68 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x64 + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x18 + bl Debug_FatalError +_02021A10: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] +#ifdef EUROPE + ldr r1, [r0, #0x40] + ldr r0, [r0, #0x3c] +#else + ldr r1, [r0, #0x60] + ldr r0, [r0, #0x5c] +#endif + str r1, [sp, #0x14] + str r0, [sp, #0x10] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #0x10 + bl Debug_FatalError +_02021A38: + cmp r7, #0x61 + blo _02021A48 + cmp r7, #0x7a + bls _02021AA0 +_02021A48: + ldr r0, _02021ED4 ; =_020997E4 + ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET] + ldr r1, [r0, #0x58 + ANALYZE_TEXT_LOAD_OFFSET] + ldr r0, [r0, #0x54 + ANALYZE_TEXT_LOAD_OFFSET] + str r1, [sp, #0xc] + str r0, [sp, #8] + ldr r3, [r4, #0x84] + ldr r1, _02021ED8 ; =_020999B0 + add r0, sp, #8 + bl Debug_FatalError +_02021A70: + cmp r5, #0x5b + beq _02021AA0 + ldr r1, _02021ED4 ; =_020997E4 + add r0, sp, #0 +#ifdef EUROPE + ldr r2, [r1, #0x98] + ldr r1, [r1, #0x94] +#else + ldr r2, [r1, #0x48] + ldr r1, [r1, #0x44] +#endif + str r2, [sp, #4] + str r1, [sp] + ldr r2, [r4, #0x88] + ldr r3, [r4, #0x84] + ldr r1, _02021F40 ; =_02099A44 + bl Debug_FatalError +_02021AA0: + mov r0, #0 +_02021AA4: + cmp r0, #0 + beq _02021BC4 + ldr r1, [r4, #0x5c] + b _02021C10 +_02021AB4: + cmp r0, #0 + moveq r1, #7 + streq r1, [r4, #0x5c] + beq _02021C10 + cmp r0, #0xd + cmpne r0, #0xa + bne _02021B0C + ldrh r0, [r4, #0x60] + tst r0, #0x40 + movne r1, #7 + strne r1, [r4, #0x5c] + bne _02021C10 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r1, [r4, #0x94] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x94] + ldr r0, [r4, #0x88] + add r0, r0, #1 + str r0, [r4, #0x88] + b _02021BC4 +_02021B0C: + ldr r7, [r4, #0x88] + add r0, r4, #0x88 + bl sub_0202065C + strh r0, [r4, #0x8c] + ldr r0, [r4, #0x10] + ldrh r6, [r4, #0x8c] + cmp r0, #0 + bne _02021B50 + ldr r8, [r4, #0x90] + cmp r6, #0x7f + addeq r5, r8, #6 + beq _02021B58 + ldr r1, [r4, #0x38] + mov r0, r6 + blx r1 + add r5, r8, r0 + b _02021B58 +_02021B50: + ldr r8, [r4, #0x90] + add r5, r8, r0 +_02021B58: + ldr r0, [r4, #8] + cmp r5, r0 + ble _02021B84 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r1, [r4, #0x94] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0x94] + str r7, [r4, #0x88] + b _02021BC4 +_02021B84: + ldrb r0, [r4, #0x98] + cmp r0, #0x54 + beq _02021BA8 + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x94] + ldr r7, [r4, #0x40] + mov r1, r8 + mov r3, r6 + blx r7 +_02021BA8: + str r5, [r4, #0x90] + ldr r0, [r4, #0x68] + str r0, [r4, #0x7c] + ldr r0, [r4, #0x80] + sub r0, r0, #1 + str r0, [r4, #0x80] + b _02021BFC +_02021BC4: + ldrh r0, [r4, #0x60] + tst r0, #0x400 + bne _02021BFC + ldr r1, [r4, #0x94] + ldr r0, [r4, #0xc] + cmp r1, r0 + blt _02021BFC + mov r0, #0 + str r0, [r4, #0xa0] + mov r0, #1 + mov r1, #9 + strb r0, [r4, #0x9d] + str r1, [r4, #0x5c] + b _02021C10 +_02021BFC: + ldr r0, [r4, #0x80] + cmp r0, #0 + bgt _02020EE4 + mov r1, #5 + str r1, [r4, #0x5c] +_02021C10: + sub r0, r1, #7 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02021C74 +_02021C20: ; jump table + b _02021C54 ; case 0 + b _02021C48 ; case 1 + b _02021C3C ; case 2 + b _02021C74 ; case 3 + b _02021C74 ; case 4 + b _02021C3C ; case 5 + b _02021C3C ; case 6 +_02021C3C: + ldr r0, [r4, #0x6c] + str r0, [r4, #0x7c] + b _02021C74 +_02021C48: + ldr r0, [r4, #0x70] + str r0, [r4, #0x7c] + b _02021C74 +_02021C54: + ldrh r0, [r4, #0x60] + tst r0, #0x4000 + bne _02021C6C + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x24] + blx r1 +_02021C6C: + mov r0, #7 + b _02021EC8 +_02021C74: + ldrh r0, [r4, #0x60] + tst r0, #0x4000 + bne _02021EC4 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x24] + blx r1 + b _02021EC4 +_02021C90: + ldrh r0, [r4, #0x60] + tst r0, #0x10 + beq _02021CCC + mov r0, #0xa + str r0, [r4, #0x5c] + mov r0, #1 + strb r0, [r4, #0x9d] + ldr r1, [r4, #0x74] + cmp r1, #0 + ldrge r0, [r4, #0x78] + subge r0, r1, r0 + strge r0, [r4, #0x7c] + ldrlt r0, [r4, #0x6c] + strlt r0, [r4, #0x7c] + b _02021EC4 +_02021CCC: + tst r0, #0x200 + movne r0, #0x10 + strne r0, [r4, #0x5c] + moveq r0, #1 + streq r0, [r4, #0x5c] + b _02021EC4 +_02021CE4: + ldrh r1, [r4, #0x60] + mov r5, #0 + tst r1, #8 + bne _02021D08 + cmp r0, #0xb + cmpne r0, #0xc + cmpne r0, #0xd + movne r5, #1 + bne _02021D60 +_02021D08: + tst r1, #0x20 + beq _02021D24 + ldr r0, [r4, #0x7c] + subs r0, r0, #1 + str r0, [r4, #0x7c] + movmi r5, #1 + b _02021D60 +_02021D24: + ldrb r0, [r4, #0x9d] + cmp r0, #0 + beq _02021D50 + mov r0, #0 + strb r0, [r4, #0x9d] + bl sub_02006220 + mov r0, #0 + bl sub_020063A0 + mov r0, #0 + bl sub_020063D4 + b _02021D60 +_02021D50: + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x1c] + blx r1 + mov r5, r0 +_02021D60: + cmp r5, #0 + bne _02021DB0 + ldrh r0, [r4, #0x60] + tst r0, #0x20 + bne _02021EC4 + ldr r0, [r4, #0x5c] + cmp r0, #8 + bne _02021D98 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x90] + ldr r2, [r4, #0x94] + ldr r3, [r4, #0x50] + blx r3 + b _02021EC4 +_02021D98: + mvn r1, #0 + ldr r0, [r4, #0x54] + ldr r3, [r4, #0x50] + mov r2, r1 + blx r3 + b _02021EC4 +_02021DB0: + ldr r2, [r4, #0x88] + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x4c] + ldrb r5, [r2] + blx r1 + ldr r0, [r4, #0x5c] + cmp r0, #0xb + moveq r0, #0x10 + streq r0, [r4, #0x5c] + beq _02021EC4 + cmp r0, #0xc + moveq r0, #3 + streq r0, [r4, #0x5c] + beq _02021EC4 + cmp r0, #0xd + moveq r0, #2 + streq r0, [r4, #0x5c] + beq _02021EC4 + cmp r5, #0 + cmpne r0, #0xa + bne _02021E20 + ldrh r0, [r4, #0x60] + tst r0, #0x200 + movne r0, #0x10 + strne r0, [r4, #0x5c] + moveq r0, #1 + streq r0, [r4, #0x5c] + b _02021EC4 +_02021E20: + cmp r0, #9 + bne _02021E84 + ldr r0, [r4] + str r0, [r4, #0x90] + ldr r1, [r4, #0x94] + ldr r0, [r4, #0xc] + cmp r1, r0 + blt _02021E78 + ldr r0, [r4, #4] + str r0, [r4, #0x94] + ldr r0, [r4, #0xa0] + cmp r0, #0 + movne r0, #3 + strne r0, [r4, #0x5c] + bne _02021EC4 + mov r0, #0xf + str r0, [r4, #0x5c] + ldr r0, [r4, #0xc] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r4, #0x7c] + b _02021EC4 +_02021E78: + mov r0, #4 + str r0, [r4, #0x5c] + b _02021EC4 +_02021E84: + mov r0, #4 + str r0, [r4, #0x5c] + b _02021EC4 +_02021E90: + mov r0, #0x10 + str r0, [r4, #0x5c] + b _02021EC4 +_02021E9C: + ldr r0, [r4, #0x7c] + sub r0, r0, #1 + str r0, [r4, #0x7c] + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x2c] + blx r1 + ldr r0, [r4, #0x7c] + cmp r0, #0 + movle r0, #4 + strle r0, [r4, #0x5c] +_02021EC4: + ldr r0, [r4, #0x5c] +_02021EC8: + add sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02021ED0: .word _020999AC +_02021ED4: .word _020997E4 +_02021ED8: .word _020999B0 +_02021EDC: .word _020999C8 +_02021EE0: .word _020999CC +_02021EE4: .word _020999D0 +_02021EE8: .word _020999D4 +_02021EEC: .word _020999D8 +_02021EF0: .word _020999E4 +_02021EF4: .word _020999F0 +_02021EF8: .word _020999F4 +_02021EFC: .word _020999F8 +#ifdef EUROPE +_020220C4: .word _02099E64_EU +_020220C8: .word _020B05AC_EU +#endif +_02021F00: .word _020999FC +_02021F04: .word _02099A00 +_02021F08: .word _02099A04 +_02021F0C: .word _02099A08 +_02021F10: .word _020997E4 +_02021F14: .word _02099A10 +_02021F18: .word _02099A14 +_02021F1C: .word _02099A18 +_02021F20: .word _02099A1C +_02021F24: .word _02099A24 +_02021F28: .word _02099A28 +_02021F2C: .word _02099A2C +_02021F30: .word _02099A30 +_02021F34: .word _02099A34 +_02021F38: .word _02099A38 +_02021F3C: .word _02099A40 +_02021F40: .word _02099A44 + arm_func_end AnalyzeText + + arm_func_start sub_02021F44 +sub_02021F44: ; 0x02021F44 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r1 + mov r0, #0 + ldr r6, _02022020 ; =_02099A24 + ldr r5, _02022024 ; =_020999D4 + ldr r4, _02022028 ; =_02099A00 + str r0, [sb] + add r7, sp, #0x20 +_02021F68: + mov r0, r7 + bl sub_0202065C + cmp r0, #0 + beq _02022010 + cmp r0, #0x5b + bne _02021F68 + ldr r8, [sp, #0x20] + add r1, r8, #1 + str r1, [sp, #0x20] +_02021F8C: + mov r0, r1 + add r1, r1, #1 + str r1, [sp, #0x20] + ldrb r0, [r0] + cmp r0, #0x5d + bne _02021F8C + mov r0, r8 + mov r1, r6 + bl StrcmpTag + cmp r0, #0 + bne _02021FCC + mov r0, r8 + mov r1, r5 + bl StrcmpTag + cmp r0, #0 + beq _02021FF0 +_02021FCC: + ldr r0, [sp, #0x20] + ldrb r0, [r0] + cmp r0, #0xd + cmpne r0, #0xa + ldreq r0, [sp, #0x20] + addeq r0, r0, #1 + streq r0, [sp, #0x20] + ldr r0, [sp, #0x20] + b _02022014 +_02021FF0: + mov r0, r8 + mov r1, r4 + bl StrcmpTag + cmp r0, #0 + ldrne r0, [sb] + addne r0, r0, #1 + strne r0, [sb] + b _02021F68 +_02022010: + mov r0, #0 +_02022014: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02022020: .word _02099A24 +_02022024: .word _020999D4 +_02022028: .word _02099A00 + arm_func_end sub_02021F44 + + arm_func_start sub_0202202C +sub_0202202C: ; 0x0202202C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r0, [r1, #0x14] + str r0, [sp] +_02022040: + add r0, sp, #0 + ldr r4, [sp] + bl sub_0202065C + cmp r0, #0 + beq _020220F4 + cmp r0, #0x5b + bne _020220DC + ldr r4, [sp] + add r1, r4, #1 + str r1, [sp] +_02022068: + mov r0, r1 + add r1, r1, #1 + str r1, [sp] + ldrb r0, [r0] + cmp r0, #0x5d + bne _02022068 + ldr r1, _02022110 ; =_02099A04 + mov r0, r4 + bl StrcmpTag + cmp r0, #0 + bne _020220F4 + ldr r1, _02022114 ; =_02099A00 + mov r0, r4 + bl StrcmpTag + cmp r0, #0 + bne _02022040 + ldr r2, [sp, #0x10] + mov r0, #0x5b + add r1, r2, #1 + str r1, [sp, #0x10] + strb r0, [r2] +_020220BC: + ldr r1, [sp, #0x10] + add r0, r1, #1 + str r0, [sp, #0x10] + ldrb r0, [r4], #1 + strb r0, [r1] + cmp r0, #0x5d + bne _020220BC + b _02022040 +_020220DC: + add r0, sp, #0x10 + add r1, sp, #0 + mov r2, #0 + str r4, [sp] + bl sub_020206FC + b _02022040 +_020220F4: + ldr r0, [sp, #0x10] + mov r1, #0 + strb r1, [r0] + add sp, sp, #4 + ldmia sp!, {r3, r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02022110: .word _02099A04 +_02022114: .word _02099A00 + arm_func_end sub_0202202C + + arm_func_start sub_02022118 +sub_02022118: ; 0x02022118 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + mov r7, r2 + mov r4, #0 +_0202212C: + add r0, sp, #0x18 + bl sub_0202065C + cmp r0, #0 + cmpne r0, #0xd + cmpne r0, #0xa + cmpne r0, #0x1b + beq _020223B4 + cmp r0, #0x5b + bne _020223A8 + ldr r6, [sp, #0x18] + ldr r1, _020223C4 ; =_02099A10 + add r2, r6, #1 + mov r0, r6 + str r2, [sp, #0x18] + mov r5, #0 + bl StrcmpTag + cmp r0, #0 + bne _020221D8 + ldr r1, _020223C8 ; =_020999F4 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020221D8 + ldr r1, _020223CC ; =_02099A2C + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020221D8 + ldr r1, _020223D0 ; =_02099A14 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020221D8 + ldr r1, _020223D4 ; =_02099A18 + mov r0, r6 + bl StrcmpTag +#ifdef EUROPE + cmp r0, #0 + bne _020221D8 + ldr r1, _020225D0 ; =_02099E64_EU + mov r0, r6 + bl StrcmpTag +#endif + cmp r0, #0 + bne _020221D8 + ldr r1, _020223D8 ; =_02099A08 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + beq _02022324 +_020221D8: + ldr r1, [sp, #0x18] +_020221DC: + mov r0, r1 + add r1, r1, #1 + str r1, [sp, #0x18] + ldrb r0, [r0] + cmp r0, #0x3a + bne _02022214 + mov r5, r1 +_020221F8: + mov r0, r1 + add r1, r1, #1 + str r1, [sp, #0x18] + ldrb r0, [r0] + cmp r0, #0x5d + bne _020221F8 + b _0202221C +_02022214: + cmp r0, #0x5d + bne _020221DC +_0202221C: + ldr r1, _020223C4 ; =_02099A10 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + beq _02022250 + mov r0, r5 + bl sub_02020948 + mvn r1, #0 + cmp r0, r1 + beq _0202212C + blx r7 + add r4, r4, r0 + b _0202212C +_02022250: + ldr r1, _020223C8 ; =_020999F4 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + beq _02022280 + mov r0, r5 + bl sub_02020A4C + cmp r0, #0 + beq _0202212C + blx r8 + add r4, r4, r0 + b _0202212C +_02022280: + ldr r1, _020223CC ; =_02099A2C + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + beq _020222A4 + mov r0, r5 + bl AtoiTag + add r4, r4, r0 + b _0202212C +_020222A4: + ldr r1, _020223D0 ; =_02099A14 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + beq _020222CC + mov r0, r5 + bl AtoiTag + mov r1, #6 + mla r4, r0, r1, r4 + b _0202212C +_020222CC: + ldr r1, _020223D4 ; =_02099A18 +#ifdef EUROPE + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + addne r4, r4, #6 + bne _0202212C + ldr r1, _020225D0 ; =_02099A08 +#endif + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + addne r4, r4, #6 + bne _0202212C + mov r6, r5 +_020222E8: + ldrb r0, [r6], #1 + cmp r0, #0x3a + bne _020222E8 + mov r0, r5 + bl AtoiTag + mov r5, r0 + mov r0, r6 + bl AtoiTag + ldr r1, _020223DC ; =_020997E4 + mov r2, r5, lsl #1 + mov r5, r0 + ldrh r0, [r1, r2] + blx r8 + mla r4, r5, r0, r4 + b _0202212C +_02022324: + ldr r1, [sp, #0x18] +_02022328: + mov r0, r1 + add r1, r1, #1 + str r1, [sp, #0x18] + ldrb r0, [r0] + cmp r0, #0x5d + bne _02022328 + ldrb r0, [r6] + cmp r0, #0x41 + blo _0202212C + cmp r0, #0x5a + bhi _0202212C + ldr r1, _020223E0 ; =_02099A24 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020223B4 + ldr r1, _020223E4 ; =_020999D4 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020223B4 + ldr r1, _020223E8 ; =_02099A28 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020223B4 + ldr r1, _020223EC ; =_020999F0 + mov r0, r6 + bl StrcmpTag + cmp r0, #0 + bne _020223B4 + b _0202212C +_020223A8: + blx r8 + add r4, r4, r0 + b _0202212C +_020223B4: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_020223C4: .word _02099A10 +_020223C8: .word _020999F4 +_020223CC: .word _02099A2C +_020223D0: .word _02099A14 +_020223D4: .word _02099A18 +#ifdef EUROPE +_020225D0: .word _02099E64_EU +#endif +_020223D8: .word _02099A08 +_020223DC: .word _020997E4 +_020223E0: .word _02099A24 +_020223E4: .word _020999D4 +_020223E8: .word _02099A28 +_020223EC: .word _020999F0 + arm_func_end sub_02022118 + +; https://decomp.me/scratch/Qhonx + arm_func_start PreprocessString +PreprocessString: ; 0x020223F0 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c8 + sub sp, sp, #0x400 + ldr sl, [sp, #0x5f0] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, r0 + str r0, [sp, #0xc] + and r0, r3, #0x40 + mov sb, r1 + str r0, [sp, #8] + and r0, r3, #0x100 + ldr r8, [sp, #0x600] + add r4, sl, sb + and fp, r3, #0x2000 + str r0, [sp, #4] +_02022434: + ldr r1, [sp, #0x5f0] + cmp r1, r4 + moveq r1, #0 + moveq r0, sb + streqb r1, [r4, #-1] + beq _0202357C + ldr r0, [sp, #0x5f8] + ldrb r5, [r0] + cmp r5, #0 + moveq r0, #0 + streqb r0, [r1] + ldreq r0, [sp, #0x5f0] + subeq r0, r0, sl + beq _0202357C + cmp r5, #0xd + cmpne r5, #0xa + bne _02022490 + ldr r0, [sp, #8] + cmp r0, #0 + bne _02023574 + mov r0, #1 + str r0, [sp, #0xc] + b _02022554 +_02022490: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0202251C + mov r0, #0 + str r0, [sp, #0x10] + str r0, [sp, #0xc] + cmp fp, #0 + beq _02022554 + ldr r1, [r8, #0x4c] + add r0, sp, #0x1c8 + bl sub_02023B68 + movs r6, r0 + beq _02022554 + ldr r1, _0202346C ; =_02099A5C + add r0, sp, #0x5f0 + mov r2, r4 + bl sub_02020890 + cmp r0, #0 + moveq r0, sb + beq _0202357C + add r0, sp, #0x5f0 + mov r1, r6 + mov r2, r4 + bl sub_02020890 + cmp r0, #0 + moveq r0, sb + beq _0202357C + ldr r1, _02023470 ; =_02099A64 + add r0, sp, #0x5f0 + mov r2, r4 + bl sub_02020890 + cmp r0, #0 + bne _02022554 + mov r0, sb + b _0202357C +_0202251C: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02022554 + mov r0, #0 + cmp fp, #0 + str r0, [sp, #0xc] + beq _02022554 + ldr r1, _02023474 ; =_02099A70 + add r0, sp, #0x5f0 + mov r2, r4 + bl sub_02020890 + cmp r0, #0 + moveq r0, sb + beq _0202357C +_02022554: + cmp r5, #0x5b + bne _02023454 + ldr r5, [sp, #0x5f8] + mov r7, #0 + add r0, r5, #1 + str r0, [sp, #0x5f8] + ldrb r2, [r5, #1] + cmp r2, #0x61 + blo _0202332C + cmp r2, #0x7a + bhi _0202332C + str r0, [sp, #0xb4] + mov r6, #1 + add r1, sp, #0xb4 +_0202258C: + mov r2, r0 + add r0, r0, #1 + str r0, [sp, #0x5f8] + ldrb r2, [r2] + cmp r2, #0x5d + beq _020225B4 + cmp r2, #0x3a + streq r0, [r1, r6, lsl #2] + addeq r6, r6, #1 + b _0202258C +_020225B4: + ldr r0, [sp, #0xb4] + ldrb r1, [r0] + sub r1, r1, #0x61 + cmp r1, #0x16 + addls pc, pc, r1, lsl #2 + b _020232C8 +_020225CC: ; jump table + b _02022628 ; case 0 + b _020226BC ; case 1 + b _0202274C ; case 2 + b _02022838 ; case 3 + b _02022908 ; case 4 + b _02022994 ; case 5 + b _020229F0 ; case 6 + b _02022AD8 ; case 7 + b _02022B28 ; case 8 + b _020232C8 ; case 9 + b _02022B8C ; case 10 + b _020232C8 ; case 11 + b _02022C64 ; case 12 + b _02022BE4 ; case 13 + b _020232C8 ; case 14 + b _02022D5C ; case 15 + b _020232C8 ; case 16 + b _02022E30 ; case 17 + b _02022EC0 ; case 18 + b _02022FA0 ; case 19 + b _020232C8 ; case 20 + b _0202313C ; case 21 + b _0202323C ; case 22 +_02022628: + ldr r1, _02023478 ; =_02099A74 + bl StrcmpTag + cmp r0, #0 + beq _02022658 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_0202494C + mov r7, r0 + b _020232F0 +_02022658: + ldr r0, [sp, #0xb4] + ldr r1, _0202347C ; =_02099A7C + bl StrcmpTag + cmp r0, #0 + beq _02022694 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r2, r8, r0, lsl #2 + ldr r1, [r2, #0x10] + ldr r2, [r2, #0x24] + add r0, sp, #0x1c8 + mov r3, #0 + bl sub_020241DC + mov r7, r0 + b _020232F0 +_02022694: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0xd8] + ldr ip, [r1, #0xd4] +#else + ldr r2, [r1, #0x50] + ldr ip, [r1, #0x4c] +#endif + str r2, [sp, #0xb0] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0xac + mov r2, r5 + str ip, [sp, #0xac] + bl Debug_FatalError +_020226BC: + ldr r0, [sp, #0xb4] + ldr r1, _02023488 ; =_02099A84 + bl StrcmpTag + cmp r0, #0 + beq _020226F0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl BankQuantityToString + mov r7, r0 + b _020232F0 +_020226F0: + ldr r0, [sp, #0xb4] + ldr r1, _0202348C ; =_02099A8C + bl StrcmpTag + cmp r0, #0 + beq _02022724 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl MoneyQuantityToString__02023B58 + mov r7, r0 + b _020232F0 +_02022724: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] + ldr r2, [r1, #0xb8] + ldr ip, [r1, #0xb4] + str r2, [sp, #0xa8] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0xa4 + mov r2, r5 + str ip, [sp, #0xa4] + bl Debug_FatalError +_0202274C: + ldr r0, [sp, #0xb4] + ldr r1, _02023490 ; =_02099A98 + bl StrcmpTag + cmp r0, #0 + beq _02022774 + ldr r1, [sp, #0xb8] + add r0, sp, #0x1c8 + bl sub_020240B0 + mov r7, r0 + b _020232F0 +_02022774: + ldr r0, [sp, #0xb4] + ldr r1, _02023494 ; =_02099AA0 + bl StrcmpTag + cmp r0, #0 + beq _020227A8 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024C18 + mov r7, r0 + b _020232F0 +_020227A8: + ldr r0, [sp, #0xb4] + ldr r1, _02023498 ; =_02099AA4 + bl StrcmpTag + cmp r0, #0 + beq _020227D0 + ldr r1, [sp, #0xb8] + add r0, sp, #0x1c8 + bl sub_02024114 + mov r7, r0 + b _020232F0 +_020227D0: + ldr r0, [sp, #0xb4] + ldr r1, _0202349C ; =_02099AAC + bl StrcmpTag + cmp r0, #0 + beq _020227F8 + ldr r1, [sp, #0xb8] + add r0, sp, #0x1c8 + bl sub_02024178 + mov r7, r0 + b _020232F0 +_020227F8: + ldr r0, [sp, #0xb4] + ldr r1, _020234A0 ; =_02099AB8 + bl StrcmpTag + cmp r0, #0 + ldrne r7, _020234A4 ; =_02099AC0 + bne _020232F0 + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] + ldr r2, [r1, #0xc8] + ldr ip, [r1, #0xc4] + str r2, [sp, #0xa0] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x9c + mov r2, r5 + str ip, [sp, #0x9c] + bl Debug_FatalError +_02022838: + ldr r0, [sp, #0xb4] + ldr r1, _020234A8 ; =_02099AC8 + bl StrcmpTag + cmp r0, #0 + beq _02022870 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r2, [r0, #0x24] + ldr r1, _020234AC ; =_02099AD0 + add r0, sp, #0x1c8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_02022870: + ldr r0, [sp, #0xb4] + ldr r1, _020234B0 ; =_02099AD4 + bl StrcmpTag + cmp r0, #0 + beq _020228A8 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r2, [r0, #0x24] + ldr r1, _020234B4 ; =_02099AE0 + add r0, sp, #0x1c8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_020228A8: + ldr r0, [sp, #0xb4] + ldr r1, _020234B8 ; =_02099AF0 + bl StrcmpTag + cmp r0, #0 + beq _020228E0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + ldr r2, [r0, #0x24] + add r0, sp, #0x1c8 + bl sub_020245D0 + mov r7, r0 + b _020232F0 +_020228E0: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0xf8] + ldr ip, [r1, #0xf4] +#else + ldr r2, [r1, #0xe0] + ldr ip, [r1, #0xdc] +#endif + str r2, [sp, #0x98] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x94 + mov r2, r5 + str ip, [sp, #0x94] + bl Debug_FatalError +_02022908: + ldr r0, [sp, #0xb4] + ldr r1, _020234BC ; =_02099AF8 + bl StrcmpTag + cmp r0, #0 + beq _02022938 + ldr r1, [r8, #0x34] + add r0, sp, #0x1c8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl sub_02024E34 + mov r7, r0 + b _020232F0 +_02022938: + ldr r0, [sp, #0xb4] + ldr r1, _020234C0 ; =_02099B04 + bl StrcmpTag + cmp r0, #0 + beq _0202296C + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl ExpQuantityToString + mov r7, r0 + b _020232F0 +_0202296C: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x110] + ldr ip, [r1, #0x10c] +#else + ldr r2, [r1, #0x108] + ldr ip, [r1, #0x104] +#endif + str r2, [sp, #0x90] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x8c + mov r2, r5 + str ip, [sp, #0x8c] + bl Debug_FatalError +_02022994: + ldr r0, [sp, #0xb4] + ldr r1, _020234C4 ; =_02099B10 + bl StrcmpTag + cmp r0, #0 + beq _020229C8 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl sub_02024598 + mov r7, r0 + b _020232F0 +_020229C8: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #8] + ldr ip, [r1, #4] +#else + ldr r2, [r1, #0x20] + ldr ip, [r1, #0x1c] +#endif + str r2, [sp, #0x88] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x84 + mov r2, r5 + str ip, [sp, #0x84] + bl Debug_FatalError +_020229F0: + ldr r0, [sp, #0xb4] + ldr r1, _020234C8 ; =_02099B18 + bl StrcmpTag + cmp r0, #0 + beq _02022A14 + add r0, sp, #0x1c8 + bl GetBagNameString + mov r7, r0 + b _020232F0 +_02022A14: + ldr r0, [sp, #0xb4] + ldr r1, _020234CC ; =_02099B24 + bl StrcmpTag + cmp r0, #0 + beq _02022A48 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024D7C + mov r7, r0 + b _020232F0 +_02022A48: + ldr r0, [sp, #0xb4] + ldr r1, _020234D0 ; =_02099B2C + bl StrcmpTag + cmp r0, #0 + beq _02022A7C + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl sub_020238D0 + mov r7, r0 + b _020232F0 +_02022A7C: + ldr r0, [sp, #0xb4] + ldr r1, _020234D4 ; =_02099B34 + bl StrcmpTag + cmp r0, #0 + beq _02022AB0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x24] + add r0, sp, #0x1c8 + bl MoneyQuantityToString__02023B30 + mov r7, r0 + b _020232F0 +_02022AB0: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x10] + ldr ip, [r1, #0xc] +#else + ldr r2, [r1, #0x18] + ldr ip, [r1, #0x14] +#endif + str r2, [sp, #0x80] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x7c + mov r2, r5 + str ip, [sp, #0x7c] + bl Debug_FatalError +_02022AD8: + ldr r0, [sp, #0xb4] + ldr r1, _020234D8 ; =_02099B40 + bl StrcmpTag + cmp r0, #0 + beq _02022B00 + add r0, sp, #0x1c8 + mov r1, #0x3c + bl sub_02023DC0 + mov r7, r0 + b _020232F0 +_02022B00: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x20] + ldr ip, [r1, #0x1c] +#else + ldr r2, [r1, #0x10] + ldr ip, [r1, #0xc] +#endif + str r2, [sp, #0x78] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x74 + mov r2, r5 + str ip, [sp, #0x74] + bl Debug_FatalError +_02022B28: + ldr r0, [sp, #0xb4] + ldr r1, _020234DC ; =_02099B48 + bl StrcmpTag + cmp r0, #0 + beq _02022B64 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r3, r8, r0, lsl #2 + ldr r1, [r3, #0x10] + ldr r2, [r3, #0x24] + ldr r3, [r3, #0x28] + add r0, sp, #0x1c8 + bl sub_020241DC + mov r7, r0 + b _020232F0 +_02022B64: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] + ldr r2, [r1, #0x28] + ldr ip, [r1, #0x24] + str r2, [sp, #0x70] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x6c + mov r2, r5 + str ip, [sp, #0x6c] + bl Debug_FatalError +_02022B8C: + ldr r0, [sp, #0xb4] + ldr r1, _020234E0 ; =_02099B50 + bl StrcmpTag + cmp r0, #0 + beq _02022BBC + ldr r0, [sp, #0xb8] + bl AtoiTag + ldr r1, [r8, r0, lsl #2] + add r0, sp, #0x1c8 + bl sub_02023920 + mov r7, r0 + b _020232F0 +_02022BBC: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x50] + ldr ip, [r1, #0x4c] +#else + ldr r2, [r1, #0x40] + ldr ip, [r1, #0x3c] +#endif + str r2, [sp, #0x68] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x64 + mov r2, r5 + str ip, [sp, #0x64] + bl Debug_FatalError +_02022BE4: + ldr r0, [sp, #0xb4] + ldr r1, _020234E4 ; =_02099B58 + bl StrcmpTag + cmp r0, #0 + beq _02022C14 + ldr r0, [sp, #0xb8] + bl AtoiTag + ldr r1, [r8, r0, lsl #2] + add r0, sp, #0x1c8 + bl sub_02023B68 + mov r7, r0 + b _020232F0 +_02022C14: + ldr r0, [sp, #0xb4] + ldr r1, _020234E8 ; =_02099B60 + bl StrcmpTag + cmp r0, #0 + beq _02022C3C + add r0, sp, #0x1c8 + mov r1, #2 + bl GetCurrentTeamNameString + mov r7, r0 + b _020232F0 +_02022C3C: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0xe0] + ldr ip, [r1, #0xdc] +#else + ldr r2, [r1, #0xa8] + ldr ip, [r1, #0xa4] +#endif + str r2, [sp, #0x60] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x5c + mov r2, r5 + str ip, [sp, #0x5c] + bl Debug_FatalError +_02022C64: + ldr r0, [sp, #0xb4] + ldr r1, _020234EC ; =_02099B6C + bl StrcmpTag + cmp r0, #0 + beq _02022C9C + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + ldr r2, [r0, #0x24] + add r0, sp, #0x1c8 + bl sub_020242F8 + mov r7, r0 + b _020232F0 +_02022C9C: + ldr r0, [sp, #0xb4] + ldr r1, _020234F0 ; =_02099B74 + bl StrcmpTag + cmp r0, #0 + beq _02022CD4 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r2, [r0, #0x24] + ldr r1, _020234F4 ; =_02099B7C + add r0, sp, #0x1c8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_02022CD4: + ldr r0, [sp, #0xb4] + ldr r1, _020234F8 ; =_02099B8C + bl StrcmpTag + cmp r0, #0 + beq _02022D04 + ldr r1, [r8, #0x34] + add r0, sp, #0x1c8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl SetStringAccuracy + mov r7, r0 + b _020232F0 +_02022D04: + ldr r0, [sp, #0xb4] + ldr r1, _020234FC ; =_02099B9C + bl StrcmpTag + cmp r0, #0 + beq _02022D34 + ldr r1, [r8, #0x34] + add r0, sp, #0x1c8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl SetStringPower + mov r7, r0 + b _020232F0 +_02022D34: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0xd0] + ldr ip, [r1, #0xcc] +#else + ldr r2, [r1, #0xc0] + ldr ip, [r1, #0xbc] +#endif + str r2, [sp, #0x58] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x54 + mov r2, r5 + str ip, [sp, #0x54] + bl Debug_FatalError +_02022D5C: + ldr r0, [sp, #0xb4] + ldr r1, _02023500 ; =_02099BA8 + bl StrcmpTag + cmp r0, #0 + beq _02022D84 + add r0, sp, #0x1c8 + mov r1, #0x3d + bl sub_02023DC0 + mov r7, r0 + b _020232F0 +_02022D84: + ldr r0, [sp, #0xb4] + ldr r1, _02023504 ; =_02099BB0 + bl StrcmpTag + cmp r0, #0 + beq _02022DAC + add r0, sp, #0x1c8 + mov r1, #0x3e + bl sub_02023DC0 + mov r7, r0 + b _020232F0 +_02022DAC: + ldr r0, [sp, #0xb4] + ldr r1, _02023508 ; =_02099BBC + bl StrcmpTag + cmp r0, #0 + beq _02022DD4 + add r0, sp, #0x1c8 + mov r1, #0x3f + bl sub_02023DC0 + mov r7, r0 + b _020232F0 +_02022DD4: + ldr r0, [sp, #0xb4] + ldr r1, _0202350C ; =_02099BC4 + bl StrcmpTag + cmp r0, #0 + beq _02022E08 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024A68 + mov r7, r0 + b _020232F0 +_02022E08: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x118] + ldr ip, [r1, #0x114] +#else + ldr r2, [r1, #0xf0] + ldr ip, [r1, #0xec] +#endif + str r2, [sp, #0x50] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x4c + mov r2, r5 + str ip, [sp, #0x4c] + bl Debug_FatalError +_02022E30: + ldr r0, [sp, #0xb4] + ldr r1, _02023510 ; =_02099BCC + bl StrcmpTag + cmp r0, #0 + beq _02022E64 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl GetRankString + mov r7, r0 + b _020232F0 +_02022E64: + ldr r0, [sp, #0xb4] + ldr r1, _02023514 ; =_02099BD4 + bl StrcmpTag + cmp r0, #0 + beq _02022E98 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024B48 + mov r7, r0 + b _020232F0 +_02022E98: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r2, [r1, #0x18] + ldr ip, [r1, #0x14] +#else + ldr r2, [r1, #8] + ldr ip, [r1, #4] +#endif + str r2, [sp, #0x48] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x44 + mov r2, r5 + str ip, [sp, #0x44] + bl Debug_FatalError +_02022EC0: + ldr r0, [sp, #0xb4] + ldr r1, _02023518 ; =_02099BDC + bl StrcmpTag + cmp r0, #0 + beq _02022EF8 + ldr r0, [sp, #0xb8] + bl AtoiTag + mov r2, #0 + orr r1, r0, #0x50000 + add r0, sp, #0x1c8 + mov r3, r2 + bl sub_020241DC + mov r7, r0 + b _020232F0 +_02022EF8: + ldr r0, [sp, #0xb4] + ldr r1, _0202351C ; =_02099BE4 + bl StrcmpTag + cmp r0, #0 + ldrne r7, [r8, #0x38] + bne _020232F0 + ldr r0, [sp, #0xb4] + ldr r1, _02023520 ; =_02099BEC + bl StrcmpTag + cmp r0, #0 + beq _02022F40 + cmp r6, #2 + bne _020232F0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r7, [r0, #0x38] + b _020232F0 +_02022F40: + ldr r0, [sp, #0xb4] + ldr r1, _02023524 ; =_02099BF4 + bl StrcmpTag + cmp r0, #0 + beq _02022F78 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r2, [r0, #0x24] + ldr r1, _02023528 ; =_02099BFC + add r0, sp, #0x1c8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_02022F78: + ldr r1, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] + ldr r2, [r1, #0x30] + ldr ip, [r1, #0x2c] + str r2, [sp, #0x40] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x3c + mov r2, r5 + str ip, [sp, #0x3c] + bl Debug_FatalError +_02022FA0: + ldr r0, [sp, #0xb4] + ldr r1, _0202352C ; =_02099C0C + bl StrcmpTag + cmp r0, #0 + beq _02022FD4 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024B94 + mov r7, r0 + b _020232F0 +_02022FD4: + ldr r0, [sp, #0xb4] + ldr r1, _02023530 ; =_02099C14 + bl StrcmpTag + cmp r0, #0 + beq _02023008 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_020244F4 + mov r7, r0 + b _020232F0 +_02023008: + ldr r0, [sp, #0xb4] + ldr r1, _02023534 ; =_02099C1C + bl StrcmpTag + cmp r0, #0 + beq _0202303C + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024D48 + mov r7, r0 + b _020232F0 +_0202303C: + ldr r0, [sp, #0xb4] + ldr r1, _02023538 ; =_02099C24 + bl StrcmpTag + cmp r0, #0 + beq _02023094 + cmp r6, #1 + bne _0202306C + add r0, sp, #0x1c8 + mov r1, #0 + bl GetCurrentTeamNameString + mov r7, r0 + b _020232F0 +_0202306C: + cmp r6, #2 + bne _020232F0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl GetCurrentTeamNameString + mov r7, r0 + b _020232F0 +_02023094: + ldr r0, [sp, #0xb4] + ldr r1, _0202353C ; =_02099C2C + bl StrcmpTag + cmp r0, #0 + beq _02023114 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r5, [r0, #0x24] + mov r1, #0xe10 + mov r0, r5 + bl _u32_div_f + mov r6, r0 + mov r0, r5 + mov r1, #0xe10 + bl _u32_div_f + mov r5, r1 + mov r0, r5 + mov r1, #0x3c + bl _u32_div_f + mov r7, r0 + mov r0, r5 + mov r1, #0x3c + bl _u32_div_f + str r1, [sp] + ldr r1, _02023540 ; =_02099C34 + mov r2, r6 + mov r3, r7 + add r0, sp, #0x1c8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_02023114: + ldr r0, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r1, [r0, #0xa0] + ldr r2, [r0, #0x9c] +#else + ldr r1, [r0, #0xb0] + ldr r2, [r0, #0xac] +#endif + str r1, [sp, #0x38] + str r2, [sp, #0x34] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x34 + mov r2, r5 + bl Debug_FatalError +_0202313C: + ldr r0, [sp, #0xb4] + ldr r1, _02023544 ; =_02099C44 + bl StrcmpTag + cmp r0, #0 + beq _02023180 + ldr r0, [sp, #0xb8] + bl AtoiTag + mov r5, r0 + ldr r0, [sp, #0xbc] + bl AtoiTag + add r1, r8, r5, lsl #2 + mov r2, r0 + ldr r1, [r1, #0x24] + add r0, sp, #0x1c8 + bl sub_0202372C + mov r7, r0 + b _020232F0 +_02023180: + ldr r0, [sp, #0xb4] + ldr r1, _02023548 ; =_02099C4C + bl StrcmpTag + cmp r0, #0 + beq _020231D8 + ldr r0, [sp, #0xb8] + bl AtoiTag + mov r5, r0 + ldr r0, [sp, #0xbc] + bl AtoiTag + add r1, r8, r5, lsl #2 + ldr r3, [r1, #0x24] + mov r2, r0 + ldr r1, _0202354C ; =_02099C54 + add r0, sp, #0xc8 + bl SprintfStatic__02023590 + ldr r1, _02023550 ; =_02099C5C + add r0, sp, #0x1c8 + add r2, sp, #0xc8 + bl SprintfStatic__02023590 + add r7, sp, #0x1c8 + b _020232F0 +_020231D8: + ldr r0, [sp, #0xb4] + ldr r1, _02023554 ; =_02099C68 + bl StrcmpTag + cmp r0, #0 + beq _02023214 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r2, r8, r0, lsl #2 + ldr r1, [r2, #0x10] + ldr r2, [r2, #0x24] + add r0, sp, #0x1c8 + mov r3, #0 + bl sub_020241DC + mov r7, r0 + b _020232F0 +_02023214: + ldr r0, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r1, [r0, #0xc0] + ldr r2, [r0, #0xbc] +#else + ldr r1, [r0, #0xd0] + ldr r2, [r0, #0xcc] +#endif + str r1, [sp, #0x30] + str r2, [sp, #0x2c] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x2c + mov r2, r5 + bl Debug_FatalError +_0202323C: + ldr r0, [sp, #0xb4] + ldr r1, _02023558 ; =_02099C70 + bl StrcmpTag + cmp r0, #0 + beq _0202326C + ldr r0, [sp, #0xb8] + bl AtoiTag + ldr r1, [r8, r0, lsl #2] + add r0, sp, #0x1c8 + bl sub_02024AA8 + mov r7, r0 + b _020232F0 +_0202326C: + ldr r0, [sp, #0xb4] + ldr r1, _0202355C ; =_02099C78 + bl StrcmpTag + cmp r0, #0 + beq _020232A0 + ldr r0, [sp, #0xb8] + bl AtoiTag + add r0, r8, r0, lsl #2 + ldr r1, [r0, #0x10] + add r0, sp, #0x1c8 + bl sub_02024BD8 + mov r7, r0 + b _020232F0 +_020232A0: + ldr r0, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] + ldr r1, [r0, #0x38] + ldr r2, [r0, #0x34] + str r1, [sp, #0x28] + str r2, [sp, #0x24] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x24 + mov r2, r5 + bl Debug_FatalError +_020232C8: + ldr r0, _02023480 ; =_020997E4 + ldr r3, [sp, #0xb4] +#ifdef EUROPE + ldr r1, [r0, #0xa8] + ldr r2, [r0, #0xa4] +#else + ldr r1, [r0, #0xd8] + ldr r2, [r0, #0xd4] +#endif + str r1, [sp, #0x20] + str r2, [sp, #0x1c] + ldr r1, _02023484 ; =_020999B0 + add r0, sp, #0x1c + mov r2, r5 + bl Debug_FatalError +_020232F0: + cmp r7, #0 + beq _02022434 +_020232F8: + ldr r2, [sp, #0x5f0] + cmp r2, r4 + moveq r1, #0 + moveq r0, sb + streqb r1, [r4, #-1] + beq _0202357C + ldrb r1, [r7], #1 + cmp r1, #0 + beq _02022434 + add r0, r2, #1 + str r0, [sp, #0x5f0] + strb r1, [r2] + b _020232F8 +_0202332C: + cmp r2, #0x41 + blo _0202342C + cmp r2, #0x5a + bhi _0202342C + ldr r1, _02023560 ; =_02099A24 + add r0, r5, #1 + bl StrcmpTag + cmp r0, #0 + bne _02023364 + ldr r1, _02023564 ; =_020999D4 + add r0, r5, #1 + bl StrcmpTag + cmp r0, #0 + beq _02023390 +_02023364: + ldr r0, [sp, #0x5f8] + ldrb r0, [r0] + cmp r0, #0xd + cmpne r0, #0xa + ldreq r0, [sp, #0x5f8] + addeq r0, r0, #1 + streq r0, [sp, #0x5f8] + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0xc] + b _020233D8 +_02023390: + ldr r1, _02023568 ; =_02099A28 + add r0, r5, #1 + bl StrcmpTag + cmp r0, #0 + beq _020233BC + ldr r0, [sp, #8] + cmp r0, #0 + bne _02023574 + mov r0, #1 + str r0, [sp, #0xc] + b _020233D8 +_020233BC: + ldr r1, _0202356C ; =_02099A04 + add r0, r5, #1 + bl StrcmpTag + cmp r0, #0 + ldrne r0, [sp, #4] + cmpne r0, #0 + bne _02023574 +_020233D8: + ldr r2, [sp, #0x5f0] + mov r0, #0x5b + add r1, r2, #1 + str r1, [sp, #0x5f0] + strb r0, [r2] +_020233EC: + ldr r3, [sp, #0x5f0] + cmp r3, r4 + moveq r1, #0 + moveq r0, sb + streqb r1, [r4, #-1] + beq _0202357C + ldr r2, [sp, #0x5f8] + add r0, r3, #1 + add r1, r2, #1 + str r1, [sp, #0x5f8] + ldrb r1, [r2] + str r0, [sp, #0x5f0] + strb r1, [r3] + cmp r1, #0x5d + beq _02022434 + b _020233EC +_0202342C: + ldr r1, _02023480 ; =_020997E4 + add r0, sp, #0x14 +#ifdef EUROPE + ldr r3, [r1, #0xb0] + ldr r1, [r1, #0xac] +#else + ldr r3, [r1, #0x110] + ldr r1, [r1, #0x10c] +#endif + str r3, [sp, #0x18] + str r1, [sp, #0x14] + ldr r1, _02023570 ; =_02099C84 + mov r3, r2 + str r5, [sp] + bl Debug_FatalError +_02023454: + add r1, sp, #0x500 + add r0, sp, #0x5f0 + add r1, r1, #0xf8 + mov r2, r4 + bl sub_020206FC + b _02022434 + .align 2, 0 +_0202346C: .word _02099A5C +_02023470: .word _02099A64 +_02023474: .word _02099A70 +_02023478: .word _02099A74 +_0202347C: .word _02099A7C +_02023480: .word _020997E4 +_02023484: .word _020999B0 +_02023488: .word _02099A84 +_0202348C: .word _02099A8C +_02023490: .word _02099A98 +_02023494: .word _02099AA0 +_02023498: .word _02099AA4 +_0202349C: .word _02099AAC +_020234A0: .word _02099AB8 +_020234A4: .word _02099AC0 +_020234A8: .word _02099AC8 +_020234AC: .word _02099AD0 +_020234B0: .word _02099AD4 +_020234B4: .word _02099AE0 +_020234B8: .word _02099AF0 +_020234BC: .word _02099AF8 +_020234C0: .word _02099B04 +_020234C4: .word _02099B10 +_020234C8: .word _02099B18 +_020234CC: .word _02099B24 +_020234D0: .word _02099B2C +_020234D4: .word _02099B34 +_020234D8: .word _02099B40 +_020234DC: .word _02099B48 +_020234E0: .word _02099B50 +_020234E4: .word _02099B58 +_020234E8: .word _02099B60 +_020234EC: .word _02099B6C +_020234F0: .word _02099B74 +_020234F4: .word _02099B7C +_020234F8: .word _02099B8C +_020234FC: .word _02099B9C +_02023500: .word _02099BA8 +_02023504: .word _02099BB0 +_02023508: .word _02099BBC +_0202350C: .word _02099BC4 +_02023510: .word _02099BCC +_02023514: .word _02099BD4 +_02023518: .word _02099BDC +_0202351C: .word _02099BE4 +_02023520: .word _02099BEC +_02023524: .word _02099BF4 +_02023528: .word _02099BFC +_0202352C: .word _02099C0C +_02023530: .word _02099C14 +_02023534: .word _02099C1C +_02023538: .word _02099C24 +_0202353C: .word _02099C2C +_02023540: .word _02099C34 +_02023544: .word _02099C44 +_02023548: .word _02099C4C +_0202354C: .word _02099C54 +_02023550: .word _02099C5C +_02023554: .word _02099C68 +_02023558: .word _02099C70 +_0202355C: .word _02099C78 +_02023560: .word _02099A24 +_02023564: .word _020999D4 +_02023568: .word _02099A28 +_0202356C: .word _02099A04 +_02023570: .word _02099C84 +_02023574: + ldr r0, [sp, #0x5f0] + sub r0, r0, sl +_0202357C: + add sp, sp, #0x1c8 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + add sp, sp, #0x10 + bx lr + arm_func_end PreprocessString + + arm_func_start SprintfStatic__02023590 +SprintfStatic__02023590: ; 0x02023590 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02023590 + + arm_func_start PreprocessStringFromId +PreprocessStringFromId: ; 0x020235B8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r0, r2 + mov r5, r1 + mov r4, r3 + bl StringFromId + ldr ip, [sp, #0x18] + mov r2, r0 + mov r0, r6 + mov r1, r5 + mov r3, r4 + str ip, [sp] + bl PreprocessString + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end PreprocessStringFromId + + arm_func_start StrcmpTagVeneer +StrcmpTagVeneer: ; 0x020235F8 + ldr ip, _02023600 ; =StrcmpTag + bx ip + .align 2, 0 +_02023600: .word StrcmpTag + arm_func_end StrcmpTagVeneer + + arm_func_start AtoiTagVeneer +AtoiTagVeneer: ; 0x02023604 + ldr ip, _0202360C ; =AtoiTag + bx ip + .align 2, 0 +_0202360C: .word AtoiTag + arm_func_end AtoiTagVeneer + +#ifdef EUROPE + arm_func_start sub_0202380C_EU +sub_0202380C_EU: ; 0x0202380C + ldr ip, _02023814 ; =sub_02020A4C + bx ip + .align 2, 0 +_02023814: .word sub_02020A4C + arm_func_end sub_0202380C_EU +#endif + + arm_func_start sub_02023610 +sub_02023610: ; 0x02023610 + stmdb sp!, {r3, r4, r5, r6, r7, lr} +#ifdef EUROPE + bl GetLanguageType + cmp r0, #5 + moveq r1, #1 + ldr r0, _02023864 ; =_020B05BC_EU + movne r1, #0 +#endif + ldr r6, _02023644 ; =_022A5048 + ldr r5, _02023648 ; =_02099CA0 + mov r7, #0 +#ifdef EUROPE + strb r1, [r0] +#endif + mov r4, #1 +_02023624: + mov r2, r4 + add r0, r6, r7, lsl #2 + add r1, r5, r7 + bl StrncpySimpleNoPadSafe + add r7, r7, #1 + cmp r7, #3 + blt _02023624 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +#ifdef EUROPE +_02023864: .word _020B05BC_EU +#endif +_02023644: .word _022A5048 +_02023648: .word _02099CA0 + arm_func_end sub_02023610 + + arm_func_start sub_0202364C +sub_0202364C: ; 0x02023610 + ldrb r2, [r1], #1 + ldrb r3, [r0], #1 + cmp r2, #0 + bne _02023674 + cmp r3, #0 + cmpne r3, #0x3a + cmpne r3, #0x5d + moveq r0, #1 + movne r0, #0 + bx lr +_02023674: + cmp r3, #0 + moveq r0, #0 + bxeq lr + cmp r3, r2 + beq sub_0202364C + mov r0, #0 + bx lr + arm_func_end sub_0202364C + + arm_func_start InitPreprocessorArgs +InitPreprocessorArgs: ; 0x02023690 + mov r1, #0x60000 + str r1, [r0, #0x4c] + mov r1, #0 + mov r3, r1 +_020236A0: + str r3, [r0, r1, lsl #2] + add r1, r1, #1 + cmp r1, #4 + blt _020236A0 + mov r2, #0 +_020236B4: + add r1, r0, r3, lsl #2 + add r3, r3, #1 + str r2, [r1, #0x10] + cmp r3, #5 + blt _020236B4 + mov r3, #0 +_020236CC: + add r1, r0, r2, lsl #2 + add r2, r2, #1 + str r3, [r1, #0x24] + cmp r2, #5 + blt _020236CC + mov r2, #0 +_020236E4: + add r1, r0, r3, lsl #2 + add r3, r3, #1 + str r2, [r1, #0x38] + cmp r3, #5 + blt _020236E4 + bx lr + arm_func_end InitPreprocessorArgs + + arm_func_start CopyOrInitPreprocessorArgs +CopyOrInitPreprocessorArgs: ; 0x020236FC + stmdb sp!, {r4, lr} + movs lr, r1 + mov r4, r0 + beq _02023724 + mov ip, #5 +_02023710: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02023710 + ldmia sp!, {r4, pc} +_02023724: + bl InitPreprocessorArgs + ldmia sp!, {r4, pc} + arm_func_end CopyOrInitPreprocessorArgs + + arm_func_start sub_0202372C +sub_0202372C: ; 0x0202372C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x100 + mov r3, r1 + mov r5, r0 + mov r4, r2 + ldr r1, _02023784 ; =_02099D0C + add r0, sp, #0 + mov r2, r3 + bl SprintfStatic__0202378C + add r0, sp, #0 + bl strlen + mov r2, r0 + cmp r2, r4 + movgt r4, r2 + ldr r1, _02023788 ; =_02099D10 + add r3, sp, #0 + mov r0, r5 + sub r2, r4, r2 + bl SprintfStatic__0202378C + mov r0, r5 + add sp, sp, #0x100 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef EUROPE +_02023784: .word _0209A230_EU +#else +_02023784: .word _02099D0C +#endif +_02023788: .word _02099D10 + arm_func_end sub_0202372C + + arm_func_start SprintfStatic__0202378C +SprintfStatic__0202378C: ; 0x0202378C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__0202378C + + arm_func_start QuantityToString +QuantityToString: ; 0x020237B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x100 +#ifdef EUROPE + mov r4, r1 + mov r8, r0 + mov r7, r2 + ldr r1, _020238C8 ; =_02099D0C + add r0, sp, #0 + mov r2, r4 + mov r6, r3 + bl SprintfStatic__0202378C + add r0, sp, #0 + bl strlen + mov r5, r0 + sub r0, r5, #1 + mov r1, #3 + bl _s32_div_f + mov r4, r0 + cmp r7, #0 + ble _02023A38 + cmp r5, r7 + movgt r7, r5 + sub r0, r7, #1 + mov r1, #3 + bl _s32_div_f +_02023A38: + ldr r1, _02023B14 ; =_020B05BC_EU + ldrb r1, [r1] + cmp r1, #0 + beq _02023A50 + cmp r5, #4 + movle r4, #0 +_02023A50: + cmp r4, #0 + ble _02023AD0 + add r2, sp, #0 + sub r1, r5, #1 + add sb, r2, r1 + mov lr, #0 + add sl, sb, r4, lsl #2 + mov ip, lr + strb lr, [sl, #1] + mov r3, #0x5d + mov r2, #0x50 + mov fp, #0x5b + b _02023AC8 +_02023A84: + cmp lr, #3 + blt _02023AB8 + strb r3, [sl] + cmp r6, #0 + movne r1, #0x47 + strb r2, [sl, #-1] + moveq r1, #0x4d + strb r1, [sl, #-2] + strb fp, [sl, #-3] + sub sl, sl, #4 + cmp sl, sb + beq _02023AD0 + mov lr, #0 +_02023AB8: + ldrb r1, [sb], #-1 + add lr, lr, #1 + add ip, ip, #1 + strb r1, [sl], #-1 +_02023AC8: + cmp ip, r5 + blt _02023A84 +_02023AD0: + cmp r7, #0 + ble _02023AF8 + sub r1, r7, r5 + add r2, r0, r1 + ldr r1, _020238CC ; =_02099D10 + add r3, sp, #0 + mov r0, r8 + sub r2, r2, r4 + bl SprintfStatic__0202378C + b _02023B04 +_02023AF8: + add r1, sp, #0 + mov r0, r8 + bl strcpy +_02023B04: + mov r0, r8 +#else + mov r3, r1 + mov r7, r0 + mov r6, r2 + ldr r1, _020238C8 ; =_02099D0C + add r0, sp, #0 + mov r2, r3 + bl SprintfStatic__0202378C + add r0, sp, #0 + bl strlen + mov r5, r0 + sub r0, r5, #1 + mov r1, #3 + bl _s32_div_f + mov r4, r0 + cmp r6, #0 + ble _02023810 + cmp r5, r6 + movgt r6, r5 + sub r0, r6, #1 + mov r1, #3 + bl _s32_div_f +_02023810: + cmp r4, #0 + ble _02023888 + add r2, sp, #0 + sub r1, r5, #1 + add sb, r2, r1 + mov r8, #0 + add sl, sb, r4, lsl #2 + mov lr, r8 + strb r8, [sl, #1] + mov ip, #0x5d + mov r3, #0x50 + mov r2, #0x4d + mov fp, #0x5b + b _02023880 +_02023848: + cmp r8, #3 + blt _02023870 + strb ip, [sl] + strb r3, [sl, #-1] + strb r2, [sl, #-2] + strb fp, [sl, #-3] + sub sl, sl, #4 + cmp sl, sb + beq _02023888 + mov r8, #0 +_02023870: + ldrb r1, [sb], #-1 + add r8, r8, #1 + add lr, lr, #1 + strb r1, [sl], #-1 +_02023880: + cmp lr, r5 + blt _02023848 +_02023888: + cmp r6, #0 + ble _020238B0 + sub r1, r6, r5 + add r2, r0, r1 + ldr r1, _020238CC ; =_02099D10 + add r3, sp, #0 + mov r0, r7 + sub r2, r2, r4 + bl SprintfStatic__0202378C + b _020238BC +_020238B0: + add r1, sp, #0 + mov r0, r7 + bl strcpy +_020238BC: + mov r0, r7 +#endif + add sp, sp, #0x100 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef EUROPE +_020238C8: .word _0209A230_EU +_02023B14: .word _020B05BC_EU +#else +_020238C8: .word _02099D0C +#endif +_020238CC: .word _02099D10 + arm_func_end QuantityToString + + arm_func_start sub_020238D0 +sub_020238D0: ; 0x020238D0 + ldr ip, _020238DC ; =QuantityToString + mov r2, #5 +#ifdef EUROPE + mov r3, #1 +#endif + bx ip + .align 2, 0 +_020238DC: .word QuantityToString + arm_func_end sub_020238D0 + + arm_func_start MoneyQuantityToString__02023B30 +MoneyQuantityToString__02023B30: ; 0x020238E0 + ldr ip, _020238EC ; =QuantityToString + mov r2, #0 +#ifdef EUROPE + mov r3, #1 +#endif + bx ip + .align 2, 0 +_020238EC: .word QuantityToString + arm_func_end MoneyQuantityToString__02023B30 + + arm_func_start BankQuantityToString +BankQuantityToString: ; 0x020238F0 + ldr ip, _020238FC ; =QuantityToString + mov r2, #7 +#ifdef EUROPE + mov r3, #1 +#endif + bx ip + .align 2, 0 +_020238FC: .word QuantityToString + arm_func_end BankQuantityToString + + arm_func_start MoneyQuantityToString__02023B58 +MoneyQuantityToString__02023B58: ; 0x02023900 + ldr ip, _0202390C ; =QuantityToString + mov r2, #0 +#ifdef EUROPE + mov r3, #1 +#endif + bx ip + .align 2, 0 +_0202390C: .word QuantityToString + arm_func_end MoneyQuantityToString__02023B58 + + arm_func_start ExpQuantityToString +ExpQuantityToString: ; 0x02023910 + ldr ip, _0202391C ; =QuantityToString + mov r2, #0 +#ifdef EUROPE + mov r3, r2 +#endif + bx ip + .align 2, 0 +_0202391C: .word QuantityToString + arm_func_end ExpQuantityToString + + arm_func_start sub_02023920 +sub_02023920: ; 0x02023920 + stmdb sp!, {r3, r4, r5, lr} + mov r2, r1, lsl #0x10 + and r1, r1, #0xf0000 + mov r5, r0 + cmp r1, #0x40000 + mov r4, r2, lsr #0x10 + bgt _02023978 + cmp r1, #0x40000 + bge _02023B44 + cmp r1, #0x10000 + bgt _0202395C + bge _02023A30 + cmp r1, #0 + beq _020239AC + b _02023B44 +_0202395C: + cmp r1, #0x20000 + bgt _0202396C + beq _02023A40 + b _02023B44 +_0202396C: + cmp r1, #0x30000 + beq _02023A8C + b _02023B44 +_02023978: + cmp r1, #0x70000 + bgt _02023990 + bge _02023B3C + cmp r1, #0x60000 + beq _02023B34 + b _02023B44 +_02023990: + cmp r1, #0x80000 + bgt _020239A0 + beq _020239D0 + b _02023B44 +_020239A0: + cmp r1, #0x90000 + beq _02023AE0 + b _02023B44 +_020239AC: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetNameString + mov r2, r0 + ldr r1, _02023B4C ; =_02099D1C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_020239D0: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetNameString + mov r2, r0 + ldr r1, _02023B4C ; =_02099D1C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetMonsterGender + cmp r0, #1 + beq _02023A0C + cmp r0, #2 + beq _02023A1C + b _02023A28 +_02023A0C: + ldr r1, _02023B50 ; =_022A5048 + mov r0, r5 + bl strcat + b _02023A28 +_02023A1C: + ldr r1, _02023B54 ; =_022A504C + mov r0, r5 + bl strcat +_02023A28: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_02023A30: + mov r1, r4, lsl #0x10 + mov r1, r1, asr #0x10 + bl sub_02023D64 + ldmia sp!, {r3, r4, r5, pc} +_02023A40: + mov r0, #0x44 + mul r1, r4, r0 + ldr r0, _02023B58 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r2, r1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023B44 + ldrsh r0, [r1, #4] + bl GetNameString + mov r2, r0 + ldr r1, _02023B4C ; =_02099D1C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_02023A8C: + ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR + mov r0, #0x68 + ldr r2, [r1] + mul r1, r4, r0 + add r0, r2, #0x9000 + ldr r2, [r0, #0x84c] + ldrb r0, [r2, r1] + add r1, r2, r1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023B44 + ldrsh r0, [r1, #0xc] + bl GetNameString + mov r2, r0 + ldr r1, _02023B4C ; =_02099D1C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_02023AE0: + mov r0, #0x44 + ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR + mul r2, r4, r0 + ldr r0, [r1] + add r0, r0, #0x98 + add r1, r0, #0x9800 + ldrb r0, [r1, r2] + add r1, r1, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023B44 + ldrsh r0, [r1, #4] + bl GetNameString + mov r2, r0 + ldr r1, _02023B5C ; =_02099D2C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_02023B34: + ldr r0, _02023B60 ; =_02099D3C + ldmia sp!, {r3, r4, r5, pc} +_02023B3C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02023B44: + ldr r0, _02023B64 ; =_02099D50 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02023B4C: .word _02099D1C +_02023B50: .word _022A5048 +_02023B54: .word _022A504C +_02023B58: .word TEAM_MEMBER_TABLE_PTR +_02023B5C: .word _02099D2C +_02023B60: .word _02099D3C +_02023B64: .word _02099D50 + arm_func_end sub_02023920 + + arm_func_start sub_02023B68 +sub_02023B68: ; 0x02023B68 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x40 + mov r2, r1, lsl #0x10 + and r1, r1, #0xf0000 + mov r5, r0 + cmp r1, #0x30000 + mov r4, r2, lsr #0x10 + bgt _02023BB4 + cmp r1, #0x30000 + bge _02023C90 + cmp r1, #0x10000 + bgt _02023BA8 + bge _02023C08 + cmp r1, #0 + beq _02023BE4 + b _02023D40 +_02023BA8: + cmp r1, #0x20000 + beq _02023C18 + b _02023D40 +_02023BB4: + cmp r1, #0x50000 + bgt _02023BC8 + bge _02023D14 + cmp r1, #0x40000 + b _02023D40 +_02023BC8: + cmp r1, #0x60000 + bgt _02023BD8 + beq _02023D30 + b _02023D40 +_02023BD8: + cmp r1, #0x70000 + beq _02023D38 + b _02023D40 +_02023BE4: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetNameString + mov r2, r0 + ldr r1, _02023D4C ; =_02099D2C + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + b _02023D44 +_02023C08: + mov r1, r4, lsl #0x10 + mov r1, r1, asr #0x10 + bl sub_02023DC0 + b _02023D44 +_02023C18: + mov r0, #0x44 + mul r1, r4, r0 + ldr r0, _02023D50 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r2, r1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023D40 + add r0, sp, #0 + add r1, r1, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_020564B0 + cmp r0, #0 + add r2, sp, #0 + beq _02023C7C + ldr r1, _02023D54 ; =_02099D54 + mov r0, r5 + bl SprintfStatic__0202378C + b _02023C88 +_02023C7C: + ldr r1, _02023D58 ; =_02099D64 + mov r0, r5 + bl SprintfStatic__0202378C +_02023C88: + mov r0, r5 + b _02023D44 +_02023C90: + ldr r1, _02023D50 ; =TEAM_MEMBER_TABLE_PTR + mov r0, #0x68 + ldr r2, [r1] + mul r1, r4, r0 + add r0, r2, #0x9000 + ldr r2, [r0, #0x84c] + ldrb r0, [r2, r1] + add r4, r2, r1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023D40 + add r0, sp, #0 + add r1, r4, #0x5e + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldrb r0, [r4, #1] + add r2, sp, #0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02023D00 + ldr r1, _02023D54 ; =_02099D54 + mov r0, r5 + bl SprintfStatic__0202378C + b _02023D0C +_02023D00: + ldr r1, _02023D58 ; =_02099D64 + mov r0, r5 + bl SprintfStatic__0202378C +_02023D0C: + mov r0, r5 + b _02023D44 +_02023D14: + mov r0, r4 + bl GetSize0x80Buffer + mov r1, r0 + mov r0, r5 + bl strcpy + mov r0, r5 + b _02023D44 +_02023D30: + ldr r0, _02023D5C ; =_02099D3C + b _02023D44 +_02023D38: + mov r0, #0 + b _02023D44 +_02023D40: + ldr r0, _02023D60 ; =_02099D50 +_02023D44: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02023D4C: .word _02099D2C +_02023D50: .word TEAM_MEMBER_TABLE_PTR +_02023D54: .word _02099D54 +_02023D58: .word _02099D64 +_02023D5C: .word _02099D3C +_02023D60: .word _02099D50 + arm_func_end sub_02023B68 + + arm_func_start sub_02023D64 +sub_02023D64: ; 0x02023D64 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + add r0, sp, #0x14 + add r1, sp, #0 + bl sub_0206549C + ldrsh r0, [sp] + cmp r0, #0 + moveq r0, #0 + beq _02023DAC + ldrsh r0, [sp] + bl GetNameString + mov r2, r0 + ldr r1, _02023DBC ; =_02099D1C + mov r0, r4 + bl SprintfStatic__0202378C + mov r0, r4 +_02023DAC: + add sp, sp, #4 + ldmia sp!, {r3, r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02023DBC: .word _02099D1C + arm_func_end sub_02023D64 + + arm_func_start sub_02023DC0 +sub_02023DC0: ; 0x02023DC0 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x84 + mov r4, r0 + add r0, sp, #0x94 + add r1, sp, #0 + bl sub_0206549C + ldrsh r0, [sp] + cmp r0, #0 + moveq r0, #0 + beq _02023F98 + ldrsh r0, [sp, #0x94] + cmp r0, #0x39 + bne _02023E18 + add r0, sp, #0x42 + bl sub_02065BF0 + ldr r1, _02023FA8 ; =_02099D64 + add r2, sp, #0x42 + mov r0, r4 + bl SprintfStatic__0202378C + mov r0, r4 + b _02023F98 +_02023E18: + cmp r0, #0x42 + bne _02023E44 + add r1, sp, #2 + mov r0, #0x3f + mov r2, #0xa + bl LoadScriptVariableValueString + add r0, sp, #0x42 + add r1, sp, #2 + mov r2, #0xa + bl StrncpySimpleNoPadSafe + b _02023F5C +_02023E44: + cmp r0, #0x43 + bne _02023E70 + add r1, sp, #2 + mov r0, #0x41 + mov r2, #0xa + bl LoadScriptVariableValueString + add r0, sp, #0x42 + add r1, sp, #2 + mov r2, #0xa + bl StrncpySimpleNoPadSafe + b _02023F5C +_02023E70: + bl GetActorMatchingStorageId + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + beq _02023F2C + bl GetActiveRosterIndex + mvn r1, #0 + cmp r0, r1 + beq _02023EB0 + bl GetActiveTeamMember + mov r1, r0 + add r0, sp, #0x42 + add r1, r1, #0x5e + mov r2, #0xa + bl StrncpySimpleNoPadSafe + b _02023ECC +_02023EB0: + mov r0, r5 + bl GetTeamMember + mov r1, r0 + add r0, sp, #0x42 + add r1, r1, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe +_02023ECC: + ldrsh r0, [sp, #0x94] + cmp r0, #0 + blt _02023EF4 + cmp r0, #0xa + bge _02023EF4 + ldr r1, _02023FAC ; =_02099D54 + add r2, sp, #0x42 + mov r0, r4 + bl SprintfStatic__0202378C + b _02023F24 +_02023EF4: + mov r0, r5 + bl sub_020564B0 + cmp r0, #0 + add r2, sp, #0x42 + beq _02023F18 + ldr r1, _02023FAC ; =_02099D54 + mov r0, r4 + bl SprintfStatic__0202378C + b _02023F24 +_02023F18: + ldr r1, _02023FA8 ; =_02099D64 + mov r0, r4 + bl SprintfStatic__0202378C +_02023F24: + mov r0, r4 + b _02023F98 +_02023F2C: + ldrsh r0, [sp, #0x94] + bl sub_02065B14 + movs r1, r0 + beq _02023F48 + add r0, sp, #0x42 + bl GetStringFromFileVeneer + b _02023F5C +_02023F48: + ldrsh r0, [sp] + bl GetNameString + mov r1, r0 + add r0, sp, #0x42 + bl strcpy +_02023F5C: + ldrsh r0, [sp, #0x94] + cmp r0, #0 + blt _02023F84 + cmp r0, #0xa + bge _02023F84 + ldr r1, _02023FAC ; =_02099D54 + add r2, sp, #0x42 + mov r0, r4 + bl SprintfStatic__0202378C + b _02023F94 +_02023F84: + ldr r1, _02023FB0 ; =_02099D2C + add r2, sp, #0x42 + mov r0, r4 + bl SprintfStatic__0202378C +_02023F94: + mov r0, r4 +_02023F98: + add sp, sp, #0x84 + ldmia sp!, {r4, r5, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02023FA8: .word _02099D64 +_02023FAC: .word _02099D54 +_02023FB0: .word _02099D2C + arm_func_end sub_02023DC0 + + arm_func_start sub_02023FB4 +sub_02023FB4: ; 0x02023FB4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x8c + mov r4, r0 + add r0, sp, #0xa4 + add r1, sp, #0 + bl sub_0206549C + ldrsh r0, [sp] + cmp r0, #0 + moveq r0, #0 + beq _02024094 + ldrsh r0, [sp, #0xa4] + bl GetActorMatchingStorageId + mov r5, r0 + bl GetTeamMember + movs r6, r0 + beq _02024014 + add r0, sp, #0x4c + add r1, r6, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe + add r0, sp, #0x4c + str r0, [sp, #8] + b _02024020 +_02024014: + ldrsh r0, [sp] + bl GetNameString + str r0, [sp, #8] +_02024020: + add r3, sp, #0xc + add r0, sp, #4 + add r1, sp, #8 + add r2, sp, #0x4c + str r3, [sp, #4] + bl sub_020206FC + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0] + cmp r6, #0 + beq _02024080 + mov r0, r5 + bl sub_020564B0 + cmp r0, #0 + add r2, sp, #0xc + beq _02024070 + ldr r1, _020240A4 ; =_02099D54 + mov r0, r4 + bl SprintfStatic__0202378C + b _02024090 +_02024070: + ldr r1, _020240A8 ; =_02099D64 + mov r0, r4 + bl SprintfStatic__0202378C + b _02024090 +_02024080: + ldr r1, _020240AC ; =_02099D2C + add r2, sp, #0xc + mov r0, r4 + bl SprintfStatic__0202378C +_02024090: + mov r0, r4 +_02024094: + add sp, sp, #0x8c + ldmia sp!, {r3, r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_020240A4: .word _02099D54 +_020240A8: .word _02099D64 +_020240AC: .word _02099D2C + arm_func_end sub_02023FB4 + + arm_func_start sub_020240B0 +sub_020240B0: ; 0x020240B0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldr r5, _0202410C ; =ENTITIES + mov r6, #0 + ldr r4, _02024110 ; =0x00000182 + b _020240FC +_020240CC: + ldr r1, [r5, #4] + mov r0, r7 + bl sub_0202364C + cmp r0, #0 + beq _020240F4 + mov r1, r6, lsl #0x10 + mov r0, r8 + mov r1, r1, asr #0x10 + bl sub_02023D64 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_020240F4: + add r6, r6, #1 + add r5, r5, #0xc +_020240FC: + cmp r6, r4 + blt _020240CC + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0202410C: .word ENTITIES +_02024110: .word 0x00000182 + arm_func_end sub_020240B0 + + arm_func_start sub_02024114 +sub_02024114: ; 0x02024114 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldr r5, _02024170 ; =ENTITIES + mov r6, #0 + ldr r4, _02024174 ; =0x00000182 + b _02024160 +_02024130: + ldr r1, [r5, #4] + mov r0, r7 + bl sub_0202364C + cmp r0, #0 + beq _02024158 + mov r1, r6, lsl #0x10 + mov r0, r8 + mov r1, r1, asr #0x10 + bl sub_02023DC0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02024158: + add r6, r6, #1 + add r5, r5, #0xc +_02024160: + cmp r6, r4 + blt _02024130 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02024170: .word ENTITIES +_02024174: .word 0x00000182 + arm_func_end sub_02024114 + + arm_func_start sub_02024178 +sub_02024178: ; 0x02024178 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldr r5, _020241D4 ; =ENTITIES + mov r6, #0 + ldr r4, _020241D8 ; =0x00000182 + b _020241C4 +_02024194: + ldr r1, [r5, #4] + mov r0, r7 + bl sub_0202364C + cmp r0, #0 + beq _020241BC + mov r1, r6, lsl #0x10 + mov r0, r8 + mov r1, r1, asr #0x10 + bl sub_02023FB4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_020241BC: + add r6, r6, #1 + add r5, r5, #0xc +_020241C4: + cmp r6, r4 + blt _02024194 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_020241D4: .word ENTITIES +_020241D8: .word 0x00000182 + arm_func_end sub_02024178 + + arm_func_start sub_020241DC +sub_020241DC: ; 0x020241DC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov ip, r1, lsl #0x10 + and lr, r1, #0x70000 + mov r4, r0 + cmp lr, #0x20000 + mov r5, ip, lsr #0x10 + bgt _02024220 + cmp lr, #0x20000 + bge _020242E0 + cmp lr, #0 + bgt _02024214 + beq _02024240 + b _020242E0 +_02024214: + cmp lr, #0x10000 + beq _0202426C + b _020242E0 +_02024220: + cmp lr, #0x40000 + bgt _02024234 + bge _0202429C + cmp lr, #0x30000 + b _020242E0 +_02024234: + cmp lr, #0x50000 + beq _020242AC + b _020242E0 +_02024240: + tst r1, #0x80000 + movne r2, #1 + moveq r2, #0 + mov r1, r5, lsl #0x10 + and r3, r2, #0xff + mov r0, r4 + mov r1, r1, asr #0x10 + mov r2, #1 + bl GetItemNameFormatted + mov r0, r4 + b _020242E4 +_0202426C: + strh r2, [sp, #0xc] + mov ip, #0 + strb r3, [sp, #0xa] + ldr r2, _020242EC ; =_02099CAC + add r1, sp, #0xa + strb ip, [sp, #0xb] + strh r5, [sp, #0xe] + mov r3, #1 + str ip, [sp] + bl MaybeGetFormattedItemName + mov r0, r4 + b _020242E4 +_0202429C: + mov r1, r5 + bl sub_0202507C + mov r0, r4 + b _020242E4 +_020242AC: + mov r0, r5, lsl #0x10 + add r1, sp, #4 + mov r0, r0, asr #0x10 + bl sub_02065CD8 + mov ip, #0 + ldr r2, _020242F0 ; =_02099CB8 + add r1, sp, #4 + mov r0, r4 + mov r3, #1 + str ip, [sp] + bl MaybeGetFormattedItemName + mov r0, r4 + b _020242E4 +_020242E0: + ldr r0, _020242F4 ; =_02099D50 +_020242E4: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020242EC: .word _02099CAC +_020242F0: .word _02099CB8 +_020242F4: .word _02099D50 + arm_func_end sub_020241DC + + arm_func_start sub_020242F8 +sub_020242F8: ; 0x020242F8 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + mov r0, r2, lsr #0x10 + ands r1, r1, #0x30000 + beq _0202431C + cmp r1, #0x10000 + beq _02024338 + b _02024350 +_0202431C: + bl GetMoveName + mov r2, r0 + ldr r1, _02024358 ; =_02099D74 + mov r0, r4 + bl SprintfStatic__0202378C + mov r0, r4 + ldmia sp!, {r4, pc} +_02024338: + bl GetDungeonResultString + mov r1, r0 + mov r0, r4 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} +_02024350: + ldr r0, _0202435C ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024358: .word _02099D74 +_0202435C: .word _02099D50 + arm_func_end sub_020242F8 + + arm_func_start SetStringAccuracy +SetStringAccuracy: ; 0x02024360 +#if defined(EUROPE) +#define SET_STRING_ACCURACY_OFFSET 2 +#elif defined(JAPAN) +#define SET_STRING_ACCURACY_OFFSET 0x17FD +#else +#define SET_STRING_ACCURACY_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _02024410 ; =0x000027A2 + mov r4, r0 + cmp r1, r2 + blo _02024408 + ldr r0, _02024414 ; =0x000029C1 + cmp r1, r0 + bhs _02024408 + rsb r0, r2, #0 + add r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl GetMoveActualAccuracy + mov r6, #1 + mov r3, #0 + ldr r2, _02024418 ; =MOVE_ACCURACY_STARS_TABLE + b _020243B8 +_020243A4: + ldr r1, [r2, r3, lsl #2] + cmp r0, r1 + blt _020243C0 + add r6, r6, #1 + add r3, r3, #1 +_020243B8: + cmp r3, #8 + blt _020243A4 +_020243C0: + cmp r6, #8 + ble _020243D8 + ldr r1, _0202441C ; =0x000027A0 + mov r0, r4 + bl GetStringFromFileVeneer + b _02024400 +_020243D8: + mov r7, #0 + strb r7, [r4] + ldr r5, _02024420 ; =_02099D84 + b _020243F8 +_020243E8: + mov r0, r4 + mov r1, r5 + bl strcat + add r7, r7, #1 +_020243F8: + cmp r7, r6 + blt _020243E8 +_02024400: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02024408: + ldr r0, _02024424 ; =_02099D50 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02024410: .word 0x000027A2 + SET_STRING_ACCURACY_OFFSET +_02024414: .word 0x000029C1 + SET_STRING_ACCURACY_OFFSET +_02024418: .word MOVE_ACCURACY_STARS_TABLE +_0202441C: .word 0x000027A0 + SET_STRING_ACCURACY_OFFSET +_02024420: .word _02099D84 +_02024424: .word _02099D50 + arm_func_end SetStringAccuracy + + arm_func_start SetStringPower +SetStringPower: ; 0x02024428 +#if defined(EUROPE) +#define SET_STRING_POWER_OFFSET 2 +#elif defined(JAPAN) +#define SET_STRING_POWER_OFFSET 0x17FD +#else +#define SET_STRING_POWER_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _020244DC ; =0x000027A2 + mov r4, r0 + cmp r1, r2 + blo _020244D4 + ldr r0, _020244E0 ; =0x000029C1 + cmp r1, r0 + bhs _020244D4 + rsb r0, r2, #0 + add r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl GetMoveBasePowerFromId + mov r3, #0 + mov r5, r3 + ldr r2, _020244E4 ; =MOVE_POWER_STARS_TABLE + b _02024480 +_0202446C: + ldr r1, [r2, r5, lsl #2] + cmp r0, r1 + blt _02024488 + add r3, r3, #1 + add r5, r5, #1 +_02024480: + cmp r5, #6 + blt _0202446C +_02024488: + cmp r3, #0 + bne _020244A0 + ldr r1, _020244E8 ; =0x000027A1 + mov r0, r4 + bl GetStringFromFileVeneer + b _020244CC +_020244A0: + mov r7, #0 + strb r7, [r4] + add r5, r3, #2 + ldr r6, _020244EC ; =_02099D84 + b _020244C4 +_020244B4: + mov r0, r4 + mov r1, r6 + bl strcat + add r7, r7, #1 +_020244C4: + cmp r7, r5 + blt _020244B4 +_020244CC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020244D4: + ldr r0, _020244F0 ; =_02099D50 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_020244DC: .word 0x000027A2 + SET_STRING_POWER_OFFSET +_020244E0: .word 0x000029C1 + SET_STRING_POWER_OFFSET +_020244E4: .word MOVE_POWER_STARS_TABLE +_020244E8: .word 0x000027A1 + SET_STRING_POWER_OFFSET +_020244EC: .word _02099D84 +_020244F0: .word _02099D50 + arm_func_end SetStringPower + + arm_func_start sub_020244F4 +sub_020244F4: ; 0x020244F4 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x400 + mov r2, r1, lsl #0x10 + mov r5, r0 + mov r4, r2, lsr #0x10 + ands r0, r1, #0x70000 + beq _0202451C + cmp r0, #0x10000 + beq _02024564 + b _02024580 +_0202451C: +#if defined(EUROPE) + add r0, r1, #0xc3 + add r0, r0, #0x3400 +#elif defined(JAPAN) + add r0, r1, #0x46 + add r0, r0, #0x4700 +#else + add r0, r1, #0xc1 + add r0, r0, #0x3400 +#endif + mov r1, r0, lsl #0x10 + add r0, sp, #0 + mov r1, r1, lsr #0x10 + bl CopyStringFromId + cmp r4, #0x11 + add r2, sp, #0 + bne _02024550 + ldr r1, _0202458C ; =_02099D8C + mov r0, r5 + bl SprintfStatic__0202378C + b _0202455C +_02024550: + ldr r1, _02024590 ; =_02099D90 + mov r0, r5 + bl SprintfStatic__0202378C +_0202455C: + mov r0, r5 + b _02024584 +_02024564: + mov r0, r4 + bl GetSize0x80Buffer2 + mov r1, r0 + mov r0, r5 + bl strcpy + mov r0, r5 + b _02024584 +_02024580: + ldr r0, _02024594 ; =_02099D50 +_02024584: + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0202458C: .word _02099D8C +_02024590: .word _02099D90 +_02024594: .word _02099D50 + arm_func_end sub_020244F4 + + arm_func_start sub_02024598 +sub_02024598: ; 0x02024598 +#ifdef EUROPE + stmdb sp!, {r3, r4, r5, lr} + movs r4, r1 + mov r5, r0 + bmi _02024828 + bl GetLanguage + mov r2, r0 + ldr r1, _0202484C ; =_020B05D4_EU + mov r0, r5 + ldr r1, [r1, r2, lsl #3] + mov r2, r4 + bl SprintfStatic__0202378C + b _02024844 +_02024828: + bl GetLanguage + mov r2, r0 + ldr r1, _02024850 ; =_020B05D8_EU + mov r0, r5 + ldr r1, [r1, r2, lsl #3] + rsb r2, r4, #0 + bl SprintfStatic__0202378C +_02024844: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0202484C: .word _020B05D4_EU +_02024850: .word _020B05D8_EU +#else + stmdb sp!, {r4, lr} + movs r2, r1 + mov r4, r0 + bmi _020245B4 + ldr r1, _020245C8 ; =_02099DA0 + bl SprintfStatic__0202378C + b _020245C0 +_020245B4: + ldr r1, _020245CC ; =_02099DB0 + rsb r2, r2, #0 + bl SprintfStatic__0202378C +_020245C0: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_020245C8: .word _02099DA0 +_020245CC: .word _02099DB0 +#endif + arm_func_end sub_02024598 + +#ifdef EUROPE + arm_func_start sub_02024854_EU +sub_02024854_EU: ; 0x02024854 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x40 + ldr ip, [sp, #0x50] + mov r6, r0 + mov r5, r1 + mov r4, r3 + cmp ip, #2 + bgt _02024884 + ldr r1, _020248DC ; =_02099DC0 + mov r2, r5 + bl SprintfStatic__0202378C + b _020248D4 +_02024884: + and r0, r2, #0xff + bl DungeonGoesUp + cmp r0, #0 + add r0, sp, #0 + beq _020248B8 + mov r1, r4 + bl sub_02024598 + ldr r1, _020248E0 ; =_0209A2D4_EU + add r3, sp, #0 + mov r0, r6 + mov r2, r5 + bl SprintfStatic__0202378C + b _020248D4 +_020248B8: + rsb r1, r4, #0 + bl sub_02024598 + ldr r1, _020248E0 ; =_0209A2D4_EU + add r3, sp, #0 + mov r0, r6 + mov r2, r5 + bl SprintfStatic__0202378C +_020248D4: + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_020248DC: .word _02099DC0 +_020248E0: .word _0209A2D4_EU + arm_func_end sub_02024854_EU +#endif + + arm_func_start sub_020245D0 +sub_020245D0: ; 0x020245D0 +#ifdef EUROPE +#define SUB_020245D0_STACK_OFFSET 4 +#else +#define SUB_020245D0_STACK_OFFSET 0 +#endif +#ifdef EUROPE + stmdb sp!, {r4, r5, r6, r7, lr} +#else + stmdb sp!, {r3, r4, r5, r6, r7, lr} +#endif + sub sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET + mov r3, r1, lsl #0x10 + and r1, r1, #0xf0000 + mov r7, r0 + mov r6, r2 + cmp r1, #0x20000 + mov r4, r3, lsr #0x10 + bgt _02024618 + cmp r1, #0x20000 + bge _020246A8 + cmp r1, #0 + bgt _0202460C + beq _02024634 + b _02024918 +_0202460C: + cmp r1, #0x10000 + beq _02024744 + b _02024918 +_02024618: + cmp r1, #0x30000 + bgt _02024628 + beq _02024668 + b _02024918 +_02024628: + cmp r1, #0x40000 + beq _020248E4 + b _02024918 +_02024634: + mov r0, #0 + mov r2, r0 + and r1, r4, #0xff + bl sub_0204F6F8 + mov r1, r0 + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + bl GetStringFromFileVeneer + ldr r1, _02024924 ; =_02099DC0 + add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET + mov r0, r7 + bl SprintfStatic__0202378C + mov r0, r7 + b _0202491C +_02024668: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl DungeonSwapIdxToId + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl sub_0204F6F8 + mov r1, r0 + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + bl GetStringFromFileVeneer + ldr r1, _02024924 ; =_02099DC0 + add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET + mov r0, r7 + bl SprintfStatic__0202378C + mov r0, r7 + b _0202491C +_020246A8: + and r0, r4, #0xff + and r1, r6, #0xff + bl sub_0204F77C + bl GetNbFloorsPlusOne + mov r5, r0 + mov r0, #0 + mov r2, r0 + and r1, r4, #0xff + bl sub_0204F6F8 + mov r1, r0 + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + bl GetStringFromFileVeneer + cmp r6, #0 + mvnlt r0, #0 + mullt r0, r6, r0 + movlt r6, r0 +#ifdef EUROPE + add r1, sp, #0x44 + mov r0, r7 + mov r2, r4 + mov r3, r6 + str r5, [sp] + bl sub_02024854_EU +#else + cmp r5, #2 + bhi _02024704 + ldr r1, _02024924 ; =_02099DC0 + add r2, sp, #0x40 + mov r0, r7 + bl SprintfStatic__0202378C + b _0202473C +_02024704: + and r0, r4, #0xff + bl DungeonGoesUp + cmp r0, #0 + add r2, sp, #0x40 + beq _0202472C + ldr r1, _02024928 ; =_02099DD0 + mov r0, r7 + mov r3, r6 + bl SprintfStatic__0202378C + b _0202473C +_0202472C: + ldr r1, _0202492C ; =_02099DEC + mov r0, r7 + mov r3, r6 + bl SprintfStatic__0202378C +_0202473C: +#endif + mov r0, r7 + b _0202491C +_02024744: + and r0, r4, #0xff + and r1, r6, #0xff + bl sub_0204F77C + bl GetNbFloorsPlusOne + mov r5, r0 + and r1, r4, #0xff + and r2, r6, #0xff + mov r0, #1 + bl sub_0204F6F8 + mov r1, r0 + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + bl GetStringFromFileVeneer + mov r1, #0 + add r0, sp, #0 + SUB_020245D0_STACK_OFFSET + add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET +_02024780: + ldrb r2, [r3, r1] + cmp r2, #0 + beq _02024888 + strb r2, [r0, r1] + cmp r2, #0xa + bne _02024880 + add r1, r1, #1 + mov r2, #0x5b + strb r2, [r0, r1] + add r2, r1, #1 + mov r3, #0x43 + strb r3, [r0, r2] + add r2, r1, #2 + mov r3, #0x4c + strb r3, [r0, r2] + add r2, r1, #3 + mov r3, #0x55 + strb r3, [r0, r2] + add r2, r1, #4 + mov r3, #0x4d + strb r3, [r0, r2] + add r2, r1, #5 + mov r3, #0x5f + strb r3, [r0, r2] + add r2, r1, #6 + mov r3, #0x53 + strb r3, [r0, r2] + add r2, r1, #7 + mov r3, #0x45 + strb r3, [r0, r2] + add r2, r1, #8 + mov r3, #0x54 + strb r3, [r0, r2] + add r2, r1, #9 + mov r3, #0x3a + strb r3, [r0, r2] + add r2, r1, #0xa + mov r3, #0x38 + strb r3, [r0, r2] + add r2, r1, #0xb + mov r3, #0x30 + strb r3, [r0, r2] + add r2, r1, #0xc + mov r3, #0x5d + strb r3, [r0, r2] + add ip, r1, #0xd + add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET + add r0, sp, #0 + SUB_020245D0_STACK_OFFSET +_02024840: + ldrb r2, [r3, r1] + add r1, r1, #1 + strb r2, [r0, ip] + cmp r2, #0 + add ip, ip, #1 + bne _02024840 + mov r3, #0 + add r2, sp, #0 + SUB_020245D0_STACK_OFFSET + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + b _02024874 +_02024868: + ldrb r1, [r2, r3] + strb r1, [r0, r3] + add r3, r3, #1 +_02024874: + cmp r3, ip + bne _02024868 + b _02024888 +_02024880: + add r1, r1, #1 + b _02024780 +_02024888: +#ifdef EUROPE + add r1, sp, #0x44 + mov r0, r7 + mov r2, r4 + mov r3, r6 + str r5, [sp] + bl sub_02024854_EU +#else + cmp r5, #2 + bhi _020248A4 + ldr r1, _02024924 ; =_02099DC0 + add r2, sp, #0x40 + mov r0, r7 + bl SprintfStatic__0202378C + b _020248DC +_020248A4: + and r0, r4, #0xff + bl DungeonGoesUp + cmp r0, #0 + add r2, sp, #0x40 + beq _020248CC + ldr r1, _02024928 ; =_02099DD0 + mov r0, r7 + mov r3, r6 + bl SprintfStatic__0202378C + b _020248DC +_020248CC: + ldr r1, _0202492C ; =_02099DEC + mov r0, r7 + mov r3, r6 + bl SprintfStatic__0202378C +_020248DC: +#endif + mov r0, r7 + b _0202491C +_020248E4: + and r1, r4, #0xff + and r2, r6, #0xff + mov r0, #0 + bl sub_0204F6F8 + mov r1, r0 + add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET + bl GetStringFromFileVeneer + ldr r1, _02024924 ; =_02099DC0 + add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET + mov r0, r7 + bl SprintfStatic__0202378C + mov r0, r7 + b _0202491C +_02024918: + ldr r0, _02024930 ; =_02099D50 +_0202491C: + add sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET +#ifdef EUROPE + ldmia sp!, {r4, r5, r6, r7, pc} +#else + ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif + .align 2, 0 +_02024924: .word _02099DC0 +#ifndef EUROPE +_02024928: .word _02099DD0 +_0202492C: .word _02099DEC +#endif +_02024930: .word _02099D50 + arm_func_end sub_020245D0 + + arm_func_start sub_02024934 +sub_02024934: ; 0x02024934 + ldr ip, _02024948 ; =sub_0204F6F8 + mov r1, r0 + mov r0, #0 + mov r2, r0 + bx ip + .align 2, 0 +_02024948: .word sub_0204F6F8 + arm_func_end sub_02024934 + + arm_func_start sub_0202494C +sub_0202494C: ; 0x0202494C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x400 + mov r2, r1, lsl #0x10 + and r5, r1, #0xf0000 + mov r6, r0 + cmp r5, #0x20000 + mov r4, r2, lsr #0x10 + bgt _02024990 + cmp r5, #0x20000 + bge _020249F8 + cmp r5, #0 + bgt _02024984 + beq _020249F8 + b _02024A4C +_02024984: + cmp r5, #0x10000 + beq _020249B0 + b _02024A4C +_02024990: + cmp r5, #0x40000 + bgt _020249A8 + bge _020249B0 + cmp r5, #0x30000 + beq _020249B0 + b _02024A4C +_020249A8: + cmp r5, #0x50000 + bne _02024A4C +_020249B0: + cmp r5, #0x40000 + mov r0, #0 + bne _020249D0 + mov r2, r0 + mov r1, #0x25 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + b _020249F8 +_020249D0: + cmp r5, #0x50000 + bne _020249EC + mov r1, #0x25 + mov r2, #1 + bl LoadScriptVariableValueAtIndex + mov r4, r0 + b _020249F8 +_020249EC: + mov r1, #0x20 + bl LoadScriptVariableValue + mov r4, r0 +_020249F8: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_0206A90C + mov r1, r0 + add r0, sp, #0 + bl GetStringFromFileVeneer + cmp r5, #0x30000 + cmpne r5, #0x20000 + ldrne r0, _02024A58 ; =0x00000133 + add r2, sp, #0 + cmpne r4, r0 + bne _02024A38 + ldr r1, _02024A5C ; =_02099D8C + mov r0, r6 + bl SprintfStatic__0202378C + b _02024A44 +_02024A38: + ldr r1, _02024A60 ; =_02099DC0 + mov r0, r6 + bl SprintfStatic__0202378C +_02024A44: + mov r0, r6 + b _02024A50 +_02024A4C: + ldr r0, _02024A64 ; =_02099D50 +_02024A50: + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02024A58: .word 0x00000133 +_02024A5C: .word _02099D8C +_02024A60: .word _02099DC0 +_02024A64: .word _02099D50 + arm_func_end sub_0202494C + + arm_func_start sub_02024A68 +sub_02024A68: ; 0x02024A68 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r1, r2, lsr #0x10 + bne _02024A9C +#ifdef JAPAN + add r1, r1, #0xc9 + add r1, r1, #0x200 +#else + add r1, r1, #0x79 + add r1, r1, #0xa00 +#endif + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl GetStringFromFileVeneer + mov r0, r4 + ldmia sp!, {r4, pc} +_02024A9C: + ldr r0, _02024AA4 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024AA4: .word _02099D50 + arm_func_end sub_02024A68 + + arm_func_start sub_02024AA8 +sub_02024AA8: ; 0x02024AA8 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r0, r2, lsr #0x10 + bne _02024AE8 +#ifdef JAPAN + add r0, r0, #0xf5 + add r0, r0, #0x3e00 +#else + add r0, r0, #0x4d + add r0, r0, #0xa00 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r1, r0 + mov r0, r4 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} +_02024AE8: + ldr r0, _02024AF0 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024AF0: .word _02099D50 + arm_func_end sub_02024AA8 + + arm_func_start GetRankString +GetRankString: ; 0x02024AF4 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r0, r2, lsr #0x10 + bne _02024B38 +#ifdef JAPAN + add r0, r0, #0x7f + add r0, r0, #0x300 +#else + add r0, r0, #0x77 + add r0, r0, #0x100 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r2, r0 + ldr r1, _02024B40 ; =_02099E08 + mov r0, r4 + bl SprintfStatic__0202378C + mov r0, r4 + ldmia sp!, {r4, pc} +_02024B38: + ldr r0, _02024B44 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024B40: .word _02099E08 +_02024B44: .word _02099D50 + arm_func_end GetRankString + + arm_func_start sub_02024B48 +sub_02024B48: ; 0x02024B48 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r0, r2, lsr #0x10 + bne _02024B88 +#if defined(EUROPE) + add r0, r0, #0x71 + add r0, r0, #0x2700 +#elif defined(JAPAN) + add r0, r0, #0x79 + add r0, r0, #0x4900 +#else + add r0, r0, #0x6f + add r0, r0, #0x2700 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r1, r0 + mov r0, r4 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} +_02024B88: + ldr r0, _02024B90 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024B90: .word _02099D50 + arm_func_end sub_02024B48 + + arm_func_start sub_02024B94 +sub_02024B94: ; 0x02024B94 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r0, r2, lsr #0x10 + bne _02024BCC + and r0, r0, #0xff + bl GetTypeStringId + bl StringFromId + mov r1, r0 + mov r0, r4 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} +_02024BCC: + ldr r0, _02024BD4 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024BD4: .word _02099D50 + arm_func_end sub_02024B94 + + arm_func_start sub_02024BD8 +sub_02024BD8: ; 0x02024BD8 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r0, r2, lsr #0x10 + bne _02024C0C + and r0, r0, #0xff + bl GetIqSkillStringId + mov r1, r0 + mov r0, r4 + bl GetStringFromFileVeneer + mov r0, r4 + ldmia sp!, {r4, pc} +_02024C0C: + ldr r0, _02024C14 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024C14: .word _02099D50 + arm_func_end sub_02024BD8 + + arm_func_start sub_02024C18 +sub_02024C18: ; 0x02024C18 + stmdb sp!, {r4, lr} + sub sp, sp, #0x400 + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r1, r2, lsr #0x10 + bne _02024C58 + add r0, sp, #0 + and r1, r1, #0xff + bl GetAbilityString + ldr r1, _02024C64 ; =_02099D8C + add r2, sp, #0 + mov r0, r4 + bl SprintfStatic__0202378C + mov r0, r4 + b _02024C5C +_02024C58: + ldr r0, _02024C68 ; =_02099D50 +_02024C5C: + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024C64: .word _02099D8C +_02024C68: .word _02099D50 + arm_func_end sub_02024C18 + + arm_func_start GetCurrentTeamNameString +GetCurrentTeamNameString: ; 0x02024C6C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x40 + mov r4, r1 + mov r5, r0 + bl GetExecuteSpecialEpisodeType + cmp r4, #2 + bne _02024C98 + mvn r1, #0 + cmp r0, r1 + moveq r4, #0 + movne r4, #1 +_02024C98: + cmp r4, #0 + beq _02024CAC + cmp r4, #1 + beq _02024CFC + b _02024D2C +_02024CAC: + mvn r1, #0 + cmp r0, r1 + bne _02024CC8 + mov r0, #1 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _02024CE8 +_02024CC8: + add r0, sp, #0 + bl GetMainTeamName + ldr r1, _02024D38 ; =_02099E08 + add r2, sp, #0 + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + b _02024D30 +_02024CE8: + ldr r1, _02024D3C ; =0x00000237 + mov r0, r5 + bl GetStringFromFileVeneer + mov r0, r5 + b _02024D30 +_02024CFC: + cmp r0, #3 + ldrne r0, _02024D40 ; =_02099D50 + bne _02024D30 + ldr r1, _02024D44 ; =0x00000236 + add r0, sp, #0 + bl GetStringFromFileVeneer + ldr r1, _02024D38 ; =_02099E08 + add r2, sp, #0 + mov r0, r5 + bl SprintfStatic__0202378C + mov r0, r5 + b _02024D30 +_02024D2C: + ldr r0, _02024D40 ; =_02099D50 +_02024D30: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02024D38: .word _02099E08 +#ifdef JAPAN +_02024D3C: .word 0x000004C8 +_02024D40: .word _02099D50 +_02024D44: .word 0x000004C7 +#else +_02024D3C: .word 0x00000237 +_02024D40: .word _02099D50 +_02024D44: .word 0x00000236 +#endif + arm_func_end GetCurrentTeamNameString + + arm_func_start sub_02024D48 +sub_02024D48: ; 0x02024D48 + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + tst r1, #0xf0000 + mov r1, r2, lsr #0x10 + bne _02024D70 + and r1, r1, #0xff + bl sub_02058C30 + mov r0, r4 + ldmia sp!, {r4, pc} +_02024D70: + ldr r0, _02024D78 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024D78: .word _02099D50 + arm_func_end sub_02024D48 + +#ifdef EUROPE + arm_func_start sub_02025010_EU +sub_02025010_EU: ; 0x02025010 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl GetLanguage + ldr r2, _02025040 ; =_020B05C0_EU + ldr r1, _02025044 ; =_0209A2F4_EU + ldr r2, [r2, r0, lsl #2] + mov r0, r5 + mov r3, r4 + bl SprintfStatic__0202378C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02025040: .word _020B05C0_EU +_02025044: .word _0209A2F4_EU + arm_func_end sub_02025010_EU +#endif + + arm_func_start sub_02024D7C +sub_02024D7C: ; 0x02024D7C + stmdb sp!, {r4, lr} + mov r2, r1, lsl #0x10 + mov r4, r0 + mov r2, r2, lsr #0x10 + ands r0, r1, #0xf0000 + beq _02024DD4 + cmp r0, #0x10000 + bne _02024DEC + mov r0, r2, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetMonsterGenderVeneer + cmp r0, #1 + beq _02024DC0 + cmp r0, #2 + beq _02024DC8 + cmp r0, #3 + b _02024DD0 +_02024DC0: + mov r2, #0 + b _02024DD4 +_02024DC8: + mov r2, #1 + b _02024DD4 +_02024DD0: + mov r2, #2 +_02024DD4: + ldr r1, _02024DF4 ; =_022A5048 + mov r0, r4 + add r1, r1, r2, lsl #2 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} +_02024DEC: + ldr r0, _02024DF8 ; =_02099D50 + ldmia sp!, {r4, pc} + .align 2, 0 +_02024DF4: .word _022A5048 +_02024DF8: .word _02099D50 + arm_func_end sub_02024D7C + + arm_func_start GetBagNameString +GetBagNameString: ; 0x02024DFC + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetCurrentBagCapacity + cmp r0, #2 + ldrlt r0, _02024E2C ; =0x000008E1 + ldrge r0, _02024E30 ; =0x000008E2 + mov r1, r0, lsl #0x10 + mov r0, r4 + mov r1, r1, lsr #0x10 + bl GetStringFromFileVeneer + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_02024E2C: .word 0x00001D39 +_02024E30: .word 0x00001D3A +#else +_02024E2C: .word 0x000008E1 +_02024E30: .word 0x000008E2 +#endif + arm_func_end GetBagNameString + + arm_func_start sub_02024E34 +sub_02024E34: ; 0x02024E34 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + sub sp, sp, #0x400 + mov sl, r0 + ldr r0, _02024F94 ; =0x000001B1 + mov r4, r1 + bl StringFromId + str r0, [sp] + ldr r0, _02024F98 ; =0x000001B2 + bl StringFromId + ldr r1, _02024F9C ; =0x000029D1 + mov fp, r0 + cmp r4, r1 + blo _02024E94 + ldr r0, _02024FA0 ; =0x00002F49 + cmp r4, r0 + bhs _02024E94 + rsb r0, r1, #0 + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemMoveId16 + mov r5, r0 + b _02024E98 +_02024E94: + mov r5, #0 +_02024E98: + mov r0, sl +#ifdef JAPAN + mov r1, #0x3b8 +#else + mov r1, #0x1b0 +#endif + bl GetStringFromFileVeneer + ldr r1, _02024FA4 ; =_02099E18 + mov r0, sl + bl strcat + cmp r5, #0 + beq _02024F78 + bl GetGameMode + cmp r0, #1 + ldrls sb, _02024FA8 ; =_02099CA4 + mvn r4, #0 + ldrhi sb, _02024FAC ; =_02099CC4 + b _02024F6C +_02024ED0: + ldrsh r6, [sb], #2 + mov r0, r6 + bl GetActorMatchingStorageId + mov r7, r0 + cmp r6, #0x16 + bne _02024EF4 + ldr r1, _02024FA4 ; =_02099E18 + mov r0, sl + bl strcat +_02024EF4: + cmp r7, r4 + beq _02024F6C + mov r0, r7 + bl GetTeamMember + ldrsh r8, [r0, #4] + bl sub_0204E530 + cmp r0, #0 + bne _02024F2C + mov r0, r7 + bl GetActiveRosterIndex + cmp r0, r4 + beq _02024F2C + bl GetActiveTeamMember + ldrsh r8, [r0, #0xc] +_02024F2C: + add r0, sp, #4 + mov r1, r6 + bl sub_02023DC0 + mov r0, r5 + mov r1, r8 + bl sub_02053D1C + cmp r0, #0 + ldrne r3, [sp] + ldr r1, _02024FB0 ; =_02099E20 + moveq r3, fp + add r0, sp, #0x44 + add r2, sp, #4 + bl SprintfStatic__0202378C + mov r0, sl + add r1, sp, #0x44 + bl strcat +_02024F6C: + ldrsh r0, [sb] + cmp r0, r4 + bne _02024ED0 +_02024F78: + ldr r1, _02024FB4 ; =_02099E40 + mov r0, sl + bl strcat + mov r0, sl + add sp, sp, #0x44 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +_02024F94: .word 0x000003B9 +_02024F98: .word 0x000003BA +#else +_02024F94: .word 0x000001B1 +_02024F98: .word 0x000001B2 +#endif +#if defined(EUROPE) +_02024F9C: .word 0x000029D3 +_02024FA0: .word 0x00002F4B +#elif defined(JAPAN) +_02024F9C: .word 0x000041CE +_02024FA0: .word 0x00004746 +#else +_02024F9C: .word 0x000029D1 +_02024FA0: .word 0x00002F49 +#endif +_02024FA4: .word _02099E18 +_02024FA8: .word _02099CA4 +_02024FAC: .word _02099CC4 +_02024FB0: .word _02099E20 +_02024FB4: .word _02099E40 + arm_func_end sub_02024E34 + + arm_func_start GetSize0x80Buffer +GetSize0x80Buffer: ; 0x02024FB8 + ldr r1, _02024FC4 ; =_022A5468 + add r0, r1, r0, lsl #7 + bx lr + .align 2, 0 +_02024FC4: .word _022A5468 + arm_func_end GetSize0x80Buffer + + arm_func_start GetSize0x80Buffer2 +GetSize0x80Buffer2: ; 0x02024FC8 + ldr r1, _02024FD4 ; =_022A5068 + add r0, r1, r0, lsl #7 + bx lr + .align 2, 0 +_02024FD4: .word _022A5068 + arm_func_end GetSize0x80Buffer2 + + arm_func_start GetDungeonResultString +GetDungeonResultString: ; 0x02024FD8 + ldr r1, _02024FE4 ; =_022A5268 + add r0, r1, r0, lsl #7 + bx lr + .align 2, 0 +_02024FE4: .word _022A5268 + arm_func_end GetDungeonResultString + + arm_func_start SubstitutePlaceholderItemTags +SubstitutePlaceholderItemTags: ; 0x02024FE8 + stmdb sp!, {r3, r4, r5, lr} + cmp r1, #0 + beq _02025030 + mov r3, #0x14 + mul r3, r0, r3 + ldr lr, _02025070 ; =_022A596A + ldrh r0, [r1] + ldr ip, _02025074 ; =_022A5969 + add r4, lr, r3 + strh r0, [lr, r3] + ldrh lr, [r1, #2] + mov r0, #1 + add r5, ip, r3 + strh lr, [r4, #2] + ldrh r1, [r1, #4] + strh r1, [r4, #4] + strb r0, [ip, r3] + b _02025048 +_02025030: + mov r1, #0x14 + mul r3, r0, r1 + ldr r1, _02025074 ; =_022A5969 + mov r0, #0 + strb r0, [r1, r3] + add r5, r1, r3 +_02025048: + cmp r2, #0 + moveq r0, #0 + beq _02025068 + ldr ip, _02025078 ; =_022A5970 + ldmia r2, {r0, r1, r2} + add r3, ip, r3 + stmia r3, {r0, r1, r2} + mov r0, #1 +_02025068: + strb r0, [r5] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02025070: .word _022A596A +_02025074: .word _022A5969 +_02025078: .word _022A5970 + arm_func_end SubstitutePlaceholderItemTags + + arm_func_start sub_0202507C +sub_0202507C: ; 0x0202507C + stmdb sp!, {r3, lr} + mov r2, #0x14 + mul r3, r1, r2 + ldr r1, _020250D8 ; =_022A5969 + ldrb r1, [r1, r3] + cmp r1, #0 + beq _020250BC + ldr r1, _020250DC ; =_022A596A + ldr r2, _020250E0 ; =_022A5970 + mov ip, #0 + add r1, r1, r3 + add r2, r2, r3 + mov r3, #1 + str ip, [sp] + bl MaybeGetFormattedItemName + ldmia sp!, {r3, pc} +_020250BC: + ldr r1, _020250DC ; =_022A596A + mov r2, #0 + add r1, r1, r3 + mov r3, #1 + str r2, [sp] + bl MaybeGetFormattedItemName + ldmia sp!, {r3, pc} + .align 2, 0 +_020250D8: .word _022A5969 +_020250DC: .word _022A596A +_020250E0: .word _022A5970 + arm_func_end sub_0202507C diff --git a/include/main_0201514C.h b/include/main_0201514C.h new file mode 100644 index 00000000..79f9ffbe --- /dev/null +++ b/include/main_0201514C.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_MAIN_0201514C_H +#define PMDSKY_MAIN_0201514C_H + +#include "common.h" +#include "enums.h" +#include "util.h" + +bool8 IsSameMove(struct move* moveset, struct move* move); + +#endif //PMDSKY_MAIN_0201514C_H diff --git a/main.lsf b/main.lsf index 8d456da4..aa968d83 100644 --- a/main.lsf +++ b/main.lsf @@ -80,6 +80,8 @@ Static main Object asm/main_02014B1C.o Object src/main_02014CEC.o Object asm/main_02015090.o + Object src/main_0201514C.o + Object asm/main_020151C8.o Object src/main_020251AC.o Object asm/main_020251F0.o Object src/main_02025788.o diff --git a/src/main_0201514C.c b/src/main_0201514C.c new file mode 100644 index 00000000..844a3942 --- /dev/null +++ b/src/main_0201514C.c @@ -0,0 +1,19 @@ +#include "main_0201514C.h" + +bool8 IsSameMove(struct move* moveset, struct move* move) { + if (!GET_FLAG(move->flags0, MOVE_FLAG_EXISTS)) { + return FALSE; + } + + for (s16 i = 0; i < 4; i++) { + if (!GET_FLAG(moveset[i].flags0, MOVE_FLAG_EXISTS)) { + break; + } + + if (move->id == moveset[i].id) { + return TRUE; + } + } + + return FALSE; +}