d_a_nbomb mostly done (#2162)

* first pass of nbomb

* some nbomb doc

* remove asm
This commit is contained in:
TakaRikka
2024-05-29 06:44:15 -07:00
committed by GitHub
parent e19170daac
commit de168d1260
23 changed files with 1960 additions and 647 deletions
+4 -4
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.789690% | 4460940 | 11500324
Total | 42.977062% | 6670468 | 15520996
RELs | 38.794003% | 4461436 | 11500324
Total | 42.980257% | 6670964 | 15520996
## RELs
@@ -217,7 +217,7 @@ d_a_midna | 22.953368% | 12404 | 54040
d_a_mirror | 100.000000% | 9808 | 9808
d_a_movie_player | 23.696790% | 8328 | 35144
d_a_myna | 44.792592% | 14124 | 31532
d_a_nbomb | 28.739233% | 8808 | 30648
d_a_nbomb | 30.357609% | 9304 | 30648
d_a_ni | 27.299309% | 8216 | 30096
d_a_npc_aru | 34.812103% | 12932 | 37148
d_a_npc_ash | 42.736140% | 13320 | 31168
@@ -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.789690% | 4460940 | 11500324
Total | 38.794003% | 4461436 | 11500324
@@ -1,20 +0,0 @@
lbl_804C8294:
/* 804C8294 38 80 00 00 */ li r4, 0
/* 804C8298 80 A3 00 B0 */ lwz r5, 0xb0(r3)
/* 804C829C 28 05 00 04 */ cmplwi r5, 4
/* 804C82A0 41 82 00 2C */ beq lbl_804C82CC
/* 804C82A4 80 03 0B 4C */ lwz r0, 0xb4c(r3)
/* 804C82A8 70 00 0A 00 */ andi. r0, r0, 0xa00
/* 804C82AC 40 82 00 20 */ bne lbl_804C82CC
/* 804C82B0 88 03 0B 54 */ lbz r0, 0xb54(r3)
/* 804C82B4 28 00 00 04 */ cmplwi r0, 4
/* 804C82B8 41 82 00 18 */ beq lbl_804C82D0
/* 804C82BC 28 00 00 05 */ cmplwi r0, 5
/* 804C82C0 41 82 00 10 */ beq lbl_804C82D0
/* 804C82C4 28 05 00 06 */ cmplwi r5, 6
/* 804C82C8 40 82 00 08 */ bne lbl_804C82D0
lbl_804C82CC:
/* 804C82CC 38 80 00 01 */ li r4, 1
lbl_804C82D0:
/* 804C82D0 7C 83 23 78 */ mr r3, r4
/* 804C82D4 4E 80 00 20 */ blr
@@ -1,19 +0,0 @@
lbl_804C6DCC:
/* 804C6DCC 88 04 04 96 */ lbz r0, 0x496(r4)
/* 804C6DD0 28 00 00 02 */ cmplwi r0, 2
/* 804C6DD4 41 82 00 2C */ beq lbl_804C6E00
/* 804C6DD8 80 A3 0B 4C */ lwz r5, 0xb4c(r3)
/* 804C6DDC 54 A0 05 6B */ rlwinm. r0, r5, 0, 0x15, 0x15
/* 804C6DE0 4D 82 00 20 */ beqlr
/* 804C6DE4 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 804C6DE8 41 82 00 18 */ beq lbl_804C6E00
/* 804C6DEC 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 804C6DF0 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 804C6DF4 80 05 5D B4 */ lwz r0, 0x5db4(r5)
/* 804C6DF8 7C 04 00 40 */ cmplw r4, r0
/* 804C6DFC 4D 82 00 20 */ beqlr
lbl_804C6E00:
/* 804C6E00 80 03 0B 4C */ lwz r0, 0xb4c(r3)
/* 804C6E04 60 00 00 04 */ ori r0, r0, 4
/* 804C6E08 90 03 0B 4C */ stw r0, 0xb4c(r3)
/* 804C6E0C 4E 80 00 20 */ blr
@@ -1,9 +0,0 @@
lbl_804C7E94:
/* 804C7E94 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C7E98 7C 08 02 A6 */ mflr r0
/* 804C7E9C 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C7EA0 4B FF F4 85 */ bl create__9daNbomb_cFv
/* 804C7EA4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C7EA8 7C 08 03 A6 */ mtlr r0
/* 804C7EAC 38 21 00 10 */ addi r1, r1, 0x10
/* 804C7EB0 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_804C826C:
/* 804C826C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C8270 7C 08 02 A6 */ mflr r0
/* 804C8274 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C8278 38 80 FF FF */ li r4, -1
/* 804C827C 4B FF FC 39 */ bl __dt__9daNbomb_cFv
/* 804C8280 38 60 00 01 */ li r3, 1
/* 804C8284 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C8288 7C 08 03 A6 */ mtlr r0
/* 804C828C 38 21 00 10 */ addi r1, r1, 0x10
/* 804C8290 4E 80 00 20 */ blr
@@ -1,9 +0,0 @@
lbl_804CC200:
/* 804CC200 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804CC204 7C 08 02 A6 */ mflr r0
/* 804CC208 90 01 00 14 */ stw r0, 0x14(r1)
/* 804CC20C 4B FF FA 55 */ bl draw__9daNbomb_cFv
/* 804CC210 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804CC214 7C 08 03 A6 */ mtlr r0
/* 804CC218 38 21 00 10 */ addi r1, r1, 0x10
/* 804CC21C 4E 80 00 20 */ blr
@@ -1,9 +0,0 @@
lbl_804CBC40:
/* 804CBC40 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804CBC44 7C 08 02 A6 */ mflr r0
/* 804CBC48 90 01 00 14 */ stw r0, 0x14(r1)
/* 804CBC4C 4B FF F2 9D */ bl execute__9daNbomb_cFv
/* 804CBC50 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804CBC54 7C 08 03 A6 */ mtlr r0
/* 804CBC58 38 21 00 10 */ addi r1, r1, 0x10
/* 804CBC5C 4E 80 00 20 */ blr
@@ -1,10 +0,0 @@
lbl_804C6E10:
/* 804C6E10 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C6E14 7C 08 02 A6 */ mflr r0
/* 804C6E18 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C6E1C 7C A4 2B 78 */ mr r4, r5
/* 804C6E20 4B FF FF AD */ bl coHitCallback__9daNbomb_cFP10fopAc_ac_c
/* 804C6E24 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C6E28 7C 08 03 A6 */ mtlr r0
/* 804C6E2C 38 21 00 10 */ addi r1, r1, 0x10
/* 804C6E30 4E 80 00 20 */ blr
@@ -1,9 +0,0 @@
lbl_804C7304:
/* 804C7304 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C7308 7C 08 02 A6 */ mflr r0
/* 804C730C 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C7310 4B FF FE 05 */ bl createHeap__9daNbomb_cFv
/* 804C7314 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C7318 7C 08 03 A6 */ mtlr r0
/* 804C731C 38 21 00 10 */ addi r1, r1, 0x10
/* 804C7320 4E 80 00 20 */ blr
@@ -1,24 +0,0 @@
lbl_804C70C0:
/* 804C70C0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C70C4 7C 08 02 A6 */ mflr r0
/* 804C70C8 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C70CC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 804C70D0 7C 7F 1B 78 */ mr r31, r3
/* 804C70D4 88 03 04 96 */ lbz r0, 0x496(r3)
/* 804C70D8 28 00 00 02 */ cmplwi r0, 2
/* 804C70DC 40 82 00 20 */ bne lbl_804C70FC
/* 804C70E0 7C 83 23 78 */ mr r3, r4
/* 804C70E4 7F E4 FB 78 */ mr r4, r31
/* 804C70E8 4B FF FE F1 */ bl searchEnemy__9daNbomb_cFP10fopAc_ac_c
/* 804C70EC 2C 03 00 00 */ cmpwi r3, 0
/* 804C70F0 41 82 00 0C */ beq lbl_804C70FC
/* 804C70F4 7F E3 FB 78 */ mr r3, r31
/* 804C70F8 48 00 00 08 */ b lbl_804C7100
lbl_804C70FC:
/* 804C70FC 38 60 00 00 */ li r3, 0
lbl_804C7100:
/* 804C7100 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 804C7104 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C7108 7C 08 03 A6 */ mtlr r0
/* 804C710C 38 21 00 10 */ addi r1, r1, 0x10
/* 804C7110 4E 80 00 20 */ blr
@@ -1,10 +0,0 @@
lbl_804C6FB4:
/* 804C6FB4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804C6FB8 7C 08 02 A6 */ mflr r0
/* 804C6FBC 90 01 00 14 */ stw r0, 0x14(r1)
/* 804C6FC0 7C C4 33 78 */ mr r4, r6
/* 804C6FC4 4B FF FE 71 */ bl tgHitCallback__9daNbomb_cFP12dCcD_GObjInf
/* 804C6FC8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804C6FCC 7C 08 03 A6 */ mtlr r0
/* 804C6FD0 38 21 00 10 */ addi r1, r1, 0x10
/* 804C6FD4 4E 80 00 20 */ blr
@@ -1,10 +0,0 @@
lbl_804C88CC:
/* 804C88CC 80 03 0B 4C */ lwz r0, 0xb4c(r3)
/* 804C88D0 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16
/* 804C88D4 4C 82 00 20 */ bnelr
/* 804C88D8 80 03 0B 4C */ lwz r0, 0xb4c(r3)
/* 804C88DC 60 00 02 00 */ ori r0, r0, 0x200
/* 804C88E0 90 03 0B 4C */ stw r0, 0xb4c(r3)
/* 804C88E4 38 00 00 5A */ li r0, 0x5a
/* 804C88E8 B0 03 0B 5E */ sth r0, 0xb5e(r3)
/* 804C88EC 4E 80 00 20 */ blr
+18 -3
View File
@@ -2394,7 +2394,7 @@ public:
/* 80107744 */ int procBoardCutTurn();
/* 801083C8 */ void hookshotAtHitCallBack(dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
/* 801086DC */ void resetHookshotMode();
/* 8010871C */ bool setEnemyBombHookshot(fopAc_ac_c*);
/* 8010871C */ BOOL setEnemyBombHookshot(fopAc_ac_c*);
/* 80108784 */ bool checkLv7BossRoom();
/* 801087B0 */ BOOL checkHookshotStickBG(cBgS_PolyInfo&);
/* 80108828 */ void cancelHookshotCarry();
@@ -3022,8 +3022,8 @@ public:
virtual s32 getAtnActorID() const;
virtual s32 getItemID() const;
virtual s32 getGrabActorID() const;
virtual bool exchangeGrabActor(fopAc_ac_c*);
virtual bool setForceGrab(fopAc_ac_c*, int, int);
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
virtual u32 checkPlayerNoDraw();
virtual void voiceStart(u32);
@@ -3302,6 +3302,7 @@ public:
bool checkCopyRodRevive() const { return mProcID == PROC_COPY_ROD_REVIVE; }
bool checkHorseGetOffMode() const { return mProcID == PROC_HORSE_GETOFF; }
bool checkHorseRideOn() const { return mProcID == PROC_HORSE_RIDE; }
bool checkGrabUp() const { return mProcID == PROC_GRAB_UP; }
BOOL checkRideOn() const { return mRideStatus != 0; }
@@ -3330,6 +3331,20 @@ public:
mDamageColorTime = 32 - (mDamageTimer % 16);
}
BOOL setEnemyBomb(fopAc_ac_c* i_actor) { return exchangeGrabActor(i_actor); }
void decrementBombCnt() {
if (mActiveBombNum != 0) {
mActiveBombNum--;
}
}
void decrementInsectBombCnt() {
if (field_0x2fcf != 0) {
field_0x2fcf--;
}
}
// Gets the cardinal direction of the Left Stick relative to player facing angle
int getDirectionFromShapeAngle() const {
return getDirectionFromAngle(field_0x2fe2 - shape_angle.y);
+2 -2
View File
@@ -610,8 +610,8 @@ public:
virtual s32 getAtnActorID() const { return -1; }
virtual s32 getItemID() const;
virtual s32 getGrabActorID() const; // weak
virtual bool exchangeGrabActor(fopAc_ac_c*);
virtual bool setForceGrab(fopAc_ac_c*, int, int);
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
virtual u32 checkPlayerNoDraw();
virtual bool checkRopeTag();
+9
View File
@@ -232,4 +232,13 @@ public:
/* 806646F8 */ virtual ~dBgS_StatueAcch();
};
class dBgS_BombAcch : public dBgS_Acch {
public:
dBgS_BombAcch() {
SetBomb();
}
virtual ~dBgS_BombAcch() {}
};
#endif /* D_BG_D_BG_S_ACCH_H */
+37 -39
View File
@@ -1,48 +1,42 @@
#ifndef D_D_BOMB_H
#define D_D_BOMB_H
#include "d/bg/d_bg_s_acch.h"
#include "d/cc/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_procname.h"
class daNbomb_c : public fopAc_ac_c {
class dBomb_c : public fopAc_ac_c {
public:
enum daNbomb_FLG0 { WATER_BOMB = 16 };
enum dBomb_PRM {
PRM_NORMAL_BOMB_EXPLODE,
PRM_BOMB_CARRY,
PRM_BOMB_HOOKSHOT,
PRM_BOMB_WAIT,
PRM_FLOWER_BOMB,
PRM_BOMB_BOOMERANG_MOVE,
PRM_ENEMY_BOMB_BOOMERANG_MOVE,
PRM_INSECT_BOMB_MOVE,
PRM_NORMAL_BOMB_PLAYER,
PRM_WATER_BOMB_PLAYER,
PRM_INSECT_BOMB_PLAYER,
PRM_ENEMY_BOMB,
PRM_ENEMY_BOMB_BOOMERANG,
PRM_ENEMY_BOMB_HOOKSHOT,
PRM_ENEMY_WATER_BOMB,
PRM_UNK_15,
PRM_ENEMY_WATER_BOMB_HOOKSHOT,
PRM_BOMB_CARGO_CARRY,
PRM_WATER_BOMB_EXPLODE,
};
u32 checkStateFlg0(daNbomb_FLG0 flag) const { return mStateFlg0 & flag; }
u32 checkWaterBomb() const { return checkStateFlg0(WATER_BOMB); }
/* 0x568 */ u8 field_0x568[0x10];
/* 0x578 */ dBgS_Acch mAcch;
/* 0x750 */ dBgS_AcchCir mAcchCir;
/* 0x790 */ dCcD_Stts mStts;
/* 0x7CC */ dCcD_Sph mSph1;
/* 0x904 */ dCcD_Sph mSph2;
/* 0xA3C */ u8 field_0xa3c[0x64];
/* 0xAA0 */ dBgS_BombLinChk mLinChk;
/* 0xB10 */ cBgS_PolyInfo mPolyInfo;
/* 0xB20 */ Z2SoundObjSimple mSoundObj;
/* 0xB40 */ u8 field_0xb40[0xC];
/* 0xB4C */ u32 mStateFlg0;
/* 0xB50 */ u8 field_0xb50;
/* 0xB51 */ u8 field_0xb51[0x3];
/* 0xB54 */ u8 field_0xb54;
/* 0xB55 */ u8 field_0xb55[0xB];
/* 0xB60 */ LIGHT_INFLUENCE field_0xb60;
/* 0xB80 */ WIND_INFLUENCE field_0xb80;
};
class dBomb_c : public daNbomb_c {
public:
bool checkStateCarry();
static bool checkFlowerBombWait(fopAc_ac_c*);
bool checkWaterBomb(fopAc_ac_c*);
bool checkInsectBombMove(fopAc_ac_c*);
static bool checkWaterBomb(fopAc_ac_c*);
static bool checkInsectBombMove(fopAc_ac_c*);
bool checkStateExplode() {
return fopAcM_GetParam(this) == 0;
}
virtual BOOL checkExplodeNow();
virtual void deleteBombAndEffect();
virtual void setCargoBombExplode();
bool checkStateExplode() { return fopAcM_GetParam(this) == 0; }
static bool checkBombActor(fopAc_ac_c* i_actor) {
return fopAcM_GetName(i_actor) == PROC_NBOMB;
@@ -61,19 +55,23 @@ public:
}
static fopAc_ac_c* createFlowerBomb(cXyz* i_pos, csXyz* i_angle, int param_2) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 4, i_pos, param_2, i_angle, NULL, -1, NULL, NULL);
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 4, i_pos, param_2, i_angle, NULL, -1,
NULL, NULL);
}
static fopAc_ac_c* createWaterBombExplode(cXyz* i_pos) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 18, i_pos, -1, NULL, NULL, -1, NULL, NULL);
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 18, i_pos, -1, NULL, NULL, -1, NULL,
NULL);
}
static fopAc_ac_c* createEnemyWaterBomb(cXyz* i_pos, csXyz* i_angle, int i_roomNo) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 14, i_pos, i_roomNo, i_angle, NULL, -1, NULL, NULL);
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 14, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
static fopAc_ac_c* createEnemyWaterBombHookshot(cXyz* i_pos, csXyz* i_angle, int i_roomNo) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 16, i_pos, i_roomNo, i_angle, NULL, -1, NULL, NULL);
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_NBOMB, 16, i_pos, i_roomNo, i_angle, NULL, -1,
NULL, NULL);
}
};
+2
View File
@@ -48,6 +48,8 @@ u8 dKy_shadow_mode_check(u8 mode);
void dKy_shadow_mode_set(u8 mode);
void dKy_shadow_mode_reset(u8 mode);
void dKy_Itemgetcol_chg_on();
void dKy_actor_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor);
void dKy_bg_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor);
struct LIGHT_INFLUENCE {
/* 0x00 */ cXyz mPosition;
+4
View File
@@ -345,6 +345,10 @@ inline MtxP mDoMtx_getIdentity() {
return g_mDoMtx_identity;
}
inline MtxP cMtx_getIdentity() {
return mDoMtx_getIdentity();
}
class mDoMtx_quatStack_c {
public:
mDoMtx_quatStack_c() {
+121
View File
@@ -1,5 +1,126 @@
#ifndef D_A_NBOMB_H
#define D_A_NBOMB_H
#include "d/d_bomb.h"
#include "d/bg/d_bg_s_acch.h"
#include "d/cc/d_cc_d.h"
#include "d/a/d_a_player.h"
class daNbomb_c : public dBomb_c {
public:
enum daNbomb_FLG0 {
FLG0_PLAYER_MAKE = 0x1,
FLG0_BOMB_HIT = 0x4,
FLG0_WATER_BOMB = 0x10,
FLG0_UNDERWATER = 0x20,
FLG0_UNK_40 = 0x40,
FLG0_NO_HIT_PLAYER = 0x80,
FLG0_CARGO_CARRY = 0x100,
FLG0_FROZEN = 0x200,
FLG0_INSECT_BOMB = 0x400,
FLG0_UNK_800 = 0x800,
FLG0_DELETE_BOMB = 0x1000,
FLG0_UNK_2000 = 0x2000,
FLG0_SET_HOOKSHOT_OFFSET = 0x4000,
FLG0_UNK_8000 = 0x8000,
FLG0_UNK_10000 = 0x10000,
FLG0_UNK_20000 = 0x20000,
};
enum daNbomb_TYPE {
TYPE_NORMAL_PLAYER,
TYPE_WATER_PLAYER,
TYPE_INSECT_PLAYER,
TYPE_FLOWER,
TYPE_INSECT_ENEMY,
TYPE_WATER_ENEMY,
};
/* 804C6DCC */ void coHitCallback(fopAc_ac_c*);
/* 804C6E34 */ void tgHitCallback(dCcD_GObjInf*);
/* 804C6FD8 */ int searchEnemy(fopAc_ac_c*);
/* 804C7114 */ int createHeap();
/* 804C7324 */ int create();
/* 804C7B44 */ daNbomb_c();
/* 804C7EB4 */ ~daNbomb_c();
/* 804C8294 */ bool checkTimerStop();
/* 804C82D8 */ BOOL checkExplode();
/* 804C8430 */ void setRoomInfo();
/* 804C84D8 */ void setSmokePos();
/* 804C8588 */ void setEffect();
/* 804C87F0 */ void setHookshotOffset();
/* 804C88CC */ void setFreeze();
/* 804C88F0 */ BOOL checkWaterIn();
/* 804C8928 */ BOOL insectLineCheck();
/* 804C8A88 */ void setHitPolygon(int);
/* 804C8CF8 */ BOOL procExplodeInit();
/* 804C9118 */ BOOL procExplode();
/* 804C93E0 */ BOOL procCarryInit();
/* 804C955C */ BOOL procCarry();
/* 804C9930 */ BOOL procWaitInit();
/* 804C9984 */ BOOL procWait();
/* 804CA268 */ BOOL procFlowerWaitInit();
/* 804CA2EC */ BOOL procFlowerWait();
/* 804CA3B8 */ BOOL procBoomerangMoveInit(dCcD_GObjInf*);
/* 804CA4E0 */ BOOL procBoomerangMove();
/* 804CA688 */ BOOL procInsectMoveInit();
/* 804CA780 */ BOOL procInsectMove();
/* 804CAEE8 */ int execute();
/* 804CBC60 */ int draw();
virtual BOOL checkExplodeNow();
virtual void deleteBombAndEffect();
virtual void setCargoBombExplode();
void onStateFlg0(daNbomb_FLG0 i_flag) { mStateFlg0 |= i_flag; }
void offStateFlg0(daNbomb_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
u32 checkStateFlg0(daNbomb_FLG0 i_flag) const { return mStateFlg0 & i_flag; }
u32 checkWaterBomb() const { return checkStateFlg0(FLG0_WATER_BOMB); }
static const char* m_arcNameList[6];
/* 0x56C */ request_of_phase_process_class mPhase;
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ dBgS_BombAcch mAcch;
/* 0x750 */ dBgS_AcchCir mAcchCir;
/* 0x790 */ dCcD_Stts mCcStts;
/* 0x7CC */ dCcD_Sph mCcSph;
/* 0x904 */ dCcD_Sph mSph2;
/* 0xA3C */ mDoExt_bckAnm* mpBck;
/* 0xA40 */ Mtx field_0xa40;
/* 0xA70 */ Mtx field_0xa70;
/* 0xAA0 */ dBgS_BombLinChk mLineChk;
/* 0xB10 */ cBgS_PolyInfo mInsectHitPolyInfo;
/* 0xB20 */ Z2SoundObjSimple mSound;
/* 0xB40 */ daPy_boomerangMove_c mBoomerangMove;
/* 0xB4C */ u32 mStateFlg0;
/* 0xB50 */ u8 mExplodeMode;
/* 0xB51 */ u8 field_0xb51;
/* 0xB52 */ u8 mNoHitPlayerTimer;
/* 0xB53 */ s8 mSoundReverb;
/* 0xB54 */ u8 mType;
/* 0xB55 */ u8 field_0xB55[0xB58 - 0xB55];
/* 0xB58 */ s16 mExTime;
/* 0xB5A */ s16 field_0xb5a;
/* 0xB5C */ s16 field_0xb5c;
/* 0xB5E */ s16 mFreezeTimer;
/* 0xB60 */ LIGHT_INFLUENCE mLightInfluence;
/* 0xB80 */ WIND_INFLUENCE mWindInfluence;
/* 0xBAC */ f32 mExplosionStrength;
/* 0xBB0 */ f32 field_0xbb0;
/* 0xBB4 */ u32 mPolySound;
/* 0xBB8 */ u32 mEffectEmitterIDs[5];
/* 0xBCC */ cXyz mEffectPosition;
/* 0xBD8 */ cXyz mEffectLastPosition;
/* 0xBE4 */ cXyz field_0xbe4;
/* 0xBF0 */ cXyz field_0xbf0;
/* 0xBFC */ cXyz field_0xbfc;
/* 0xC08 */ cXyz field_0xc08;
/* 0xC14 */ cXyz field_0xc14;
/* 0xC20 */ cXyz field_0xc20;
/* 0xC2C */ cXyz field_0xc2c;
/* 0xC38 */ BOOL (daNbomb_c::*mProcFunc)();
};
#endif /* D_A_NBOMB_H */
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -54,7 +54,7 @@ void daAlink_c::setGrabCollisionOffset(f32 param_0, f32 param_1, cBgS_PolyInfo*
/* 800E3A14-800E3A9C 0DE354 0088+00 1/0 0/0 0/0 .text exchangeGrabActor__9daAlink_cFP10fopAc_ac_c
*/
bool daAlink_c::exchangeGrabActor(fopAc_ac_c* p_actor) {
BOOL daAlink_c::exchangeGrabActor(fopAc_ac_c* p_actor) {
fopAc_ac_c* actor = mGrabItemAcKeep.getActor();
if (actor == NULL) {
return false;
@@ -74,7 +74,7 @@ bool daAlink_c::exchangeGrabActor(fopAc_ac_c* p_actor) {
}
/* 800E3A9C-800E3BCC 0DE3DC 0130+00 1/0 0/0 0/0 .text setForceGrab__9daAlink_cFP10fopAc_ac_cii */
bool daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) {
BOOL daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) {
if (((param_1 != 0 || !checkEventRun()) && !checkWolf()) &&
(((mEquipItem == NO_ITEM || (param_2 != 0 && checkHookshotItem(mEquipItem)))) &&
((checkModeFlg(MODE_UNK_10000000) &&
+1 -1
View File
@@ -102,7 +102,7 @@ void daAlink_c::resetHookshotMode() {
/* 8010871C-80108784 10305C 0068+00 0/0 0/0 1/1 .text
* setEnemyBombHookshot__9daAlink_cFP10fopAc_ac_c */
bool daAlink_c::setEnemyBombHookshot(fopAc_ac_c* i_actor) {
BOOL daAlink_c::setEnemyBombHookshot(fopAc_ac_c* i_actor) {
if (mHookTargetAcKeep.getActor() != NULL) {
cancelHookshotCarry();
mHookTargetAcKeep.setData(i_actor);
+9 -7
View File
@@ -4,20 +4,22 @@
*/
#include "d/d_bomb.h"
#include "rel/d/a/d_a_nbomb/d_a_nbomb.h"
bool dBomb_c::checkStateCarry() {
return (fopAcM_checkCarryNow(this) || fopAcM_checkHookCarryNow(this) ||
fopAcM_GetParam(this) == 2 || fopAcM_GetParam(this) == 1);
fopAcM_GetParam(this) == PRM_BOMB_HOOKSHOT || fopAcM_GetParam(this) == PRM_BOMB_CARRY);
}
bool dBomb_c::checkFlowerBombWait(fopAc_ac_c* param_1) {
return (fopAcM_GetName(param_1) == PROC_NBOMB && fopAcM_GetParam(param_1) == 4);
bool dBomb_c::checkFlowerBombWait(fopAc_ac_c* i_actor) {
return (fopAcM_GetName(i_actor) == PROC_NBOMB && fopAcM_GetParam(i_actor) == PRM_FLOWER_BOMB);
}
bool dBomb_c::checkWaterBomb(fopAc_ac_c* param_1) {
return (fopAcM_GetName(this) == PROC_NBOMB && daNbomb_c::checkWaterBomb());
bool dBomb_c::checkWaterBomb(fopAc_ac_c* i_actor) {
return (fopAcM_GetName(i_actor) == PROC_NBOMB && ((daNbomb_c*)i_actor)->checkWaterBomb());
}
bool dBomb_c::checkInsectBombMove(fopAc_ac_c* param_1) {
return (fopAcM_GetName(this) == PROC_NBOMB && fopAcM_GetParam(this) == 7);
bool dBomb_c::checkInsectBombMove(fopAc_ac_c* i_actor) {
return (fopAcM_GetName(i_actor) == PROC_NBOMB &&
fopAcM_GetParam(i_actor) == PRM_INSECT_BOMB_MOVE);
}