mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-10 04:46:48 -04:00
d_a_nbomb mostly done (#2162)
* first pass of nbomb * some nbomb doc * remove asm
This commit is contained in:
+4
-4
@@ -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
|
||||
-10
@@ -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
|
||||
-10
@@ -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
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
+1751
-449
File diff suppressed because it is too large
Load Diff
@@ -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) &&
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user