"progress"

This commit is contained in:
Yanis002
2025-02-05 23:17:42 +01:00
parent d29bbff21f
commit 514887962c
8 changed files with 171 additions and 14 deletions
+2
View File
@@ -23,6 +23,7 @@ src/Main/Unknown/UnkStruct_02032f0c.cpp:
src/Main/Unknown/UnkStruct_02035064.cpp:
.text start:0x02035064 end:0x02035370
.data start:0x02057b28 end:0x02057b30
src/Main/Message/MessageManager.cpp:
.text start:0x0203643c end:0x020371b4
@@ -34,6 +35,7 @@ src/Main/Message/BMG.cpp:
src/Main/Unknown/UnkStruct_02037750.cpp:
.text start:0x02037750 end:0x020387e0
.data start:0x02057d00 end:0x02057d70
src/Main/Unknown/UnkStruct_02038aa0.cpp:
.text start:0x0203881c end:0x02039578
+2 -2
View File
@@ -1738,8 +1738,8 @@ _ZN18UnkStruct_02035064D1Ev kind:function(arm,size=0x4) addr:0x20350ac
_ZN18UnkStruct_0203506413func_020350b0Ev kind:function(arm,size=0x4) addr:0x20350b0
_ZN18UnkStruct_0203506413func_020350b4Eiicss kind:function(arm,size=0xb8) addr:0x20350b4
_ZN18UnkStruct_0203506413func_0203516cEv kind:function(arm,size=0x3c) addr:0x203516c
_ZN18UnkStruct_020350647vfunc_0Ev kind:function(arm,size=0x8) addr:0x20351a8
_ZN18UnkStruct_020350647vfunc_4Ev kind:function(arm,size=0x8) addr:0x20351b0
_ZN18UnkStruct_020350648vfunc_00Ev kind:function(arm,size=0x8) addr:0x20351a8
_ZN18UnkStruct_020350648vfunc_04Ev kind:function(arm,size=0x8) addr:0x20351b0
_ZN18UnkStruct_0203506413func_020351b8Ebbbb kind:function(arm,size=0x120) addr:0x20351b8
_ZN18UnkStruct_0203506413func_020352d8Ev kind:function(arm,size=0x98) addr:0x20352d8
func_02035370 kind:function(arm,size=0x18) addr:0x2035370
+2 -2
View File
@@ -1738,8 +1738,8 @@ _ZN18UnkStruct_02035064D1Ev kind:function(arm,size=0x4) addr:0x2035068
_ZN18UnkStruct_0203506413func_020350b0Ev kind:function(arm,size=0x4) addr:0x203506c
_ZN18UnkStruct_0203506413func_020350b4Eiicss kind:function(arm,size=0xb8) addr:0x2035070
_ZN18UnkStruct_0203506413func_0203516cEv kind:function(arm,size=0x3c) addr:0x2035128
_ZN18UnkStruct_020350647vfunc_0Ev kind:function(arm,size=0x8) addr:0x2035164
_ZN18UnkStruct_020350647vfunc_4Ev kind:function(arm,size=0x8) addr:0x203516c
_ZN18UnkStruct_020350648vfunc_00Ev kind:function(arm,size=0x8) addr:0x2035164
_ZN18UnkStruct_020350648vfunc_04Ev kind:function(arm,size=0x8) addr:0x203516c
_ZN18UnkStruct_0203506413func_020351b8Ebbbb kind:function(arm,size=0x120) addr:0x2035174
_ZN18UnkStruct_0203506413func_020352d8Ev kind:function(arm,size=0x98) addr:0x2035294
func_02035370 kind:function(arm,size=0x18) addr:0x203532c
+3
View File
@@ -197,6 +197,9 @@ public:
// Rupees
s32 GetMaxRupees() const;
void GiveRupees(s32 amount, bool param2);
inline u16 GetNumRupees(void) {
return this->mNumRupees;
}
// Potion
void SetPotion(u32 index, Potion potion);
+2 -2
View File
@@ -43,8 +43,8 @@ public:
/* 87 */ unk8 mUnk_87;
/* 88 */
/* 0 */ virtual s32 vfunc_0(); // func_020351a8
/* 4 */ virtual s32 vfunc_4(); // func_020351b0
/* 0 */ virtual s32 vfunc_00(); // func_020351a8
/* 4 */ virtual s32 vfunc_04(); // func_020351b0
/* 8 */
UnkStruct_02035064();
+4 -3
View File
@@ -7,12 +7,13 @@
#include "System/SysNew.hpp"
class UnkStruct_020397f8;
typedef unk32 (*UnkStruct_02037750_Callback1)(unk32);
// astruct_14
class UnkStruct_02037750 : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ unk32 mUnk_04[0x4];
/* 04 */ UnkStruct_02037750_Callback1 mUnk_04[0x4];
/* 14 */ unk32 mUnk_14;
/* 18 */ u32 mUnk_18;
/* 1c */ u8 mUnk_1c;
@@ -29,7 +30,7 @@ public:
/* 1c */ virtual bool vfunc_1c();
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual bool vfunc_24(unk32 param1);
/* 28 */ virtual unk8 vfunc_28(s32 param1);
/* 28 */ virtual unk32 vfunc_28(s32 param1);
/* 2c */ virtual unk32 vfunc_2c(s32 param1);
/* 30 */ virtual bool vfunc_30();
/* 34 */
@@ -73,7 +74,7 @@ public:
/* 00 */ virtual ~UnkStruct_020386d8();
/* 08 */ virtual void vfunc_08(u32 param1);
/* 24 */ virtual bool vfunc_24(unk32 param1);
/* 28 */ virtual unk8 vfunc_28(s32 param1);
/* 28 */ virtual unk32 vfunc_28(s32 param1);
/* 30 */ virtual bool vfunc_30();
/* 34 */
};
+13 -3
View File
@@ -18,13 +18,23 @@ ARM void UnkStruct_02035064::func_020350b0() {
}
ARM void UnkStruct_02035064::func_020350b4(s32 param1, unk32 param2, unk8 param3, unk16 param4, unk16 param5) {}
ARM void UnkStruct_02035064::func_0203516c() {}
ARM s32 UnkStruct_02035064::vfunc_0() {
ARM void UnkStruct_02035064::func_0203516c() {
if (this->mUnk_78 != 0x0) {
if (this->mUnk_86 == false) {
this->mUnk_5c.func_0202e1e8();
this->func_020352d8();
} else {
this->mUnk_86 = false;
}
}
}
ARM s32 UnkStruct_02035064::vfunc_00() {
return this->mUnk_4c;
}
ARM s32 UnkStruct_02035064::vfunc_4() {
ARM s32 UnkStruct_02035064::vfunc_04() {
return this->mUnk_4e;
}
+143 -2
View File
@@ -1,7 +1,13 @@
#include "Unknown/UnkStruct_02037750.hpp"
#include "Message/MessageManager.hpp"
#include "System/Random.hpp"
#include "Save/AdventureFlags.hpp"
#include "Actor/ActorManager.hpp"
#include "Item/ItemManager.hpp"
extern "C" ARM unk32 func_02037628(u8*);
extern u8* data_027e0d54;
extern unk32* data_027e0cb4;
ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, unk32 param2) {
s32 i;
@@ -38,7 +44,142 @@ ARM bool UnkStruct_02037750::vfunc_24(unk32 param1) {
return this->func_020385d0(param1, auStack_28) != 0;
}
ARM unk8 UnkStruct_02037750::vfunc_28(s32 param1) {}
// non-matching
ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) {
u16 uVar1;
s64 lVar2;
Random *pRVar3;
char cVar4;
u16 uVar5;
int iVar6;
u32 uVar7;
UnkStruct_02037750_Callback1 pcVar8;
int iVar9;
u32 uVar10;
u32 uVar11;
bool bVar12;
pRVar3 = gRandom;
uVar7 = (u32)*(u16 *)(param1 + 0x2);
if (uVar7 >= 0xF && uVar7 <= 0x2E) {
pcVar8 = this->mUnk_04[((uVar7 - 0xF) << 0x1E) >> 0x1C];
iVar9 = 0;
if (pcVar8 != NULL) {
iVar9 = pcVar8(this->mUnk_14);
}
return iVar9;
}
if ((s32)uVar7 <= 0) {
switch(uVar7) {
case 0x0:
case 0x2f:
break;
case 0x7:
if (data_027e0d54[0xd] != 0) {
return -0x1;
}
return (data_027e0d54[0xf] != 0);
case 0x1:
case 0x2:
case 0x3:
UnkStruct_020397f8* ret_3 = data_027e0c68.func_020366c4();
if (0x0 < ret_3->mUnk_15c) {
return -0x1;
}
uVar7 = (param1 + 0x1);
if (ret_3->mUnk_576 < uVar7) {
return ret_3->mUnk_576;
}
if (uVar7 == 0x0) {
uVar10 = 0x0;
} else {
lVar2 = gRandom->mRandomValue * gRandom->mFactor;
uVar10 = gRandom->Next(lVar2);
// uVar10 = *(int *)((int)&gRandom->mAddend + 0x4) +
// *(int *)((int)&gRandom->mFactor + 0x4) *
// *(uint *)&gRandom->mRandomValue + *(uint *)&gRandom->mFactor *
// *(int *)((int)&gRandom->mRandomValue + 0x4) +
// (lVar2 >> 0x20) + (gRandom->mAddend << uVar11); // CARRY4
// part of the inline?
// *(uint *)&gRandom->mRandomValue = *(uint *)&gRandom->mAddend + uVar11;
// *(uint *)((int)&gRandom->mRandomValue + 0x4) = uVar10;
if (uVar7 != 0x0) {
uVar10 = (uVar7 * uVar10 >> 0x20);
}
}
return uVar10;
case 0x4:
return gAdventureFlags->Get(param1 + 0x4) != false;
case 0x5:
return gActorManager->func_ov00_020c3b2c(NULL) != 0;
case 0x6:
break;
case 0x8:
return (((data_027e0cb4[(param1 + 0x4) >> 5]) & 1) << ((param1 + 0x4) & 0x1f)) == 0x0;
case 0x9:
break;
case 0xa:
break;
case 0xb:
lVar2 = gRandom->mRandomValue * gRandom->mFactor;
uVar7 = lVar2;
uVar10 = gRandom->Next(uVar7);
return (int)(uVar10 * 0x64 >> 0x20) < (param1 + 0x4);
case 0xc:
uVar7 = (param1 + 0x1);
if (uVar7 == 0x0) {
uVar10 = 0x0;
} else {
lVar2 = gRandom->mRandomValue * gRandom->mFactor;
uVar11 = lVar2;
uVar10 = gRandom->Next(uVar11);
if (uVar7 != 0x0) {
uVar10 = (uVar7 * uVar10 >> 0x20);
}
}
return (int)(char)uVar10;
case 0xd:
return gItemManager->GetNumRupees() != 0;
case 0xe:
return gItemManager->HasItem(param1 + 0x4) != 0;
default:
if (uVar7 == 0x2f) {
return gItemManager->HasItem((param1 + 0x4) + 0x60) != 0;
}
break;
}
}
uVar7 = (param1 + 0x1);
if (uVar7 == 0x0) {
uVar10 = 0x0;
} else {
lVar2 = gRandom->mRandomValue * gRandom->mFactor;
uVar11 = lVar2;
uVar10 = gRandom->Next(uVar11);
if (uVar7 != 0x0) {
uVar10 = (uVar7 * uVar10 >> 0x20);
}
}
return (int)(char)uVar10;
}
ARM unk32 UnkStruct_02037750::vfunc_2c(s32 param1) {}
ARM LinkStateInteract *UnkStruct_02037750::GetLinkStateInteract() {
@@ -83,7 +224,7 @@ ARM bool UnkStruct_020386d8::vfunc_24(unk32 param1) {
return this->func_020385d0(param1, &this->mUnk_24.mUnk_00) != 0;
}
ARM unk8 UnkStruct_020386d8::vfunc_28(s32 param1) {
ARM unk32 UnkStruct_020386d8::vfunc_28(s32 param1) {
this->mUnk_20 = this->UnkStruct_02037750::vfunc_28(param1);
return this->mUnk_20;
}