mirror of
https://github.com/zeldaret/tp
synced 2026-06-12 21:45:21 -04:00
JASSeqReader, d_bg_s_movebg_actor ok (#332)
match cc_at_check except data
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "d/bg/d_bg_s_movebg_actor.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
@@ -13,45 +12,10 @@
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__16dBgS_MoveBgActorFv();
|
||||
extern "C" static void CheckCreateHeap__FP10fopAc_ac_c();
|
||||
extern "C" bool CreateHeap__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool Create__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool Execute__16dBgS_MoveBgActorFPPA3_A4_f();
|
||||
extern "C" bool Draw__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool Delete__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToFore__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToBack__16dBgS_MoveBgActorFv();
|
||||
extern "C" void MoveBGCreateHeap__16dBgS_MoveBgActorFv();
|
||||
extern "C" void
|
||||
MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
|
||||
extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
|
||||
extern "C" u8 m_name__16dBgS_MoveBgActor[4];
|
||||
extern "C" u8 m_dzb_id__16dBgS_MoveBgActor[4];
|
||||
extern "C" u8 m_set_func__16dBgS_MoveBgActor[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
||||
extern "C" void scaleM__14mDoMtx_stack_cFfff();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
|
||||
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
||||
extern "C" void Release__4cBgSFP9dBgW_Base();
|
||||
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
|
||||
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
|
||||
extern "C" void __ct__4dBgWFv();
|
||||
extern "C" void Move__4dBgWFv();
|
||||
extern "C" void ChkUsed__9cBgW_BgIdCFv();
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
@@ -150,7 +114,6 @@ int dBgS_MoveBgActor::MoveBGCreateHeap() {
|
||||
* MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f
|
||||
*/
|
||||
// close
|
||||
#ifdef NONMATCHING
|
||||
int dBgS_MoveBgActor::MoveBGCreate(char const* p_name, int dzb_id, MoveBGActor_SetFunc set_func,
|
||||
u32 param_3, Mtx* param_4) {
|
||||
if (param_4 == NULL) {
|
||||
@@ -169,24 +132,13 @@ int dBgS_MoveBgActor::MoveBGCreate(char const* p_name, int dzb_id, MoveBGActor_S
|
||||
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, param_3)) {
|
||||
return 5;
|
||||
} else {
|
||||
if (field_0x568 == NULL || dComIfG_Bgsp().Regist(field_0x568, this)) {
|
||||
if (field_0x568 != NULL && dComIfG_Bgsp().Regist(field_0x568, this)) {
|
||||
return 5;
|
||||
} else {
|
||||
return Create() + 5;
|
||||
return Create() ? 4 : 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int dBgS_MoveBgActor::MoveBGCreate(char const* param_0, int param_1, MoveBGActor_SetFunc,
|
||||
u32 param_3, Mtx* param_4) {
|
||||
nofralloc
|
||||
#include "asm/d/bg/d_bg_s_movebg_actor/func_800787BC.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800788DC-80078950 07321C 0074+00 0/0 0/0 169/169 .text MoveBGDelete__16dBgS_MoveBgActorFv */
|
||||
int dBgS_MoveBgActor::MoveBGDelete() {
|
||||
|
||||
+11
-9
@@ -439,12 +439,14 @@ SECTION_SDATA2 static f32 lit_4218[1 + 1 /* padding */] = {
|
||||
|
||||
/* 80087C04-80088134 082544 0530+00 0/0 0/0 84/84 .text cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo
|
||||
*/
|
||||
// just float reg issues
|
||||
// data padding issues (?)
|
||||
#ifdef NONMATCHING
|
||||
fopAc_ac_c* cc_at_check(fopAc_ac_c* p_enemy, dCcU_AtInfo* p_info) {
|
||||
daPy_py_c* link = (daPy_py_c*)dComIfGp_getPlayer(0);
|
||||
p_info->mpActor = at_power_check(p_info);
|
||||
|
||||
f32 x_diff;
|
||||
f32 z_diff;
|
||||
if (p_info->mpActor != NULL) {
|
||||
cXyz tmp = p_info->mpActor->speed;
|
||||
tmp.y = 0.0f;
|
||||
@@ -454,12 +456,12 @@ fopAc_ac_c* cc_at_check(fopAc_ac_c* p_enemy, dCcU_AtInfo* p_info) {
|
||||
p_info->mHitDirection = cM_atan2s(-x, -z) + (s16)cM_rndFX(4000.0f);
|
||||
} else {
|
||||
if (fopAcM_GetName(p_info->mpActor) == PROC_BOOMERANG) {
|
||||
f32 x_diff = p_enemy->current.pos.x - link->current.pos.x;
|
||||
f32 z_diff = p_enemy->current.pos.z - link->current.pos.z;
|
||||
x_diff = p_enemy->current.pos.x - link->current.pos.x;
|
||||
z_diff = p_enemy->current.pos.z - link->current.pos.z;
|
||||
p_info->mHitDirection = cM_atan2s(-x_diff, -z_diff) + (s16)cM_rndFX(10000.0f);
|
||||
} else {
|
||||
f32 x_diff = p_enemy->current.pos.x - p_info->mpActor->current.pos.x;
|
||||
f32 z_diff = p_enemy->current.pos.z - p_info->mpActor->current.pos.z;
|
||||
x_diff = p_enemy->current.pos.x - p_info->mpActor->current.pos.x;
|
||||
z_diff = p_enemy->current.pos.z - p_info->mpActor->current.pos.z;
|
||||
p_info->mHitDirection = cM_atan2s(-x_diff, -z_diff);
|
||||
}
|
||||
}
|
||||
@@ -500,13 +502,13 @@ fopAc_ac_c* cc_at_check(fopAc_ac_c* p_enemy, dCcU_AtInfo* p_info) {
|
||||
}
|
||||
|
||||
if (p_info->mAttackPower != 0) {
|
||||
p_enemy->field_0x562 -= p_info->mAttackPower;
|
||||
p_enemy->mHealth -= p_info->mAttackPower;
|
||||
}
|
||||
|
||||
s8 pause_time = 0;
|
||||
if (p_info->mAttackPower != 0 && p_enemy->field_0x562 <= 0) {
|
||||
if (p_info->mAttackPower != 0 && p_enemy->mHealth <= 0) {
|
||||
p_info->mHitStatus = 2;
|
||||
p_enemy->field_0x562 = 0;
|
||||
p_enemy->mHealth = 0;
|
||||
}
|
||||
|
||||
int uvar8;
|
||||
@@ -539,7 +541,7 @@ fopAc_ac_c* cc_at_check(fopAc_ac_c* p_enemy, dCcU_AtInfo* p_info) {
|
||||
((daPy_py_c*)dComIfGp_getPlayer(0))->checkHorseRide()) {
|
||||
// actor is Bulblin or Horseback Ganon
|
||||
if ((fopAcM_GetName(p_enemy) == PROC_E_RD &&
|
||||
static_cast<e_rd_class*>(p_enemy)->field_0x129a != 0) ||
|
||||
((s8*)p_enemy)[0x129a] != 0) ||
|
||||
fopAcM_GetName(p_enemy) == PROC_B_GND) {
|
||||
pause_time = 3;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user