d_a_alink_swim work / fix JASGlobalInstance (#288)

* daalink / z2linkmgr wip

* first cleanup of JASGlobalInstance data

* fix sInstance stuff part 2

* more d_a_alink_swim work

* remove asm
This commit is contained in:
TakaRikka
2023-02-16 13:09:22 -08:00
committed by GitHub
parent ebc54b9a93
commit af684e72c6
301 changed files with 2061 additions and 3166 deletions
+178 -190
View File
@@ -5,25 +5,13 @@
#include "Z2AudioLib/Z2LinkMgr.h"
#include "Z2AudioLib/Z2Creature.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct dSv_event_flag_c {
static u8 saveBitLabels[1644 + 4 /* padding */];
};
struct dSv_event_c {
/* 800349BC */ void isEventBit(u16) const;
};
struct Z2SoundObjMgr {
/* 802BFFEC */ void setGhostEnemyState(u8);
};
struct Z2SoundObjCoach {
/* 802C54B8 */ Z2SoundObjCoach();
/* 802C54FC */ void init(Vec*, u8);
@@ -32,31 +20,6 @@ struct Z2SoundObjCoach {
/* 802C57C0 */ void startSound(JAISoundID, u32, s8);
};
struct Z2SeqMgr {
/* 802B4844 */ void setBattleSeqState(u8);
/* 802B4AFC */ void setBattleLastHit(u8);
};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2FxLineMgr {
/* 802BAE1C */ void setFxForceOff(bool);
};
struct Z2Calc {
struct CurveSign {};
/* 802A968C */ void linearTransform(f32, f32, f32, f32, f32, bool);
/* 802A96F4 */ void getParamByExp(f32, f32, f32, f32, f32, f32, Z2Calc::CurveSign);
};
struct Z2Audience {
/* 802BD90C */ void setTargetVolume(f32, int);
};
//
// Forward References:
//
@@ -166,59 +129,57 @@ extern "C" void _restgpr_29();
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */];
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 data_80450B40[4];
extern "C" extern u8 data_80450B44[4];
extern "C" extern u8 data_80450B48[4];
extern "C" extern u8 data_80450B74[4];
extern "C" extern u8 data_80450B7C[4];
extern "C" extern u8 data_80450B80[4];
extern "C" extern u8 data_80450B84[4];
extern "C" extern u8 data_80450B88[4];
//
// Declarations:
//
/* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */
void Z2CreatureLink::setLinkGroupInfo(u8 param_0) {
/* empty function */
}
void Z2CreatureLink::setLinkGroupInfo(u8) {}
/* 802C3220-802C3228 -00001 0008+00 0/0 0/0 0/0 .text setLinkHp__14Z2CreatureLinkFll */
void Z2CreatureLink::setLinkHp(s32 hp, s32 param_1) {
void Z2CreatureLink::setLinkHp(s32 hp, s32) {
mLinkHp = hp;
}
/* 802C3228-802C328C 2BDB68 0064+00 0/0 1/1 0/0 .text setLinkSwordType__14Z2CreatureLinkFll */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setLinkSwordType(s32 param_0, s32 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setLinkSwordType__14Z2CreatureLinkFll.s"
void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) {
mLinkSwordType = i_swordType;
mFlag3 = param_1 == 1;
if (mLinkSwordType != 0) {
if (mLinkShieldType != 0 && !mFlag4) {
mFlag5 = true;
return;
}
}
mFlag5 = false;
}
#pragma pop
/* 802C328C-802C32F0 2BDBCC 0064+00 0/0 1/1 0/0 .text setLinkShieldType__14Z2CreatureLinkFll */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setLinkShieldType(s32 param_0, s32 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setLinkShieldType__14Z2CreatureLinkFll.s"
void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) {
mLinkShieldType = i_shieldType;
mFlag4 = param_1 == 1;
if (mLinkSwordType != 0) {
if (mLinkShieldType != 0 && !mFlag4) {
mFlag5 = true;
return;
}
}
mFlag5 = false;
}
#pragma pop
/* 802C32F0-802C333C 2BDC30 004C+00 0/0 1/1 0/0 .text setLinkBootsType__14Z2CreatureLinkFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setLinkBootsType(s32 param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setLinkBootsType__14Z2CreatureLinkFl.s"
void Z2CreatureLink::setLinkBootsType(s32 i_bootsType) {
mLinkBootsType = i_bootsType;
if (Z2GetSceneMgr()->isSceneExist()) {
startLinkSound(Z2SE_AL_CHANGE_BOOTS, 0, -1);
}
}
#pragma pop
/* ############################################################################################## */
/* 803CB8F0-803CB910 028A10 0020+00 1/1 0/0 1/1 .data __vt__15Z2SoundObjCoach */
@@ -293,21 +254,37 @@ SECTION_DATA extern void* __vt__14Z2CreatureLink[18] = {
Z2CreatureLink* Z2CreatureLink::mLinkPtr;
/* 802C333C-802C3464 2BDC7C 0128+00 0/0 1/1 0/0 .text __ct__14Z2CreatureLinkFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2CreatureLink::Z2CreatureLink() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__ct__14Z2CreatureLinkFv.s"
Z2CreatureLink::Z2CreatureLink() {
mLinkState = 0;
mLinkPtr = this;
field_0xc1 = 0xFF;
mWolfEyeOpen = false;
mInWater = false;
mMarkState = 0;
mResumeAttack = false;
setSoundStarter(this);
mKantera.setSoundStarter(this);
mLinkHp = 0;
mLinkBootsType = 0;
mKanteraState = 0;
mLinkSwordType = 0;
mLinkShieldType = 0;
mFlag3 = false;
mFlag4 = false;
mFlag5 = false;
mRiding = false;
mMagnetized = false;
mUsingIronBall = false;
}
#pragma pop
/* 802C3464-802C3500 2BDDA4 009C+00 1/0 0/0 0/0 .text __dt__18Z2LinkSoundStarterFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __dt__18Z2LinkSoundStarterFv() {
// asm Z2LinkSoundStarter::~Z2LinkSoundStarter() {
inline asm Z2LinkSoundStarter::~Z2LinkSoundStarter() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__18Z2LinkSoundStarterFv.s"
}
@@ -324,36 +301,40 @@ asm Z2CreatureLink::~Z2CreatureLink() {
#pragma pop
/* 802C35F8-802C3638 2BDF38 0040+00 1/0 0/0 0/0 .text deleteObject__14Z2CreatureLinkFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void deleteObject__14Z2CreatureLinkFv() {
// asm void Z2CreatureLink::deleteObject() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/deleteObject__14Z2CreatureLinkFv.s"
void Z2CreatureLink::deleteObject() {
if (mKantera.isAlive()) {
deleteKantera();
}
Z2Creature::deleteObject();
}
#pragma pop
/* 802C3638-802C3710 2BDF78 00D8+00 0/0 1/1 0/0 .text init__14Z2CreatureLinkFP3VecP3VecP3Vec */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/init__14Z2CreatureLinkFP3VecP3VecP3Vec.s"
void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
Z2Creature::init(param_0, param_1, param_2, 6, 1, 2);
Z2GetAudience()->getLinkMic()->setPosPtr(getCurrentPos());
field_0xc1 = 0xFF;
mWolfEyeOpen = false;
mInWater = false;
mMarkState = 0;
mResumeAttack = false;
mKanteraState = 0;
mRiding = false;
mMagnetized = false;
mUsingIronBall = false;
field_0xb4 = *param_0;
mMoveSpeed = 0;
mMovingTime = 0;
mSinkDepth = -1;
}
#pragma pop
/* 802C3710-802C374C 2BE050 003C+00 0/0 1/1 0/0 .text initKantera__14Z2CreatureLinkFP3Vec
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::initKantera(Vec* param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/initKantera__14Z2CreatureLinkFP3Vec.s"
void Z2CreatureLink::initKantera(Vec* i_pos) {
mKanteraState = 0;
mKantera.init(i_pos, 2);
}
#pragma pop
/* 802C374C-802C3778 2BE08C 002C+00 1/1 1/1 0/0 .text deleteKantera__14Z2CreatureLinkFv
*/
@@ -363,8 +344,8 @@ void Z2CreatureLink::deleteKantera() {
}
/* 802C3778-802C3780 -00001 0008+00 0/0 0/0 0/0 .text setKanteraState__14Z2CreatureLinkFUc */
void Z2CreatureLink::setKanteraState(u8 state) {
mKanteraState = state;
void Z2CreatureLink::setKanteraState(u8 i_state) {
mKanteraState = i_state;
}
/* ############################################################################################## */
@@ -402,45 +383,71 @@ asm void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
}
#pragma pop
/* void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
Z2Creature::framework(param_0, param_1);
if (mKantera.isAlive()) {
mKantera.framework(param_0, param_1);
}
if (field_0xc1 != -1) {
field_0xc1++;
}
if (mMagnetized) {
Z2GetSeMgr()->seStartLevel(Z2SE_WOLF_SENSE_OPEN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
if (isInWater() && Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f) {
if (startLinkSoundLevel() && ) {
}
}
} */
/* 802C3A64-802C3A6C -00001 0008+00 0/0 0/0 0/0 .text setSinkDepth__14Z2CreatureLinkFSc
*/
void Z2CreatureLink::setSinkDepth(s8 sinkDepth) {
mSinkDepth = sinkDepth;
void Z2CreatureLink::setSinkDepth(s8 i_sinkDepth) {
mSinkDepth = i_sinkDepth;
}
/* ############################################################################################## */
/* 80455CC0-80455CC4 0042C0 0004+00 1/1 0/0 0/0 .sdata2 @3743 */
SECTION_SDATA2 static f32 lit_3743 = 7.0f / 20.0f;
/* 802C3A6C-802C3AEC 2BE3AC 0080+00 0/0 4/4 0/0 .text setRiding__14Z2CreatureLinkFb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setRiding(bool param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setRiding__14Z2CreatureLinkFb.s"
void Z2CreatureLink::setRiding(bool i_isRiding) {
if (mRiding != i_isRiding) {
if (i_isRiding) {
Z2GetAudience()->setTargetVolume(0.35f, 0);
} else {
Z2GetAudience()->setTargetVolume(FLOAT_LABEL(lit_3723), 0);
}
mRiding = i_isRiding;
}
}
#pragma pop
/* 802C3AEC-802C3AFC 2BE42C 0010+00 0/0 5/5 0/0 .text setMagnetized__14Z2CreatureLinkFb
*/
#ifdef NONMATCHING
void Z2CreatureLink::setMagnetized(bool param_0) {
mFlags = param_0 & 1;
void Z2CreatureLink::setMagnetized(bool i_isMagnetized) {
mMagnetized = i_isMagnetized;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setMagnetized(bool param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setMagnetized__14Z2CreatureLinkFb.s"
}
#pragma pop
#endif
/* 802C3AFC-802C3BD4 2BE43C 00D8+00 0/0 2/2 0/0 .text setWolfEyeOpen__14Z2CreatureLinkFb
*/
// matches with literals
#ifdef NONMATCHING
void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) {
mWolfEyeOpen = i_wolfEyeOpen;
if (mWolfEyeOpen) {
Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_OPEN_START, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
Z2GetFxLineMgr()->setFxForceOff(true);
Z2GetSoundObjMgr()->setGhostEnemyState(32);
} else {
Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
Z2GetFxLineMgr()->setFxForceOff(false);
Z2GetSoundObjMgr()->setGhostEnemyState(16);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -449,6 +456,7 @@ asm void Z2CreatureLink::setWolfEyeOpen(bool param_0) {
#include "asm/Z2AudioLib/Z2LinkMgr/setWolfEyeOpen__14Z2CreatureLinkFb.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80455CC4-80455CC8 0042C4 0004+00 1/1 0/0 0/0 .sdata2 @3834 */
@@ -556,24 +564,39 @@ asm void Z2CreatureLink::startLinkVoiceLevel(JAISoundID param_0, s8 param_1) {
/* 802C46F0-802C4784 2BF030 0094+00 0/0 2/2 0/0 .text
* startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startLinkSwordSound(JAISoundID param_0, u32 param_1, s8 param_2) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc.s"
void Z2CreatureLink::startLinkSwordSound(JAISoundID i_soundID, u32 id, s8 ch) {
u32 soundID = i_soundID;
switch (soundID) {
case Z2SE_SWORD_POWER_COME:
startCreatureExtraSoundLevel(soundID, id, ch);
break;
case Z2SE_WOLF_POWER_COME:
startCreatureExtraSoundLevel(soundID, id, ch);
break;
default:
startCreatureExtraSound(soundID, id, ch);
break;
}
}
#pragma pop
/* 802C4784-802C4814 2BF0C4 0090+00 1/0 0/0 0/0 .text startCollisionSE__14Z2CreatureLinkFUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startCollisionSE(u32 param_0, u32 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startCollisionSE__14Z2CreatureLinkFUlUl.s"
void Z2CreatureLink::startCollisionSE(u32 hitID, u32 mapinfo) {
switch (mapinfo) {
case 0x28:
case 0x29:
case 0x2A:
Z2GetSeqMgr()->onEnemyDamage();
break;
case 0x20:
if (hitID == Z2SE_HIT_SWORD_STAB) {
Z2GetSeqMgr()->setBattleLastHit(0x14);
}
break;
}
mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
}
#pragma pop
/* ############################################################################################## */
/* 80455D18-80455D1C 004318 0004+00 1/1 0/0 0/0 .sdata2 @4178 */
@@ -585,7 +608,7 @@ SECTION_SDATA2 static f32 lit_4178 = 100.0f;
#pragma optimization_level 0
#pragma optimizewithasm off
asm int Z2CreatureLink::startHitItemSE(u32 param_0, u32 param_1, Z2SoundObjBase* param_2,
f32 param_3) {
f32 speed) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef.s"
}
@@ -593,14 +616,9 @@ asm int Z2CreatureLink::startHitItemSE(u32 param_0, u32 param_1, Z2SoundObjBase*
/* 802C48D8-802C48E8 2BF218 0010+00 0/0 1/1 0/0 .text setResumeAttack__14Z2CreatureLinkFb
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setResumeAttack(bool param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setResumeAttack__14Z2CreatureLinkFb.s"
void Z2CreatureLink::setResumeAttack(bool i_resumeAttack) {
mResumeAttack = i_resumeAttack;
}
#pragma pop
/* 802C48E8-802C4928 2BF228 0040+00 1/1 0/0 0/0 .text __ct__18Z2LinkSoundStarterFv */
Z2LinkSoundStarter::Z2LinkSoundStarter() : Z2SoundStarter(false) {}
@@ -624,21 +642,17 @@ asm void Z2LinkSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* para
#pragma pop
/* 802C4FFC-802C5078 2BF93C 007C+00 0/0 0/0 3/3 .text __ct__14Z2CreatureRideFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2CreatureRide::Z2CreatureRide() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__ct__14Z2CreatureRideFv.s"
Z2CreatureRide::Z2CreatureRide() : Z2RideSoundStarter(this) {
mLinkRiding = false;
setSoundStarter(this);
}
#pragma pop
/* 802C5078-802C5114 2BF9B8 009C+00 1/0 0/0 0/0 .text __dt__18Z2RideSoundStarterFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __dt__18Z2RideSoundStarterFv() {
// asm Z2RideSoundStarter::~Z2RideSoundStarter() {
inline asm Z2RideSoundStarter::~Z2RideSoundStarter() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__18Z2RideSoundStarterFv.s"
}
@@ -655,15 +669,9 @@ asm Z2CreatureRide::~Z2CreatureRide() {
#pragma pop
/* 802C51EC-802C520C 2BFB2C 0020+00 1/0 0/0 0/0 .text deleteObject__14Z2CreatureRideFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void deleteObject__14Z2CreatureRideFv() {
// asm void Z2CreatureRide::deleteObject() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/deleteObject__14Z2CreatureRideFv.s"
void Z2CreatureRide::deleteObject() {
Z2Creature::deleteObject();
}
#pragma pop
/* 802C520C-802C522C 2BFB4C 0020+00 0/0 0/0 3/3 .text init__14Z2CreatureRideFP3VecP3VecUcUc */
void Z2CreatureRide::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
@@ -772,23 +780,3 @@ asm void Z2SoundObjCoach::startSound(JAISoundID param_0, u32 param_1, s8 param_2
#include "asm/Z2AudioLib/Z2LinkMgr/startSound__15Z2SoundObjCoachF10JAISoundIDUlSc.s"
}
#pragma pop
/* 802C588C-802C5894 2C01CC 0008+00 1/0 0/0 0/0 .text @144@__dt__14Z2CreatureLinkFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_802C588C() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/func_802C588C.s"
}
#pragma pop
/* 802C5894-802C589C 2C01D4 0008+00 1/0 0/0 0/0 .text @144@__dt__14Z2CreatureRideFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_802C5894() {
nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/func_802C5894.s"
}
#pragma pop