Merge branch 'main' into match_actor_rupee

This commit is contained in:
Aetias
2024-10-19 13:34:42 +02:00
703 changed files with 384911 additions and 1775408 deletions
File diff suppressed because it is too large Load Diff
+9 -13
View File
@@ -1,23 +1,19 @@
#include "Actor/ActorManager.hpp"
#ifdef STUBS
void ActorManager::DeleteActor(u32 index, bool param2) {}
void ActorManager::func_ov00_020c3484(ActorRef *ref, Actor *actor, unk32 param3) {}
void ActorManager::Actor_vfunc_10(u32 param1) {}
Actor* ActorManager::FindActorById(u32 id) {}
Actor* ActorManager::GetActor(ActorRef *ref) {}
Actor *ActorManager::FindActorById(u32 id) {}
Actor *ActorManager::GetActor(ActorRef *ref) {}
bool FilterActor::Filter(Actor *actor) {}
s32 ActorManager::FilterActors(ActorFilterBase *filter, ActorList *filteredActors) {}
void ActorManager::FindActorByType(ActorRef *ref, ActorManager *manager, u32 type) {}
void ActorManager::FindNearestActorOfType(ActorRef *ref, ActorManager *manager, u32 type, Vec3p *pos) {}
void ActorManager::func_ov00_020c398c() {}
void ActorManager::func_ov00_020c399c() {}
void ActorManager::func_ov00_020c39ac(u32 index, u32 *actorTypes, bool param3) {}
s32 ActorManager::FilterActors(FilterActorBase *filter, ActorList *filteredActors) {}
void ActorManager::FindActorByType(ActorRef *ref, ActorManager *manager, ActorTypeId type) {}
void ActorManager::FindNearestActorOfType(ActorRef *ref, ActorManager *manager, ActorTypeId type, Vec3p *pos) {}
bool ActorManager::func_ov00_020c398c(u32 index) {}
void ActorManager::func_ov00_020c399c(u32 index, Cylinder *cylinder) {}
Actor *ActorManager::func_ov00_020c39ac(u32 index, const ActorTypeId *actorTypes, bool param3) {}
s32 ActorManager::func_ov00_020c3b2c(s32 *param1) {}
s32 ActorManager::func_ov00_020c3bb0(unk32 param1, s32 *param2) {}
void ActorManager::func_ov00_020c3ce8(unk32 param1, unk32 param2) {}
void ActorManager::Actor_vfunc_28() {}
bool ActorManager::ActorTypeIsOneOf(u32 type, u32 *types) {}
#endif
bool ActorManager::ActorTypeIsOneOf(u32 type, ActorTypeId *types) {}
-4
View File
@@ -1,8 +1,4 @@
#include "Item/Item.hpp"
#ifdef STUBS
bool Item::func_ov00_020ad020(ItemId item) {}
bool Item::func_ov00_020ad068(ItemId item) {}
#endif
+73 -97
View File
@@ -1,9 +1,10 @@
#include "Item/ItemManager.hpp"
#include "Player/PlayerLinkBase.hpp"
static const char *sShipPartTypes[] = { "anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg" };
static const char *sShipPartTypes[] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
extern u32 *data_027e0ce0[];
THUMB ItemManager* ItemManager::Create() {
THUMB ItemManager *ItemManager::Create() {
gItemManager = new(data_027e0ce0[1], 4) ItemManager();
return gItemManager;
}
@@ -23,12 +24,12 @@ THUMB void ItemManager::Save(SaveItemManager *save) {
for (s32 i = 0; i < NUM_POTIONS; ++i) {
save->potions[i] = mPotions[i];
}
save->numBombs = (u8) (*mAmmo)[ItemFlag_BombBag];
save->numBombchus = (u8) (*mAmmo)[ItemFlag_BombchuBag];
save->numArrows = (u8) (*mAmmo)[ItemFlag_Bow];
save->equippedItem = (u8) mEquippedItem;
save->numBombs = (u8) (*mAmmo)[ItemFlag_BombBag];
save->numBombchus = (u8) (*mAmmo)[ItemFlag_BombchuBag];
save->numArrows = (u8) (*mAmmo)[ItemFlag_Bow];
save->equippedItem = (u8) mEquippedItem;
save->salvagedTreasureFlags = mSalvagedTreasureFlags;
save->hourglassSeconds = FastDivide(mHourglassSandFrames, 60);
save->hourglassSeconds = FastDivide(mHourglassSandFrames, 60);
for (s32 i = 0; i < Gem_COUNT; ++i) {
save->numGems[i] = mNumGems[i];
}
@@ -47,8 +48,8 @@ THUMB void ItemManager::Save(SaveItemManager *save) {
save->unk_9f[i] = mUnk_098[i];
save->unk_82[i] = mUnk_09e[i];
}
save->quiverSize = mQuiverSize;
save->bombBagSize = mBombBagSize;
save->quiverSize = mQuiverSize;
save->bombBagSize = mBombBagSize;
save->bombchuBagSize = mBombchuBagSize;
if (mEquippedFairy == FairyId_None) {
save->equippedFairy = 3;
@@ -60,21 +61,20 @@ THUMB void ItemManager::Save(SaveItemManager *save) {
THUMB void ItemManager::Load(const SaveItemManager *save) {
mItemFlags = save->itemFlags;
mNumRupees = save->numRupees;
mHourglassSandFrames = save->hourglassSeconds <= MAX_HOURGLASS_SECONDS
? save->hourglassSeconds * 60
: MAX_HOURGLASS_SECONDS * 60;
mHourglassSandFrames =
save->hourglassSeconds <= MAX_HOURGLASS_SECONDS ? save->hourglassSeconds * 60 : MAX_HOURGLASS_SECONDS * 60;
for (s32 i = ItemFlag_EQUIP_START; i < ItemFlag_EQUIP_END; ++i) {
if (GET_FLAG(mItemFlags.flags, (u32) i)) {
(*mAmmo)[i] = 1;
}
}
(*mAmmo)[ItemFlag_BombBag] = save->numBombs;
(*mAmmo)[ItemFlag_BombBag] = save->numBombs;
(*mAmmo)[ItemFlag_BombchuBag] = save->numBombchus;
(*mAmmo)[ItemFlag_Bow] = save->numArrows;
(*mAmmo)[ItemFlag_Bow] = save->numArrows;
for (s32 i = 0; i < NUM_POTIONS; ++i) {
mPotions[i] = save->potions[i];
}
mEquippedItem = save->equippedItem;
mEquippedItem = save->equippedItem;
mSalvagedTreasureFlags = save->salvagedTreasureFlags;
for (s32 i = 0; i < Gem_COUNT; ++i) {
mNumGems[i] = save->numGems[i];
@@ -94,10 +94,10 @@ THUMB void ItemManager::Load(const SaveItemManager *save) {
mUnk_098[i] = save->unk_9f[i];
mUnk_09e[i] = save->unk_82[i];
}
mQuiverSize = save->quiverSize;
mBombBagSize = save->bombBagSize;
mQuiverSize = save->quiverSize;
mBombBagSize = save->bombBagSize;
mBombchuBagSize = save->bombchuBagSize;
mEquippedFairy = save->equippedFairy;
mEquippedFairy = save->equippedFairy;
if (mEquippedFairy >= FairyId_COUNT) {
mEquippedFairy = FairyId_None;
}
@@ -120,7 +120,7 @@ ARM FairyId ItemManager::GetEquippedFairy() const {
return fairy;
}
ARM ActorNavi* ItemManager::GetFairy(FairyId id) const {
ARM ActorNavi *ItemManager::GetFairy(FairyId id) const {
return mFairies[id];
}
@@ -149,29 +149,29 @@ ARM void ItemManager::TickEquipItem(void) {
ARM void ItemManager::func_ov00_020ad528() {}
ARM ItemModel* ItemManager::GetItemModel(ItemModelId id) {
ARM ItemModel *ItemManager::GetItemModel(ItemModelId id) {
return mItemModels[id];
}
extern unk32 data_027e0fc4;
extern "C" void* func_ov00_020bb3a8(unk32 param1, u32 index);
extern "C" void *func_ov00_020bb3a8(unk32 param1, u32 index);
extern "C" void func_ov00_020c0bdc(void *param1, unk32 param2);
ARM void ItemManager::func_ov00_020ad538(unk32 param1) const {
void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 6);
void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 6);
func_ov00_020c0bdc(unk1, param1);
}
ARM void ItemManager::func_ov00_020ad560(unk32 param1) const {
void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 7);
void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 7);
func_ov00_020c0bdc(unk1, param1);
}
ARM ItemModel* ItemManager::GetDungeonItemModel(u32 index) {
ARM ItemModel *ItemManager::GetDungeonItemModel(u32 index) {
return mDungeonItemModels[index];
}
ARM void ItemManager::func_ov00_020ad594(unk32 param1) const {
void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 11);
void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 11);
func_ov00_020c0bdc(unk1, param1);
}
@@ -190,7 +190,7 @@ ARM void ItemManager::EquipItem_vfunc_38(unk32 param1) {
this->Shield_vfunc_38(param1);
}
if (data_027e0d38->mUnk_14 == 1) return;
ItemFlag equip = this->GetEquippedItem();
if (equip == ItemFlag_None) return;
if (mEquipLoadTimer > 0) return;
@@ -198,23 +198,23 @@ ARM void ItemManager::EquipItem_vfunc_38(unk32 param1) {
(*mEquipItems)[equip]->vfunc_38(param1);
}
ARM bool ItemManager::EquipItem_vfunc_3c(Vec4p *param1, ItemFlag equipId) {
Vec4p result;
if ((*mEquipItems)[equipId]->vfunc_3c(&result)) {
ARM bool ItemManager::EquipCollidesWith(Cylinder *hitbox, ItemFlag equipId) {
Cylinder equipHitbox;
if ((*mEquipItems)[equipId]->GetHitbox(&equipHitbox)) {
s32 step = (*mEquipItems)[equipId]->vfunc_4c();
if (step > 0) {
Approach_thunk(&result.y, param1->y, step);
Approach_thunk(&equipHitbox.pos.y, hitbox->pos.y, step);
}
return func_01ffec34(param1, &result);
return hitbox->Overlaps(&equipHitbox);
}
return false;
}
ARM void ItemManager::EquipItem_vfunc_2c(ItemFlag equipId) {
(*mEquipItems)[equipId]->vfunc_2c();
ARM s32 ItemManager::EquipItem_vfunc_2c(ItemFlag equipId) {
return (*mEquipItems)[equipId]->vfunc_2c();
}
ARM EquipItem* ItemManager::GetEquipItem(ItemFlag equipId) {
ARM EquipItem *ItemManager::GetEquipItem(ItemFlag equipId) {
if (equipId == ItemFlag_None) {
return NULL;
} else {
@@ -236,15 +236,10 @@ extern "C" unk32 func_ov00_02078b40(UnkStruct_027e0d38 *param1);
extern void *data_027e10a4;
extern "C" bool func_ov15_02136670(void *param1);
extern unk8 data_ov29_0217a4ac[];
extern "C" bool _ZN10MapManager18func_ov00_020849f8Ei(void *param1);
extern unk32 data_027e0fc8;
extern "C" bool func_ov00_020bbd80(unk32 param1, unk32 param2);
extern "C" bool _ZN14PlayerLinkBase18func_ov00_020bbd80Ei(unk32 param1, unk32 param2);
extern "C" bool _ZNK11ItemManager7HasItemEi();
extern "C" void _ZN11ItemManager12GetEquipItemEi();
ARM bool NONMATCH(ItemManager::func_ov00_020ad790)(unk32 param1) {
#ifndef NONMATCHING
#include "../asm/ov00/Item/ItemManager_func_ov00_020ad790.inc"
#else
ARM bool ItemManager::func_ov00_020ad790(unk32 param1) {
unk32 unk1 = func_ov00_02078b40(data_027e0d38);
if (unk1 == 2) return func_ov15_02136670(data_027e10a4);
if (data_027e0d38->mUnk_14 == 1) return false;
@@ -252,24 +247,20 @@ ARM bool NONMATCH(ItemManager::func_ov00_020ad790)(unk32 param1) {
if (gOverlayManager.mLoadedOverlays[OverlayIndex_6] == OverlayId_29 && data_ov29_0217a4ac[0x54] != 0) {
return false;
}
ItemFlag equipId = mForcedItem;
bool unk2 = !gMapManager->func_ov00_020849f8();
if (
mEquippedItem != ItemFlag_None &&
(unk2 || (u32) mEquippedItem - 9 <= 1) &&
(data_027e0fc8 == 0 || func_ov00_020bbd80(data_027e0fc8, param1)) &&
this->HasItem(mEquippedItem)
) {
bool unk2 = !gMapManager->func_ov00_020849f8(equipId);
if (mEquippedItem != ItemFlag_None && (unk2 || (u32) mEquippedItem - 9 <= 1) &&
(gPlayerLink == 0 || gPlayerLink->func_ov00_020bbd80(param1)) && this->HasItem(mEquippedItem))
{
equipId = mEquippedItem;
}
if (equipId != ItemFlag_None) {
if (mEquipLoadTimer != 0) return param1 == 0;
return this->GetEquipItem(equipId)->IsUsable(param1);
}
return false;
#endif
}
THUMB ShipType ItemManager::GetEquippedShipPart(ShipPart part) const {
@@ -308,7 +299,7 @@ THUMB u16 ItemManager::GetUnk_09e(u32 index) const {
THUMB s32 ItemManager::GetUnk_09e_Divided(u32 index) const {
q20 quotient = Divide(INT_TO_Q20(mUnk_09e[index]), FLOAT_TO_Q20(2.54));
s32 result = ROUND_Q20(quotient);
s32 result = ROUND_Q20(quotient);
if (result < 1) result = 1;
return result;
}
@@ -323,7 +314,7 @@ THUMB void ItemManager::SetUnk_09e(u32 index, u16 value) {
}
}
const u16 sQuiverSizes[] = {20, 20, 30, 50};
const u16 sQuiverSizes[] = {20, 20, 30, 50};
const u16 sBombBagSizes[] = {10, 20, 30};
THUMB u16 ItemManager::GetMaxAmmo(ItemFlag equipId) const {
@@ -383,9 +374,10 @@ THUMB void ItemManager::RemoveItem(ItemFlag item) {
extern ItemModel **data_027e1058;
extern ItemModel **data_027e105c;
extern "C" ItemModel* func_ov00_02079ffc(void*, const char *modelName, const char *textureName, unk32 param4, unk8 param5, unk8 param6, bool param7);
extern "C" ItemModel* LoadTreasureItemFanfare(ItemModel**, s32 treasureType, bool, bool);
static char *sDefaultItemModel = "key";
extern "C" ItemModel *func_ov00_02079ffc(void *, const char *modelName, const char *textureName, unk32 param4, unk8 param5,
unk8 param6, bool param7);
extern "C" ItemModel *LoadTreasureItemFanfare(ItemModel **, s32 treasureType, bool, bool);
static char *sDefaultItemModel = "key";
static char *sItemModelNames[70] = {
[ItemId_Nothing] = "key",
[ItemId_SmallKey] = "key",
@@ -480,37 +472,24 @@ static char *sItemModelNames3[9] = {
[ItemId_Unk_135 - ItemId_CycloneSlate] = NULL,
};
char *sSpecialItemModelNames[7] = {
"mapTakara\0\0",
"arrowpodL\0\0",
"bmbagL\0",
"bcbagL\0",
"Player/get/gd_\0",
".nsbmd\0",
".nsbtx\0",
"mapTakara\0\0", "arrowpodL\0\0", "bmbagL\0", "bcbagL\0", "Player/get/gd_\0", ".nsbmd\0", ".nsbtx\0",
};
THUMB void ItemManager::LoadFanfareItem(ItemId id) {
mFanfareItem = id;
ItemModel *model;
if (
id == ItemId_Unk_43 ||
id == ItemId_Cannon ||
(id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) ||
id == ItemId_Unk_126 ||
id == ItemId_Unk_133
) {
if (id == ItemId_Unk_43 || id == ItemId_Cannon || (id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) ||
id == ItemId_Unk_126 || id == ItemId_Unk_133)
{
model = *data_027e1058;
} else if (
id >= ItemId_TREASURE_START &&
id <= ItemId_TREASURE_END
) {
} else if (id >= ItemId_TREASURE_START && id <= ItemId_TREASURE_END) {
model = LoadTreasureItemFanfare(data_027e105c, id - ItemId_TREASURE_START, true, false);
} else if (id == ItemId_Unk_125) {
model = *data_027e105c;
} else {
char modelName[0x80] = {};
char modelName[0x80] = {};
char textureName[0x80] = {};
const char *itemName = NULL;
const char *itemName = NULL;
if (id == ItemId_Quiver && (s32) mQuiverSize >= 1) {
itemName = sSpecialItemModelNames[1];
} else if (id == ItemId_BigBombBag && (s32) mBombBagSize >= 1) {
@@ -774,11 +753,11 @@ THUMB void ItemManager::GiveItem(ItemId id) {
break;
}
} break;
case ItemId_SandOfHours: {
mHourglassSandFrames += 3600;
} break;
case ItemId_GoldenChimney: {
gAdventureFlags->Set(AdventureFlag_ReceivedGoldenChimney, true);
GiveShipPart(ShipPart_Chimney, ShipType_Golden);
@@ -814,7 +793,7 @@ THUMB void ItemManager::GiveItem(ItemId id) {
case ItemId_Rupoor50: {
this->GiveRupees(-50, true);
} break;
case ItemId_Nothing: break;
case ItemId_Unk_5: break;
case ItemId_Unk_16: break;
@@ -827,11 +806,9 @@ THUMB void ItemManager::GiveItem(ItemId id) {
}
} break;
}
if (
gAdventureFlags->Get(AdventureFlag_Azurine) &&
gAdventureFlags->Get(AdventureFlag_Crimsonine) &&
gAdventureFlags->Get(AdventureFlag_Aquanine)
) {
if (gAdventureFlags->Get(AdventureFlag_Azurine) && gAdventureFlags->Get(AdventureFlag_Crimsonine) &&
gAdventureFlags->Get(AdventureFlag_Aquanine))
{
gAdventureFlags->Set(AdventureFlag_Unk_128, true);
}
}
@@ -841,7 +818,7 @@ THUMB void ItemManager::GiveEquipItem(ItemFlag item, u16 ammo) {
SET_FLAG(mItemFlags.flags, flag);
this->GetEquipItem(item)->GiveAmmo(ammo);
if (mEquippedItem == ItemFlag_None) {
this->mEquippedItem = item;
this->mEquippedItem = item;
this->mEquipLoadTimer = 1;
}
}
@@ -898,8 +875,8 @@ ARM ItemFlag ItemManager::GetEquippedItem() const {
ARM bool ItemManager::SetEquippedItem(ItemFlag equipId) {
mPrevEquippedItem = mEquippedItem;
mEquippedItem = equipId;
mEquipLoadTimer = 2;
mEquippedItem = equipId;
mEquipLoadTimer = 2;
return true;
}
@@ -912,7 +889,7 @@ THUMB void ItemManager::ForceEquipItem(ItemFlag equipId) {
if (i == equipId) continue;
(*mEquipItems)[i - ItemFlag_EQUIP_START]->UpdateInUse(0);
}
mForcedItem = equipId;
mForcedItem = equipId;
mEquipLoadTimer = 1;
}
@@ -966,12 +943,10 @@ ARM bool ItemManager::HasPotion(u32 index) const {
switch (mPotions[index]) {
case Potion_Red:
case Potion_Purple:
case Potion_Yellow:
return true;
case Potion_Yellow: return true;
case Potion_None:
default:
return false;
default: return false;
}
}
@@ -1032,7 +1007,7 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) {
case ItemId_GoldRupee: {
sfx = SfxId_Fanfare_GoldRupee;
} break;
case ItemId_SmallKey:
case ItemId_GreenRupee:
case ItemId_BlueRupee:
@@ -1040,7 +1015,7 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) {
sfx = SfxId_Fanfare_Rupee;
} break;
case ItemId_Rupoor10:
case ItemId_Rupoor10:
case ItemId_Rupoor50: {
sfx = SfxId_Fanfare_Rupoor;
} break;
@@ -1053,13 +1028,14 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) {
case ItemId_HeartContainer: {
sfx = SfxId_Fanfare_HeartContainer;
} break;
default: {
sfx = SfxId_Fanfare_Treasure;
} break;
}
if (gItemManager->mFanfareSfx != SfxId_None) {
sfx = gItemManager->mFanfareSfx;
gItemManager->mFanfareSfx = SfxId_None;
}
PlaySoundEffect(&data_ov00_020eec68, sfx);
+4 -8
View File
@@ -1,15 +1,13 @@
#include "Map/Course.hpp"
#ifdef STUBS
void Course::GetDungeonProgress(CourseProgress *param_2) {}
void Course::func_ov00_0207ca28(s32 param_2, unk32 param_3, unk32 param_4) {}
char* Course::SetCourseName(char *src) {}
char *Course::SetCourseName(char *src) {}
void Course::func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4) {}
bool Course::func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4) {}
unk32 Course::func_ov00_0207cb30(s32 param_2) {}
void Course::FindMapGridPos(Vec2b *pos, Course *param_2, u32 map) {}
Vec3p* Course::FindMapCenter(unk32 map) {}
Vec3p *Course::FindMapCenter(unk32 map) {}
void Course::func_ov00_0207cbe8(s32 param_2) {}
unk8 Course::func_ov00_0207cc24(s32 param_2) {}
unk32 Course::FindMapData_Unk_08(unk32 map) {}
@@ -49,7 +47,5 @@ void Course::SetMapDataFlag3(unk32 param_2, bool param_3) {}
bool Course::GetMapDataFlag3(unk32 param_2) {}
void Course::SetMapDataFlag4(unk32 param_2, unk32 param_3) {}
bool Course::GetMapDataFlag4(unk32 param_2) {}
MapData* Course::FindMapData(u32 map) {}
MapData* Course::FindCurrentMapData() {}
#endif
MapData *Course::FindMapData(u32 map) {}
MapData *Course::FindCurrentMapData() {}
+3 -7
View File
@@ -1,8 +1,6 @@
#include "Map/MapBase.hpp"
#include "Map/MapManager.hpp"
#ifdef STUBS
MapBase::~MapBase() {}
MapBase_Unk_180::~MapBase_Unk_180() {}
void MapBase::SetBounds(unk32 map, unk32 course) {}
@@ -31,7 +29,7 @@ unk8 MapBase::func_ov00_0207e968() {}
unk8 MapBase::func_ov00_0207e96c() {}
unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {}
unk32 MapBase::vfunc_70(Vec3p *param_2) {}
s32* MapBase::vfunc_74(Vec3p *param_2) {}
s32 *MapBase::vfunc_74(Vec3p *param_2) {}
unk8 MapBase::func_ov00_0207f100() {}
bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {}
unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {}
@@ -76,7 +74,7 @@ unk8 MapBase::GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_
unk32 MapBase::GetOverlappingTrigger(Vec3p *param_2) {}
bool TriggerBase::Overlaps() {}
unk8 MapBase::FindTrigger(unk32 type) {}
unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase * *triggers, unk32 capacity) {}
unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {}
bool MapBase::IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3) {}
bool MapBase::AnyTrigger_func_0c(unk32 type) {}
unk32 TriggerBase::vfunc_0c() {}
@@ -101,7 +99,7 @@ bool MapBase::func_ov00_02080824(unk32 param_2, unk32 param_3) {}
bool MapBase::AddUnk_130(unk32 param_2) {}
bool MapBase::func_ov00_020809b8(unk32 param_2) {}
unk8 MapBase::func_ov00_02080a78(Vec3p *param_2) {}
void MapBase_Unk2::func_ov00_02080ad0(TriggerBase * *param_2, TriggerBase * *param_3) {}
void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3) {}
unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {}
void MapBase::func_ov00_02080d08(unk32 param_2) {}
void MapBase::vfunc_bc() {}
@@ -112,5 +110,3 @@ unk32 TriggerBase::vfunc_10() {}
void MapBase::func_ov00_02080de4() {}
unk8 MapBase::func_ov00_02080de8(unk32 param_2) {}
void MapBase::func_ov00_02080edc() {}
#endif
+7 -9
View File
@@ -1,7 +1,5 @@
#include "Map/MapManager.hpp"
#ifdef STUBS
void MapManager::func_ov00_020820ec(unk32 *param_2) {}
void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4) {}
unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 param_3) {}
@@ -19,7 +17,7 @@ unk8 MapManager::func_ov00_02082454(unk32 param_2, unk32 param_3) {}
unk8 MapManager::func_ov00_02082494(unk32 param_2) {}
unk8 MapManager::func_ov00_020824cc(unk32 param_2) {}
unk8 MapManager::func_ov00_02082504() {}
unk8 * MapManager::func_ov00_02082538() {}
unk8 *MapManager::func_ov00_02082538() {}
void MapManager::func_ov00_02082594() {}
void MapManager::func_ov00_020825ac() {}
s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {}
@@ -41,7 +39,7 @@ bool MapManager::func_ov00_020828f8(s32 *param_2) {}
unk8 MapManager::GetCourseData_Unk_b0() {}
s32 MapManager::func_ov00_02082914(unk32 param_2) {}
unk8 MapManager::func_ov00_02082acc() {}
unk32 * MapManager::func_ov00_02082adc() {}
unk32 *MapManager::func_ov00_02082adc() {}
unk8 MapManager::func_ov00_02082af4() {}
bool MapManager::func_ov00_02082b3c(s32 param_2) {}
unk8 MapManager::func_ov00_02082d08() {}
@@ -129,7 +127,7 @@ unk8 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) {
unk8 MapManager::MapData_vfunc_60() {}
unk8 MapManager::func_ov00_02083e70() {}
unk8 MapManager::MapData_vfunc_68() {}
void MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) {}
s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4) {}
void MapManager::func_ov00_02083f44(Vec3p *param_2) {}
unk8 MapManager::MapData_vfunc_6c() {}
unk8 MapManager::MapData_vfunc_70() {}
@@ -198,7 +196,7 @@ unk8 MapManager::func_ov00_020858b0() {}
s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) {}
unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {}
unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) {}
bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8) {}
bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, Vec3p *param_8, Vec3p *param_9) {}
#endif
bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7,
Vec3p *param_8) {}
bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7,
Vec3p *param_8, Vec3p *param_9) {}
+13 -17
View File
@@ -1,7 +1,5 @@
#include "Player/LinkStateBase.hpp"
#ifdef STUBS
void LinkStateBase::vfunc_00() {}
void LinkStateBase::OnStateEnter() {}
void LinkStateBase::OnStateLeave(s32 param1) {}
@@ -16,7 +14,7 @@ void LinkStateBase::ChangeLinkSubState(LinkStateId id, s32 subState) {}
void LinkStateBase::EquipItem_vfunc_28() {}
void LinkStateBase::UpdateSwordShieldInUse() {}
void LinkStateBase::func_ov00_020a81b8(unk32 param1, unk32 param2) {}
LinkStateItem* LinkStateBase::GetLinkItemState() {}
LinkStateItem *LinkStateBase::GetLinkItemState() {}
void LinkStateBase::LookAt(Vec3p *target) {}
void LinkStateBase::func_ov00_020a81fc() {}
void LinkStateBase::AddHealth(s16 amount) {}
@@ -59,31 +57,29 @@ bool LinkStateBase::HasFlags_PlayerLinkBase_Unk48(u16 flags) {}
unk8 LinkStateBase::Get_PlayerLinkBase_Unk5e() {}
unk32 LinkStateBase::Get_PlayerControlData_Unk004() {}
PlayerCharacter LinkStateBase::GetCurrentCharacter() {}
PlayerControlData* LinkStateBase::GetPlayerControlData() {}
PlayerControlData *LinkStateBase::GetPlayerControlData() {}
LinkStateId LinkStateBase::GetStateId() {}
s32 LinkStateBase::GetHealth() {}
s32 LinkStateBase::GetCurrentCharacterHealth() {}
bool LinkStateBase::func_ov00_020a8c34() {}
Vec3p* LinkStateBase::GetPlayerPos() {}
Vec3p* LinkStateBase::GetPlayerVel() {}
unk8* LinkStateBase::func_ov00_020a8c64() {}
s16* LinkStateBase::GetPlayerAngle() {}
void* LinkStateBase::GetPlayer_Unk18() {}
Vec3p *LinkStateBase::GetPlayerPos() {}
Vec3p *LinkStateBase::GetPlayerVel() {}
unk8 *LinkStateBase::func_ov00_020a8c64() {}
s16 *LinkStateBase::GetPlayerAngle() {}
void *LinkStateBase::GetPlayer_Unk18() {}
s32 LinkStateBase::Get_PlayerControlData_Unk32() {}
Actor* LinkStateBase::GetGrabActor() {}
ActorRef* LinkStateBase::GetGrabActorRef() {}
Actor *LinkStateBase::GetGrabActor() {}
ActorRef *LinkStateBase::GetGrabActorRef() {}
unk32 LinkStateBase::Grab() {}
s32 LinkStateBase::Get_PlayerLinkBase_Unk44() {}
bool LinkStateBase::IsEquipBeingUsed(ItemFlag id) {}
EquipItem* LinkStateBase::GetEquipItem(ItemFlag id) {}
void* LinkStateBase::func_ov00_020a8d40() {}
EquipItem *LinkStateBase::GetEquipItem(ItemFlag id) {}
void *LinkStateBase::func_ov00_020a8d40() {}
unk32 LinkStateBase::func_ov00_020a8d50() {}
unk32 LinkStateBase::func_ov00_020a8d6c() {}
s32 LinkStateBase::PlayerControlData_vfunc_14(s32 param1) {}
unk32 LinkStateBase::Get_PlayerControlData_Unk100() {}
unk32 LinkStateBase::Get_PlayerControlData_Unk120() {}
s32 LinkStateBase::Get_PlayerLinkBase_Unk38() {}
DebugHierarchy* LinkStateBase::GetDebugHierarchy0() {}
DebugHierarchy* LinkStateBase::GetDebugHierarchy1() {}
#endif
DebugHierarchy *LinkStateBase::GetDebugHierarchy0() {}
DebugHierarchy *LinkStateBase::GetDebugHierarchy1() {}
-4
View File
@@ -1,7 +1,5 @@
#include "Player/LinkStateDamage.hpp"
#ifdef STUBS
void LinkStateDamage::vfunc_00() {}
void LinkStateDamage::CreateDebugHierarchy() {}
void LinkStateDamage::OnStateEnter() {}
@@ -16,5 +14,3 @@ bool LinkStateDamage::vfunc_24(s32 param1) {}
bool LinkStateDamage::vfunc_20(s32 param1) {}
void LinkStateDamage::func_ov00_020acfe8(bool param1) {}
LinkStateId LinkStateDamage::GetId() {}
#endif
+1 -5
View File
@@ -1,16 +1,12 @@
#include "Player/LinkStateFollow.hpp"
#ifdef STUBS
void LinkStateFollow::vfunc_00() {}
LinkStateId LinkStateFollow::GetId() {}
void LinkStateFollow::MoveTowardTarget() {}
void LinkStateFollow::OnStateLeave(s32 param1) {}
bool LinkStateFollow::vfunc_24(s32 param1) {}
bool LinkStateFollow::vfunc_28() {}
LinkStateCutscene* LinkStateFollow::GetLinkStateCutscene() {}
LinkStateCutscene *LinkStateFollow::GetLinkStateCutscene() {}
bool LinkStateFollow::vfunc_34(Vec3p *param1) {}
bool LinkStateFollow::func_ov00_020a9180(Vec3p *param1) {}
bool LinkStateFollow::func_ov00_020a9210(Vec3p *param1, Actor *param2) {}
#endif
+1 -5
View File
@@ -1,7 +1,5 @@
#include "Player/LinkStateInteract.hpp"
#ifdef STUBS
void LinkStateInteract::vfunc_00() {}
LinkStateId LinkStateInteract::GetId() {}
void LinkStateInteract::CreateDebugHierarchy() {}
@@ -11,7 +9,7 @@ void LinkStateInteract::OnStateLeave(s32 param1) {}
bool LinkStateInteract::func_ov00_020aa818() {}
void LinkStateInteract::func_ov00_020aa844(Actor *param1) {}
bool LinkStateInteract::vfunc_20(s32 param1) {}
LinkStateRoll* LinkStateInteract::GetLinkStateRoll() {}
LinkStateRoll *LinkStateInteract::GetLinkStateRoll() {}
bool LinkStateInteract::vfunc_24(s32 param1) {}
bool LinkStateInteract::vfunc_34(Vec3p *param1) {}
void LinkStateInteract::SetGrabActorVelocity(Vec3p *velocity) {}
@@ -30,5 +28,3 @@ void LinkStateInteract::func_ov00_020abbdc(ActorRef *ref) {}
void LinkStateInteract::func_ov00_020abc18(ActorRef *ref) {}
bool LinkStateInteract::func_ov00_020abc40() {}
bool LinkStateInteract::func_ov00_020abc78(ActorRef *ref) {}
#endif
+2 -6
View File
@@ -1,14 +1,10 @@
#include "Player/LinkStateItem.hpp"
#ifdef STUBS
void LinkStateItem::vfunc_00() {}
LinkStateId LinkStateItem::GetId() {}
s32 LinkStateItem::IsHammerEquipped() {}
void LinkStateItem::OnStateLeave(s32 param1) {}
EquipBombchu* LinkStateItem::GetEquipBombchu() {}
LinkStateMove* LinkStateItem::GetLinkStateMove() {}
EquipBombchu *LinkStateItem::GetEquipBombchu() {}
LinkStateMove *LinkStateItem::GetLinkStateMove() {}
bool LinkStateItem::func_ov00_020abf70() {}
bool LinkStateItem::vfunc_28() {}
#endif
-4
View File
@@ -1,7 +1,5 @@
#include "Player/LinkStateMove.hpp"
#ifdef STUBS
void LinkStateMove::vfunc_00() {}
LinkStateId LinkStateMove::GetId() {}
void LinkStateMove::CreateDebugHierarchy() {}
@@ -10,5 +8,3 @@ void LinkStateMove::OnStateLeave(s32 param1) {}
bool LinkStateMove::vfunc_24(s32 param1) {}
bool LinkStateMove::func_ov00_020a8f2c() {}
bool LinkStateMove::func_ov00_020a8f4c() {}
#endif
-4
View File
@@ -1,7 +1,5 @@
#include "Player/LinkStateRoll.hpp"
#ifdef STUBS
void LinkStateRoll::vfunc_00() {}
LinkStateId LinkStateRoll::GetId() {}
void LinkStateRoll::CreateDebugHierarchy() {}
@@ -12,5 +10,3 @@ bool LinkStateRoll::vfunc_24(s32 param1) {}
void LinkStateRoll::func_ov00_020aee58(s16 param1, u16 param2) {}
void LinkStateRoll::func_ov00_020aee84() {}
bool LinkStateRoll::func_ov00_020aeeac() {}
#endif
+6 -10
View File
@@ -1,24 +1,20 @@
#include "Player/PlayerLinkBase.hpp"
#ifdef STUBS
#include "Player/PlayerBase.hpp"
bool PlayerBase::vfunc_04() {}
ItemFlag PlayerBase::GetEquipId() {}
bool PlayerBase::CanMove() {}
void PlayerBase::SetUpdatePos(bool updatePos) {}
void PlayerBase::SetVisible(bool visible) {}
EquipSword* PlayerBase::GetEquipSword() {}
EquipShield* PlayerBase::GetEquipShield() {}
EquipSword *PlayerBase::GetEquipSword() {}
EquipShield *PlayerBase::GetEquipShield() {}
void PlayerBase::LookAt(Vec3p *target) {}
bool PlayerBase::func_ov00_020a7c00(s32 param1) {}
bool PlayerBase::func_ov00_020a7c1c(Cylinder *cylinder) {}
bool PlayerBase::CollidesWith(Cylinder *cylinder) {}
bool PlayerBase::func_ov00_020a7c60(Vec3p *param1, Vec3p *param2, s32 param3) {}
void PlayerBase::EquipItem_vfunc_3c(Cylinder *cylinder, ItemFlag equipId) {}
void PlayerBase::EquipItem_vfunc_2c() {}
bool PlayerBase::EquipCollidesWith(Cylinder *cylinder, ItemFlag equipId) {}
s32 PlayerBase::EquipItem_vfunc_2c() {}
void PlayerBase::SetHealth(s16 health) {}
void PlayerBase::AddHealth(s16 amount) {}
bool PlayerBase::Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) {}
bool PlayerBase::TeleportToEntrance(unk32 entranceId, bool param2) {}
bool PlayerBase::TeleportToLastEntrance(bool param1) {}
#endif
+1 -5
View File
@@ -1,12 +1,10 @@
#include "Player/PlayerControl.hpp"
#ifdef STUBS
bool PlayerControl::func_ov00_020aeeac() {}
void PlayerControl::func_ov00_020aeef8() {}
void PlayerControl::func_ov00_020aef30() {}
void PlayerControl::UpdateAim() {}
Actor* PlayerControl::GetFollowActor() {}
Actor *PlayerControl::GetFollowActor() {}
bool PlayerControl::func_ov00_020af01c(unk8 *param1) {}
void PlayerControl::SetUnk_80() {}
void PlayerControl::StopFollowing() {}
@@ -52,5 +50,3 @@ bool PlayerControl::IsNotTouching() {}
bool PlayerControl::IsTouchingFast() {}
bool PlayerControl::IsTappedNow() {}
bool PlayerControl::func_ov00_020b13c4() {}
#endif
-4
View File
@@ -1,7 +1,5 @@
#include "Player/TouchControl.hpp"
#ifdef STUBS
TouchControl::TouchControl() {}
void TouchControl::IncreaseSpeed(s16 increase) {}
void TouchControl::UpdateFlags(u16 speed) {}
@@ -11,5 +9,3 @@ bool TouchControl::func_ov00_0207aeac() {}
void TouchControl::UpdateConditionally(TouchState *state, u16 speed) {}
void TouchControl::func_ov00_0207af38(u16 speed, bool param2) {}
TouchControl::~TouchControl() {}
#endif
-4
View File
@@ -1,7 +1,5 @@
#include "Player/TouchGesture.hpp"
#ifdef STUBS
TouchGesture::TouchGesture() {}
void TouchGesture::ResetTouchHistory() {}
void TouchGesture::Update(void *param1) {}
@@ -9,5 +7,3 @@ TouchGesture::~TouchGesture() {}
void TouchGestureBase::ResetTouchHistory() {}
TouchGestureBase::~TouchGestureBase() {}
#endif STUBS
+4 -8
View File
@@ -1,7 +1,5 @@
#include "Save/AdventureFlags.hpp"
#ifdef STUBS
bool AdventureFlags::Exists() {}
void AdventureFlags::CopyTo(unk32 *flags) {}
void AdventureFlags::func_ov00_02097674() {}
@@ -34,14 +32,14 @@ unk32 AdventureFlags::Get_FlagsUnk_44(int index) {}
unk32 AdventureFlags::Get_FlagsUnk_30(int index) {}
bool AdventureFlags::Get_FlagsUnk_00(int index, FlagsUnk2 *result) {}
bool AdventureFlags::Get_FlagsUnk_18(int index, FlagsUnk2 *result) {}
FlagsUnk* AdventureFlags::Get_FlagsUnk(int index) {}
FlagsUnk *AdventureFlags::Get_FlagsUnk(int index) {}
bool AdventureFlags::func_ov00_02097e6c() {}
bool AdventureFlags::func_ov00_02097e7c() {}
bool AdventureFlags::func_ov00_02097ea4() {}
unk32 AdventureFlags::func_ov00_02097ecc() {}
void* AdventureFlags::func_ov00_02097f8c() {}
void* AdventureFlags::func_ov00_02097fac() {}
void* AdventureFlags::func_ov00_02097fd0() {}
void *AdventureFlags::func_ov00_02097f8c() {}
void *AdventureFlags::func_ov00_02097fac() {}
void *AdventureFlags::func_ov00_02097fd0() {}
void AdventureFlags::func_ov00_02097ff4(bool param1, bool param2) {}
unk32 AdventureFlags::func_ov00_02098058() {}
bool AdventureFlags::func_ov00_02098064(unk32 param1) {}
@@ -50,5 +48,3 @@ bool AdventureFlags::func_ov00_0209809c() {}
bool AdventureFlags::func_ov00_020980ac() {}
void AdventureFlags::func_ov00_020980bc(s32 param1) {}
void AdventureFlags::func_ov00_020980d0() {}
#endif
+74 -108
View File
@@ -2,24 +2,23 @@
#include "Item/ItemManager.hpp"
#include "Map/MapManager.hpp"
// char* data_ov14_021589b4 = *data_ov14_02158994;
extern "C" {
void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum);
u32 func_01fffd04(void*, u32);
u32 func_01fffd04(void *, u32);
bool func_ov00_020c313c();
void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3);
void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool);
void func_ov05_02102c2c(u32* param_1, int param_2, Vec3p *param_3, int param_4, int param_5,
u32 param_6, int param_7, char param_8, char param_9, char param_10);
void func_ov00_020d7ad4(u32* param1, u32 param2);
void func_ov05_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7,
char param_8, char param_9, char param_10);
void func_ov00_020d7ad4(u32 *param1, u32 param2);
u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue
bool func_ov00_020bce48(PlayerLinkBase* implicit, ItemId cutsceneItemId);
void func_ov00_0207a13c(Actor_UnkStruct_012* implicit);
bool func_ov00_020bce48(PlayerLinkBase *implicit, ItemId cutsceneItemId);
void func_ov00_0207a13c(Actor_UnkStruct_012 *implicit);
void _ZN5ActorD2Ev();
void _ZN9SysObjectdlEPv();
ActorRupee* _ZN5ActorC2Ev(ActorRupee *thisx);
ActorRupee *_ZN5ActorC2Ev(ActorRupee *thisx);
void _ZN10ActorRupeeD2Ev();
u32 data_ov14_021589b4;
@@ -27,34 +26,34 @@ extern "C" {
u32 data_ov14_021589d8;
}
/* inline */ char *data_ov14_02158994[8] = { "brg", "fnl", "pdl", "dco", "can", "hul", "bow", "anc" }; // gShipParts
extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev;
/* inline */ char *data_ov14_02158994[8] = {"brg", "fnl", "pdl", "dco", "can", "hul", "bow", "anc"}; // gShipParts
extern "C" void *_ZTV10ActorRupee = _ZN10ActorRupeeD2Ev;
extern u32 data_ov00_020e9370[];
extern u32 data_ov00_020eec9c[];
extern PlayerLinkBase *data_027e0fc8; // gPlayerLink
extern u32 **data_027e0fe0[];
ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc)ActorRupee::Create, NULL);
ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL);
ActorType_UnkClass data_ov14_021589f4 = ActorType_UnkClass(0x3bb, 0xeeb);
// #pragma section pinit begin
// extern "C" void* data_ov14_0215591c = func_ov14_0215517c;
// #pragma section pinit end
ActorRupee* ActorRupee::Create() {
ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee();
ActorRupee *ActorRupee::Create() {
ActorRupee *newRupee = new(*data_027e0fe0[0], 4) ActorRupee();
return newRupee;
}
extern "C" asm ActorRupee* _ZN10ActorRupeeC1Ev(ActorRupee *thisx) {
extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) {
#ifndef NONMATCHING
#include "../../../asm/ov14/Actor/ActorRupee_ActorRupee.inc"
#else
_ZN5ActorC2Ev(thisx);
_ZTV10ActorRupee = thisx;
thisx->mRupeeId = 8;
thisx->mUnk_15c = 0;
thisx->mRupeeId = 8;
thisx->mUnk_15c = 0;
return thisx;
#endif
}
@@ -74,9 +73,9 @@ extern "C" void _ZN10ActorRupee8vfunc_60Ev();
extern "C" void _ZN10ActorRupee8vfunc_64Ev();
extern "C" u32 data_027e0764[];
bool NONMATCH(ActorRupee::vfunc_08)() {
#ifndef NONMATCHING
#ifndef NONMATCHING
#include "../../../asm/ov14/Actor/ActorRupee_vfunc_08.inc"
#else
#else
u32 *puVar2; // undefined
u32 uVar4;
u32 dVar5;
@@ -91,28 +90,28 @@ bool NONMATCH(ActorRupee::vfunc_08)() {
mRupeeId = mUnk_020.mUnk_00[0];
dVar5 = func_ov14_0213b70c(mRupeeId) ? data_ov14_021589d8[0] : FLOAT_TO_Q20(0.666);
iVar7 = (s32)dVar5 >> 1;
iVar7 = (s32) dVar5 >> 1;
mHitbox.pos.x = 0;
mHitbox.pos.y = iVar7;
mHitbox.pos.z = 0;
mHitbox.size = iVar7;
mUnk_08c.pos = mHitbox.pos;
mUnk_08c.size = mHitbox.size;
mHitbox.pos.x = 0;
mHitbox.pos.y = iVar7;
mHitbox.pos.z = 0;
mHitbox.size = iVar7;
mUnk_08c.pos = mHitbox.pos;
mUnk_08c.size = mHitbox.size;
mUnk_0a4.mUnk_04.x = 0;
mUnk_0a4.mUnk_04.y = iVar7;
mUnk_0a4.mUnk_04.z = 0;
mUnk_0a4.mUnk_10 = iVar7 + FLOAT_TO_Q20(1.0);
mUnk_0a4.mUnk_10 = iVar7 + FLOAT_TO_Q20(1.0);
mUnk_09c.mUnk_0 &= 0xFFFFFF4F;
mUnk_09c.mUnk_3 = 1;
mMaxFall = mUnk_08c.size - 1;
mMaxFall = mUnk_08c.size - 1;
puVar2 = data_027e0764;
if (mUnk_03c >= 0) {
func_ov14_0213b204(1);
} else {
switch(mUnk_144) {
switch (mUnk_144) {
case 0:
mVel.x = 0;
mVel.y = 0;
@@ -123,50 +122,39 @@ bool NONMATCH(ActorRupee::vfunc_08)() {
uVar8 = PTR_DWORD_overlay_d_14__0213b108[8];
uVar4 = PTR_DWORD_overlay_d_14__0213b108[uVar8];
uVar9 = PTR_DWORD_overlay_d_14__0213b108[16];
iVar7 = PTR_DWORD_overlay_d_14__0213b108[12];
uVar9 = PTR_DWORD_overlay_d_14__0213b108[16];
iVar7 = PTR_DWORD_overlay_d_14__0213b108[12];
uVar11 = uVar9 + uVar4;
iVar12 = PTR_DWORD_overlay_d_14__0213b108[20];
uVar6 = (u64)uVar11 * (u64)uVar8;
uVar10 = (
iVar12
+ (iVar7 * PTR_DWORD_overlay_d_14__0213b108[0])
+ (uVar8 * PTR_DWORD_overlay_d_14__0213b108[4])
+ ((uVar4) >> 0x20)
uVar6 = (u64) uVar11 * (u64) uVar8;
uVar10 = (iVar12 + (iVar7 * PTR_DWORD_overlay_d_14__0213b108[0]) +
(uVar8 * PTR_DWORD_overlay_d_14__0213b108[4]) + ((uVar4) >> 0x20)
// + CARRY4(uVar9, uVar4)
);
uVar4 = uVar9 + uVar6;
uVar4 = uVar9 + uVar6;
PTR_DWORD_overlay_d_14__0213b108[0] = uVar11;
puVar2[4] = uVar10;
puVar2[4] = uVar10;
puVar2[0] = uVar4;
uVar6 = (
iVar12
+ (iVar7 * uVar11)
+ (uVar8 * uVar10)
+ ((u64)uVar11 * (FP_1(uVar8) >> 0x20))
uVar6 = (iVar12 + (iVar7 * uVar11) + (uVar8 * uVar10) + ((u64) uVar11 * (FP_1(uVar8) >> 0x20))
// + CARRY4(uVar9, uVar6)
);
uVar11 = uVar4 * uVar8;
uVar11 = uVar4 * uVar8;
PTR_DWORD_overlay_d_14__0213b108[4] = uVar6;
puVar2 = PTR_DWORD_overlay_d_14__0213b108;
uVar4 = (
iVar12
+ (iVar7 * uVar4)
+ (uVar8 * uVar6)
+ ((u64)uVar4 * (FP_1(uVar8) >> 0x20))
puVar2 = PTR_DWORD_overlay_d_14__0213b108;
uVar4 = (iVar12 + (iVar7 * uVar4) + (uVar8 * uVar6) + ((u64) uVar4 * (FP_1(uVar8) >> 0x20))
// + CARRY4(uVar9, uVar11)
);
PTR_DWORD_overlay_d_14__0213b108[0] = uVar9 + uVar11;
puVar2[4] = uVar4;
puVar2[4] = uVar4;
mVel.x = (s32)((u64)uVar4 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666);
mVel.y = (s32)((u64)uVar6 * FLOAT_TO_Q20(0.2) >> 0x20) + FLOAT_TO_Q20(0.3333);
mVel.z = (s32)((u64)uVar10 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666);
mVel.x = (s32) ((u64) uVar4 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666);
mVel.y = (s32) ((u64) uVar6 * FLOAT_TO_Q20(0.2) >> 0x20) + FLOAT_TO_Q20(0.3333);
mVel.z = (s32) ((u64) uVar10 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666);
func_ov14_0213b204(0);
break;
case 2:
@@ -175,14 +163,12 @@ bool NONMATCH(ActorRupee::vfunc_08)() {
mVel.z = 0;
func_ov14_0213b204(0);
break;
case 3:
func_ov14_0213b204(5);
break;
case 3: func_ov14_0213b204(5); break;
}
}
return true;
#endif
#endif
}
bool ActorRupee::vfunc_60() {
@@ -214,32 +200,23 @@ void ActorRupee::Move() {
ItemId ActorRupee::GetRupeeCutsceneItemId() {
switch (mRupeeId) {
case RupeeId_Green:
return ItemId_None;
case RupeeId_Green: return ItemId_None;
case RupeeId_Blue:
return ItemId_None;
case RupeeId_Blue: return ItemId_None;
case RupeeId_Red:
return ItemId_None;
case RupeeId_Red: return ItemId_None;
case RupeeId_BigGreen:
return ItemId_BigGreenRupee;
case RupeeId_BigGreen: return ItemId_BigGreenRupee;
case RupeeId_BigRed:
return ItemId_BigRedRupee;
case RupeeId_BigRed: return ItemId_BigRedRupee;
case RupeeId_Gold:
return ItemId_GoldRupee;
case RupeeId_Gold: return ItemId_GoldRupee;
case RupeeId_Rupoor10:
return ItemId_Rupoor10;
case RupeeId_Rupoor10: return ItemId_Rupoor10;
case RupeeId_Rupoor50:
return ItemId_Rupoor50;
case RupeeId_Rupoor50: return ItemId_Rupoor50;
default:
break;
default: break;
}
return ItemId_None;
@@ -247,9 +224,7 @@ ItemId ActorRupee::GetRupeeCutsceneItemId() {
void ActorRupee::func_ov14_0213b204(unk32 param1) {
switch (param1) {
case 0:
mVisible = true;
break;
case 0: mVisible = true; break;
case 1:
case 2:
case 3:
@@ -262,10 +237,10 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) {
}
mActiveFrames = 0;
mUnk_130 = param1;
mUnk_130 = param1;
}
extern "C" void _ZN11ItemManager10GiveRupeesEsb(ItemManager* implicit, u16 amount, unk32 param2);
extern "C" void _ZN11ItemManager10GiveRupeesEsb(ItemManager *implicit, u16 amount, unk32 param2);
void ActorRupee::Update(bool param1) {
ItemId cutsceneItemId;
s32 uVar3;
@@ -280,29 +255,22 @@ void ActorRupee::Update(bool param1) {
cutsceneItemId = GetRupeeCutsceneItemId();
if (cutsceneItemId >= 0) {
if (/*data_027e0fc8->*/func_ov00_020bce48(data_027e0fc8, cutsceneItemId)) {
if (/*data_027e0fc8->*/ func_ov00_020bce48(data_027e0fc8, cutsceneItemId)) {
Kill();
} else {
func_ov14_0213b204(3);
}
} else {
ItemManager* pItem = gItemManager;
rupeeValue = func_ov00_020c5a24(mRupeeId);
ItemManager *pItem = gItemManager;
rupeeValue = func_ov00_020c5a24(mRupeeId);
pItem->GiveRupees(rupeeValue, false); // giverupees
uVar3 = -1;
switch (mRupeeId) {
case RupeeId_Green:
uVar3 = 0xfa;
break;
case RupeeId_Blue:
uVar3 = 0xfb;
break;
case RupeeId_Red:
uVar3 = 0xfc;
break;
default:
break;
case RupeeId_Green: uVar3 = 0xfa; break;
case RupeeId_Blue: uVar3 = 0xfb; break;
case RupeeId_Red: uVar3 = 0xfc; break;
default: break;
}
func_ov00_020d7ad4(data_ov00_020eec9c, uVar3);
@@ -332,8 +300,8 @@ void ActorRupee::Update(bool param1) {
}
break;
case 3:
PlayerLinkBase* pLink = data_027e0fc8;
if (/*pLink->*/func_ov00_020bce48(pLink, GetRupeeCutsceneItemId())) {
PlayerLinkBase *pLink = data_027e0fc8;
if (/*pLink->*/ func_ov00_020bce48(pLink, GetRupeeCutsceneItemId())) {
Kill();
}
break;
@@ -363,8 +331,7 @@ void ActorRupee::Update(bool param1) {
func_ov14_0213b204(1);
}
break;
default:
break;
default: break;
}
KillInBounds();
@@ -393,7 +360,8 @@ void ActorRupee::vfunc_20(bool param1) {
void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) {
Actor_UnkStruct_012 unk_class;
static const u32 data_ov14_02153e28[] = { // sRupeePalettes
static const u32 data_ov14_02153e28[] = {
// sRupeePalettes
0x9, // RupeeId_Green
0xA, // RupeeId_Blue
0x8, // RupeeId_Red
@@ -435,26 +403,24 @@ bool ActorRupee::func_ov14_0213b70c(RupeeId id) {
case RupeeId_BigGreen:
case RupeeId_BigRed:
case RupeeId_Gold:
case RupeeId_Rupoor50:
return true;
case RupeeId_Rupoor50: return true;
default:
break;
default: break;
}
return false;
}
extern "C" asm void _ZN10ActorRupeeD0Ev() {
#ifndef NONMATCHING
#ifndef NONMATCHING
#include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD0Ev.inc"
#endif
#endif
}
extern "C" asm void _ZN10ActorRupeeD2Ev() {
#ifndef NONMATCHING
#ifndef NONMATCHING
#include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD2Ev.inc"
#endif
#endif
}
// ActorRupee::~ActorRupee() {}
+59 -9
View File
@@ -1,14 +1,64 @@
#include "Actor/ActorType.hpp"
#ifdef STUBS
ActorTypeList sActorTypeList;
ActorType::ActorType(ActorTypeId id, ActorCreateFunc create, void *unk_08) {}
ActorType::~ActorType() {}
void ActorType::func_0203e7c8() {}
void ActorType::Register() {}
void ActorType::Unregister() {}
ActorType* ActorType::Find(ActorTypeId id) {}
ARM ActorType::ActorType(ActorTypeId id, ActorCreateFunc create, unk32 (*unk_08)()) {
this->id = id;
this->create = create;
this->unk_08 = unk_08;
this->unk_0c = 0;
this->next = NULL;
this->Register();
sActorTypeList.tail = this;
}
#endif
ARM ActorType::~ActorType() {
this->Unregister();
}
ARM unk32 ActorType::func_0203e7c8() {
if (this->unk_08 == NULL) {
return 0;
}
return (*unk_08)();
}
ARM void ActorType::Register() {
ActorType *actorType;
ActorType **tail = &sActorTypeList.head;
for (actorType = sActorTypeList.head; actorType != NULL; actorType = actorType->next) {
tail = &actorType->next;
}
*tail = this;
}
ARM void ActorType::Unregister() {
ActorType *actorType;
ActorType **current = &sActorTypeList.head;
ActorType **previous = NULL;
for (actorType = sActorTypeList.head; actorType != NULL; actorType = actorType->next) {
if (actorType == this) break;
previous = current;
current = &actorType->next;
}
if (previous != NULL) {
(*previous)->next = this->next;
}
}
ARM ActorType *ActorType::Find(ActorTypeId id) {
ActorType *actorType;
for (actorType = sActorTypeList.head; actorType != NULL; actorType = actorType->next) {
if (id == actorType->id) {
return actorType;
}
}
return NULL;
}