Misc changes (#2156)

* daB_YO_Draw & onIceBreak

* misc changes

* remove asm / progress
This commit is contained in:
Pheenoh 2024-05-18 19:23:02 -06:00 committed by GitHub
parent fa325034fd
commit 522c051b1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 252 additions and 457 deletions

View File

@ -21,8 +21,8 @@ Total | 54.954197% | 2209528 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 54.954197% | 2209528 | 4020672
RELs | 38.671154% | 4447308 | 11500324
Total | 42.889232% | 6656836 | 15520996
RELs | 38.671676% | 4447368 | 11500324
Total | 42.889619% | 6656896 | 15520996
## RELs
@ -50,7 +50,7 @@ d_a_b_ob | 31.572858% | 18556 | 58772
d_a_b_oh | 35.387431% | 4640 | 13112
d_a_b_oh2 | 100.000000% | 5532 | 5532
d_a_b_tn | 24.850960% | 21176 | 85212
d_a_b_yo | 25.613486% | 14404 | 56236
d_a_b_yo | 25.720179% | 14464 | 56236
d_a_b_yo_ice | 28.297953% | 5972 | 21104
d_a_b_zant | 22.203940% | 19432 | 87516
d_a_b_zant_magic | 42.453480% | 2464 | 5804
@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244
d_a_warp_bug | 100.000000% | 2024 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156
Total | 38.671154% | 4447308 | 11500324
Total | 38.671676% | 4447368 | 11500324

View File

@ -1,9 +0,0 @@
lbl_8062FBCC:
/* 8062FBCC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8062FBD0 7C 08 02 A6 */ mflr r0
/* 8062FBD4 90 01 00 14 */ stw r0, 0x14(r1)
/* 8062FBD8 4B FF F9 45 */ bl draw__8daB_YO_cFv
/* 8062FBDC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8062FBE0 7C 08 03 A6 */ mtlr r0
/* 8062FBE4 38 21 00 10 */ addi r1, r1, 0x10
/* 8062FBE8 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_8062FBEC:
/* 8062FBEC A0 C3 0F 6E */ lhz r6, 0xf6e(r3)
/* 8062FBF0 38 A0 00 01 */ li r5, 1
/* 8062FBF4 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 8062FBF8 7C A0 00 30 */ slw r0, r5, r0
/* 8062FBFC 7C C0 03 78 */ or r0, r6, r0
/* 8062FC00 B0 03 0F 6E */ sth r0, 0xf6e(r3)
/* 8062FC04 4E 80 00 20 */ blr

View File

@ -3720,7 +3720,8 @@ public:
/* 0x03062 */ s16 field_0x3062;
/* 0x03064 */ s16 field_0x3064;
/* 0x03066 */ s16 field_0x3066;
/* 0x03068 */ u8 field_0x3068[4];
/* 0x03068 */ u8 field_0x3068[2];
/* 0x0306A */ s16 field_0x306a;
/* 0x0306C */ s16 field_0x306c;
/* 0x0306E */ s16 field_0x306e;
/* 0x03070 */ s16 field_0x3070;

View File

@ -224,7 +224,7 @@ public:
/* 0xB4 */ u16 mWindowAccept;
/* 0xB6 */ u16 mOilGaugeBackUp;
/* 0xB8 */ u8 mDirectUseItem;
/* 0xB9 */ u8 mWindowStatus;
/* 0xB9 */ u8 mWindowStatus; // 0: normal play, 2: item wheel, 3: pause menu, 4: map, 10: pause menu submenus, 11: map in dungeon
/* 0xBA */ u8 unk186;
/* 0xBB */ u8 mMaxCount;
/* 0xBC */ u8 mNowCount;

View File

@ -14,7 +14,7 @@
*/
class daB_YO_c : public fopEn_enemy_c {
public:
/* 8062F51C */ void draw();
/* 8062F51C */ s32 draw();
/* 8062FBEC */ void onIceBreak(u16);
/* 8062FC08 */ void setBck(int, u8, f32, f32);
/* 8062FE0C */ void setActionMode(int, int);
@ -71,11 +71,15 @@ private:
/* 0xF54 */ f32 mModeRarius;
/* 0xF58 */ u8 field_0xf58[0xF5C - 0xF58];
/* 0xF5C */ s16 mRollAngle;
/* 0xF5E */ u8 field_0xf5e[0xFA8 - 0xF5E];
/* 0xF5E */ u8 field_0xf5e[0xF6E - 0xF5E];
/* 0xF6E */ u16 field_0xf6e;
/* 0xF70 */ u8 field_0xf70[0xFA8 - 0xF70];
/* 0xFA8 */ u8 mModelNo;
/* 0xFA9 */ u8 field_0xfa9[0xFAD - 0xFA9];
/* 0xFAD */ u8 mFrizadAttack;
/* 0xFAE */ u8 field_0xfae[0x1B88 - 0xFAE];
};
STATIC_ASSERT(sizeof(daB_YO_c) == 0x1B88);
struct daB_YO_HIO_c {
/* 8062F46C */ daB_YO_HIO_c();

View File

@ -2,5 +2,79 @@
#define D_A_E_YMB_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daE_YMB_c : public fopEn_enemy_c {
public:
/* 8081615C */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 808164F0 */ void JointCallBack(J3DJoint*, int);
/* 80816554 */ void draw();
/* 8081697C */ void setBck(int, u8, f32, f32);
/* 80816A20 */ void checkBck(int);
/* 80816A7C */ void setActionMode(int, int);
/* 80816A88 */ void setLastDamage();
/* 80816B7C */ void damage_check();
/* 80816E78 */ void setCameraSwitch();
/* 80817064 */ void checkWaterPos();
/* 80817164 */ void checkGroundPos();
/* 80817200 */ void setFlyWaitVoice();
/* 8081727C */ void setDownWaitVoice();
/* 808172F8 */ void setHitBoardSe();
/* 808173B0 */ void setElecEffect1();
/* 8081756C */ void setElecEffect2();
/* 80817744 */ void setWaterEffect1();
/* 8081785C */ void setWaterEffect2();
/* 80817974 */ void setBoilEffect(int);
/* 80817AEC */ void setDamageEffect(int);
/* 80817BD8 */ void setDownHamonEffect();
/* 80817CF0 */ void setFlyBlurEffect();
/* 80817E7C */ void setRockDamageEffect();
/* 80817FDC */ void setDeathEffect();
/* 808181F4 */ void executeWait();
/* 80818328 */ void setBitePos(int);
/* 80818370 */ void setInclination();
/* 80818518 */ void setBodyAngle();
/* 80818930 */ void checkWolfLockIn();
/* 80818AE8 */ void executeFly();
/* 80819610 */ void executeFlyAttack();
/* 80819FD0 */ void executeRunAway();
/* 8081A718 */ void executeGuard();
/* 8081A88C */ void executeSwim();
/* 8081B78C */ void executeWaterJump();
/* 8081BC10 */ void getNearDownPos();
/* 8081BEE8 */ void executeDamage();
/* 8081C4EC */ void setMidnaBindInit(cXyz*);
/* 8081C7D0 */ void setMidnaBindLevel(int);
/* 8081C908 */ void setWolfLockEffect();
/* 8081CC14 */ void initDownToWater();
/* 8081CD00 */ void calcDownToWater();
/* 8081CE6C */ void executeDown();
/* 8081D4D8 */ void setCreateDrop();
/* 8081D594 */ void executeDeath();
/* 8081DBD0 */ void demo_skip(int);
/* 8081DDE0 */ void DemoSkipCallBack(void*, int);
/* 8081DE14 */ void calcLakeDemoPlayerPos();
/* 8081DE84 */ void executeLakeDemo();
/* 8081E5B4 */ void executeStartDemo();
/* 8081F140 */ void checkStartBattleDemo();
/* 8081F2E0 */ void executeBattleDemo();
/* 8081FAC8 */ void action();
/* 8081FF88 */ void mtx_set();
/* 808200A0 */ void getBellyBitePos(cXyz*);
/* 80820128 */ void getDownLockPoint();
/* 808203D8 */ void setAttentionPos();
/* 80820668 */ void cc_set();
/* 808207AC */ void execute();
/* 80820A40 */ void _delete();
/* 80820AF0 */ void CreateHeap();
/* 80820DD0 */ void create();
int getMaxLockAttack() { return 6; }
};
struct daE_YMB_HIO_c {
/* 8081610C */ daE_YMB_HIO_c();
/* 80821460 */ ~daE_YMB_HIO_c();
};
#endif /* D_A_E_YMB_H */

View File

@ -1,10 +1,12 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_b_yo
//
/**
* @file d_a_b_yo.cpp
* @brief Actor - Blizzeta (Boss)
*
*/
#include "rel/d/a/b/d_a_b_yo/d_a_b_yo.h"
#include "rel/d/a/obj/d_a_obj_ystone/d_a_obj_ystone.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
//
@ -274,7 +276,6 @@ extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
// extern "C" extern u8 g_env_light[4880];
// extern "C" extern u8 j3dSys[284];
@ -477,12 +478,26 @@ SECTION_DATA static u8 yo_material_draw[27 + 1 /* padding */] = {
/* 80639B60-80639BAC 000100 004C+00 0/1 0/0 0/0 .data yo_demo_bck_idx */
#pragma push
#pragma force_active on
SECTION_DATA static u8 yo_demo_bck_idx[76] = {
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11,
0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15,
0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x17,
0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0A,
0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09,
static u32 yo_demo_bck_idx[19] = {
0x00000007,
0x00000008,
0x0000000D,
0x00000011,
0x00000012,
0x00000013,
0x00000014,
0x00000015,
0x00000019,
0x0000000F,
0x00000010,
0x00000017,
0x00000016,
0x0000000E,
0x00000018,
0x0000000A,
0x0000000B,
0x0000000C,
0x00000009,
};
#pragma pop
@ -820,7 +835,7 @@ COMPILER_STRIP_GATE(0x80639834, &lit_4080);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daB_YO_c::draw() {
asm s32 daB_YO_c::draw() {
nofralloc
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/draw__8daB_YO_cFv.s"
}
@ -838,24 +853,14 @@ asm void __dt__4cXyzFv() {
#pragma pop
/* 8062FBCC-8062FBEC 00084C 0020+00 1/0 0/0 0/0 .text daB_YO_Draw__FP8daB_YO_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daB_YO_Draw(daB_YO_c* param_0) {
nofralloc
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s"
static s32 daB_YO_Draw(daB_YO_c* i_this) {
return i_this->draw();
}
#pragma pop
/* 8062FBEC-8062FC08 00086C 001C+00 0/0 0/0 4/4 .text onIceBreak__8daB_YO_cFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daB_YO_c::onIceBreak(u16 param_0) {
nofralloc
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s"
void daB_YO_c::onIceBreak(u16 param_0) {
field_0xf6e |= (1 << param_0);
}
#pragma pop
/* ############################################################################################## */
/* 80639838-8063983C 000044 0004+00 0/4 0/0 0/0 .rodata @4149 */
@ -872,6 +877,46 @@ SECTION_DEAD static char const* const stringBase_80639A34 = "B_YO";
#pragma pop
/* 8062FC08-8062FE0C 000888 0204+00 4/4 0/0 0/0 .text setBck__8daB_YO_cFiUcff */
#ifdef NONMATCHING
void daB_YO_c::setBck(int i_bckIdx, u8 param_1, f32 param_2, f32 param_3) {
J3DModel* l_model = (J3DModel*)dComIfG_getObjectRes("B_YO",yo_demo_bck_idx[i_bckIdx]);
setAnm();
(*(mDoExt_McaMorfSO **)(this + 0x5fc),pJVar3,(uint)param_2,param_3,(float)dVar8,0.0,-1.0
);
this_00 = (J3DModel *)mDoExt_McaMorfSO::getModel(*(mDoExt_McaMorfSO **)(this + 0x5fc));
ctx = (J3DModelData *)J3DModel::getModelData(this_00);
mDoExt_btkAnm::remove(*(mDoExt_btkAnm **)(this + 0x5e0),(char *)ctx);
iVar5 = *(int *)(&d_a_b_yo::yo_demo_btk_idx + param_1 * 4);
if (iVar5 == 0xff) {
this[0x1005] = (daB_YO_c)0x0;
}
else {
this[0x1005] = (daB_YO_c)0x1;
pJVar4 = (J3DAnmTextureSRTKey *)f_op_actor::dComIfG_getObjectRes(&d_a_b_yo::@118744,iVar5);
mDoExt_btkAnm::init(*(mDoExt_btkAnm **)(this + 0x5e0),ctx,pJVar4,1,(float)dVar8,(ushort)param_2,
0);
}
mDoExt_btpAnm::remove(*(mDoExt_btpAnm **)(this + 0x5e4),(char *)ctx);
f_op_actor::dComIfG_getObjectRes
(&d_a_b_yo::@118744,*(undefined4 *)(&d_a_b_yo::yo_demo_btp_idx + param_1 * 4));
mDoExt_btpAnm::init(*(mDoExt_btpAnm **)(this + 0x5e4),(EVP_PKEY_CTX *)ctx);
if (param_1 == 0) {
this[0x1004] = (daB_YO_c)0x1;
uVar6 = 0x25;
}
else if (param_1 == 1) {
uVar6 = 0x26;
}
else if (this[0x1004] == (daB_YO_c)0x0) {
uVar6 = 0x25;
}
else {
uVar6 = 0x24;
}
f_op_actor::dComIfG_getObjectRes(&d_a_b_yo::@118744,uVar6);
::mDoExt_brkAnm::init(*(mDoExt_brkAnm **)(this + 0x5e8),(EVP_PKEY_CTX *)ctx);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -880,6 +925,7 @@ asm void daB_YO_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) {
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/setBck__8daB_YO_cFiUcff.s"
}
#pragma pop
#endif
/* 8062FE0C-8062FE18 000A8C 000C+00 11/11 0/0 0/0 .text setActionMode__8daB_YO_cFii */
#pragma push

View File

@ -6,386 +6,6 @@
#include "rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct csXyz {};
struct Vec {};
struct cXyz {
/* 80266AE4 */ void operator+(Vec const&) const;
/* 80266B34 */ void operator-(Vec const&) const;
/* 80266B84 */ void operator*(f32) const;
/* 808164B4 */ ~cXyz();
};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CD9C */ void transM(f32, f32, f32);
/* 8000CE38 */ void scaleM(f32, f32, f32);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
static u8 now[48];
};
struct J3DModel {};
struct mDoExt_invisibleModel {
/* 8000E53C */ void create(J3DModel*, u8);
/* 8000E7C0 */ void entryDL(cXyz*);
};
struct J3DMaterialTable {};
struct J3DAnmTevRegKey {};
struct mDoExt_brkAnm {
/* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
/* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct mDoExt_McaMorfCallBack2_c {};
struct mDoExt_McaMorfCallBack1_c {};
struct J3DAnmTransform {};
struct J3DModelData {};
struct Z2Creature {};
struct mDoExt_McaMorfSO {
/* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int,
int, Z2Creature*, u32, u32);
/* 80010E70 */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32);
/* 800110B0 */ void play(u32, s8);
/* 800111C0 */ void entryDL();
/* 800111EC */ void modelCalc();
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct daPy_py_c {
/* 8015F424 */ void checkNowWolfEyeUp();
static u8 m_midnaActor[4];
};
struct daObjDrop_c {
/* 8082187C */ void setPos(cXyz);
};
struct J3DJoint {};
struct daE_YMB_c {
/* 8081615C */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 808164F0 */ void JointCallBack(J3DJoint*, int);
/* 80816554 */ void draw();
/* 8081697C */ void setBck(int, u8, f32, f32);
/* 80816A20 */ void checkBck(int);
/* 80816A7C */ void setActionMode(int, int);
/* 80816A88 */ void setLastDamage();
/* 80816B7C */ void damage_check();
/* 80816E78 */ void setCameraSwitch();
/* 80817064 */ void checkWaterPos();
/* 80817164 */ void checkGroundPos();
/* 80817200 */ void setFlyWaitVoice();
/* 8081727C */ void setDownWaitVoice();
/* 808172F8 */ void setHitBoardSe();
/* 808173B0 */ void setElecEffect1();
/* 8081756C */ void setElecEffect2();
/* 80817744 */ void setWaterEffect1();
/* 8081785C */ void setWaterEffect2();
/* 80817974 */ void setBoilEffect(int);
/* 80817AEC */ void setDamageEffect(int);
/* 80817BD8 */ void setDownHamonEffect();
/* 80817CF0 */ void setFlyBlurEffect();
/* 80817E7C */ void setRockDamageEffect();
/* 80817FDC */ void setDeathEffect();
/* 808181F4 */ void executeWait();
/* 80818328 */ void setBitePos(int);
/* 80818370 */ void setInclination();
/* 80818518 */ void setBodyAngle();
/* 80818930 */ void checkWolfLockIn();
/* 80818AE8 */ void executeFly();
/* 80819610 */ void executeFlyAttack();
/* 80819FD0 */ void executeRunAway();
/* 8081A718 */ void executeGuard();
/* 8081A88C */ void executeSwim();
/* 8081B78C */ void executeWaterJump();
/* 8081BC10 */ void getNearDownPos();
/* 8081BEE8 */ void executeDamage();
/* 8081C4EC */ void setMidnaBindInit(cXyz*);
/* 8081C7D0 */ void setMidnaBindLevel(int);
/* 8081C908 */ void setWolfLockEffect();
/* 8081CC14 */ void initDownToWater();
/* 8081CD00 */ void calcDownToWater();
/* 8081CE6C */ void executeDown();
/* 8081D4D8 */ void setCreateDrop();
/* 8081D594 */ void executeDeath();
/* 8081DBD0 */ void demo_skip(int);
/* 8081DDE0 */ void DemoSkipCallBack(void*, int);
/* 8081DE14 */ void calcLakeDemoPlayerPos();
/* 8081DE84 */ void executeLakeDemo();
/* 8081E5B4 */ void executeStartDemo();
/* 8081F140 */ void checkStartBattleDemo();
/* 8081F2E0 */ void executeBattleDemo();
/* 8081FAC8 */ void action();
/* 8081FF88 */ void mtx_set();
/* 808200A0 */ void getBellyBitePos(cXyz*);
/* 80820128 */ void getDownLockPoint();
/* 808203D8 */ void setAttentionPos();
/* 80820668 */ void cc_set();
/* 808207AC */ void execute();
/* 80820A40 */ void _delete();
/* 80820AF0 */ void CreateHeap();
/* 80820DD0 */ void create();
};
struct daE_YMB_HIO_c {
/* 8081610C */ daE_YMB_HIO_c();
/* 80821460 */ ~daE_YMB_HIO_c();
};
struct dVibration_c {
/* 8006FA24 */ void StartShock(int, int, cXyz);
/* 8006FB10 */ void StartQuake(int, int, cXyz);
/* 8006FC0C */ void StartQuake(u8 const*, int, int, cXyz);
/* 8006FD94 */ void StopQuake(int);
};
struct dSv_memBit_c {
/* 80034810 */ void onSwitch(int);
/* 80034860 */ void isSwitch(int) const;
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 800352B0 */ void offSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_flag_c {
static u8 saveBitLabels[1644 + 4 /* padding */];
};
struct dSv_event_c {
/* 8003498C */ void onEventBit(u16);
/* 800349BC */ void isEventBit(u16) const;
};
struct dKy_tevstr_c {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPa_levelEcallBack {};
struct _GXColor {};
struct dPa_control_c {
struct level_c {
/* 8004B918 */ void getEmitter(u32);
};
/* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
/* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
_GXColor const*, cXyz const*, f32);
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
cXyz const*, f32);
};
struct dEvt_control_c {
/* 80042468 */ void reset();
/* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int);
/* 8004368C */ void setPtT(void*);
};
struct dDlst_shadowControl_c {
static u8 mSimpleTexObj[32];
};
struct dCcU_AtInfo {};
struct dCcD_Stts {
/* 80083860 */ void Init(int, int, fopAc_ac_c*);
};
struct dCcD_SrcSph {};
struct dCcD_Sph {
/* 80084A34 */ void Set(dCcD_SrcSph const&);
/* 8082124C */ ~dCcD_Sph();
/* 80821318 */ dCcD_Sph();
};
struct dCcD_GStts {
/* 80083760 */ dCcD_GStts();
/* 8082139C */ ~dCcD_GStts();
};
struct dCcD_GObjInf {
/* 80083A28 */ dCcD_GObjInf();
/* 800840E4 */ ~dCcD_GObjInf();
/* 800842C0 */ void ChkAtHit();
/* 80084358 */ void GetAtHitObj();
/* 80084460 */ void ChkTgHit();
/* 800844B8 */ void ResetTgHit();
/* 800844F8 */ void GetTgHitObj();
};
struct dCamera_c {
/* 801614AC */ void Start();
/* 801614D0 */ void Stop();
/* 8016300C */ void SetTrimSize(s32);
/* 80180AE0 */ void Set(cXyz, cXyz, f32, s16);
/* 80180C18 */ void Reset(cXyz, cXyz);
/* 80181E64 */ void Eye();
/* 80181E98 */ void Center();
};
struct dBgW_Base {};
struct dBgW {
/* 8007B970 */ dBgW();
/* 8007B9C0 */ void Move();
};
struct dBgS_ObjGndChk_Spl {
/* 800777B0 */ dBgS_ObjGndChk_Spl();
/* 80077848 */ ~dBgS_ObjGndChk_Spl();
};
struct dBgS_GndChk {
/* 8007757C */ dBgS_GndChk();
};
struct dBgS {
/* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
};
struct dAttention_c {
/* 8007353C */ void LockonTarget(s32);
/* 800737E4 */ void LockonTruth();
};
struct cM3dGSph {
/* 8026F648 */ void SetC(cXyz const&);
/* 8026F708 */ void SetR(f32);
/* 808211BC */ ~cM3dGSph();
};
struct cM3dGAab {
/* 80821204 */ ~cM3dGAab();
};
struct cCcD_Obj {
/* 80263A48 */ void GetAc();
};
struct cCcS {
/* 80264BA8 */ void Set(cCcD_Obj*);
};
struct cCcD_GStts {
/* 80821418 */ ~cCcD_GStts();
};
struct cBgW_BgId {
/* 802681D4 */ void ChkUsed() const;
};
struct cBgD_t {};
struct cBgW {
/* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
};
struct cBgS_PolyInfo {};
struct cBgS_GndChk {
/* 80267D28 */ void SetPos(cXyz const*);
/* 80267D0C */ void SetPos(Vec const*);
};
struct cBgS {
/* 80074250 */ void Release(dBgW_Base*);
/* 800744A0 */ void GroundCross(cBgS_GndChk*);
};
struct _GXTexObj {};
struct Z2SoundObjMgr {
/* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16);
};
struct Z2SeqMgr {
/* 802AF49C */ void subBgmStart(u32);
/* 802AF884 */ void subBgmStop();
/* 802B1DF4 */ void changeSubBgmStatus(s32);
/* 802B4164 */ void setBattleBgmOff(bool);
};
struct JAISoundID {};
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 Z2CreatureEnemy {
/* 802C0F64 */ Z2CreatureEnemy();
/* 802C1094 */ void init(Vec*, Vec*, u8, u8);
/* 802C1B7C */ void setLinkSearch(bool);
/* 802C1B90 */ void setEnemyName(char const*);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JMath {
static u8 sincosTable_[65536];
};
struct JGeometry {
template <typename A1>
struct TVec3 {};
/* TVec3<f32> */
struct TVec3__template0 {};
};
struct J3DSys {
static u8 mCurrentMtx[48];
};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 8032842C */ void checkPass(f32);
/* 80820D68 */ ~J3DFrameCtrl();
};
//
// Forward References:
//
@ -607,11 +227,6 @@ extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void checkPass__12J3DFrameCtrlFf();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void PSVECAdd();
extern "C" void PSVECSquareMag();
extern "C" void PSVECSquareDistance();
extern "C" void __construct_array();
extern "C" void _savegpr_22();
extern "C" void _savegpr_23();
@ -629,9 +244,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void abs();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__8dCcD_Sph[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
@ -641,12 +253,9 @@ extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 j3dSys[284];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" extern u8 j3dZModeTable[96];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" u8 m_midnaActor__9daPy_py_c[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
@ -1096,7 +705,8 @@ asm void daE_YMB_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cXyz::~cXyz() {
// asm cXyz::~cXyz() {
extern "C" asm void __dt__4cXyzFv(void) {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__4cXyzFv.s"
}
@ -2803,7 +2413,8 @@ asm void daE_YMB_c::CreateHeap() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
// asm J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__12J3DFrameCtrlFv.s"
}
@ -2847,7 +2458,8 @@ asm void daE_YMB_c::create() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGSph::~cM3dGSph() {
// asm cM3dGSph::~cM3dGSph() {
extern "C" asm void __dt__8cM3dGSphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8cM3dGSphFv.s"
}
@ -2857,7 +2469,8 @@ asm cM3dGSph::~cM3dGSph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGAab::~cM3dGAab() {
// asm cM3dGAab::~cM3dGAab() {
extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8cM3dGAabFv.s"
}
@ -2867,7 +2480,8 @@ asm cM3dGAab::~cM3dGAab() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dCcD_Sph::~dCcD_Sph() {
// asm dCcD_Sph::~dCcD_Sph() {
extern "C" asm void __dt__8dCcD_SphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8dCcD_SphFv.s"
}
@ -2877,7 +2491,8 @@ asm dCcD_Sph::~dCcD_Sph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dCcD_Sph::dCcD_Sph() {
// asm dCcD_Sph::dCcD_Sph() {
extern "C" asm void __ct__8dCcD_SphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__ct__8dCcD_SphFv.s"
}
@ -2887,7 +2502,8 @@ asm dCcD_Sph::dCcD_Sph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dCcD_GStts::~dCcD_GStts() {
// asm dCcD_GStts::~dCcD_GStts() {
extern "C" asm void __dt__10dCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__10dCcD_GSttsFv.s"
}
@ -2907,7 +2523,8 @@ static asm void daE_YMB_Create(daE_YMB_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cCcD_GStts::~cCcD_GStts() {
// asm cCcD_GStts::~cCcD_GStts() {
extern "C" asm void __dt__10cCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__10cCcD_GSttsFv.s"
}
@ -3167,7 +2784,8 @@ REGISTER_CTORS(0x808214A8, __sinit_d_a_e_ymb_cpp);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::setPos(cXyz param_0) {
// asm void daObjDrop_c::setPos(cXyz param_0) {
extern "C" asm void setPos__11daObjDrop_cF4cXyz() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/setPos__11daObjDrop_cF4cXyz.s"
}

View File

@ -17522,7 +17522,7 @@ void daAlink_c::posMove() {
speed.y = daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed;
}
}
} else if (!checkModeFlg(0x400)) {
} else if (!checkModeFlg(MODE_RIDE)) {
if (checkHeavyStateOn(1, 1) && mProcID != PROC_SPINNER_READY &&
!checkNoResetFlg0(FLG0_UNDERWATER))
{

View File

@ -762,15 +762,15 @@ void daAlink_c::setCutJumpSpeed(int i_airAt) {
targetPos.y = mTargetedActor->eyePos.y;
}
f32 dvar12 = speed.y + gravity;
f32 dvar10 = 1.0f / gravity;
f32 fvar1 = targetPos.y - (current.pos.y - (dvar10 * (dvar12 * dvar12) * 0.5f));
f32 speed_y_delta = speed.y + gravity; // 23.6
f32 inverse_gravity = 1.0f / gravity; // -0.29
f32 fvar1 = targetPos.y - (current.pos.y - (inverse_gravity * (speed_y_delta * speed_y_delta) * 0.5f));
if (fvar1 > 0.0f) {
fvar1 = 0.0f;
}
f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * dvar10);
f32 speedDiv = sqrt - (dvar12 * dvar10);
f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * inverse_gravity);
f32 speedDiv = sqrt - (speed_y_delta * inverse_gravity);
f32 squareDist = current.pos.absXZ(targetPos);
if (squareDist > 500.0f) {

View File

@ -24,6 +24,7 @@
#include "rel/d/a/tag/d_a_tag_howl/d_a_tag_howl.h"
#include "rel/d/a/tag/d_a_tag_wara_howl/d_a_tag_wara_howl.h"
#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h"
#include "rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h"
/* 80126740-80126928 121080 01E8+00 2/2 0/0 0/0 .text changeCommon__9daAlink_cFv */
// matches with literals
@ -6715,6 +6716,69 @@ int daAlink_c::procWolfDownAtMissLand() {
}
/* 8013BE24-8013C3E4 136764 05C0+00 2/2 0/0 0/0 .text procWolfLockAttackInit__9daAlink_cFi */
#ifdef NONMATCHING
// wrong float regist + float literals
int daAlink_c::procWolfLockAttackInit(int param_0) {
commonProcInit(PROC_WOLF_LOCK_ATTACK);
setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtLock_c0::m.field_0x0);
if (fopAcM_GetName(mWolfLockAcKeep[0].getActor()) == PROC_E_YMB) {
mProcVar3.field_0x300e.z = 1;
if (param_0 == 0) {
mProcVar1.field_0x300a = static_cast<daE_YMB_c*>(mWolfLockAcKeep[0].getActor())->getMaxLockAttack();
}
mProcVar1.field_0x300a--;
field_0x37c8 = mWolfLockAcKeep[0].getActor()->eyePos;
if (mProcVar1.field_0x300a == 0) {
mWolfLockAcKeep[0].clearData();
}
} else {
field_0x37c8 = mWolfLockAcKeep[0].getActor()->eyePos;
mWolfLockAcKeep[0].clearData();
mProcVar3.field_0x300e.z = 0;
}
shape_angle.y = cLib_targetAngleY(&current.pos,&field_0x37c8);
current.angle.y = shape_angle.y;
cXyz l_eyePosDelta = field_0x37c8 - eyePos;
if (l_eyePosDelta.y < 10.0f) {
l_eyePosDelta.y = 10.0f;
} else {
if (l_eyePosDelta.y > daAlinkHIO_wlAtLock_c0::m.field_0x4C)
l_eyePosDelta.y = daAlinkHIO_wlAtLock_c0::m.field_0x4C;
}
f32 tmp_f = l_eyePosDelta.absXZ();
if (tmp_f > daAlinkHIO_wlAtLock_c0::m.field_0x50) {
f32 tmp = daAlinkHIO_wlAtLock_c0::m.field_0x50 / tmp_f;
l_eyePosDelta.x *= tmp;
l_eyePosDelta.z *= tmp;
}
f32 abs = l_eyePosDelta.abs() / daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame;
if (abs < 1.0f)
abs = 1.0f;
f32 check_frame = daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame / abs;
mNormalSpeed = check_frame * l_eyePosDelta.absXZ();
setSpecialGravity((l_eyePosDelta.y * -2.0f) / (abs * abs), maxFallSpeed, 0);
speed.y = -gravity * abs;
mProcVar0.field_0x3008 = abs;
setCylAtParam(0x8000000,dCcG_At_Spl_UNK_0,1,4,6,daAlinkHIO_wlAtLock_c0::m.field_0x40,daAlinkHIO_wlAtLock_c0::m.field_0x44);
field_0x3438 = daAlinkHIO_wlAtLock_c0::m.field_0x3C;
setCutType(CUT_TYPE_WOLF_LOCK);
voiceStart(Z2SE_WL_V_ATTACK_THRUST);
dComIfGp_setPlayerStatus1(0,0x1000000);
dComIfGp_particle_set(0x247,&current.pos,&current.angle,0);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -6723,12 +6787,15 @@ asm int daAlink_c::procWolfLockAttackInit(int param_0) {
#include "asm/d/a/d_a_alink/procWolfLockAttackInit__9daAlink_cFi.s"
}
#pragma pop
#endif
/* 8013C3E4-8013C630 136D24 024C+00 1/0 0/0 0/0 .text procWolfLockAttack__9daAlink_cFv */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procWolfLockAttack() {
BOOL var_r29 = false;
// check if any field_0x850 clylinders collided with at shields
for (int i = 0; i < 3; i++) {
if (checkAtShieldHit(field_0x850[i])) {
var_r29 = true;
@ -6736,6 +6803,8 @@ int daAlink_c::procWolfLockAttack() {
}
}
// early return checks for colliding with at shields or if the actor hit is not freezard
if (var_r29 || (checkAtShieldHit(mAtCyl) && (mAtCyl.GetAtHitAc() == NULL ||
fopAcM_GetName(mAtCyl.GetAtHitAc()) != PROC_E_FB)))
{