diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-06-29 13:19:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-29 22:19:09 +0200 |
| commit | 046d178003035ea87d3042a61917c2d482c68c74 (patch) | |
| tree | 4240e760d8d40201ca4ec96634da8abff211f6bb /include/d | |
| parent | cd5b02450cf278cbeb2c8bb90be1ad22518938c7 (diff) | |
work on daalink, fop actor, mDo machine, msg_scrn, + various (#201)
* work on fop actor / actor mng, daalink, d_a_obj_item
* d_a_title mostly decompiled
* daalink / d_event / JMessage / dmsg_out_font work
* msg_scrn_base / msg_scrn_boss
* some work on mDo machine, d_menu_save, d_tresure, and various
* remove asm
* progress
Diffstat (limited to 'include/d')
49 files changed, 1914 insertions, 511 deletions
diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index 1513caf469..f146bda476 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -26,7 +26,7 @@ class fopEn_enemy_c; class daAlinkHIO_anm_c; class J3DAnmTevRegKey; class dDemo_actor_c; - +class daScex_c; class J2DScreen; class J2DPane; class J2DAnmBase; @@ -57,10 +57,10 @@ private: /* 0x20 */ J2DAnmTevRegKey* field_0x20; /* 0x24 */ J2DAnmColorKey* field_0x24; /* 0x28 */ J2DAnmTransformKey* field_0x28; - /* 0x2C */ float field_0x2c; - /* 0x30 */ float field_0x30; - /* 0x34 */ float field_0x34; - /* 0x38 */ float field_0x38; + /* 0x2C */ f32 field_0x2c; + /* 0x30 */ f32 field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ f32 field_0x38; }; class daAlink_sight_c : public daPy_sightPacket_c { @@ -88,7 +88,7 @@ public: /* 80125BF4 */ virtual void draw(); /* 800CFD58 */ virtual ~daAlink_blur_c(); -private: +// private: /* 0x010 */ void* m_blurTex; /* 0x014 */ int field_0x14; /* 0x018 */ u8 field_0x18[4]; @@ -116,7 +116,7 @@ public: private: /* 0x04 */ s16 mHitFlg; /* 0x06 */ s16 mAppearFlg; - /* 0x08 */ float mKeepMinY; + /* 0x08 */ f32 mKeepMinY; /* 0x0C */ cXyz mHitPos; }; // Size = 0x18 @@ -172,6 +172,9 @@ struct daAlink_WlAnmData { /* 0x7 */ u8 field_0x7; }; // Size: 0x8 +class daAlink_c; +typedef int (daAlink_c::*daAlink_procFunc)(); + class daAlink_c : public daPy_py_c { public: enum daAlink_ANM { @@ -198,8 +201,13 @@ public: /* 0xFD */ ANM_TRANSFORM_WOLF = 0xFD, // verify + /* 0x188 */ ANM_DUNGEON_WARP_READY_INIT = 0x188, + /* 0x18D */ ANM_CUT_JUMP_LARGE = 0x18D, // verify - ANM_GANON_FINISH = 408 // name probably wrong, fix later + /* 0x18F */ ANM_MASTER_SWORD_STICK_INIT = 0x18F, + /* 0x190 */ ANM_MASTER_SWORD_STICK, + /* 0x191 */ ANM_MASTER_SWORD_PULL_INIT, + /* 0x198 */ ANM_GANON_FINISH = 408, // name probably wrong, fix later }; enum daAlink_UPPER { @@ -251,165 +259,358 @@ public: }; enum daAlink_PROC { - /* 0x000 */ PREACTION_UNEQUIP, - /* 0x001 */ SERVICE_WAIT, - /* 0x003 */ HUMAN_WAIT = 3, - /* 0x004 */ HUMAN_MOVE, - /* 0x005 */ HUMAN_ATN_MOVE, - /* 0x006 */ HUMAN_ATN_ACTOR_WAIT, - /* 0x007 */ HUMAN_ATN_ACTOR_MOVE, - /* 0x008 */ HUMAN_WAIT_TURN, - /* 0x009 */ HUMAN_MOVE_TURN, - /* 0x00A */ HUMAN_SIDESTEP, - /* 0x00B */ HUMAN_SIDESTEP_LAND, - /* 0x00C */ HUMAN_SLIDE, - /* 0x00D */ HUMAN_SLIDE_LAND, - /* 0x00E */ FRONT_ROLL, - /* 0x00F */ FRONT_ROLL_CRASH, - /* 0x010 */ HUMAN_KNOCKBACK, - /* 0x011 */ SIDE_ROLL, - /* 0x012 */ BACK_JUMP, - /* 0x013 */ BACK_JUMP_LAND, - /* 0x014 */ SLIP, - /* 0x015 */ HUMAN_AUTOJUMP, - /* 0x016 */ DIVE_JUMP, - /* 0x017 */ ROLL_JUMP, - /* 0x018 */ FALL, - /* 0x019 */ LAND, - /* 0x01A */ SMALL_JUMP, - /* 0x01B */ STEP_MOVE, - /* 0x01D */ GUARD_SLIP = 29, - /* 0x01E */ GUARD_ATTACK, - /* 0x01F */ GUARD_BREAK, - /* 0x020 */ TURN_MOVE, - /* 0x021 */ CUT_NORMAL, - /* 0x022 */ CUT_FINISH, - /* 0x023 */ CUT_FINISH_JUMP_UP, - /* 0x024 */ CUT_FINISH_JUMP_UP_LAND, - /* 0x025 */ CUT_REVERSE, - /* 0x026 */ CUT_JUMP, - /* 0x027 */ CUT_JUMP_LAND, - /* 0x028 */ COMBO_CUT_TURN, - /* 0x029 */ CUT_CHARGE, - /* 0x02A */ CUT_TURN_MOVE, - /* 0x02B */ CUT_DOWN, - /* 0x02C */ CUT_DOWN_LAND, - /* 0x02D */ CUT_HEAD, - /* 0x02E */ CUT_HEAD_LAND, - /* 0x02F */ CUT_LARGE_JUMP_CHARGE, - /* 0x030 */ CUT_LARGE_JUMP, - /* 0x031 */ CUT_LARGE_JUMP_LAND, - /* 0x032 */ DAMAGE, - /* 0x034 */ LAND_DAMAGE = 52, - /* 0x035 */ CRAWL_START, - /* 0x036 */ CRAWL_MOVE, - /* 0x037 */ CRAWL_AUTOMOVE, - /* 0x038 */ CRAWL_END, - /* 0x039 */ PULL_MOVE, - /* 0x03A */ HORSE_RIDE, - /* 0x03B */ HORSE_GETOFF, - /* 0x03D */ HORSE_TURN = 61, - /* 0x03E */ HORSE_JUMP, - /* 0x03F */ HORSE_LAND, - /* 0x040 */ HORSE_SUBJECTIVITY, - /* 0x041 */ HORSE_CUT, - /* 0x042 */ HORSE_CUT_CHARGE_READY, - /* 0x043 */ HORSE_CUT_TURN, - /* 0x044 */ HORSE_DAMAGE, - /* 0x045 */ RIDE_BOW_READY, - /* 0x04C */ HORSE_BOTTLE_DRINK = 76, - /* 0x04E */ HORSE_KANDELAAR_POUR = 78, - /* 0x04F */ HORSE_RUN, - /* 0x050 */ HORSE_HANG, - /* 0x053 */ BOAR_RUN = 83, - /* 0x055 */ HANG_START = 85, - /* 0x056 */ HANG_FALL_START, - /* 0x057 */ HANG_UP, - /* 0x058 */ HANG_WAIT, - /* 0x059 */ HANG_MOVE, - /* 0x065 */ COPY_ROD_SWING = 101, - /* 0x06B */ CLIMB_MOVE_LADDER = 107, - /* 0x06C */ GRAB_READY = 108, - /* 0x06D */ GRAB_UP, - /* 0x06F */ GRAB_THROW = 111, - /* 0x070 */ GRAB_DOWN, - /* 0x072 */ GRAB_REBOUND = 114, - /* 0x073 */ GRAB_STAND, - /* 0x074 */ INSECT_CATCH, - /* 0x075 */ PICK_UP, - /* 0x076 */ PICK_PUT, - /* 0x077 */ HUMAN_ST_ESCAPE, - /* 0x082 */ CLIMB_MOVE_VERTICAL = 130, - /* 0x083 */ CLIMB_MOVE_HORIZONTAL, - /* 0x084 */ CLIMB_HANG, - /* 0x08C */ CANOE_RIDE = 140, - /* 0x08D */ CANOE_JUMP_RIDE, - /* 0x08E */ CANOE_GETOFF, - /* 0x090 */ CANOE_ROW = 144, - /* 0x091 */ CANOE_PADDLE_SHIFT, - /* 0x092 */ CANOE_PADDLE_PUT, - /* 0x093 */ CANOE_PADDLE_GRAB, - /* 0x094 */ CANOE_ROD_GRAB, - /* 0x096 */ CANOE_FISHING_REEL = 150, - /* 0x097 */ CANOE_FISHING_GET, - /* 0x098 */ CANOE_SUBJECTIVITY, - /* 0x0A0 */ CANOE_BOTTLE_DRINK = 160, - /* 0x0A1 */ CANOE_KANDELAAR_POUR, - /* 0x0A3 */ FISHING_FOOD = 163, - /* 0x0AD */ BOARD_CUT_TURN = 173, - /* 0x0AF */ FM_CHAIN_UP, - /* 0x0B3 */ BOTTLE_DRINK = 179, - /* 0x0B5 */ BOTTLE_SWING = 181, - /* 0x0BA */ GRASS_WHISTLE = 186, - /* 0x0BC */ HAWK_WAIT = 188, - /* 0x0BD */ FLOOR_DOWN_REBOUND = 189, - /* 0x0BE */ GORON_RIDE_WAIT, - /* 0x0C0 */ GOAT_THROW = 192, - /* 0x0C1 */ GOAT_STROKE, - /* 0x0CC */ MAGNE_BOOTS_FLY = 204, - /* 0x0CD */ BOOTS_EQUIP, - /* 0x0CF */ SUMOU_PUSH = 207, - /* 0x0D0 */ SUMOU_SIDE_MOVE, - /* 0x0D1 */ SUMOU_ACTION, - /* 0x0D2 */ SUMOU_STAGGER, - /* 0x0D3 */ SUMOU_WIN_LOSE, - /* 0x0DC */ BOSS_ENEMY_HANG = 220, - /* 0x0DE */ SCREAM_WAIT = 222, - /* 0x0EA */ DUNGEON_WARP_READY = 234, - /* 0x0ED */ WOLF_HOWL = 237, - /* 0x0F1 */ WOLF_WAIT = 241, - /* 0x0F2 */ WOLF_MOVE, - /* 0x0F3 */ WOLF_DASH, - /* 0x0F4 */ WOLF_KNOCKBACK, - /* 0x0F6 */ WOLF_ATN_WAIT = 246, - /* 0x0F7 */ WOLF_SIDESTEP, - /* 0x0F8 */ WOLF_SIDESTEP_LAND, - /* 0x0F9 */ WOLF_BACKFLIP, - /* 0x0FA */ WOLF_BACKFLIP_LAND, - /* 0x0FC */ WOLF_AUTOJUMP = 252, - /* 0x0FF */ WOLF_RSIT = 255, - /* 0x107 */ WOLF_DAMAGE = 263, - /* 0x10F */ WOLF_SLIDE = 271, - /* 0x114 */ WOLF_ROPE_HANG = 276, - /* 0x118 */ WOLF_TAGLOCK_JUMP = 280, - /* 0x119 */ WOLF_TAGLOCK_LAND, - /* 0x11C */ WOLF_JUMPATTACK = 284, - /* 0x121 */ WOLF_ST_ESCAPE = 289, - /* 0x123 */ WOLF_DOWNATTACK_PULLOUT = 291, - /* 0x131 */ WOLF_CHAIN = 305, - /* 0x132 */ WOLF_DIG, - /* 0x136 */ WOLF_ENEMY_HANG_BITE = 310, - /* 0x13E */ SUBJECTIVITY = 318, - /* 0x141 */ POLY_DAMAGE = 321, - /* 0x142 */ ELEC_DAMAGE, - /* 0x143 */ PUSH_PULL_WAIT, - /* 0x144 */ PUSH_MOVE, - /* 0x148 */ TRESURE_STAND = 328, - /* 0x14D */ METAMORPHOSE = 333, - /* 0x14F */ WARP = 335, - /* 0x150 */ DEAD, - /* 0x159 */ LARGE_DAMAGE = 345, - /* 0x15A */ LARGE_DAMAGE_WALL, + /* 0x000 */ PROC_PREACTION_UNEQUIP, + /* 0x001 */ PROC_SERVICE_WAIT, + /* 0x002 */ PROC_TIRED_WAIT, + /* 0x003 */ PROC_WAIT, + /* 0x004 */ PROC_MOVE, + /* 0x005 */ PROC_ATN_MOVE, + /* 0x006 */ PROC_ATN_ACTOR_WAIT, + /* 0x007 */ PROC_ATN_ACTOR_MOVE, + /* 0x008 */ PROC_WAIT_TURN, + /* 0x009 */ PROC_MOVE_TURN, + /* 0x00A */ PROC_SIDESTEP, + /* 0x00B */ PROC_SIDESTEP_LAND, + /* 0x00C */ PROC_SLIDE, + /* 0x00D */ PROC_SLIDE_LAND, + /* 0x00E */ PROC_FRONT_ROLL, + /* 0x00F */ PROC_FRONT_ROLL_CRASH, + /* 0x010 */ PROC_FRONT_ROLL_SUCCESS, + /* 0x011 */ PROC_SIDE_ROLL, + /* 0x012 */ PROC_BACK_JUMP, + /* 0x013 */ PROC_BACK_JUMP_LAND, + /* 0x014 */ PROC_SLIP, + /* 0x015 */ PROC_AUTO_JUMP, + /* 0x016 */ PROC_DIVE_JUMP, + /* 0x017 */ PROC_ROLL_JUMP, + /* 0x018 */ PROC_FALL, + /* 0x019 */ PROC_LAND, + /* 0x01A */ PROC_SMALL_JUMP, + /* 0x01B */ PROC_STEP_MOVE, + /* 0x01C */ PROC_CROUCH, + /* 0x01D */ PROC_GUARD_SLIP, + /* 0x01E */ PROC_GUARD_ATTACK, + /* 0x01F */ PROC_GUARD_BREAK, + /* 0x020 */ PROC_TURN_MOVE, + /* 0x021 */ PROC_CUT_NORMAL, + /* 0x022 */ PROC_CUT_FINISH, + /* 0x023 */ PROC_CUT_FINISH_JUMP_UP, + /* 0x024 */ PROC_CUT_FINISH_JUMP_UP_LAND, + /* 0x025 */ PROC_CUT_REVERSE, + /* 0x026 */ PROC_CUT_JUMP, + /* 0x027 */ PROC_CUT_JUMP_LAND, + /* 0x028 */ PROC_CUT_TURN, + /* 0x029 */ PROC_CUT_TURN_CHARGE, + /* 0x02A */ PROC_CUT_TURN_MOVE, + /* 0x02B */ PROC_CUT_DOWN, + /* 0x02C */ PROC_CUT_DOWN_LAND, + /* 0x02D */ PROC_CUT_HEAD, + /* 0x02E */ PROC_CUT_HEAD_LAND, + /* 0x02F */ PROC_CUT_LARGE_JUMP_CHARGE, + /* 0x030 */ PROC_CUT_LARGE_JUMP, + /* 0x031 */ PROC_CUT_LARGE_JUMP_LAND, + /* 0x032 */ PROC_DAMAGE, + /* 0x033 */ PROC_LARGE_DAMAGE_UP, + /* 0x034 */ PROC_LAND_DAMAGE, + /* 0x035 */ PROC_CRAWL_START, + /* 0x036 */ PROC_CRAWL_MOVE, + /* 0x037 */ PROC_CRAWL_AUTO_MOVE, + /* 0x038 */ PROC_CRAWL_END, + /* 0x039 */ PROC_PULL_MOVE, + /* 0x03A */ PROC_HORSE_RIDE, + /* 0x03B */ PROC_HORSE_GETOFF, + /* 0x03C */ PROC_HORSE_WAIT, + /* 0x03D */ PROC_HORSE_TURN, + /* 0x03E */ PROC_HORSE_JUMP, + /* 0x03F */ PROC_HORSE_LAND, + /* 0x040 */ PROC_HORSE_SUBJECTIVITY, + /* 0x041 */ PROC_HORSE_CUT, + /* 0x042 */ PROC_HORSE_CUT_CHARGE_READY, + /* 0x043 */ PROC_HORSE_CUT_TURN, + /* 0x044 */ PROC_HORSE_DAMAGE, + /* 0x045 */ PROC_HORSE_BOW_SUBJECT, + /* 0x046 */ PROC_HORSE_BOW_MOVE, + /* 0x047 */ PROC_HORSE_GRAB_MOVE, + /* 0x048 */ PROC_HORSE_BOOMERANG_SUBJECT, + /* 0x049 */ PROC_HORSE_BOOMERANG_MOVE, + /* 0x04A */ PROC_HORSE_HOOKSHOT_SUBJECT, + /* 0x04B */ PROC_HORSE_HOOKSHOT_MOVE, + /* 0x04C */ PROC_HORSE_BOTTLE_DRINK, + /* 0x04D */ PROC_HORSE_COMEBACK, + /* 0x04E */ PROC_HORSE_KANDELAAR_POUR, + /* 0x04F */ PROC_HORSE_RUN, + /* 0x050 */ PROC_HORSE_HANG, + /* 0x051 */ PROC_HORSE_GET_KEY, + /* 0x052 */ PROC_HORSE_LOOK_DOWN, + /* 0x053 */ PROC_BOAR_RUN, + /* 0x054 */ PROC_SWORD_UNEQUIP_SP, + /* 0x055 */ PROC_HANG_START, + /* 0x056 */ PROC_HANG_FALL_START, + /* 0x057 */ PROC_HANG_UP, + /* 0x058 */ PROC_HANG_WAIT, + /* 0x059 */ PROC_HANG_MOVE, + /* 0x05A */ PROC_HANG_CLIMB, + /* 0x05B */ PROC_HANG_WALL_CATCH, + /* 0x05C */ PROC_HANG_READY, + /* 0x05D */ PROC_HANG_LEVER_DOWN, + /* 0x05E */ PROC_BOW_SUBJECT, + /* 0x05F */ PROC_BOW_MOVE, + /* 0x060 */ PROC_BOOMERANG_SUBJECT, + /* 0x061 */ PROC_BOOMERANG_MOVE, + /* 0x062 */ PROC_BOOMERANG_CATCH, + /* 0x063 */ PROC_COPY_ROD_SUBJECT, + /* 0x064 */ PROC_COPY_ROD_MOVE, + /* 0x065 */ PROC_COPY_ROD_SWING, + /* 0x066 */ PROC_COPY_ROD_REVIVE, + /* 0x067 */ PROC_LADDER_UP_START, + /* 0x068 */ PROC_LADDER_UP_END, + /* 0x069 */ PROC_LADDER_DOWN_START, + /* 0x06A */ PROC_LADDER_DOWN_END, + /* 0x06B */ PROC_LADDER_MOVE, + /* 0x06C */ PROC_GRAB_READY, + /* 0x06D */ PROC_GRAB_UP, + /* 0x06E */ PROC_GRAB_MISS, + /* 0x06F */ PROC_GRAB_THROW, + /* 0x070 */ PROC_GRAB_PUT, + /* 0x071 */ PROC_GRAB_WAIT, + /* 0x072 */ PROC_GRAB_REBOUND, + /* 0x073 */ PROC_GRAB_STAND, + /* 0x074 */ PROC_INSECT_CATCH, + /* 0x075 */ PROC_PICK_UP, + /* 0x076 */ PROC_PICK_PUT, + /* 0x077 */ PROC_HUMAN_ST_ESCAPE, + /* 0x078 */ PROC_DK_CAUGHT, + /* 0x079 */ PROC_SWIM_UP, + /* 0x07A */ PROC_SWIM_WAIT, + /* 0x07B */ PROC_SWIM_MOVE, + /* 0x07C */ PROC_SWIM_DIVE, + /* 0x07D */ PROC_SWIM_HOOKSHOT_SUBJECT, + /* 0x07E */ PROC_SWIM_HOOKSHOT_MOVE, + /* 0x07F */ PROC_SWIM_DAMAGE, + /* 0x080 */ PROC_CLIMB_UP_START, + /* 0x081 */ PROC_CLIMB_DOWN_START, + /* 0x082 */ PROC_CLIMB_MOVE_UPDOWN, + /* 0x083 */ PROC_CLIMB_MOVE_SIDE, + /* 0x084 */ PROC_CLIMB_WAIT, + /* 0x085 */ PROC_CLIMB_TO_ROOF, + /* 0x086 */ PROC_ROOF_HANG_START, + /* 0x087 */ PROC_ROOF_HANG_WAIT, + /* 0x088 */ PROC_ROOF_HANG_FRONT_MOVE, + /* 0x089 */ PROC_ROOF_HANG_SIDE_MOVE, + /* 0x08A */ PROC_ROOF_HANG_TURN, + /* 0x08B */ PROC_ROOF_SWITCH_HANG, + /* 0x08C */ PROC_CANOE_RIDE, + /* 0x08D */ PROC_CANOE_JUMP_RIDE, + /* 0x08E */ PROC_CANOE_GETOFF, + /* 0x08F */ PROC_CANOE_WAIT, + /* 0x090 */ PROC_CANOE_ROW, + /* 0x091 */ PROC_CANOE_PADDLE_SHIFT, + /* 0x092 */ PROC_CANOE_PADDLE_PUT, + /* 0x093 */ PROC_CANOE_PADDLE_GRAB, + /* 0x094 */ PROC_CANOE_ROD_GRAB, + /* 0x095 */ PROC_CANOE_FISHING_WAIT, + /* 0x096 */ PROC_CANOE_FISHING_REEL, + /* 0x097 */ PROC_CANOE_FISHING_GET, + /* 0x098 */ PROC_CANOE_SUBJECTIVITY, + /* 0x099 */ PROC_CANOE_BOW_SUBJECT, + /* 0x09A */ PROC_CANOE_BOW_MOVE, + /* 0x09B */ PROC_CANOE_GRAB_MOVE, + /* 0x09C */ PROC_CANOE_BOOMERANG_SUBJECT, + /* 0x09D */ PROC_CANOE_BOOMERANG_MOVE, + /* 0x09E */ PROC_CANOE_HOOKSHOT_SUBJECT, + /* 0x09F */ PROC_CANOE_HOOKSHOT_MOVE, + /* 0x0A0 */ PROC_CANOE_BOTTLE_DRINK, + /* 0x0A1 */ PROC_CANOE_KANDELAAR_POUR, + /* 0x0A2 */ PROC_FISHING_CAST, + /* 0x0A3 */ PROC_FISHING_FOOD, + /* 0x0A4 */ PROC_SPINNER_READY, + /* 0x0A5 */ PROC_SPINNER_WAIT, + /* 0x0A6 */ PROC_BOARD_RIDE, + /* 0x0A7 */ PROC_BOARD_WAIT, + /* 0x0A8 */ PROC_BOARD_ROW, + /* 0x0A9 */ PROC_BOARD_TURN, + /* 0x0AA */ PROC_BOARD_JUMP, + /* 0x0AB */ PROC_BOARD_SUBJECTIVITY, + /* 0x0AC */ PROC_BOARD_CUT, + /* 0x0AD */ PROC_BOARD_CUT_TURN, + /* 0x0AE */ PROC_CHAIN_UP, + /* 0x0AF */ PROC_CHAIN_STRONG_PULL, + /* 0x0B0 */ PROC_DOOR_OPEN, + /* 0x0B1 */ PROC_MONKEY_MOVE, + /* 0x0B2 */ PROC_DEMO_BOOMERANG_CATCH, + /* 0x0B3 */ PROC_BOTTLE_DRINK, + /* 0x0B4 */ PROC_BOTTLE_OPEN, + /* 0x0B5 */ PROC_BOTTLE_SWING, + /* 0x0B6 */ PROC_BOTTLE_GET, + /* 0x0B7 */ PROC_KANDELAAR_SWING, + /* 0x0B8 */ PROC_KANDELAAR_POUR, + /* 0x0B9 */ PROC_GRASS_WHISTLE_GET, + /* 0x0BA */ PROC_GRASS_WHISTLE_WAIT, + /* 0x0BB */ PROC_HAWK_CATCH, + /* 0x0BC */ PROC_HAWK_SUBJECT, + /* 0x0BD */ PROC_FLOOR_DOWN_REBOUND, + /* 0x0BE */ PROC_GORON_RIDE_WAIT, + /* 0x0BF */ PROC_GOAT_MOVE, + /* 0x0C0 */ PROC_GOAT_CATCH, + /* 0x0C1 */ PROC_GOAT_STROKE, + /* 0x0C2 */ PROC_GORON_MOVE, + /* 0x0C3 */ PROC_BOSS_ATN_WAIT, + /* 0x0C4 */ PROC_HOOKSHOT_SUBJECT, + /* 0x0C5 */ PROC_HOOKSHOT_MOVE, + /* 0x0C6 */ PROC_HOOKSHOT_FLY, + /* 0x0C7 */ PROC_HOOKSHOT_ROOF_WAIT, + /* 0x0C8 */ PROC_HOOKSHOT_ROOF_SHOOT, + /* 0x0C9 */ PROC_HOOKSHOT_ROOF_BOOTS, + /* 0x0CA */ PROC_HOOKSHOT_WALL_WAIT, + /* 0x0CB */ PROC_HOOKSHOT_WALL_SHOOT, + /* 0x0CC */ PROC_MAGNE_BOOTS_FLY, + /* 0x0CD */ PROC_BOOTS_EQUIP, + /* 0x0CE */ PROC_SUMOU_READY, + /* 0x0CF */ PROC_SUMOU_MOVE, + /* 0x0D0 */ PROC_SUMOU_SIDE_MOVE, + /* 0x0D1 */ PROC_SUMOU_ACTION, + /* 0x0D2 */ PROC_SUMOU_STAGGER, + /* 0x0D3 */ PROC_SUMOU_WIN_LOSE, + /* 0x0D4 */ PROC_SUMOU_SHIKO, + /* 0x0D5 */ PROC_LOOK_UP, + /* 0x0D6 */ PROC_LOOK_UP_TO_GET_ITEM, + /* 0x0D7 */ PROC_HAND_PAT, + /* 0x0D8 */ PROC_IRON_BALL_SUBJECT, + /* 0x0D9 */ PROC_IRON_BALL_MOVE, + /* 0x0DA */ PROC_IRON_BALL_THROW, + /* 0x0DB */ PROC_IRON_BALL_RETURN, + /* 0x0DC */ PROC_BOSS_BODY_HANG, + /* 0x0DD */ PROC_OCTAIEAL_SPIT, + /* 0x0DE */ PROC_SCREAM_WAIT, + /* 0x0DF */ PROC_GOAT_STOP_READY, + /* 0x0E0 */ PROC_ZORA_MOVE, + /* 0x0E1 */ PROC_LOOK_AROUND_TURN, + /* 0x0E2 */ PROC_TRADE_ITEM_OUT, + /* 0x0E3 */ PROC_NOT_USE_ITEM, + /* 0x0E4 */ PROC_SWORD_READY, + /* 0x0E5 */ PROC_SWORD_PUSH, + /* 0x0E6 */ PROC_GANON_FINISH, + /* 0x0E7 */ PROC_CUT_FAST_READY, + /* 0x0E8 */ PROC_MASTER_SWORD_STICK, + /* 0x0E9 */ PROC_MASTER_SWORD_PULL, + /* 0x0EA */ PROC_DUNGEON_WARP_READY, + /* 0x0EB */ PROC_DUNEGON_WARP, + /* 0x0EC */ PROC_DUNEGON_WARP_SCN_START, + /* 0x0ED */ PROC_WOLF_HOWL_DEMO, + /* 0x0EE */ PROC_WOLF_SERVICE_WAIT, + /* 0x0EF */ PROC_WOLF_TIRED_WAIT, + /* 0x0F0 */ PROC_WOLF_MIDNA_RIDE_SHOCK, + /* 0x0F1 */ PROC_WOLF_WAIT, + /* 0x0F2 */ PROC_WOLF_MOVE, + /* 0x0F3 */ PROC_WOLF_DASH, + /* 0x0F4 */ PROC_WOLF_DASH_REVERSE, + /* 0x0F5 */ PROC_WOLF_WAIT_TURN, + /* 0x0F6 */ PROC_WOLF_ATN_AC_MOVE, + /* 0x0F7 */ PROC_WOLF_SIDESTEP, + /* 0x0F8 */ PROC_WOLF_SIDESTEP_LAND, + /* 0x0F9 */ PROC_WOLF_BACKJUMP, + /* 0x0FA */ PROC_WOLF_BACKJUMP_LAND, + /* 0x0FB */ PROC_WOLF_HOWL, + /* 0x0FC */ PROC_WOLF_AUTO_JUMP, + /* 0x0FD */ PROC_WOLF_FALL, + /* 0x0FE */ PROC_WOLF_LAND, + /* 0x0FF */ PROC_WOLF_SIT, + /* 0x100 */ PROC_WOLF_LIE_START, + /* 0x101 */ PROC_WOLF_LIE_MOVE, + /* 0x102 */ PROC_WOLF_LIE_AUTO_MOVE, + /* 0x103 */ PROC_WOLF_HANG_READY, + /* 0x104 */ PROC_WOLF_STEP_MOVE, + /* 0x105 */ PROC_WOLF_HANG_WALL_CATCH, + /* 0x106 */ PROC_WOLF_HANG_FALL_START, + /* 0x107 */ PROC_WOLF_DAMAGE, + /* 0x108 */ PROC_WOLF_LARGE_DAMAGE_UP, + /* 0x109 */ PROC_WOLF_LAND_DAMAGE, + /* 0x10A */ PROC_WOLF_SCREAM_WAIT, + /* 0x10B */ PROC_WOLF_SLIP, + /* 0x10C */ PROC_WOLF_SLIP_TURN, + /* 0x10D */ PROC_WOLF_SLIP_TURN_LAND, + /* 0x10E */ PROC_WOLF_SLIDE_READY, + /* 0x10F */ PROC_WOLF_SLIDE, + /* 0x110 */ PROC_WOLF_SLIDE_LAND, + /* 0x111 */ PROC_WOLF_WAIT_SLIP, + /* 0x112 */ PROC_WOLF_SLOPE_START, + /* 0x113 */ PROC_WOLF_ROPE_MOVE, + /* 0x114 */ PROC_WOLF_ROPE_HANG, + /* 0x115 */ PROC_WOLF_ROPE_TURN, + /* 0x116 */ PROC_WOLF_ROPE_STAGGER, + /* 0x117 */ PROC_WOLF_ROPE_SUBJECTIVITY, + /* 0x118 */ PROC_WOLF_TAG_JUMP, + /* 0x119 */ PROC_WOLF_TAG_JUMP_LAND, + /* 0x11A */ PROC_WOLF_ROLL_ATTACK_CHARGE, + /* 0x11B */ PROC_WOLF_ROLL_ATTACK_MOVE, + /* 0x11C */ PROC_WOLF_JUMP_ATTACK, + /* 0x11D */ PROC_WOLF_JUMP_AT_KICK, + /* 0x11E */ PROC_WOLF_JUMP_AT_SLIDE_LAND, + /* 0x11F */ PROC_WOLF_JUMP_AT_NORMAL_LAND, + /* 0x120 */ PROC_WOLF_WAIT_ATTACK, + /* 0x121 */ PROC_WOLF_ROLL_ATTACK, + /* 0x122 */ PROC_WOLF_DOWN_ATTACK, + /* 0x123 */ PROC_WOLF_DOWN_AT_LAND, + /* 0x124 */ PROC_WOLF_DOWN_AT_MISS_LAND, + /* 0x125 */ PROC_WOLF_LOCK_ATTACK, + /* 0x126 */ PROC_WOLF_LOCK_ATTACK_TURN, + /* 0x127 */ PROC_WOLF_SWIM_UP, + /* 0x128 */ PROC_WOLF_SWIM_WAIT, + /* 0x129 */ PROC_WOLF_SWIM_MOVE, + /* 0x12A */ PROC_WOLF_SWIM_END_WAIT, + /* 0x12B */ PROC_WOLF_GRAB_UP, + /* 0x12C */ PROC_WOLF_GRAB_PUT, + /* 0x12D */ PROC_WOLF_GRAB_THROW, + /* 0x12E */ PROC_WOLF_CHAIN_UP, + /* 0x12F */ PROC_WOLF_PUSH, + /* 0x130 */ PROC_WOLF_CHAIN_READY, + /* 0x131 */ PROC_WOLF_CHAIN_WAIT, + /* 0x132 */ PROC_WOLF_DIG, + /* 0x133 */ PROC_WOLF_DIG_THROUGH, + /* 0x134 */ PROC_WOLF_ATTACK_REVERSE, + /* 0x135 */ PROC_WOLF_ENEMY_THROW, + /* 0x136 */ PROC_WOLF_ENEMY_HANG_BITE, + /* 0x137 */ PROC_WOLF_GIANT_PUZZLE, + /* 0x138 */ PROC_WOLF_CARGO_CARRY, + /* 0x139 */ PROC_WOLF_GET_SMELL, + /* 0x13A */ PROC_WOLF_SMELL_WAIT, + /* 0x13B */ PROC_WOLF_SNOW_ESCAPE, + /* 0x13C */ PROC_WOLF_GANON_CATCH, + /* 0x13D */ PROC_TOOL_DEMO, + /* 0x13E */ PROC_SUBJECTIVITY, + /* 0x13F */ PROC_SWIM_SUBJECTIVITY, + /* 0x140 */ PROC_PEEP_SUBJECTIVITY, + /* 0x141 */ PROC_POLY_DAMAGE, + /* 0x142 */ PROC_ELEC_DAMAGE, + /* 0x143 */ PROC_PUSH_PULL_WAIT, + /* 0x144 */ PROC_PUSH_MOVE, + /* 0x145 */ PROC_TALK, + /* 0x146 */ PROC_OPEN_TREASURE, + /* 0x147 */ PROC_UNEQUIP, + /* 0x148 */ PROC_GET_ITEM, + /* 0x149 */ PROC_TURN_BACK, + /* 0x14A */ PROC_LOOK_WAIT, + /* 0x14B */ PROC_DEMO_PUSH_PULL_WAIT, + /* 0x14C */ PROC_DEMO_PUSH_MOVE, + /* 0x14D */ PROC_METAMORPHOSE, + /* 0x14E */ PROC_METAMORPHOSE_ONLY, + /* 0x14F */ PROC_WARP, + /* 0x150 */ PROC_DEAD, + /* 0x151 */ PROC_FOG_DEAD, + /* 0x152 */ PROC_LOOK_AROUND, + /* 0x153 */ PROC_CAUGHT, + /* 0x154 */ PROC_SAND_WALL_HIT, + /* 0x155 */ PROC_LAVA_RETURN, + /* 0x156 */ PROC_SWIM_FREEZE_RETURN, + /* 0x157 */ PROC_GET_READY_SIT, + /* 0x158 */ PROC_TW_GATE, + /* 0x159 */ PROC_LARGE_DAMAGE, + /* 0x15A */ PROC_LARGE_DAMAGE_WALL, + /* 0x15B */ PROC_NOD, + /* 0x15C */ PROC_EYE_AWAY, + /* 0x15D */ PROC_GLARE, + /* 0x15E */ PROC_HORSE_CALL_WAIT, + /* 0x15F */ PROC_QUAKE_WAIT, }; // this might be one of the above enums, but not clear yet @@ -421,6 +622,16 @@ public: ANM_WOLF_ENEMY_THROW_RIGHT, }; + enum daAlink_ITEM_BTN { + /* 0x01 */ BTN_X = (1 << 0), + /* 0x02 */ BTN_Y = (1 << 1), + /* 0x04 */ BTN_Z = (1 << 2), + /* 0x08 */ BTN_B = (1 << 3), + /* 0x10 */ BTN_A = (1 << 4), + /* 0x20 */ BTN_L = (1 << 5), + /* 0x40 */ BTN_R = (1 << 6), + }; + class firePointEff_c { public: /* 800CFC3C */ ~firePointEff_c(); @@ -481,14 +692,14 @@ public: /* 800A3E98 */ void initModelEnv(u16, u32); /* 800A3F00 */ void initDemoModel(J3DModel**, char const*, u32); /* 800A3F98 */ void initDemoBck(mDoExt_bckAnm**, char const*); - /* 800A4068 */ static void createHeap(); + /* 800A4068 */ int createHeap(); /* 800A4910 */ void setSelectEquipItem(int); /* 800A4BC8 */ BOOL checkBoarStart(); /* 800A4C40 */ BOOL checkCanoeStart(); /* 800A4CB4 */ void playerInit(); /* 800A54F4 */ BOOL checkHorseStart(u32, int); - /* 800A551C */ void setStartProcInit(); - /* 800A5CC8 */ void create(); + /* 800A551C */ int setStartProcInit(); + /* 800A5CC8 */ int create(); /* 800A662C */ void setRoomInfo(); /* 800A67E0 */ void setShapeAngleOnGround(); /* 800A6B0C */ void setStepsOffset(); @@ -503,7 +714,7 @@ public: /* 800A8310 */ void setBodyPartPos(); /* 800A87F8 */ void setAttentionPos(); /* 800A8CE4 */ void setMatrix(); - /* 800A9248 */ void simpleAnmPlay(J3DAnmBase*); + /* 800A9248 */ static void simpleAnmPlay(J3DAnmBase*); /* 800A92F0 */ void setSwordPos(); /* 800A9450 */ void setItemMatrix(int); /* 800A9F4C */ void setWolfItemMatrix(); @@ -619,8 +830,8 @@ public: /* 800B477C */ void checkRequestTalkActor(dAttList_c*, fopAc_ac_c*); /* 800B47B4 */ void checkServiceWaitMode(); /* 800B48D0 */ void setJumpMode(); - /* 800B4908 */ float getMetamorphoseNearDis() const; - /* 800B4918 */ float getMetamorphoseFarDis() const; + /* 800B4908 */ f32 getMetamorphoseNearDis() const; + /* 800B4918 */ f32 getMetamorphoseFarDis() const; /* 800B4928 */ s16 getMetamorphoseFarAngle() const; /* 800B4938 */ void setMidnaMsg(); /* 800B4950 */ bool notTalk(); @@ -676,7 +887,7 @@ public: /* 800BA6A0 */ void commonChangeItem(); /* 800BA914 */ void setItemAction(); /* 800BAF08 */ void checkNextActionFromCrouch(int); - /* 800BAF80 */ void checkUpperReadyThrowAnime() const; + /* 800BAF80 */ int checkUpperReadyThrowAnime() const; /* 800BB020 */ void getBodyAngleXBasePos(cXyz*); /* 800BB084 */ void getBodyAngleXAtnActor(int); /* 800BB2B0 */ void setBodyAngleXReadyAnime(int); @@ -696,8 +907,8 @@ public: /* 800BE26C */ void checkCoachGuardGame(); /* 800BE2C0 */ void checkRoofRestart(); /* 800BE3E4 */ void checkRestartRoom(); - /* 800BE9D4 */ void getSceneExitMoveAngle(); - /* 800BEAF8 */ void checkSceneChange(int); + /* 800BE9D4 */ s16 getSceneExitMoveAngle(); + /* 800BEAF8 */ int checkSceneChange(int); /* 800BF0B8 */ void voiceStartLevel(u32); /* 800BF0EC */ void seStartSwordCut(u32); /* 800BF194 */ void seStartMapInfo(u32); @@ -720,12 +931,12 @@ public: /* 800BFFCC */ void loadAramItemBtk(u16, J3DModel*); /* 800C0028 */ void loadAramItemBtp(u16, J3DModel*); /* 800C0084 */ void changeItemBck(u16, f32); - /* 800C0114 */ void checkGroupItem(int, int) const; - /* 800C0164 */ void checkSetItemTrigger(int); - /* 800C0208 */ void checkItemSetButton(int); - /* 800C0284 */ void checkField(); - /* 800C02C8 */ void checkBossRoom(); - /* 800C0310 */ void checkDungeon(); + /* 800C0114 */ int checkGroupItem(int, int) const; + /* 800C0164 */ int checkSetItemTrigger(int); + /* 800C0208 */ int checkItemSetButton(int); + /* 800C0284 */ static bool checkField(); + /* 800C02C8 */ static bool checkBossRoom(); + /* 800C0310 */ static bool checkDungeon(); /* 800C0358 */ static bool checkCastleTown(); /* 800C03A0 */ static bool checkCloudSea(); /* 800C03E8 */ static bool checkRoomOnly(); @@ -1098,16 +1309,16 @@ public: /* 800E23FC */ void concatMagneBootMtx(); /* 800E243C */ void concatMagneBootInvMtx(); /* 800E247C */ void multVecMagneBootInvMtx(cXyz*); - /* 800E24B0 */ void commonMagneLineCheck(cXyz*, cXyz*); + /* 800E24B0 */ int commonMagneLineCheck(cXyz*, cXyz*); /* 800E251C */ void checkBootsMoveAnime(int); /* 800E2580 */ void setHeavyBoots(int); - /* 800E2738 */ void getMagneBootsLocalAngleY(s16, int); + /* 800E2738 */ s16 getMagneBootsLocalAngleY(s16, int); /* 800E2808 */ void setMagneBootsMtx(cBgS_PolyInfo*, int); /* 800E2DC4 */ void cancelMagneBootsOn(); - /* 800E2F88 */ void checkMagneBootsFly(); + /* 800E2F88 */ int checkMagneBootsFly(); /* 800E3048 */ void procBootsEquipInit(); /* 800E30DC */ void procBootsEquip(); - /* 800E3218 */ void procMagneBootsFlyInit(); + /* 800E3218 */ int procMagneBootsFlyInit(); /* 800E3454 */ void procMagneBootsFly(); /* 800E3760 */ s16 getBombExplodeTime() const; /* 800E3770 */ f32 getBombGravity() const; @@ -1185,7 +1396,7 @@ public: /* 800E8148 */ void checkPullBehindWall(); /* 800E8298 */ void offGoatStopGame(); /* 800E82B0 */ BOOL checkGoatCatchActor(fopAc_ac_c*); - /* 800E8314 */ float getGoatCatchDistance2(); + /* 800E8314 */ f32 getGoatCatchDistance2(); /* 800E8334 */ void endPushPull(); /* 800E8354 */ void getPushPullAnimeSpeed(); /* 800E8428 */ void procCoPushPullWaitInit(int); @@ -1511,7 +1722,7 @@ public: /* 8010163C */ void setRoofHangSwitch(); /* 801016AC */ void procRoofSwitchHangInit(fopAc_ac_c*); /* 801017AC */ void procRoofSwitchHang(); - /* 80101890 */ void checkZoraWearMaskDraw(); + /* 80101890 */ BOOL checkZoraWearMaskDraw(); /* 801018E4 */ void checkAcceptUseItemInWater(u16) const; /* 80101934 */ void swimDeleteItem(); /* 801019B8 */ void getZoraSwim() const; @@ -1739,7 +1950,7 @@ public: /* 80118AD0 */ void checkFinalBattle(); /* 80118B34 */ void checkRestartDead(int, int); /* 80118BF4 */ void setDeadRideSyncPos(); - /* 80118C98 */ void checkDeadHP(); + /* 80118C98 */ BOOL checkDeadHP(); /* 80118D7C */ void checkDeadAction(int); /* 80118FF8 */ void setHighModelBck(mDoExt_bckAnm*, u16); /* 801190A4 */ void setHighModelFaceBtk(u16); @@ -1817,15 +2028,15 @@ public: /* 8011EA78 */ bool procGanonFinish(); /* 8011EAE8 */ void procCutFastReadyInit(); /* 8011EB8C */ void procCutFastReady(); - /* 8011EBDC */ void procMasterSwordStickInit(); - /* 8011EC60 */ void procMasterSwordStick(); - /* 8011ED18 */ bool procMasterSwordPullInit(); + /* 8011EBDC */ int procMasterSwordStickInit(); + /* 8011EC60 */ int procMasterSwordStick(); + /* 8011ED18 */ int procMasterSwordPullInit(); /* 8011ED8C */ void procMasterSwordPull(); /* 8011EE40 */ static BOOL checkLv7DungeonShop(); - /* 8011EE94 */ void procDungeonWarpReadyInit(); + /* 8011EE94 */ int procDungeonWarpReadyInit(); /* 8011EFB8 */ void procDungeonWarpReady(); /* 8011F084 */ void procDungeonWarpInit(); - /* 8011F0F4 */ void procDungeonWarp(); + /* 8011F0F4 */ int procDungeonWarp(); /* 8011F360 */ void procDungeonWarpSceneStartInit(); /* 8011F460 */ void procDungeonWarpSceneStart(); /* 8011F658 */ bool checkAcceptWarp(); @@ -2202,7 +2413,7 @@ public: virtual BOOL checkBoarRun() const; virtual f32 getBaseAnimeFrameRate() const; virtual f32 getBaseAnimeFrame() const; - virtual void setAnimeFrame(float); + virtual void setAnimeFrame(f32); virtual bool checkWolfLock(fopAc_ac_c*) const; virtual bool cancelWolfLock(fopAc_ac_c*); virtual s32 getAtnActorID() const; @@ -2215,8 +2426,8 @@ public: virtual void voiceStart(u32); virtual void seStartOnlyReverb(u32); virtual void seStartOnlyReverbLevel(u32); - virtual void setOutPower(float, short, int); - virtual void setGrabCollisionOffset(float, float, cBgS_PolyInfo*); + virtual void setOutPower(f32, short, int); + virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*); virtual void onFrollCrashFlg(u8, int); virtual MtxP getModelJointMtx(u16); virtual MtxP getHeadMtx(); @@ -2228,10 +2439,10 @@ public: virtual void setClothesChange(int); virtual void setPlayerPosAndAngle(cXyz const*, short, int); virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*); - virtual void setPlayerPosAndAngle(float (*)[4]); - virtual bool setThrowDamage(short, float, float, int, int, int); + virtual void setPlayerPosAndAngle(f32 (*)[4]); + virtual bool setThrowDamage(short, f32, f32, int, int, int); virtual bool checkSetNpcTks(cXyz*, int, int); - virtual bool setRollJump(float, float, short); + virtual int setRollJump(f32, f32, short); virtual void playerStartCollisionSE(u32, u32); virtual void cancelDungeonWarpReadyNeck(); virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*); @@ -2259,7 +2470,7 @@ public: virtual bool onWolfEnemyBiteAll(fopAc_ac_c*, daPy_FLG2); virtual bool checkWolfEnemyBiteAllOwn(fopAc_ac_c const*) const; virtual void setWolfEnemyHangBiteAngle(short); - virtual void setKandelaarMtx(float (*)[4], int, int); + virtual void setKandelaarMtx(f32 (*)[4], int, int); virtual bool getStickAngleFromPlayerShape(short*) const; virtual bool checkSpinnerPathMove(); virtual bool checkSpinnerTriggerAttack(); @@ -2299,7 +2510,7 @@ public: virtual BOOL checkBootsOrArmorHeavy() const; virtual s32 getBottleOpenAppearItem() const; virtual bool checkItemSwordEquip() const; - virtual float getSinkShapeOffset() const; + virtual f32 getSinkShapeOffset() const; virtual BOOL checkSinkDead() const; virtual BOOL checkHorseStart(); virtual Z2WolfHowlMgr* getWolfHowlMgrP(); @@ -2327,6 +2538,7 @@ public: BOOL checkBoomerangReadyAnime() const { return (mEquipItem == BOOMERANG || mEquipItem == 0x102) && checkUpperAnime(0x54); } + bool checkDkCaught2Anime() const { return checkUpperAnime(0x262); } s16 checkWolfEyeUp() const { return mWolfEyeUp; } void onModeFlg(u32 flag) { mModeFlg |= flag; } @@ -2352,9 +2564,41 @@ public: } s32 checkPlayerDemoMode() const { return mDemo.getDemoType(); } u16 getMidnaMsgNum() const { return mMidnaMsgNum; } + u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; } + const daAlink_AnmData* getAnmData(daAlink_ANM anmID) const { return &m_anmDataTable[anmID]; } BOOL i_checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; } + bool checkFishingCastMode() const { + bool var_r4 = 1; + bool var_r3 = 0; + + if (mProcID == PROC_FISHING_CAST) { + bool var_r5 = 0; + + if (mItemActor.getActor() != NULL && mItemActor.getActor()->mEvtInfo.i_checkCommandDemoAccrpt() != 0) { + var_r5 = 1; + } + + if (!var_r5) { + var_r3 = 1; + } + } + + if (!var_r3) { + bool var_r3_2 = 0; + if (mProcID != PROC_FISHING_CAST && i_checkNoResetFlg2(FLG2_UNK_20000000)) { + var_r3_2 = 1; + } + + if (!var_r3_2) { + var_r4 = 0; + } + } + + return var_r4; + } + inline void startRestartRoomFromOut(int, u32, int); inline u16 getReadyItem(); @@ -2373,14 +2617,12 @@ public: static u8 m_fEffParamProc[72]; private: - /* 0x0062C */ void* field_0x062C; - /* 0x00630 */ int field_0x0630; + /* 0x0062C */ request_of_phase_process_class mPhaseReq; /* 0x00634 */ char* mArcName; - /* 0x00638 */ JKRExpHeap** field_0x0638; - /* 0x0063C */ void* field_0x063C; - /* 0x00640 */ int field_0x0640; + /* 0x00638 */ JKRExpHeap* field_0x0638; + /* 0x0063C */ request_of_phase_process_class mShieldPhaseReq; /* 0x00644 */ char* mShieldArcName; - /* 0x00648 */ JKRExpHeap** field_0x0648; + /* 0x00648 */ JKRExpHeap* field_0x0648; /* 0x0064C */ J3DModelData* field_0x064C; /* 0x00650 */ J3DModel* field_0x0650; /* 0x00654 */ J3DModel* field_0x0654; @@ -2411,18 +2653,18 @@ private: /* 0x006B8 */ J3DModel* mSwordModel; /* 0x006BC */ J3DModel* field_0x06bc; /* 0x006C0 */ J3DModelData* field_0x06c0; - /* 0x006C4 */ J3DAnmBase* m_nSwordBtk; - /* 0x006C8 */ J3DAnmBase* m_mSwordBtk; - /* 0x006CC */ J3DAnmBase* m_mSwordBck; + /* 0x006C4 */ J3DAnmTextureSRTKey* m_nSwordBtk; + /* 0x006C8 */ J3DAnmTextureSRTKey* m_mSwordBtk; + /* 0x006CC */ J3DAnmTevRegKey* m_mSwordBrk; /* 0x006D0 */ void* field_0x06d0; /* 0x006D4 */ void* field_0x06d4; /* 0x006D8 */ void* field_0x06d8; /* 0x006DC */ void* field_0x06dc; /* 0x006E0 */ void* field_0x06e0; - /* 0x006E4 */ void* field_0x06e4; + /* 0x006E4 */ J3DShape* field_0x06e4; /* 0x006E8 */ void* field_0x06e8; - /* 0x006EC */ void* field_0x06ec; - /* 0x006F0 */ void* field_0x06f0; + /* 0x006EC */ J3DShape* field_0x06ec; + /* 0x006F0 */ J3DShape* field_0x06f0; /* 0x006F4 */ J3DAnmBase* field_0x06f4; /* 0x006F8 */ J3DAnmBase* field_0x06f8; /* 0x006FC */ J3DModel* field_0x06fc; @@ -2464,7 +2706,7 @@ private: /* 0x01C98 */ dBgS_ArrowLinChk mArrowLinChk; /* 0x01D08 */ dBgS_LinkGndChk mLinkGndChk; /* 0x01D5C */ dBgS_LinkRoofChk mLinkRoofChk; - /* 0x01DAC */ dBgS_LinkLinChk mLinkLinChk2; + /* 0x01DAC */ dBgS_LinkLinChk mMagneLineChk; /* 0x01E1C */ cBgS_PolyInfo mPolyInfo1; /* 0x01E2C */ cBgS_PolyInfo mPolyInfo2; /* 0x01E3C */ cBgS_PolyInfo mPolyInfo3; @@ -2504,7 +2746,7 @@ private: /* 0x027FC */ fopAc_ac_c* field_0x27fc; /* 0x02800 */ daTagMmsg_c* mMidnaMsg; /* 0x02804 */ fopAc_ac_c* field_0x2804; - /* 0x02808 */ fopAc_ac_c* field_0x2808; + /* 0x02808 */ daScex_c* mpScnChg; /* 0x0280C */ daPy_actorKeep_c field_0x280c; /* 0x02814 */ daPy_actorKeep_c mRideActor; // daspinnerc? /* 0x0281C */ daPy_actorKeep_c field_0x281c; @@ -2517,26 +2759,26 @@ private: /* 0x02854 */ daPy_actorKeep_c mCargoCarryActor; /* 0x0285C */ daPy_actorKeep_c field_0x285c; /* 0x02864 */ dMsgFlow_c mMsgFlow; - /* 0x028B0 */ u8 field_0x28b0[0x40]; + /* 0x028B0 */ int field_0x28b0[0x10]; /* 0x028F0 */ int field_0x28f0; /* 0x028F4 */ int mAtnActorID; /* 0x028F8 */ int field_0x28f8; /* 0x028FC */ int field_0x28fc; - /* 0x02900 */ void* field_0x2900; + /* 0x02900 */ u32 field_0x2900; /* 0x02904 */ daAlink_footData_c mFootData1[2]; /* 0x02A4C */ daAlink_footData_c mFootData2[2]; - /* 0x02B94 */ float* field_0x2b94; - /* 0x02B98 */ float* field_0x2b98; - /* 0x02B98 */ float* field_0x2b9c; - /* 0x02BA0 */ float* field_0x2ba0; - /* 0x02BA4 */ float* field_0x2ba4; + /* 0x02B94 */ f32* field_0x2b94; + /* 0x02B98 */ f32 field_0x2b98; + /* 0x02B98 */ f32* field_0x2b9c; + /* 0x02BA0 */ f32* field_0x2ba0; + /* 0x02BA4 */ f32* field_0x2ba4; /* 0x02BA8 */ f32 mSinkShapeOffset; /* 0x02BAC */ cXyz field_0x2bac; /* 0x02BB8 */ Mtx mInvMtx; /* 0x02BE8 */ Mtx field_0x2be8; /* 0x02C18 */ Mtx mRootMtx; - /* 0x02C48 */ Mtx field_0x2c48; - /* 0x02C78 */ Mtx field_0x2c78; + /* 0x02C48 */ Mtx mMagneBootMtx; + /* 0x02C78 */ Mtx mMagneBootInvMtx; /* 0x02CA8 */ Z2CreatureLink mZ2Link; /* 0x02D78 */ void* field_0x2d78; /* 0x02D7C */ daPy_frameCtrl_c* field_0x2d7c; @@ -2585,7 +2827,7 @@ private: /* 0x02FA9 */ u8 field_0x2fa9; /* 0x02FAA */ u8 mRideStatus; /* 0x02FAB */ u8 field_0x2fab; - /* 0x02FAC */ u8 field_0x2fac; + /* 0x02FAC */ u8 mExitDirection; /* 0x02FAD */ u8 field_0x2fad; /* 0x02FAE */ u8 field_0x2fae; /* 0x02FAF */ u8 field_0x2faf; @@ -2594,7 +2836,7 @@ private: /* 0x02FB2 */ u8 mMidnaTalkDelayTimer; /* 0x02FB3 */ u8 field_0x2fb3; /* 0x02FB4 */ u8 field_0x2fb4; - /* 0x02FB5 */ u8 field_0x2fb5; + /* 0x02FB5 */ u8 mDamageColorTime; /* 0x02FB6 */ u8 field_0x2fb6; /* 0x02FB7 */ u8 field_0x2fb7; /* 0x02FB8 */ u8 field_0x2fb8; @@ -2637,7 +2879,7 @@ private: /* 0x02FE2 */ s16 field_0x2fe2; /* 0x02FE4 */ s16 field_0x2fe4; /* 0x02FE6 */ s16 field_0x2fe6; - /* 0x02FE8 */ u16 mActionID; + /* 0x02FE8 */ u16 mProcID; /* 0x02FEA */ u16 field_0x2fea; /* 0x02FEC */ s16 field_0x2fec; /* 0x02FEE */ s16 field_0x2fee; @@ -2772,7 +3014,7 @@ private: /* 0x0310C */ s16 field_0x310c; /* 0x0310E */ s16 field_0x310e; /* 0x03110 */ s16 field_0x3110; - /* 0x03112 */ u16 field_0x3112; + /* 0x03112 */ u16 mExitID; /* 0x03114 */ s16 field_0x3114; /* 0x03116 */ s16 field_0x3116; /* 0x03118 */ s16 field_0x3118; @@ -2797,7 +3039,7 @@ private: /* 0x0317C */ int field_0x317c; /* 0x03180 */ int field_0x3180; /* 0x03184 */ int field_0x3184; - /* 0x03184 */ int field_0x3188; + /* 0x03188 */ int field_0x3188; /* 0x0318C */ int field_0x318c; /* 0x03190 */ int field_0x3190; /* 0x03194 */ int field_0x3194; @@ -2849,70 +3091,70 @@ private: /* 0x032D0 */ u32 field_0x32d0; /* 0x032D4 */ u32 field_0x32d4; /* 0x032D8 */ firePointEff_c field_0x32d8[4]; - /* 0x03398 */ float mNormalSpeed; - /* 0x0339C */ float mSpeedModifier; - /* 0x033A0 */ float field_0x33a0; - /* 0x033A4 */ float field_0x33a4; - /* 0x033A8 */ float field_0x33a8; - /* 0x033AC */ float field_0x33ac; - /* 0x033B0 */ float field_0x33b0; - /* 0x033B4 */ float mWaterY; - /* 0x033B8 */ float field_0x33b8; - /* 0x033BC */ float field_0x33bc; - /* 0x033C0 */ float field_0x33c0; - /* 0x033C4 */ float mFallHeight; - /* 0x033C8 */ float field_0x33c8; - /* 0x033CC */ float field_0x33cc; - /* 0x033D0 */ float field_0x33d0; - /* 0x033D4 */ float field_0x33d4; - /* 0x033D8 */ float field_0x33d8; - /* 0x033DC */ float field_0x33dc; - /* 0x033E0 */ float field_0x33e0; - /* 0x033E4 */ float field_0x33e4; - /* 0x033E8 */ float field_0x33e8; - /* 0x033EC */ float field_0x33ec; - /* 0x033F0 */ float field_0x33f0; - /* 0x033F4 */ float field_0x33f4; - /* 0x033F8 */ float field_0x33f8; - /* 0x033FC */ float field_0x33fc; - /* 0x03400 */ float field_0x3400; - /* 0x03404 */ float field_0x3404; - /* 0x03408 */ float field_0x3408; - /* 0x0340C */ float field_0x340c; - /* 0x03410 */ float field_0x3410; - /* 0x03414 */ float field_0x3414; - /* 0x03418 */ float field_0x3418; - /* 0x0341C */ float field_0x341c; - /* 0x03420 */ float field_0x3420; - /* 0x03424 */ float field_0x3424; - /* 0x03428 */ float field_0x3428; - /* 0x0342C */ float field_0x342c; - /* 0x03430 */ float field_0x3430; - /* 0x03434 */ float mHeavySpeedMultiplier; - /* 0x03438 */ float field_0x3438; - /* 0x0343C */ float field_0x343c; - /* 0x03440 */ float field_0x3440; - /* 0x03444 */ float field_0x3444; - /* 0x03448 */ float field_0x3448; - /* 0x0344C */ float field_0x344c; + /* 0x03398 */ f32 mNormalSpeed; + /* 0x0339C */ f32 mSpeedModifier; + /* 0x033A0 */ f32 field_0x33a0; + /* 0x033A4 */ f32 field_0x33a4; + /* 0x033A8 */ f32 field_0x33a8; + /* 0x033AC */ f32 field_0x33ac; + /* 0x033B0 */ f32 field_0x33b0; + /* 0x033B4 */ f32 mWaterY; + /* 0x033B8 */ f32 field_0x33b8; + /* 0x033BC */ f32 field_0x33bc; + /* 0x033C0 */ f32 field_0x33c0; + /* 0x033C4 */ f32 mFallHeight; + /* 0x033C8 */ f32 field_0x33c8; + /* 0x033CC */ f32 field_0x33cc; + /* 0x033D0 */ f32 field_0x33d0; + /* 0x033D4 */ f32 field_0x33d4; + /* 0x033D8 */ f32 field_0x33d8; + /* 0x033DC */ f32 field_0x33dc; + /* 0x033E0 */ f32 field_0x33e0; + /* 0x033E4 */ f32 field_0x33e4; + /* 0x033E8 */ f32 field_0x33e8; + /* 0x033EC */ f32 field_0x33ec; + /* 0x033F0 */ f32 field_0x33f0; + /* 0x033F4 */ f32 field_0x33f4; + /* 0x033F8 */ f32 field_0x33f8; + /* 0x033FC */ f32 field_0x33fc; + /* 0x03400 */ f32 field_0x3400; + /* 0x03404 */ f32 field_0x3404; + /* 0x03408 */ f32 field_0x3408; + /* 0x0340C */ f32 field_0x340c; + /* 0x03410 */ f32 field_0x3410; + /* 0x03414 */ f32 field_0x3414; + /* 0x03418 */ f32 field_0x3418; + /* 0x0341C */ f32 field_0x341c; + /* 0x03420 */ f32 field_0x3420; + /* 0x03424 */ f32 field_0x3424; + /* 0x03428 */ f32 field_0x3428; + /* 0x0342C */ f32 field_0x342c; + /* 0x03430 */ f32 field_0x3430; + /* 0x03434 */ f32 mHeavySpeedMultiplier; + /* 0x03438 */ f32 field_0x3438; + /* 0x0343C */ f32 field_0x343c; + /* 0x03440 */ f32 field_0x3440; + /* 0x03444 */ f32 field_0x3444; + /* 0x03448 */ f32 field_0x3448; + /* 0x0344C */ f32 field_0x344c; /* 0x03450 */ u8 field_0x3450[4]; - /* 0x03454 */ float field_0x3454; - /* 0x03458 */ float field_0x3458; - /* 0x0345C */ float field_0x345c; - /* 0x03460 */ float field_0x3460; - /* 0x03464 */ float field_0x3464; - /* 0x03468 */ float field_0x3468; - /* 0x0346C */ float field_0x346c; - /* 0x03470 */ float field_0x3470; - /* 0x03474 */ float mSwordUpColorIntensity; - /* 0x03478 */ float field_0x3478; - /* 0x0347C */ float field_0x347c; - /* 0x03480 */ float field_0x3480; - /* 0x03484 */ float field_0x3484; - /* 0x03488 */ float field_0x3488; - /* 0x0348C */ float field_0x348c; - /* 0x03490 */ float mSearchBallScale; - /* 0x03494 */ float field_0x3494; + /* 0x03454 */ f32 field_0x3454; + /* 0x03458 */ f32 field_0x3458; + /* 0x0345C */ f32 field_0x345c; + /* 0x03460 */ f32 field_0x3460; + /* 0x03464 */ f32 field_0x3464; + /* 0x03468 */ f32 field_0x3468; + /* 0x0346C */ f32 field_0x346c; + /* 0x03470 */ f32 field_0x3470; + /* 0x03474 */ f32 mSwordUpColorIntensity; + /* 0x03478 */ f32 field_0x3478; + /* 0x0347C */ f32 field_0x347c; + /* 0x03480 */ f32 field_0x3480; + /* 0x03484 */ f32 field_0x3484; + /* 0x03488 */ f32 field_0x3488; + /* 0x0348C */ f32 field_0x348c; + /* 0x03490 */ f32 mSearchBallScale; + /* 0x03494 */ f32 field_0x3494; /* 0x03498 */ cXyz field_0x3498; /* 0x034A4 */ cXyz field_0x34a4; /* 0x034B0 */ cXyz field_0x34b0; @@ -2978,11 +3220,9 @@ private: /* 0x03840 */ cXyz* mIronBallChainPos; /* 0x03844 */ csXyz* mIronBallChainAngle; /* 0x03848 */ void* field_0x3848; - /* 0x0384C */ float* field_0x384c; - /* 0x03850 */ u32 field_0x3850; - /* 0x03854 */ u32 field_0x3854; - /* 0x03858 */ u32 field_0x3858; -}; + /* 0x0384C */ f32* field_0x384c; + /* 0x03850 */ daAlink_procFunc mpProcFunc; +}; // Size: 0x38BC struct daAlinkHIO_anm_c { /* 0x00 */ s16 field_0x00; // end f? @@ -4556,4 +4796,9 @@ private: /* 0x09C4 */ cXyz field_0x9c4; }; +static void* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1); +static void* daAlink_searchCanoe(fopAc_ac_c* param_0, void* param_1); +static void* daAlink_searchBoar(fopAc_ac_c* param_0, void* param_1); +static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1); + #endif /* D_A_D_A_ALINK_H */
\ No newline at end of file diff --git a/include/d/a/d_a_horse_static.h b/include/d/a/d_a_horse_static.h index a2873bdfba..d2b4f4223b 100644 --- a/include/d/a/d_a_horse_static.h +++ b/include/d/a/d_a_horse_static.h @@ -4,7 +4,21 @@ #include "dolphin/types.h" #include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h" -class daTagHstop_c { +class daTagHstop_c : public fopAc_ac_c { +public: + static daTagHstop_c* getTop() { return m_top; } + + daTagHstop_c* getNext() { return mpNext; } + bool getActiveFlg() const { return mActive; } + + /* 0x568 */ daTagHstop_c* mpNext; + /* 0x56C */ daTagHstop_c* field_0x56c; + /* 0x570 */ u8 field_0x570; + /* 0x571 */ bool mActive; + /* 0x572 */ u8 field_0x572; + /* 0x573 */ u8 field_0x573; + /* 0x574 */ int field_0x574; + static daTagHstop_c* m_top; }; diff --git a/include/d/a/d_a_item_static.h b/include/d/a/d_a_item_static.h index 5fb0b88a16..51296740f8 100644 --- a/include/d/a/d_a_item_static.h +++ b/include/d/a/d_a_item_static.h @@ -3,20 +3,145 @@ #include "SSystem/SComponent/c_lib.h" #include "dolphin/types.h" +#include "d/a/d_a_itembase.h" +#include "d/a/d_a_itembase_static.h" +#include "d/particle/d_particle.h" -class daItem_c { +class daItem_c; +typedef void (daItem_c::*procFunc)(); + +class daItem_c : public daItemBase_c { public: + daItem_c() : field_0x998(0, 0) {} + /* 8015B0C4 */ void initBaseMtx(); + /* 8015B108 */ void setBaseMtx(); + /* 8015B190 */ void setBaseMtx_0(); + /* 8015B1C8 */ void setBaseMtx_1(); + /* 8015B3D8 */ void CreateInit(); + /* 8015B7BC */ void setCullInfo(); + /* 8015B7D4 */ int _daItem_create(); + /* 8015BA9C */ void _daItem_execute(); + /* 8015BD84 */ int _daItem_draw(); + /* 8015BDE8 */ int _daItem_delete(); + /* 8015BE60 */ void procInitNormal(); + /* 8015BEA4 */ void procMainNormal(); + /* 8015BFE8 */ void procMainEnemyCarry(); + /* 8015BFEC */ void procInitForceGet(); + /* 8015C038 */ void procMainForceGet(); + /* 8015C058 */ void procInitSimpleGetDemo(); + /* 8015C134 */ void procMainSimpleGetDemo(); + /* 8015C200 */ void procInitGetDemoEvent(); + /* 8015C2A4 */ void procWaitGetDemoEvent(); + /* 8015C3BC */ void procMainGetDemoEvent(); + /* 8015C41C */ void procInitBoomerangCarry(); + /* 8015C514 */ void procMainBoomerangCarry(); + /* 8015C5F4 */ void procInitSwOnWait(); + /* 8015C648 */ void procMainSwOnWait(); + /* 8015C708 */ void procInitBoomHitWait(); + /* 8015C738 */ void procMainBoomHitWait(); + /* 8015CAB8 */ void move_proc_call(); + /* 8015CC4C */ void mode_wait_init(); + /* 8015CC88 */ void mode_water_init(); + /* 8015CCD0 */ void mode_wait(); + /* 8015CDCC */ void mode_water(); + /* 8015CEEC */ void itemGetNextExecute(); + /* 8015D0A8 */ void itemGet(); + /* 8015D370 */ BOOL checkCountTimer(); + /* 8015D3CC */ bool checkPlayerGet(); + /* 8015D410 */ void checkYogan(); + /* 8015D480 */ void deleteItem(); + /* 8015D4AC */ int itemActionForRupee(); + /* 8015D56C */ void itemActionForHeart(); + /* 8015D688 */ void itemActionForArrow(); + /* 8015D700 */ void itemActionForBoomerang(); + /* 8015D734 */ void bg_check(); + /* 8015D834 */ void set_bound_se(); + /* 8015D95C */ int CountTimer(); + /* 8015D9F0 */ int initAction(); + /* 8015DAAC */ void initFlag(); + /* 8015DBF0 */ void initScale(); + /* 8015DC40 */ void initSpeed(int); + /* 8015DE38 */ void initAngle(); u32 startCtrl(); u32 startControl(); u32 endControl(); - void setFlag(u8 pFlag) { cLib_onBit(unk2376, pFlag); } + /* 8015CE94 */ virtual void setTevStr(); + virtual void unk0() = 0; + virtual void unk1() = 0; + virtual void unk2() = 0; + virtual void unk3() = 0; + virtual void unk4() = 0; + virtual void unk5() = 0; + virtual void unk6() = 0; + virtual void unk7() = 0; + virtual void unk8() = 0; + virtual void unk9() = 0; + virtual void unk10() = 0; + virtual void unk11() = 0; + virtual void unk12() = 0; + virtual void unk13() = 0; + virtual void unk14() = 0; + virtual void unk15() = 0; + virtual void unk16() = 0; + virtual void unk17() = 0; + virtual void unk18() = 0; + virtual void unk19() = 0; + virtual void unk20() = 0; + virtual void unk21() = 0; + virtual void unk22() = 0; + virtual void unk23() = 0; + virtual void unk24() = 0; + virtual void unk25() = 0; + virtual void unk26() = 0; + virtual void unk27() = 0; + virtual void unk28() = 0; + virtual void unk29() = 0; + virtual void unk30() = 0; + virtual void unk31() = 0; + virtual void unk32() = 0; + virtual void unk33() = 0; + virtual void unk34() = 0; + virtual void unk35() = 0; + + void setFlag(u8 pFlag) { cLib_onBit(mFlag, pFlag); } + void setStatus(u8 status) { mStatus = status; } + u8 getStatus() { return mStatus; } + bool checkFlag(u8 flag) { return cLib_checkBit(mFlag, flag); } + void clrFlag(u8 flag) { cLib_offBit(mFlag, flag); } + + static u8 mFuncPtr[120]; + //static procFunc mFuncPtr[9]; + static u8 m_cyl_src[68]; + static s32 m_timer_max; -private: - u8 unk0[0x948]; - u8 unk2376; - u8 unk2377; - u8 unk2378; -}; + /* 0x92C */ s16 field_0x92c; + /* 0x92E */ u16 field_0x92e; + /* 0x930 */ cXyz field_0x930; + /* 0x93C */ u32 field_0x93c; + /* 0x940 */ u16 field_0x940; + /* 0x942 */ s16 field_0x942; + /* 0x944 */ s16 field_0x944; + /* 0x946 */ s16 field_0x946; + /* 0x948 */ u8 mFlag; + /* 0x949 */ u8 field_0x949; + /* 0x94A */ u8 mStatus; + /* 0x94B */ u8 field_0x94b; + /* 0x94C */ u32 m_item_id; + /* 0x950 */ cXyz field_0x950; + /* 0x95C */ u8 field_0x95c; + /* 0x95D */ bool field_0x95d; + /* 0x95E */ u8 mBoomWindTgTimer; + /* 0x95F */ u8 field_0x95f; + /* 0x960 */ u8 field_0x960[0xC]; + /* 0x96C */ cXyz field_0x96c; + /* 0x978 */ Z2SoundObjSimple field_0x978; + /* 0x998 */ dPa_followEcallBack field_0x998; + /* 0x9AC */ cXyz field_0x9ac; + /* 0x9B8 */ u32 field_0x9b8; + /* 0x9BC */ u8 field_0x9bc[4]; + /* 0x9C0 */ u8 field_0x9c0; + /* 0x9C1 */ u8 field_0x9c1; +}; // Size: 0x9C4 #endif /* D_A_D_A_ITEM_STATIC_H */ diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index 9b29d6dd72..071a962f68 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -8,7 +8,7 @@ #include "f_op/f_op_actor.h" struct daItemBase_data { - /* 0x00 */ f32 field_0x0; + /* 0x00 */ f32 mGravity; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xc; @@ -41,7 +41,7 @@ public: int DeleteBase(char const*); void setListEnd(); void animPlay(f32, f32, f32, f32, f32, f32); - daItemBase_data& getData(); + const daItemBase_data& getData(); virtual int DrawBase(); virtual void setListStart(); @@ -61,20 +61,21 @@ public: static daItemBase_data const m_data; -private: /* 0x56C */ request_of_phase_process_class mPhase; /* 0x574 */ J3DModel* mpModel; - /* 0x578 */ mDoExt_btkAnm* field_0x578; - /* 0x57C */ mDoExt_bpkAnm* field_0x57c; - /* 0x580 */ mDoExt_brkAnm* field_0x580; - /* 0x584 */ mDoExt_bckAnm* field_0x584; - /* 0x588 */ mDoExt_btpAnm* field_0x588; - /* 0x58C */ dBgS_ObjAcch field_0x58c; - /* 0x764 */ dBgS_AcchCir field_0x764; - /* 0x7A4 */ dCcD_Stts field_0x7a4; - /* 0x7E0 */ dCcD_Cyl field_0x7e0; + /* 0x578 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x57C */ mDoExt_bpkAnm* mpBpkAnm; + /* 0x580 */ mDoExt_brkAnm* mpBrkAnm; + /* 0x584 */ mDoExt_bckAnm* mpBckAnm; + /* 0x588 */ mDoExt_btpAnm* mpBtpAnm; + /* 0x58C */ dBgS_ObjAcch mAcch; + /* 0x764 */ dBgS_AcchCir mAcchCir; + /* 0x7A4 */ dCcD_Stts mColStatus; + /* 0x7E0 */ dCcD_Cyl mCollider; /* 0x91C */ u32 field_0x91c; - /* 0x920 */ u8 field_0x920[0xA]; + /* 0x920 */ u32 field_0x920; + /* 0x924 */ int field_0x924; + /* 0x928 */ s16 field_0x928; /* 0x92A */ u8 m_itemNo; /* 0x92B */ u8 field_0x92b; }; diff --git a/include/d/a/d_a_itembase_static.h b/include/d/a/d_a_itembase_static.h index bc8924fa93..3c7f96b55d 100644 --- a/include/d/a/d_a_itembase_static.h +++ b/include/d/a/d_a_itembase_static.h @@ -4,4 +4,6 @@ #include "d/a/d_a_itembase.h" #include "dolphin/types.h" +void CheckFieldItemCreateHeap(fopAc_ac_c* actor); + #endif /* D_A_D_A_ITEMBASE_STATIC_H */ diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index ab76ef43d1..082622f526 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -514,4 +514,7 @@ public: STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48); +void daNpcF_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz& param_2, + csXyz& param_3); + #endif /* D_A_D_A_NPC_H */ diff --git a/include/d/a/d_a_npc_cd.h b/include/d/a/d_a_npc_cd.h new file mode 100644 index 0000000000..9b1b945142 --- /dev/null +++ b/include/d/a/d_a_npc_cd.h @@ -0,0 +1,6 @@ +#ifndef A_NPC_D_A_NPC_CD_H +#define A_NPC_D_A_NPC_CD_H + +#include "dolphin/types.h" + +#endif /* A_NPC_D_A_NPC_CD_H */ diff --git a/include/d/a/d_a_npc_cd2.h b/include/d/a/d_a_npc_cd2.h new file mode 100644 index 0000000000..91962a66d4 --- /dev/null +++ b/include/d/a/d_a_npc_cd2.h @@ -0,0 +1,6 @@ +#ifndef A_NPC_D_A_NPC_CD2_H +#define A_NPC_D_A_NPC_CD2_H + +#include "dolphin/types.h" + +#endif /* A_NPC_D_A_NPC_CD2_H */ diff --git a/include/d/a/d_a_obj_item.h b/include/d/a/d_a_obj_item.h new file mode 100644 index 0000000000..b139320fd9 --- /dev/null +++ b/include/d/a/d_a_obj_item.h @@ -0,0 +1,24 @@ +#ifndef A_OBJ_D_A_OBJ_ITEM_H +#define A_OBJ_D_A_OBJ_ITEM_H + +#include "d/a/d_a_item_static.h" + +namespace daItem_prm { + static inline u8 getItemNo(daItem_c* item) { + return fopAcM_GetParam(item); + } + + static inline u32 getItemBitNo(daItem_c* item) { + return (fopAcM_GetParam(item) >> 8) & 0xFF; + } + + static inline u16 getSwOnWaitTimer(daItem_c* item) { + return item->field_0x92e & 0x3F; + } + + static inline u8 checkInWater(daItem_c* item) { + return fopAcM_GetParamBit(item, 0x1C, 4); + } +}; + +#endif /* A_OBJ_D_A_OBJ_ITEM_H */ diff --git a/include/d/a/d_a_obj_ss_base.h b/include/d/a/d_a_obj_ss_base.h new file mode 100644 index 0000000000..29bf74248a --- /dev/null +++ b/include/d/a/d_a_obj_ss_base.h @@ -0,0 +1,21 @@ +#ifndef A_OBJ_D_A_OBJ_SS_BASE_H +#define A_OBJ_D_A_OBJ_SS_BASE_H + +#include "f_op/f_op_actor_mng.h" + +class daObj_SSBase_c : public fopAc_ac_c { +public: + /* 8015E3F8 */ daObj_SSBase_c(); + + /* 8015E450 */ virtual ~daObj_SSBase_c(); + /* 8015E4C8 */ virtual void setSoldOut(); + /* 8015E4B0 */ virtual u32 getProcessID(); + +private: + /* 0x56C */ void* mpParentPtr; + /* 0x570 */ u16 field_0x570; + /* 0x572 */ u16 mFlowNodeNum; + /* 0x574 */ u16 mValueNum; +}; + +#endif /* A_OBJ_D_A_OBJ_SS_BASE_H */ diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 5d19bbbc74..7f70be553a 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -46,7 +46,13 @@ private: class daPy_anmHeap_c { public: - enum daAlinkHEAP_TYPE {}; + enum daAlinkHEAP_TYPE { + HEAP_TYPE_1 = 1, + HEAP_TYPE_2, + HEAP_TYPE_3, + HEAP_TYPE_4, + HEAP_TYPE_5, + }; /* 80140DCC */ void __defctor(); // supposed to be the ctor? @@ -67,6 +73,8 @@ public: void resetArcNo() { mArcNo = 0xffff; } bool checkNoSetArcNo() const { return mArcNo == 0xFFFF; } void setBufferSize(u32 size) { mBufferSize = size; } + void setBuffer(u8* buf) { mBuffer = buf; } + u8* getBuffer() { return mBuffer; } private: /* 0x00 */ u16 mIdx; @@ -74,7 +82,7 @@ private: /* 0x04 */ u16 mArcNo; /* 0x06 */ u16 field_0x06; /* 0x08 */ u32 mBufferSize; - /* 0x0C */ void* mBuffer; + /* 0x0C */ u8* mBuffer; /* 0x10 */ JKRSolidHeap* mAnimeHeap; }; // Size = 0x14 @@ -130,7 +138,11 @@ public: void setDemoMode(u32 mode) { mDemoMode = mode; } u32 getDemoMode() const { return mDemoMode; } int getParam1() const { return mParam1; } + void setOriginalDemoType() { setDemoType(3); } void i_setSpecialDemoType() { setDemoType(5); } + void setStick(f32 stick) { mStick = stick; } + void setMoveAngle(s16 angle) { mDemoMoveAngle = angle; } + s16 getMoveAngle() const { return mDemoMoveAngle; } private: /* 0x00 */ u16 mDemoType; @@ -164,9 +176,10 @@ public: /* 0x058C */ u32 mEndResetFlg1; /* 0x0590 */ u32 mEndResetFlg2; /* 0x0594 */ f32 field_0x594; - /* 0x0598 */ u8 field_0x598[0x4]; + /* 0x0598 */ f32 field_0x598; /* 0x059C */ s16 mLookAngleY; - /* 0x059E */ u8 field_0x59e[0x6]; + /* 0x059E */ s16 field_0x59e; + /* 0x05A0 */ u8 field_0x5a0[0x4]; /* 0x05A4 */ cXyz mHeadTopPos; /* 0x05B0 */ cXyz mItemPos; /* 0x05BC */ cXyz mSwordTopPos; @@ -187,6 +200,7 @@ public: FLG0_UNK_80000 = 0x80000, FLG0_UNK_20000 = 0x20000, FLG0_UNK_8000 = 0x8000, + FLG0_UNK_4000 = 0x4000, MAGNE_BOOTS_ON = 0x1000, FLG0_UNK_80 = 0x80, FLG0_UNK_40 = 0x40, @@ -199,16 +213,20 @@ public: }; enum daPy_FLG1 { IS_WOLF = 0x2000000, FLG1_UNK_10000 = 0x10000, THROW_DAMAGE = 0x4000 }; enum daPy_FLG2 { + FLG2_UNK_20000000 = 0x20000000, FLG2_UNK_4080000 = 0x4080000, FLG2_UNK_2080000 = 0x2080000, BOAR_SINGLE_BATTLE = 0x1800000, STATUS_WINDOW_DRAW = 0x400000, UNK_ARMOR = 0x80000, + SCENE_CHANGE_START = 0x8000, + FLG2_UNK_4000 = 0x4000, UNK_FLG2_2 = 2, UNK_DAPY_FLG2_1 = 1 }; enum daPy_FLG3 { FLG3_UNK_2000000 = 0x2000000, + FLG3_UNK_1000000 = 0x1000000, FLG3_UNK_100000 = 0x100000, COPY_ROD_THROW_AFTER = 0x40000 }; @@ -337,6 +355,15 @@ public: /* 80182AC4 */ void checkCopyRodThrowAfter() const; /* 80182AD8 */ void checkRide() const; /* 80182B9C */ void getRightHandPos() const; + /* 8015DFD8 */ const cXyz getItemPos() const; + /* 8015DFF4 */ const cXyz& getLeftHandPos() const; + + /* const cXyz* getItemPos() const { + return &mItemPos; + } + const cXyz* getLeftHandPos() const { + return &mLeftHandPos; + } */ virtual cXyz* getMidnaAtnPos() const; virtual void setMidnaMsgNum(fopAc_ac_c*, u16); @@ -526,6 +553,7 @@ public: u8 getCutType() const { return mCutType; } u16 getSwordAtUpTime() const { return mSwordUpTimer; } bool checkWaterInMove() const { return i_checkNoResetFlg0(UNDER_WATER_MOVEMENT); } + bool checkSceneChangeAreaStart() const { return i_checkNoResetFlg2(SCENE_CHANGE_START); } // some functions use these function as an inline // is there a better way to handle this? @@ -555,12 +583,14 @@ public: void i_onPlayerNoDraw() { i_onNoResetFlg0(PLAYER_NO_DRAW); } void i_offPlayerNoDraw() { i_offNoResetFlg0(PLAYER_NO_DRAW); } + inline static u32 i_getLastSceneMode(); inline static u32 getLastSceneMode(); inline static bool checkWoodSwordEquip(); inline BOOL i_checkSwordGet(); inline bool i_checkShieldGet() const; inline static BOOL checkNowWolf(); inline bool checkZoraWearFlg() const; + inline bool checkMagicArmorWearFlg() const; static daMidna_c* getMidnaActor() { return m_midnaActor; } diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index 5d9565e561..4d253890ba 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -74,13 +74,13 @@ public: bool ChkMoveBG_NoDABg(cBgS_PolyInfo const&); s32 GetExitId(cBgS_PolyInfo const&); s32 GetPolyColor(cBgS_PolyInfo const&); - bool GetHorseNoEntry(cBgS_PolyInfo const&); + BOOL GetHorseNoEntry(cBgS_PolyInfo const&); bool GetSpecialCode(cBgS_PolyInfo const&); - bool GetMagnetCode(cBgS_PolyInfo const&); + int GetMagnetCode(cBgS_PolyInfo const&); bool GetMonkeyBarsCode(cBgS_PolyInfo const&); bool GetUnderwaterRoofCode(cBgS_PolyInfo const&); s32 GetWallCode(cBgS_PolyInfo const&); - bool GetPolyAtt0(cBgS_PolyInfo const&); + BOOL GetPolyAtt0(cBgS_PolyInfo const&); bool GetPolyAtt1(cBgS_PolyInfo const&); bool GetGroundCode(cBgS_PolyInfo const&); s32 GetCamMoveBG(cBgS_PolyInfo const&); diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h index 7d14297fd1..7aec8fd20b 100644 --- a/include/d/bg/d_bg_s_acch.h +++ b/include/d/bg/d_bg_s_acch.h @@ -62,6 +62,7 @@ public: /* 0x000080 */ GROUND_LANDING = (1 << 7), /* 0x000100 */ GROUND_AWAY = (1 << 8), /* 0x000200 */ ROOF_HIT = (1 << 9), + /* 0x000400 */ WATER_NONE = (1 << 10), /* 0x000800 */ WATER_HIT = (1 << 11), /* 0x001000 */ WATER_IN = (1 << 12), /* 0x002000 */ LINE_CHECK = (1 << 13), @@ -139,6 +140,14 @@ public: void SetGroundAway() { m_flags |= GROUND_AWAY; } const u32 MaskWaterHit() { return m_flags & WATER_HIT; } const bool ChkWaterHit() { return MaskWaterHit(); } + void ClrWaterNone() { m_flags &= ~WATER_NONE; } + void SetWaterCheckOffset(f32 offset) { m_wtr_chk_offset = offset; } + void OnLineCheck() { m_flags |= LINE_CHECK; } + void ClrRoofNone() { m_flags &= ~ROOF_NONE; } + void SetRoofCrrHeight(f32 height) { m_roof_crr_height = height; } + void SetWtrChkMode(int mode) { m_wtr_mode = mode; } + void SetGrndNone() { m_flags |= GRND_NONE; } + void ClrGrndNone() { m_flags &= ~GRND_NONE; } // inline dupe void i_ClrGroundHit() { m_flags &= ~GROUND_HIT; } @@ -187,6 +196,11 @@ public: }; class dBgS_ObjAcch : public dBgS_Acch { +public: + dBgS_ObjAcch() { + SetObj(); + } + /* 80BB336C */ virtual ~dBgS_ObjAcch(); }; diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index d2d37fab17..ba45b4412f 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -109,10 +109,10 @@ public: /* 8007B0E4 */ virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const; virtual s32 GetExitId(cBgS_PolyInfo const&) = 0; virtual s32 GetPolyColor(cBgS_PolyInfo const&) = 0; - virtual bool GetHorseNoEntry(cBgS_PolyInfo const&) = 0; + virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&) = 0; virtual bool GetSpecialCode(cBgS_PolyInfo const&) = 0; virtual void GetSpecialCode(int) = 0; - virtual bool GetMagnetCode(cBgS_PolyInfo const&) = 0; + virtual int GetMagnetCode(cBgS_PolyInfo const&) = 0; virtual void GetPolyObjThrough(int) = 0; virtual void GetPolyCamThrough(int) = 0; virtual void GetPolyLinkThrough(int) = 0; @@ -125,7 +125,7 @@ public: virtual bool GetUnderwaterRoofCode(int) = 0; virtual bool GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0; virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0; - virtual bool GetPolyAtt0(cBgS_PolyInfo const&) = 0; + virtual BOOL GetPolyAtt0(cBgS_PolyInfo const&) = 0; virtual bool GetPolyAtt1(cBgS_PolyInfo const&) = 0; virtual bool GetGroundCode(cBgS_PolyInfo const&) = 0; virtual void GetIronBallThrough(int) = 0; @@ -208,10 +208,10 @@ public: /* 8007DF00 */ virtual void SphChk(dBgS_SphChk*, virtual void*); /* 8007B3AC */ virtual s32 GetExitId(cBgS_PolyInfo const&); /* 8007B3D8 */ virtual s32 GetPolyColor(cBgS_PolyInfo const&); - /* 8007B404 */ virtual bool GetHorseNoEntry(cBgS_PolyInfo const&); + /* 8007B404 */ virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&); /* 8007B430 */ virtual bool GetSpecialCode(cBgS_PolyInfo const&); /* 8007B460 */ virtual void GetSpecialCode(int); - /* 8007B488 */ virtual bool GetMagnetCode(cBgS_PolyInfo const&); + /* 8007B488 */ virtual int GetMagnetCode(cBgS_PolyInfo const&); /* 8007B4E0 */ virtual void GetPolyObjThrough(int); /* 8007B504 */ virtual void GetPolyCamThrough(int); /* 8007B52C */ virtual void GetPolyLinkThrough(int); @@ -225,7 +225,7 @@ public: /* 8007B4B4 */ virtual bool GetMonkeyBarsCode(cBgS_PolyInfo const&); /* 8007B6AC */ virtual void GetLinkNo(cBgS_PolyInfo const&); /* 8007B6D8 */ virtual s32 GetWallCode(cBgS_PolyInfo const&); - /* 8007B704 */ virtual bool GetPolyAtt0(cBgS_PolyInfo const&); + /* 8007B704 */ virtual BOOL GetPolyAtt0(cBgS_PolyInfo const&); /* 8007B734 */ virtual bool GetPolyAtt1(cBgS_PolyInfo const&); /* 8007B760 */ virtual bool GetGroundCode(cBgS_PolyInfo const&); /* 8007B7DC */ virtual void GetIronBallThrough(int); diff --git a/include/d/bg/d_bg_w_base.h b/include/d/bg/d_bg_w_base.h index 5da858ca4f..6f30556ce2 100644 --- a/include/d/bg/d_bg_w_base.h +++ b/include/d/bg/d_bg_w_base.h @@ -49,10 +49,10 @@ public: virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const = 0; virtual s32 GetExitId(cBgS_PolyInfo const&) = 0; virtual s32 GetPolyColor(cBgS_PolyInfo const&) = 0; - virtual bool GetHorseNoEntry(cBgS_PolyInfo const&) = 0; + virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&) = 0; virtual bool GetSpecialCode(cBgS_PolyInfo const&) = 0; virtual void GetSpecialCode(int) = 0; - virtual bool GetMagnetCode(cBgS_PolyInfo const&) = 0; + virtual int GetMagnetCode(cBgS_PolyInfo const&) = 0; virtual void GetPolyObjThrough(int) = 0; virtual void GetPolyCamThrough(int) = 0; virtual void GetPolyLinkThrough(int) = 0; @@ -66,7 +66,7 @@ public: virtual bool GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0; virtual void GetLinkNo(cBgS_PolyInfo const&) = 0; virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0; - virtual bool GetPolyAtt0(cBgS_PolyInfo const&) = 0; + virtual BOOL GetPolyAtt0(cBgS_PolyInfo const&) = 0; virtual bool GetPolyAtt1(cBgS_PolyInfo const&) = 0; virtual bool GetGroundCode(cBgS_PolyInfo const&) = 0; virtual void GetIronBallThrough(int) = 0; diff --git a/include/d/bg/d_bg_w_kcol.h b/include/d/bg/d_bg_w_kcol.h index 93a055df04..76263d508d 100644 --- a/include/d/bg/d_bg_w_kcol.h +++ b/include/d/bg/d_bg_w_kcol.h @@ -48,7 +48,7 @@ public: /* 80082A80 */ virtual void GetHorseNoEntry(cBgS_PolyInfo const&); /* 80082AB0 */ virtual void GetSpecialCode(cBgS_PolyInfo const&); /* 80082AE0 */ virtual void GetSpecialCode(int); - /* 80082B0C */ virtual void GetMagnetCode(cBgS_PolyInfo const&); + /* 80082B0C */ virtual int GetMagnetCode(cBgS_PolyInfo const&); /* 80082B6C */ virtual void GetPolyObjThrough(int); /* 80082B98 */ virtual void GetPolyCamThrough(int); /* 80082BC4 */ virtual void GetPolyLinkThrough(int); @@ -62,7 +62,7 @@ public: /* 80082B3C */ virtual void GetMonkeyBarsCode(cBgS_PolyInfo const&); /* 80082D24 */ virtual void GetLinkNo(cBgS_PolyInfo const&); /* 80082D54 */ virtual s32 GetWallCode(cBgS_PolyInfo const&); - /* 80082D84 */ virtual void GetPolyAtt0(cBgS_PolyInfo const&); + /* 80082D84 */ virtual BOOL GetPolyAtt0(cBgS_PolyInfo const&); /* 80082DB4 */ virtual void GetPolyAtt1(cBgS_PolyInfo const&); /* 80082DE4 */ virtual void GetGroundCode(cBgS_PolyInfo const&); /* 80082E14 */ virtual void GetIronBallThrough(int); diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index 51bf27fc4f..5a7813a55b 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -91,13 +91,13 @@ enum dCcG_At_Spl { }; class dCcD_GObjInf; -typedef void (*dCcD_AtHitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); +typedef void (*dCcD_HitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); class dCcD_GAtTgCoCommonBase { public: /* 0x00 */ u32 mGFlag; /* 0x04 */ u32 mRPrm; - /* 0x08 */ dCcD_AtHitCallback mHitCallback; + /* 0x08 */ dCcD_HitCallback mHitCallback; /* 0x0C */ u32 mApid; /* 0x10 */ fopAc_ac_c* mAc; /* 0x14 */ s8 mEffCounter; @@ -124,7 +124,7 @@ public: void OnSPrm(u32 flag) { mGFlag |= flag; } void OffSPrm(u32 flag) { mGFlag &= ~flag; } bool ChkRPrm(u32 flag) const { return MskRPrm(flag); } - void SetHitCallback(dCcD_AtHitCallback callback) { mHitCallback = callback; } + void SetHitCallback(dCcD_HitCallback callback) { mHitCallback = callback; } }; // Size = 0x1C class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase { @@ -157,6 +157,8 @@ public: /* 80083BE8 */ virtual ~dCcD_GObjTg() {} void SetVec(cXyz& vec) { mVec = vec; } cXyz& GetVec() { return mVec; } + void SetShieldFrontRangeYAngle(s16* angle) { mShieldFrontRangeYAngle = angle; } + void SetMtrl(u8 mtrl) { mMtrl = mtrl; } private: /* 0x1C */ u8 mSe; @@ -186,7 +188,7 @@ public: /* 800843A8 */ cCcD_GObjInf* GetAtHitGObj(); /* 800843DC */ bool ChkAtNoGuard(); /* 800843FC */ void ClrTgHit(); - /* 80084460 */ bool ChkTgHit(); + /* 80084460 */ u32 ChkTgHit(); /* 800844B8 */ void ResetTgHit(); /* 800844F8 */ cCcD_Obj* GetTgHitObj(); /* 80084548 */ dCcD_GObjInf* GetTgHitGObj(); @@ -202,21 +204,27 @@ public: bool ChkAtNoMass() const { return mGObjAt.ChkSPrm(8); } void OnAtNoHitMark() { mGObjAt.OnSPrm(2); } void OffAtNoHitMark() { mGObjAt.OffSPrm(2); } + void OnTgNoHitMark() { mGObjTg.OnSPrm(4); } void OnAtNoConHit() { mGObjAt.OnSPrm(1); } void OffAtNoConHit() { mGObjAt.OffSPrm(1); } + void OnTgNoConHit() { mGObjTg.OnSPrm(2); } void SetAtHitMark(u8 mark) { mGObjAt.SetHitMark(mark); } void SetAtSe(u8 se) { mGObjAt.SetSe(se); } void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); } + void SetTgMtrl(u8 mtrl) { mGObjTg.SetMtrl(mtrl); } fopAc_ac_c* GetAtHitAc() { return mGObjAt.GetAc(); } bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); } cXyz* GetAtVecP() { return mGObjAt.GetVecP(); } void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); } - void SetAtHitCallback(dCcD_AtHitCallback callback) { mGObjAt.SetHitCallback(callback); } + void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); } + void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); } + void SetCoHitCallback(dCcD_HitCallback callback) { mGObjCo.SetHitCallback(callback); } u8 GetAtSe() { return mGObjAt.GetSe(); } s32 GetAtSpl() { return mGObjAt.GetSpl(); } u8 GetAtMtrl() { return mGObjAt.GetMtrl(); } fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); } - + void SetTgShieldFrontRangeYAngle(s16* angle) { mGObjTg.SetShieldFrontRangeYAngle(angle); } + static u32 const m_hitSeID[24]; protected: diff --git a/include/d/com/d_com_inf_actor.h b/include/d/com/d_com_inf_actor.h index 2b45039390..ca9321197f 100644 --- a/include/d/com/d_com_inf_actor.h +++ b/include/d/com/d_com_inf_actor.h @@ -3,4 +3,16 @@ #include "dolphin/types.h" +class dComIfAc_info_c { +public: + /* 0x0 */ int field_0x0; + /* 0x4 */ bool mPause; +}; + +extern dComIfAc_info_c g_dComIfAc_gameInfo; + +inline bool dComIfA_PauseCheck() { + return g_dComIfAc_gameInfo.mPause; +} + #endif /* D_COM_D_COM_INF_ACTOR_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 022784b66c..58b15bb758 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -52,7 +52,9 @@ public: /* 0x00 */ camera_class* mCamera; /* 0x04 */ u8 field_0x4; - /* 0x05 */ u8 field_0x5[3]; + /* 0x05 */ u8 field_0x5; + /* 0x06 */ s8 field_0x6; + /* 0x07 */ u8 field_0x7; /* 0x08 */ u32 mCameraAttentionStatus; /* 0x0C */ f32 mCameraZoomScale; /* 0x10 */ f32 mCameraZoomForcus; @@ -326,8 +328,11 @@ public: JKRExpHeap* getMsgExpHeap() { return mMsgExpHeap; } JKRExpHeap* getSubExpHeap2D(int idx) { return mSubExpHeap2D[idx]; } void setSubExpHeap2D(int idx, void* heap) { mSubExpHeap2D[idx] = (JKRExpHeap*)heap; } + void setExpHeap2D(void* heap) { mExpHeap2D = (JKRExpHeap*)heap; } + void setMsgExpHeap(void* heap) { mMsgExpHeap = (JKRExpHeap*)heap; } JKRArchive* getMsgDtArchive(int idx) { return mMsgDtArchive[idx]; } + JKRArchive* getMsgArchive(int idx) { return mMsgArchive[idx]; } JKRArchive* getMain2DArchive() { return mMain2DArchive; } JKRArchive* getAnmArchive() { return mAnmArchive; } JKRArchive* getCollectResArchive() { return mCollectResArchive; } @@ -355,8 +360,11 @@ public: void setRubyArchive(JKRArchive* arc) { mRubyArchive = arc; } void setMain2DArchive(JKRArchive* arc) { mMain2DArchive = arc; } void setItemTable(void* data) { mItemTable = data; } + void* getItemTable() { return mItemTable; } + void setPlayerPtr(int i, fopAc_ac_c* ptr) { mPlayerPtr[i] = ptr; } void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; } + void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) { mPlayer[i] = (daAlink_c*)ptr; mPlayerCameraID[camIdx] = 0; } void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; } void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; } bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; } @@ -368,12 +376,21 @@ public: BOOL checkCameraAttentionStatus(int i, u32 flag) { return mCameraInfo[i].mCameraAttentionStatus & flag; } + void setCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus = flag; } + void setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) { + mCameraInfo[camIdx].mCamera = p_cam; + mCameraInfo[camIdx].field_0x4 = param_2; + mCameraInfo[camIdx].field_0x5 = param_3; + mCameraInfo[camIdx].field_0x6 = param_4; + setCameraAttentionStatus(camIdx, 0); + } void setStatus(u16 status) { mStatus = status; } s32 checkStatus(u16 flags) { return flags & mStatus; } bool& isPauseFlag() { return mPauseFlag; } void offPauseFlag() { mPauseFlag = false; } + void onPauseFlag() { mPauseFlag = true; } void show2dOn() { mShow2D = 1; } s8 getLayerOld() { return mLayerOld; } void setMesgCancelButton(u8 button) { mMesgCancelButton = button; } @@ -389,6 +406,10 @@ public: mWindow[i].setMode(mode); } + void setLastPlayStageName(char* name) { + strncpy(mLastPlayStageName, name, 7); + mLastPlayStageName[7] = 0; + } char* getLastPlayStageName() { return mLastPlayStageName; } u8 getGameoverStatus() { return mGameoverStatus; } @@ -440,7 +461,7 @@ public: /* 0x04E3C */ dComIfG_camera_info_class mCameraInfo[1]; /* 0x04E74 */ daAlink_c* mPlayer[1]; /* 0x04E78 */ s8 mPlayerCameraID[4]; - /* 0x04E7C */ void* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong + /* 0x04E7C */ fopAc_ac_c* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong /* 0x04E84 */ dMsgObject_c* mMsgObjectClass; /* 0x04E88 */ f32 mItemLifeCount; /* 0x04E8C */ s32 mItemRupeeCount; @@ -656,9 +677,7 @@ void dComIfG_get_timelayer(int* layer); int dComIfG_resDelete(request_of_phase_process_class* i_phase, char const* resName); int dComIfG_changeOpeningScene(scene_class* scene, s16 procName); int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* arc_name); -BOOL dComIfGs_isStageSwitch(int i_stageNo, int i_no); -void dComIfGs_onStageSwitch(int i_stageNo, int i_no); -void dComIfGs_offStageSwitch(int i_stageNo, int i_no); +int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* resName, JKRHeap* heap); inline void dComIfG_setBrightness(u8 brightness) { g_dComIfG_gameInfo.mFadeBrightness = brightness; @@ -765,6 +784,17 @@ void dComIfGs_offOneZoneSwitch(int param_0, int param_1); s8 dComIfGp_getReverb(int roomNo); void dComIfGs_gameStart(); int dComIfGs_wolfeye_effect_check(); +BOOL dComIfGs_Wolf_Change_Check(); +void dComIfGs_onVisitedRoom(int param_0); +void dComIfGs_setWarpItemData(char const* stage, cXyz pos, s16 angle, s8 roomNo, u8 param_4, + u8 param_5); +BOOL dComIfGs_isStageSwitch(int i_stageNo, int i_no); +void dComIfGs_onStageSwitch(int i_stageNo, int i_no); +void dComIfGs_offStageSwitch(int i_stageNo, int i_no); + +inline void dComIfGs_init() { + g_dComIfG_gameInfo.info.init(); +} inline void dComIfGs_onDungeonItemMap() { g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemMap(); @@ -866,6 +896,10 @@ inline void dComIfGs_setEmptyBombBagItemIn(u8 newBomb, bool setNum) { g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBagItemIn(newBomb, setNum); } +inline void dComIfGs_setEmptyBombBagItemIn(u8 newBomb, u8 bombNum, bool setNum) { + g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBagItemIn(newBomb, bombNum, setNum); +} + inline void dComIfGs_setEmptyBottle() { g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBottle(); } @@ -1051,6 +1085,10 @@ inline s32 dComIfGs_isDungeonItemWarp() { return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemWarp(); } +inline s32 dComIfGs_isStageBossEnemy() { + return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossEnemy(); +} + inline void dComIfGs_setKeyNum(u8 keyNum) { g_dComIfG_gameInfo.info.getMemory().getBit().setKeyNum(keyNum); } @@ -1369,6 +1407,38 @@ inline void* dComIfGs_getPEventBit() { return g_dComIfG_gameInfo.info.getEvent().getPEventBit(); } +inline bool dComIfGs_isItem(int bitNo, int roomNo) { + return g_dComIfG_gameInfo.info.isItem(bitNo, roomNo); +} + +inline void dComIfGs_onItem(int bitNo, int roomNo) { + g_dComIfG_gameInfo.info.onItem(bitNo, roomNo); +} + +inline void dComIfGs_onActor(int bitNo, int roomNo) { + g_dComIfG_gameInfo.info.onActor(bitNo, roomNo); +} + +inline void dComIfGs_setLastWarpAcceptStage(s8 param_0) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().setWarpAcceptStage(param_0); +} + +inline void dComIfGs_setOptPointer(u8 i_pointer) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setPointer(i_pointer); +} + +inline u8 dComIfGs_getNewFile() { + return g_dComIfG_gameInfo.info.getNewFile(); +} + +inline void dComIfGs_setInitDataToCard(u8* p_saveData, int dataNum) { + g_dComIfG_gameInfo.info.initdata_to_card((char*)p_saveData, dataNum); +} + +inline void dComIfGs_setMemoryToCard(u8* p_saveData, int dataNum) { + g_dComIfG_gameInfo.info.memory_to_card((char*)p_saveData, dataNum); +} + void dComIfGp_setItemLifeCount(f32 amount, u8 type); void dComIfGp_setItemRupeeCount(long amount); void dComIfGp_setSelectItem(int index); @@ -1396,6 +1466,7 @@ u8 dComIfGp_world_dark_get(); JKRExpHeap* dComIfGp_getSubHeap2D(int flag); void dComIfGp_world_dark_set(u8); u8 dComIfGp_getNowLevel(); +void dComIfGp_calcNowRegion(); inline dStage_startStage_c* dComIfGp_getStartStage() { return g_dComIfG_gameInfo.play.getStartStage(); @@ -1457,6 +1528,10 @@ inline JKRArchive* dComIfGp_getMsgDtArchive(int idx) { return g_dComIfG_gameInfo.play.getMsgDtArchive(idx); } +inline JKRArchive* dComIfGp_getMsgArchive(int idx) { + return g_dComIfG_gameInfo.play.getMsgArchive(idx); +} + inline void dComIfGp_setFieldMapArchive2(JKRArchive* arc) { g_dComIfG_gameInfo.play.setFieldMapArchive2(arc); } @@ -1537,6 +1612,10 @@ inline void dComIfGp_setItemTable(void* data) { g_dComIfG_gameInfo.play.setItemTable(data); } +inline void* dComIfGp_getItemTable() { + return g_dComIfG_gameInfo.play.getItemTable(); +} + inline JKRExpHeap* dComIfGp_getExpHeap2D() { return g_dComIfG_gameInfo.play.getExpHeap2D(); } @@ -1605,6 +1684,10 @@ inline s16 dComIfGp_getNextStagePoint() { return g_dComIfG_gameInfo.play.getNextStagePoint(); } +inline void dComIfGp_setLastPlayStageName(char* name) { + g_dComIfG_gameInfo.play.setLastPlayStageName(name); +} + inline u32 dComIfGp_getNowVibration() { return g_dComIfG_gameInfo.play.getNowVibration(); } @@ -1801,6 +1884,14 @@ inline void dComIfGp_setSubExpHeap2D(int idx, void* heap) { g_dComIfG_gameInfo.play.setSubExpHeap2D(idx, heap); } +inline void dComIfGp_setExpHeap2D(void* heap) { + g_dComIfG_gameInfo.play.setExpHeap2D(heap); +} + +inline void dComIfGp_setMsgExpHeap(void* heap) { + g_dComIfG_gameInfo.play.setMsgExpHeap(heap); +} + inline void dComIfGp_offEnableNextStage() { g_dComIfG_gameInfo.play.offEnableNextStage(); } @@ -1825,10 +1916,22 @@ inline void dComIfGp_setStatus(u16 status) { g_dComIfG_gameInfo.play.setStatus(status); } +inline void dComIfGp_setLinkPlayer(fopAc_ac_c* ptr) { + g_dComIfG_gameInfo.play.setPlayerPtr(0, ptr); +} + +inline void dComIfGp_setPlayerPtr(int i, fopAc_ac_c* ptr) { + g_dComIfG_gameInfo.play.setPlayerPtr(i, ptr); +} + inline void dComIfGp_setPlayer(int i, fopAc_ac_c* player) { g_dComIfG_gameInfo.play.setPlayer(i, player); } +inline void dComIfGp_setPlayerInfo(int plyrIdx, fopAc_ac_c* ptr, int camIdx) { + g_dComIfG_gameInfo.play.setPlayerInfo(plyrIdx, ptr, camIdx); +} + inline void dComIfGp_setPlayerStatus0(int param_0, u32 flag) { g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 0, flag); } @@ -1841,6 +1944,10 @@ inline BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag) { return g_dComIfG_gameInfo.play.checkCameraAttentionStatus(i, flag); } +inline void dComIfGp_setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) { + g_dComIfG_gameInfo.play.setCameraInfo(camIdx, p_cam, param_2, param_3, param_4); +} + inline void dComIfGp_clearPlayerStatus0(int param_0, u32 flag) { g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 0, flag); } @@ -2015,6 +2122,14 @@ inline JKRAramArchive* dComIfGp_getFieldMapArchive2() { return g_dComIfG_gameInfo.play.getFieldMapArchive2(); } +inline void dComIfGp_onPauseFlag() { + g_dComIfG_gameInfo.play.onPauseFlag(); +} + +inline void dComIfGp_createSimpleModel() { + g_dComIfG_gameInfo.play.createSimpleModel(); +} + inline s32 dComIfGp_roomControl_getStayNo() { return dStage_roomControl_c::getStayNo(); } @@ -2063,10 +2178,55 @@ inline BOOL dComIfGp_event_compulsory(void* param_0, const char* param_1, u16 pa return g_dComIfG_gameInfo.play.getEvent().compulsory(param_0, param_1, param_2); } +inline int dComIfGp_event_moveApproval(void* actor) { + return g_dComIfG_gameInfo.play.getEvent().moveApproval(actor); +} + +inline int dComIfGp_event_order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4, + void* param_5, s16 eventID, u8 infoIdx) { + return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, param_3, param_4, param_5, eventID, infoIdx); +} + +inline void dComIfGp_event_setGtItm(int i_itemNo) { + g_dComIfG_gameInfo.play.getEvent().setGtItm(i_itemNo); +} + inline void dComIfGp_evmng_cutEnd(int param_0) { dComIfGp_getPEvtManager()->cutEnd(param_0); } +inline BOOL dComIfGp_evmng_endCheck(const char* event) { + return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event); +} + +inline void dComIfGp_event_setItemPartnerId(unsigned int id) { + g_dComIfG_gameInfo.play.getEvent().setPtI_Id(id); +} + +inline int dComIfGp_evmng_startDemo(int param_0) { + return dComIfGp_getPEvtManager()->setStartDemo(param_0); +} + +inline void* dComIfGp_event_getTalkPartner() { + u32 t = g_dComIfG_gameInfo.play.getEvent().mPtT; + return g_dComIfG_gameInfo.play.getEvent().convPId(t); +} + +inline void* dComIfGp_event_getItemPartner() { + u32 i = g_dComIfG_gameInfo.play.getEvent().mPtI; + return g_dComIfG_gameInfo.play.getEvent().convPId(i); +} + +inline void* dComIfGp_event_getPt1() { + u32 pt1 = g_dComIfG_gameInfo.play.getEvent().mPt1; + return g_dComIfG_gameInfo.play.getEvent().convPId(pt1); +} + +inline void* dComIfGp_event_getPt2() { + u32 pt2 = g_dComIfG_gameInfo.play.getEvent().mPt2; + return g_dComIfG_gameInfo.play.getEvent().convPId(pt2); +} + inline int i_dComIfGp_evmng_getMyStaffId(const char* pName, fopAc_ac_c* pActor, int param_2) { return dComIfGp_getPEvtManager()->getMyStaffId(pName, pActor, param_2); } @@ -2111,6 +2271,10 @@ inline void dComIfGp_particle_create() { g_dComIfG_gameInfo.play.createParticle(); } +inline void dComIfGp_particle_createScene(const void* param_0) { + g_dComIfG_gameInfo.play.getParticle()->createScene(param_0); +} + inline JKRExpHeap* dComIfGp_particle_getResHeap() { return g_dComIfG_gameInfo.play.getParticle()->getResHeap(); } @@ -2145,6 +2309,15 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, param_10, param_11, 1.0f); } +inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3, + const cXyz* param_4, u8 param_5, dPa_levelEcallBack* param_6, + s8 param_7, const GXColor* param_8, const GXColor* param_9, + const cXyz* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal( + param_0, param_1, param_2, NULL, param_3, param_4, param_5, param_6, param_7, param_8, + param_9, param_10, 1.0f); +} + inline u32 dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7, s8 param_8, const GXColor* param_9, @@ -2160,11 +2333,23 @@ inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* NULL, NULL); } +inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const dKy_tevstr_c* param_2, const csXyz* param_3, + const cXyz* param_4) { + return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL, + NULL, NULL); +} + +inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3, + const cXyz* param_4) { + return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL, + NULL, NULL); +} + inline void dComIfGp_particle_levelEmitterOnEventMove(u32 param_0) { g_dComIfG_gameInfo.play.getParticle()->forceOnEventMove(param_0); } -inline dPa_control_c::level_c::emitter_c* dComIfGp_particle_getEmitter(u32 param_0) { +inline JPABaseEmitter* dComIfGp_particle_getEmitter(u32 param_0) { return g_dComIfG_gameInfo.play.getParticle()->getEmitter(param_0); } @@ -2232,6 +2417,11 @@ inline void dComIfGd_setList() { g_dComIfG_gameInfo.drawlist.setXluList(); } +inline void dComIfGd_setListItem3D() { + g_dComIfG_gameInfo.drawlist.setOpaListItem3D(); + g_dComIfG_gameInfo.drawlist.setXluListItem3D(); +} + inline void dComIfGd_setXluList2DScreen() { g_dComIfG_gameInfo.drawlist.setXluList2DScreen(); } diff --git a/include/d/com/d_com_static.h b/include/d/com/d_com_static.h index 80bf69ee89..2268d3081a 100644 --- a/include/d/com/d_com_static.h +++ b/include/d/com/d_com_static.h @@ -29,7 +29,7 @@ public: /* 80031248 */ void newData(s8, cXyz const&, cXyz const&, u8, u8, u8); /* 800313BC */ void reset(); - /* 800314D4 */ void check(fopAc_ac_c*); + /* 800314D4 */ static void check(fopAc_ac_c*); /* 80031434 */ static bool check(s8, cXyz const&); /* 800315A4 */ static void execute(); diff --git a/include/d/d_camera.h b/include/d/d_camera.h index a82d9e1459..3787acb30c 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -14,11 +14,20 @@ struct dCamMapToolData { /* 8015FEB8 */ void Set(s32, s32, fopAc_ac_c*, u16, u8); }; -struct dCamera_c { - struct dCamInfo_c { +class dCamera_c { +public: + class dCamInfo_c { + public: /* 8018291C */ dCamInfo_c(); /* 80182920 */ ~dCamInfo_c(); - }; + + private: + /* 0x00 */ cXyz field_0x0; + /* 0x0C */ cXyz field_0xc; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ cSAngle field_0x1c; + /* 0x1E */ s16 field_0x1e; + }; // Size: 0x20 /* 8008908C */ void getEvIntData(int*, char*, int); /* 80088CB0 */ void getEvIntData(int*, char*); @@ -185,9 +194,50 @@ struct dCamera_c { /* 80182980 */ void chkFlag(u32); /* 801829AC */ void Bank(); + bool Active() { return field_0x24 == 0; } + static u8 engine_tbl[240]; + + /* 0x000 */ cXyz field_0x0; + /* 0x00C */ cXyz field_0xc; + /* 0x018 */ f32 field_0x18; + /* 0x01C */ cSAngle field_0x1c; + /* 0x01E */ s16 field_0x1e; + /* 0x020 */ u8 field_0x20; + /* 0x021 */ u8 field_0x21; + /* 0x022 */ u8 field_0x22[0x24 - 0x22]; + /* 0x024 */ int field_0x24; + /* 0x028 */ u8 field_0x28[0x30 - 0x28]; + /* 0x030 */ cXyz field_0x30; + /* 0x03C */ cXyz field_0x3c; + /* 0x048 */ cXyz field_0x48; + /* 0x054 */ cSAngle field_0x54; + /* 0x058 */ f32 field_0x58; + class { + public: + /* 0x00 */ cSGlobe field_0x0; + /* 0x08 */ cXyz field_0x8; + /* 0x14 */ cXyz field_0x14; + /* 0x20 */ cSAngle field_0x20; + } + /* 0x05C */ field_0x5c; + /* 0x07C */ u8 field_0x7c[0x8C - 0x7C]; + /* 0x08C */ cSAngle field_0x8c; + /* 0x090 */ cXyz field_0x90; + /* 0x09C */ cXyz field_0x9c; + /* 0x0A8 */ u8 field_0xa8[0xB0 - 0xA8]; + /* 0x0B0 */ dCamInfo_c field_0xb0; + /* 0x0D0 */ dCamInfo_c field_0xd0[2]; + class { + public: + /* 0x00 */ u8 field_0x0[8]; + /* 0x08 */ dCamInfo_c field_0x8; + /* 0x28 */ cXyz field_0x28; + } + /* 0x110 */ field_0x110; }; dCamera_c* dCam_getBody(); +dCamera_c* dCam_getCamera(); #endif /* D_D_CAMERA_H */ diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 842508ea5c..0800616e31 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -4,18 +4,65 @@ #include "JSystem/JStudio/JStudio/stb.h" #include "dolphin/types.h" -class cXyz; -struct dDemo_c { - /* 80039678 */ void create(); +struct cXyz; +struct Vec; +struct fopAc_ac_c; +class dDemo_actor_c; + +class dDemo_object_c { +public: + /* 80038F54 */ dDemo_object_c(); + /* 80038F70 */ ~dDemo_object_c(); + /* 80038FC0 */ void appendActor(fopAc_ac_c*); + /* 80039088 */ static dDemo_actor_c* getActor(u8); + /* 800390AC */ void createCamera(); + /* 80039128 */ void getActiveCamera(); + /* 8003913C */ void createAmbient(); + /* 800391B8 */ void appendLight(); + /* 80039258 */ void createFog(); + /* 800392D4 */ void remove(); +}; + +class dDemo_actor_c { +public: + /* 80038020 */ dDemo_actor_c(); + /* 80038098 */ ~dDemo_actor_c(); + /* 80038128 */ void getActor(); + /* 8003815C */ void setActor(fopAc_ac_c*); + /* 8003819C */ void getPrm_Morf(); + /* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*); + /* 800387EC */ void JSGSetData(u32, void const*, u32); + /* 80038920 */ void JSGSetTranslation(Vec const&); + /* 80038980 */ void JSGSetScaling(Vec const&); + /* 800389A8 */ void JSGSetRotation(Vec const&); + /* 80038A0C */ void JSGSetShape(u32); + /* 80038A20 */ void JSGSetAnimation(u32); + /* 80038A40 */ void JSGSetAnimationFrame(f32); + /* 80038A54 */ void JSGSetAnimationTransition(f32); + /* 80038A68 */ void JSGSetTextureAnimation(u32); + /* 80038A7C */ void JSGSetTextureAnimationFrame(f32); + /* 8003A05C */ void JSGFindNodeID(char const*) const; + /* 8003A088 */ void JSGGetNodeTransformation(u32, f32 (*)[4]) const; + /* 8003A0C8 */ void JSGGetAnimationFrameMax() const; + /* 8003A0D0 */ void JSGGetTextureAnimationFrameMax() const; + /* 8003A0D8 */ void JSGGetTranslation(Vec*) const; + /* 8003A0F4 */ void JSGGetScaling(Vec*) const; + /* 8003A110 */ void JSGGetRotation(Vec*) const; +}; + +class dDemo_c { +public: + /* 80039678 */ static void create(); /* 80039910 */ void remove(); - /* 80039B6C */ static void start(u8 const*, cXyz*, f32); + /* 80039B6C */ void start(u8 const*, cXyz*, f32); /* 80039CF8 */ static void end(); /* 80039D4C */ void branch(); - /* 80039DA4 */ void update(); + /* 80039DA4 */ static void update(); /* 80039EDC */ void setBranchType(u16); /* 80039EEC */ void setBranchId(u16, s16); /* 80039F04 */ void reset(); + static dDemo_actor_c* getActor(u8 param_0) { return m_object->getActor(param_0); } static u32 getFrameNoMsg() { return m_frameNoMsg; } static s32 getMode() { return m_mode; } static JStudio::stb::TControl* getControl() { return m_control; } @@ -29,7 +76,7 @@ struct dDemo_c { static u8 m_message[4]; static u8 m_factory[4]; static u8 m_mesgControl[4]; - static u8 m_object[4]; + static dDemo_object_c* m_object; static u8 m_data[4]; static u8 m_frame[4]; static u8 m_translation[4]; diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index f175a6a3bc..ddbd6ea7ea 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -239,6 +239,8 @@ public: void setOpaListDark() { setOpaDrawList(mOpaListDark); } void setOpaList() { setOpaDrawList(mOpaList); } void setXluList() { setXluDrawList(mXluList); } + void setOpaListItem3D() { setOpaDrawList(mOpaListItem3d); } + void setXluListItem3D() { setXluDrawList(mXluListItem3d); } void setXluListBG() { setXluDrawList(mXluListBG); } void setOpaListBG() { setOpaDrawList(mOpaListBG); } void setXluList2DScreen() { setXluDrawList(mList2DScreen); } diff --git a/include/d/d_item.h b/include/d/d_item.h index 860f370b52..cab6dcbc38 100644 --- a/include/d/d_item.h +++ b/include/d/d_item.h @@ -385,8 +385,9 @@ s32 item_getcheck_func_KEY_OF_FILONE(); s32 item_getcheck_func_noentry(); s32 checkItemGet(u8, int); +BOOL isHeart(u8 item_no); s32 isBomb(u8); s32 isArrow(u8); -void addBombCount(u8, u8); +int addBombCount(u8, u8); #endif /* D_D_ITEM_H */ diff --git a/include/d/d_item_data.h b/include/d/d_item_data.h index 976bf716b8..7ae58debf3 100644 --- a/include/d/d_item_data.h +++ b/include/d/d_item_data.h @@ -54,6 +54,8 @@ struct dItem_data { static s8 getBtpFrm(u8 index) { return item_resource[index].mBtpFrm; } + static s16 getTexture(u8 index) { return item_resource[index].mTexture; } + static char* getFieldArc(u8 index) { return field_item_res[index].mFieldArc; } static s16 getItemBmdName(u8 index) { return field_item_res[index].mItemBmdName; } @@ -78,6 +80,8 @@ struct dItem_data { static u8 getR(u8 index) { return item_info[index].mR; } + static u16 getFieldHeapSize(u8 index) { return field_item_res[index].mHeapSize; } + static dItem_itemResource item_resource[255]; static dItem_fieldItemResource field_item_res[255]; static dItem_itemInfo item_info[255]; diff --git a/include/d/d_lib.h b/include/d/d_lib.h index 769e80635b..121bff182e 100644 --- a/include/d/d_lib.h +++ b/include/d/d_lib.h @@ -12,14 +12,26 @@ struct STControl { init(); } - /* 80032044 */ STControl(s16, s16, s16, s16, f32, f32, s16, s16); + enum EStickDir { + TRIG_LEFT = 1, + TRIG_RIGHT, + TRIG_UP = 4, + TRIG_UP_LEFT, + TRIG_UP_RIGHT, + TRIG_DOWN = 8, + TRIG_DOWN_LEFT, + TRIG_DOWN_RIGHT, + }; + + /* 80032044 */ STControl(s16 delayY, s16 delayX, s16 param_2, s16 param_3, f32 threshold, + f32 param_5, s16 param_6, s16 param_7); /* 80032088 */ void setWaitParm(s16, s16, s16, s16, f32, f32, s16, s16); /* 800320AC */ void init(); /* 800320FC */ void Xinit(); /* 8003212C */ void Yinit(); /* 8003215C */ virtual f32 getValueStick(); /* 8003216C */ virtual s16 getAngleStick(); - /* 8003219C */ void checkTrigger(); + /* 8003219C */ u8 checkTrigger(); /* 8003242C */ bool checkLeftTrigger(); /* 800324A8 */ bool checkRightTrigger(); /* 80032524 */ bool checkUpTrigger(); @@ -27,14 +39,14 @@ struct STControl { void setFirstWaitTime(s16 time) { mFirstWaitTime = time; } - /* 0x04 */ f32 field_0x04; + /* 0x04 */ f32 mThreshold; /* 0x08 */ f32 field_0x08; - /* 0x0C */ u8 field_0x0c; + /* 0x0C */ u8 mDirectionTrig; /* 0x0D */ u8 field_0x0d; /* 0x0E */ s16 field_0x0e; /* 0x10 */ s16 field_0x10; - /* 0x12 */ s16 field_0x12; - /* 0x14 */ s16 field_0x14; + /* 0x12 */ s16 mRepeatDelayY; + /* 0x14 */ s16 mRepeatDelayX; /* 0x16 */ s16 field_0x16; /* 0x18 */ s16 mXwaitTimer; /* 0x1A */ s16 mYwaitTimer; diff --git a/include/d/d_model.h b/include/d/d_model.h index d1ef64481d..690dd1b570 100644 --- a/include/d/d_model.h +++ b/include/d/d_model.h @@ -41,7 +41,7 @@ public: /* 8009C6DC */ dMdl_c* search(J3DModelData*, u16, dKy_tevstr_c*); /* 8009C724 */ dMdl_c* entry(J3DModelData*, u16, dKy_tevstr_c*); /* 8009C8D8 */ dMdl_c* entry(J3DModelData*, u16, int); - /* 8009C7AC */ void create(); + /* 8009C7AC */ static void create(); /* 8009C864 */ void remove(); /* 8009C8C0 */ void reset(); diff --git a/include/d/d_path.h b/include/d/d_path.h index 8ecf6b83d9..3731b66a4e 100644 --- a/include/d/d_path.h +++ b/include/d/d_path.h @@ -3,4 +3,6 @@ #include "dolphin/types.h" +u16* dPath_GetRoomPath(int param_0, int param_1); + #endif /* D_D_PATH_H */ diff --git a/include/d/d_stage.h b/include/d/d_stage.h index db454c2d19..835b4bbd8f 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -210,6 +210,7 @@ public: /* 0x0C */ f32 field_0xc; /* 0x10 */ u8 field_0x10[10]; /* 0x1A */ u8 mDefaultCamera; + /* 0x1B */ u8 mBitSw; /* 0x1C */ u16 mMsg; }; // Size: 0x20 @@ -244,7 +245,9 @@ struct dStage_MapEvent_dt_c { u8 mType; u8 field_0x1[3 - 1]; u8 field_0x3; - u8 field_0x4[7 - 4]; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; u8 field_0x7; u8 field_0x8; u8 field_0x9; @@ -715,6 +718,7 @@ public: static void offNoChangeRoom() { data_80450D68 = false; } static void setProcID(u32 id) { mProcID = id; } static u32 getProcID() { return mProcID; } + static int getStatusProcID(int i_roomNo) { return mStatus[i_roomNo].mProcID; } static void setFileList2(int i_roomNo, dStage_FileList2_dt_c* list) { mStatus[i_roomNo].mRoomDt.mFileList2Info = list; } @@ -855,6 +859,10 @@ s8 dStage_roomRead_dt_c_GetReverbStage(roomRead_class&, int); int dStage_changeScene(int, f32, u32, s8, s16, int); void dStage_infoCreate(); u8 dStage_stagInfo_GetParticleNo(stage_stag_info_class* p_info, int layer); +int dStage_changeSceneExitId(cBgS_PolyInfo& param_0, f32 speed, u32 mode, s8 roomNo, s16 angle); +int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3, f32 speed, + u32 mode, s16 angle, int param_7); +void dStage_Create(); inline s32 dStage_roomRead_dt_c_GetVrboxswitch(roomRead_data_class& data) { return data.field_0x2 & 8; @@ -895,11 +903,16 @@ inline s16 dStage_stagInfo_GetUpButton(stage_stag_info_class* p_info) { inline u32 dStage_stagInfo_GetArg0(stage_stag_info_class* p_info) { return (p_info->field_0x0c >> 0x14) & 0xFF; } + +inline int dStage_stagInfo_GetMsgGroup(stage_stag_info_class* p_info) { + return p_info->mMsgGroup; +} + inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) { return p_info->field_0xb & 0xF; } -inline s8 dStage_sclsInfo_getWipe(stage_scls_info_class* p_info) { +inline s32 dStage_sclsInfo_getWipe(stage_scls_info_class* p_info) { return p_info->mWipe; } @@ -915,6 +928,14 @@ inline u32 dStage_FileList_dt_getMiniMap(dStage_FileList_dt_c* p_fList) { return p_fList->mParameters >> 3 & 7; } +inline u32 dStage_FileList_dt_GetEnemyAppear1Flag(dStage_FileList_dt_c* p_fList) { + return p_fList->mParameters & 0x20000000; +} + +inline int dStage_FileList_dt_GetBitSw(dStage_FileList_dt_c* p_fList) { + return p_fList->mBitSw; +} + inline int dStage_MapEvent_dt_c_getEventSCutSW(dStage_MapEvent_dt_c* event) { return event->field_0x8 & 1; } diff --git a/include/d/d_tresure.h b/include/d/d_tresure.h index 3494a350e5..cc9567ad82 100644 --- a/include/d/d_tresure.h +++ b/include/d/d_tresure.h @@ -21,8 +21,17 @@ public: class typeGroupData_c { public: data_s* getDataPointer() { return &mData; } + typeGroupData_c* getNextDataPointer() const { return mNextData; } void setNextDataPointer(typeGroupData_c* data) { mNextData = data; } void setTypeGroupNo(u8 no) { mTypeGroupNo = no; } + u8 getNo() const { return mData.mNo; } + u8 getStatus() const { return mData.mStatus; } + void setStatus(u8 status) { mData.mStatus = status; } + void setRoomNo(s8 roomNo) { mData.mRoomNo = roomNo; } + s8 getRoomNo() const { return mData.mRoomNo; } + void setPos(const Vec& pos) { mData.mPos = pos; } + u8 getSwBit() const { return mData.mSwBit; } + const Vec* getPos() const { return &mData.mPos; } /* 0x00 */ data_s mData; /* 0x14 */ typeGroupData_c* mNextData; @@ -30,28 +39,32 @@ public: }; // Size: 0x1C struct list_class { - /* 0x0 */ int field_0x0; + /* 0x0 */ typeGroupData_c* field_0x0; /* 0x4 */ typeGroupData_c* field_0x4; - /* 0x8 */ u8 field_0x8; + /* 0x8 */ u8 mNumber; }; /* 8009BBD8 */ static int createWork(); /* 8009BC18 */ static void create(); - /* 8009BC60 */ void remove(); + /* 8009BC60 */ static void remove(); /* 8009BC6C */ static void reset(); /* 8009BCB4 */ static void addData(dTres_c::list_class*, s8); /* 8009BE28 */ static void checkTreasureBox(dTres_c::data_s*); - /* 8009C168 */ void onStatus(u8, int, int); - /* 8009C1F0 */ void offStatus(u8, int, int); - /* 8009C27C */ void getBossIconFloorNo(int*); - /* 8009C360 */ void getFirstData(u8); - /* 8009C39C */ void getNextData(dTres_c::typeGroupData_c*); - /* 8009C3B4 */ void getNextData(dTres_c::typeGroupData_c const*); - /* 8009C3CC */ void setPosition(int, u8, Vec const*, int); - /* 8009C49C */ void getTypeGroupNoToType(u8); - /* 8009C4B0 */ static u8 getTypeToTypeGroupNo(u8); - - static u8 const typeToTypeGroup[34]; + /* 8009C168 */ static void onStatus(u8, int, int); + /* 8009C1F0 */ static void offStatus(u8, int, int); + /* 8009C27C */ static int getBossIconFloorNo(int*); + /* 8009C360 */ static typeGroupData_c* getFirstData(u8); + /* 8009C39C */ static typeGroupData_c* getNextData(dTres_c::typeGroupData_c*); + /* 8009C3B4 */ static typeGroupData_c* getNextData(dTres_c::typeGroupData_c const*); + /* 8009C3CC */ static void setPosition(int, u8, Vec const*, int); + /* 8009C49C */ static int getTypeGroupNoToType(u8); + /* 8009C4B0 */ static int getTypeToTypeGroupNo(u8); + + static int getTypeGroupNumber(int index) { + return mTypeGroupListAll[index].mNumber; + } + + static u8 const typeToTypeGroup[17][2]; static list_class mTypeGroupListAll[17]; static typeGroupData_c* mTypeGroupData; static u16 mNum; diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 3559a31f4d..7557d3cb3f 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -13,15 +13,15 @@ public: ~dEvt_order_c() {} dEvt_order_c(); - /* 0x00 */ u16 mEventType; - /* 0x02 */ u16 mFlag; - /* 0x04 */ s16 field_0x04; - /* 0x08 */ fopAc_ac_c* mActor1; - /* 0x0C */ fopAc_ac_c* mActor2; - /* 0x10 */ s16 mEventId; - /* 0x12 */ s16 mPriority; - /* 0x14 */ u8 mNextOrderIdx; - /* 0x15 */ u8 mEventInfoIdx; + /* 0x00 */ u16 mEventType; + /* 0x02 */ u16 mFlag; + /* 0x04 */ u16 field_0x04; + /* 0x08 */ fopAc_ac_c* mActor1; + /* 0x0C */ fopAc_ac_c* mActor2; + /* 0x10 */ s16 mEventId; + /* 0x12 */ u16 mPriority; + /* 0x14 */ s8 mNextOrderIdx; + /* 0x15 */ u8 mEventInfoIdx; }; // Size = 0x18 STATIC_ASSERT(sizeof(dEvt_order_c) == 0x18); @@ -31,24 +31,25 @@ typedef int (*SkipFunc)(void*, int); class dEvt_control_c { public: dEvt_control_c(); - bool orderOld(u16, u16, u16, u16, void*, void*, void const*); - bool order(u16, u16, u16, u16, void*, void*, s16, u8); + s32 orderOld(u16, u16, u16, u16, void*, void*, void const*); + s32 order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4, + void* param_5, s16 eventID, u8 infoIdx); void setParam(dEvt_order_c*); s32 beforeFlagProc(dEvt_order_c*); void afterFlagProc(dEvt_order_c*); int commonCheck(dEvt_order_c*, u16, u16); - void talkCheck(dEvt_order_c*); - void talkXyCheck(dEvt_order_c*); - void catchCheck(dEvt_order_c*); + int talkCheck(dEvt_order_c*); + int talkXyCheck(dEvt_order_c*); + int catchCheck(dEvt_order_c*); void talkEnd(); - void demoCheck(dEvt_order_c*); + int demoCheck(dEvt_order_c*); void demoEnd(); - s32 potentialCheck(dEvt_order_c*); - void doorCheck(dEvt_order_c*); + int potentialCheck(dEvt_order_c*); + int doorCheck(dEvt_order_c*); int itemCheck(dEvt_order_c*); int endProc(); - void change(); - void entry(); + int change(); + int entry(); void reset(void*); void reset(); void clearSkipSystem(); @@ -57,9 +58,9 @@ public: void setSkipZev(void*, char*); void onSkipFade(); void offSkipFade(); - void skipper(); - void Step(); - void moveApproval(void*); + bool skipper(); + int Step(); + int moveApproval(void*); BOOL compulsory(void*, char const*, u16); void remove(); dStage_MapEvent_dt_c* getStageEventDt(); @@ -80,17 +81,23 @@ public: void isOrderOK(); u16 chkFlag2(u16 flag) { return flag & mFlag2; } - bool runCheck() { return field_0xe5 != 0; } + bool runCheck() { return mEventStatus != 0; } u16 chkEventFlag(u16 flag) { return flag & mEventFlag; } void onEventFlag(u16 flag) { mEventFlag |= flag; } + void offEventFlag(u16 flag) { mEventFlag &= ~flag; } u8 getMode() const { return mMode; } u16 checkHind(u16 flag) { return flag & mHindFlag; } u8 checkCompulsory() { return mCompulsory; } + u8 getMapToolId() { return mMapToolId; } + void onFlag2(u16 flag) { mFlag2 |= flag; } + void offFlag2(u16 flag) { mFlag2 &= ~flag; } void setCullRate(f32 f) { mCullRate = f; } - bool i_isOrderOK() { return field_0xe5 == 0 || field_0xe5 == 2; } + bool i_isOrderOK() { return mEventStatus == 0 || mEventStatus == 2; } void* getPt1() { return convPId(mPt1); } void* getPt2() { return convPId(mPt2); } + void* getPtT() { return convPId(mPtT); } + bool isChangeOK(void* param_0) { return mChangeOK == param_0; } public: /* 0x000 */ u8 field_0x0[4]; @@ -105,10 +112,10 @@ public: /* 0x0DC */ u16 mHindFlag; /* 0x0DE */ s16 mSpecifiedEvent; // name maybe wrong /* 0x0E0 */ s16 field_0xe0; - /* 0x0E2 */ u8 mNum; - /* 0x0E3 */ u8 field_0xe3; + /* 0x0E2 */ s8 mNum; + /* 0x0E3 */ s8 field_0xe3; /* 0x0E4 */ u8 mMode; - /* 0x0E5 */ u8 field_0xe5; + /* 0x0E5 */ u8 mEventStatus; /* 0x0E6 */ u8 field_0xe6; /* 0x0E7 */ u8 field_0xe7; /* 0x0E8 */ u8 field_0xe8; @@ -119,19 +126,19 @@ public: /* 0x0ED */ u8 field_0xed; /* 0x0EE */ u8 mPreItemNo; /* 0x0EF */ u8 mGtItm; - /* 0x0F0 */ float mCullRate; + /* 0x0F0 */ f32 mCullRate; /* 0x0F4 */ dStage_MapEvent_dt_c* mStageEventDt; /* 0x0F8 */ void* mChangeOK; /* 0x0FC */ u8 field_0xfc[4]; /* 0x100 */ SkipFunc mSkipFunc; /* 0x104 */ u32 field_0x104; - /* 0x108 */ u32 field_0x108; - /* 0x10C */ u32 field_0x10c; + /* 0x108 */ int mSkipTimer; + /* 0x10C */ int field_0x10c; /* 0x110 */ int mSkipFade; /* 0x114 */ char mSkipEventName[20]; /* 0x128 */ u8 mCompulsory; /* 0x129 */ bool field_0x129; - /* 0x12C */ int field_0x12c; + /* 0x12C */ int mRoomNo; }; // Size = 0x130 int dEv_defaultSkipProc(void* param_0, int param_1); diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h index 116876a27c..74f48b1a0e 100644 --- a/include/d/event/d_event_manager.h +++ b/include/d/event/d_event_manager.h @@ -67,11 +67,11 @@ public: int ChkPresentEnd(); int checkStartDemo(); - void setStartDemo(int param_0) { mEventException.setStartDemo(param_0); } + int setStartDemo(int param_0) { return mEventException.setStartDemo(param_0); } void setCameraPlay(int status) { mCameraPlay = status; } dEvDtBase_c& getBase() { return mEventList[mCurrentEventType]; } - void setFlag(int flag) { mFlags.flagSet(flag); } + bool dataLoaded() { return mDataLoaded; } int flagCheck(int flag) { return mFlags.flagCheck(flag); } static int getIndexCompositId(s16 param_0) { return param_0 != -1 ? (u8)param_0 : -1; } diff --git a/include/d/file/d_file_sel_warning.h b/include/d/file/d_file_sel_warning.h index 40521900fa..01af1edf80 100644 --- a/include/d/file/d_file_sel_warning.h +++ b/include/d/file/d_file_sel_warning.h @@ -1,6 +1,25 @@ #ifndef D_FILE_D_FILE_SEL_WARNING_H #define D_FILE_D_FILE_SEL_WARNING_H -#include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" + +class dFile_warning_c { +public: + /* 80191BAC */ dFile_warning_c(JKRArchive*, u8); + /* 80191CF4 */ void screenSet(); + /* 80191F18 */ void _move(); + /* 80191F90 */ void modeWait(); + /* 80191F94 */ void modeMove(); + /* 80191FD4 */ void baseMoveAnm(); + /* 801920B8 */ void openInit(); + /* 8019210C */ void closeInit(); + /* 80192160 */ void init(); + /* 80192190 */ void _draw(); + /* 801921CC */ void drawSelf(); + /* 801921F8 */ void setText(u32); + /* 80192240 */ void setFontColor(JUtility::TColor, JUtility::TColor); + + /* 80191C18 */ virtual ~dFile_warning_c(); +}; #endif /* D_FILE_D_FILE_SEL_WARNING_H */ diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index ccdd271eaa..b5393ddcab 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -24,6 +24,7 @@ s32 dKy_daynight_check(); void dKy_clear_game_init(); void dKy_setLight_init(); u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0); +void dKy_depth_dist_set(void* param_0); void dKy_instant_rainchg(); void dKy_instant_timechg(f32); @@ -507,5 +508,8 @@ void dKy_setLight_nowroom(char); void dKy_setLight_nowroom_actor(dKy_tevstr_c*); void dKy_setLight_again(); void dKy_GxFog_tevstr_set(dKy_tevstr_c*); +void dKy_plight_set(LIGHT_INFLUENCE* param_0); +void dKy_tevstr_init(dKy_tevstr_c* param_0, s8 param_1, u8 param_2); +SND_INFLUENCE* dKy_Sound_get(); #endif /* D_KANKYO_D_KANKYO_H */ diff --git a/include/d/map/d_map_path_dmap.h b/include/d/map/d_map_path_dmap.h index d3467a3ad2..37c2da358a 100644 --- a/include/d/map/d_map_path_dmap.h +++ b/include/d/map/d_map_path_dmap.h @@ -13,7 +13,7 @@ public: /* 8003F7E8 */ static void createWork(); /* 8003FA40 */ void setPointer(s8, void*, int); /* 8003F810 */ void setPointer(dDrawPath_c::room_class*, s8*, s8*); - /* 8003FB70 */ void create(); + /* 8003FB70 */ static void create(); /* 8003FBD0 */ void reset(); /* 8003FC70 */ void remove(); diff --git a/include/d/menu/d_menu_save.h b/include/d/menu/d_menu_save.h index 74c25cf4fb..e141f1de06 100644 --- a/include/d/menu/d_menu_save.h +++ b/include/d/menu/d_menu_save.h @@ -5,37 +5,133 @@ #include "d/d_lib.h" #include "d/d_select_cursor.h" #include "dolphin/types.h" +#include "m_Do/m_Do_dvd_thread.h" class dMsgString_c; -class mDoDvdThd_command_c; class dFile_warning_c; class dFile_info_c; class dMsgScrnExplain_c; class dDlst_MenuSaveExplain_c : public dDlst_base_c { public: + dDlst_MenuSaveExplain_c() { mpScrn = NULL; } + /* 801F6ADC */ virtual void draw(); /* 801F6B8C */ virtual ~dDlst_MenuSaveExplain_c(); + void setScrnExplain(dMsgScrnExplain_c* p_scrn) { mpScrn = p_scrn; } + private: - /* 0x4 */ int field_0x4; + /* 0x4 */ dMsgScrnExplain_c* mpScrn; }; class dDlst_MenuSave_c : public dDlst_base_c { public: + dDlst_MenuSave_c() { + Scr = NULL; + mMsgString = NULL; + } + /* 801F6B0C */ virtual void draw(); /* 801F6B44 */ virtual ~dDlst_MenuSave_c(); + + /* 0x04 */ J2DScreen* Scr; + /* 0x08 */ JUTFont* font[2]; + /* 0x10 */ dMsgString_c* mMsgString; +}; + +class dMs_HIO_c { +public: + /* 801EF654 */ dMs_HIO_c(); + /* 801F6BD4 */ virtual ~dMs_HIO_c(); + + /* 0x4 */ s8 field_0x4; + /* 0x5 */ u8 mDisplayWaitFrames; + /* 0x6 */ u8 mCardWaitFrames; + /* 0x7 */ u8 mEffectDispFrames; + /* 0x8 */ u8 mCharSwitchFrames; + /* 0x9 */ u8 mSelectIcon; + /* 0xA */ u8 mSelectFrames; + /* 0xB */ u8 mFadeOutTimer; + /* 0xC */ bool mTitleMsgCheck; + /* 0xD */ u8 field_0xd; + /* 0xE */ bool mErrorMsgCheck; + /* 0xF */ u8 field_0xf; }; class dMenu_save_c { public: + enum { + /* 0x00 */ PROC_SAVE_QUESTION, + /* 0x01 */ PROC_SAVE_QUESTION2, + /* 0x02 */ PROC_SAVE_QUESTION21, + /* 0x03 */ PROC_SAVE_QUESTION3, + /* 0x04 */ PROC_SAVE_QUESTION4, + /* 0x05 */ PROC_SAVE_GUIDE, + /* 0x06 */ PROC_MEMCARD_CHECK, + /* 0x07 */ PROC_BACK_SAVE_QUESTION, + /* 0x08 */ PROC_BACK_SAVE_QUESTION2, + /* 0x09 */ PROC_MEMCARD_ERRMSG_WAIT_KEY, + /* 0x0A */ PROC_IPL_SELECT_DISP1, + /* 0x0B */ PROC_IPL_SELECT_DISP2, + /* 0x0C */ PROC_MEMCARD_ERR_GO_IPL_SEL, + /* 0x0D */ PROC_IPL_SELECT2_DISP, + /* 0x0E */ PROC_MEMCARD_ERR_GO_IPL_SEL2, + /* 0x0F */ PROC_MEMCARD_ERR_GOTO_IPL, + /* 0x10 */ PROC_MEMCARD_ERRMSG_WAIT_FORMAT_SEL, + /* 0x11 */ PROC_CARD_FORMAT_YES_SEL_DISP, + /* 0x12 */ PROC_CARD_FORMAT_NO_SEL_DISP, + /* 0x13 */ PROC_MEMCARD_ERRMSG_WAIT_FORMAT_SEL2, + /* 0x14 */ PROC_CARD_FORMAT_YES_SEL2_DISP, + /* 0x15 */ PROC_MEMCARD_FORMAT, + /* 0x16 */ PROC_MEMCARD_FORMAT_WAIT, + /* 0x17 */ PROC_MAKE_GAME_FILE_SEL_DISP, + /* 0x18 */ PROC_MEMCARD_MAKE_GAME_FILE_SEL, + /* 0x19 */ PROC_MAKE_GAME_FILE_DISP, + /* 0x1A */ PROC_MEMCARD_MAKE_GAME_FILE, + /* 0x1B */ PROC_MEMCARD_MAKE_GAME_FILE_WAIT, + /* 0x1C */ PROC_MEMCARD_COMMAND_END, + /* 0x1D */ PROC_MEMCARD_COMMAND_END2, + /* 0x1E */ PROC_MEMCARD_DATA_LOAD_WAIT, + /* 0x1F */ PROC_MEMCARD_DATA_SAVE_WAIT, + /* 0x20 */ PROC_MEMCARD_DATA_SAVE_WAIT2, + /* 0x21 */ PROC_GAME_CONTINUE_DISP, + /* 0x22 */ PROC_GAME_CONTINUE, + /* 0x23 */ PROC_GAME_CONTINUE2, + /* 0x24 */ PROC_GAME_CONTINUE3, + /* 0x25 */ PROC_SAVE_END, + /* 0x26 */ PROC_ENDING_NO_SAVE, + /* 0x27 */ PROC_ENDING_NO_SAVE2, + /* 0x28 */ PROC_ENDING_DATA_CHECK, + /* 0x29 */ PROC_SAVE_WAIT, + /* 0x2A */ PROC_MESSAGE_CHANGE, + /* 0x2B */ PROC_RETRY_QUESTION0, + /* 0x2C */ PROC_RETRY_QUESTION1, + /* 0x2D */ PROC_RETRY_QUESTION2, + /* 0x2E */ PROC_OPEN_SAVE_SELECT, + /* 0x2F */ PROC_OPEN_SAVE_SELECT2, + /* 0x30 */ PROC_OPEN_SAVE_SELECT3, + /* 0x31 */ PROC_SAVE_SELECT, + /* 0x32 */ PROC_SAVE_SELECT_MOVE_ANM, + /* 0x33 */ PROC_SELECT_DATA_OPEN_MOVE, + /* 0x34 */ PROC_SAVE_YES_NO_SELECT, + /* 0x35 */ PROC_YES_NO_CURSOR_MOVE_ANM, + /* 0x36 */ PROC_SAVE_YES_NO_CANCEL_MOVE, + /* 0x37 */ PROC_SAVE_MOVE_DISP, + /* 0x38 */ PROC_SAVE_MOVE_DISP2, + /* 0x39 */ PROC_MSG_WINDOW_INIT_OPEN, + /* 0x3A */ PROC_MSG_WINDOW_OPEN, + /* 0x3B */ PROC_MSG_WINDOW_CLOSE, + /* 0x3C */ PROC_ERR_YES_NO_CURSOR_MOVE_ANM, + }; + /* 801EF6A0 */ dMenu_save_c(); /* 801EF7AC */ void _create(); /* 801EF904 */ void screenSet(); /* 801F0938 */ void initialize(); /* 801F0958 */ void displayInit(); /* 801F09AC */ bool _open(); - /* 801F0B10 */ void _close(); + /* 801F0B10 */ int _close(); /* 801F0B28 */ void _delete(); /* 801F1048 */ void _move(); /* 801F1100 */ void saveSelAnm(); @@ -96,7 +192,7 @@ public: /* 801F30B8 */ void restartInit(); /* 801F31B0 */ void saveWait(); /* 801F31B4 */ void messageChange(); - /* 801F328C */ void YesNoSelect(); + /* 801F328C */ int YesNoSelect(); /* 801F34BC */ void msgTxtSet(u16, bool); /* 801F3588 */ void openSaveSelect(); /* 801F36B4 */ void openSaveSelect2(); @@ -120,11 +216,11 @@ public: /* 801F4B84 */ void msgWindowInitOpen(); /* 801F4D10 */ void msgWindowOpen(); /* 801F4DAC */ void msgWindowClose(); - /* 801F4E48 */ void errYesNoSelect(u8, u8); + /* 801F4E48 */ bool errYesNoSelect(u8, u8); /* 801F4FB4 */ void errCurMove(u8, u8); /* 801F5054 */ void errYesNoCursorMoveAnm(); /* 801F50C4 */ void errorTxtSet(u16); - /* 801F5190 */ void errorTxtChangeAnm(); + /* 801F5190 */ bool errorTxtChangeAnm(); /* 801F5278 */ void saveSelectOpenInit(); /* 801F533C */ void selectDataBaseMoveAnmInitSet(int, int); /* 801F53D4 */ void selectDataBaseMoveAnm(); @@ -132,7 +228,7 @@ public: /* 801F5508 */ void selectDataMoveAnmInitSet(int, int); /* 801F5600 */ void selectDataMoveAnm(); /* 801F5744 */ void yesnoMenuMoveAnmInitSet(int, int, u8); - /* 801F58C8 */ void yesnoMenuMoveAnm(); + /* 801F58C8 */ bool yesnoMenuMoveAnm(); /* 801F5AE4 */ void yesnoSelectMoveAnm(u8); /* 801F5D84 */ void yesnoCursorShow(); /* 801F5EF4 */ void errorMoveAnmInitSet(int, int); @@ -140,7 +236,7 @@ public: /* 801F60A4 */ void modoruTxtDispAnmInit(u8); /* 801F6120 */ void modoruTxtDispAnm(); /* 801F61FC */ void ketteiTxtDispAnmInit(u8); - /* 801F6278 */ void ketteiTxtDispAnm(); + /* 801F6278 */ bool ketteiTxtDispAnm(); /* 801F6354 */ void selectWakuAlpahAnmInit(u8, u8, u8, u8); /* 801F6390 */ void selectWakuAlpahAnm(u8); /* 801F6458 */ void selFileCursorShow(); @@ -157,38 +253,33 @@ public: u8 getSaveStatus() { return mSaveStatus; } void setUseType(u8 type) { mUseType = type; } - struct SaveSel { - /* 0x00 */ J2DScreen* Scr; - /* 0x04 */ JUTFont* font[2]; - /* 0x0C */ dMsgString_c* mMsgString; - }; // Size: 0x10 - private: - /* 0x0004 */ JKRArchive* field_0x4; - /* 0x0008 */ mDoDvdThd_command_c* field_0x8; + /* 0x0004 */ JKRArchive* mpArchive; + /* 0x0008 */ mDoDvdThd_mountArchive_c* mpMount; /* 0x000C */ STControl* stick; - /* 0x0010 */ dDlst_MenuSaveExplain_c field_0x10; - /* 0x0018 */ dDlst_MenuSave_c field_0x18; - /* 0x001C */ SaveSel mSaveSel; + /* 0x0010 */ dDlst_MenuSaveExplain_c mMenuSaveExplain; + /* 0x0018 */ dDlst_MenuSave_c mMenuSave; /* 0x002C */ dSelect_cursor_c* mSelIcon; - /* 0x0030 */ dFile_warning_c* field_0x30; - /* 0x0034 */ dFile_info_c* field_0x34[3]; - /* 0x0040 */ void* field_0x40; - /* 0x0044 */ void* field_0x44; - /* 0x0048 */ void* field_0x48; - /* 0x004C */ void* field_0x4c; + /* 0x0030 */ dFile_warning_c* mWarning; + /* 0x0034 */ dFile_info_c* mFileInfo[3]; + /* 0x0040 */ J2DAnmTransformKey* field_0x40; + /* 0x0044 */ J2DAnmTransformKey* field_0x44; + /* 0x0048 */ J2DAnmTransformKey* field_0x48; + /* 0x004C */ J2DAnmTransformKey* field_0x4c; /* 0x0050 */ s32 field_0x50; /* 0x0054 */ u8 field_0x54; /* 0x0058 */ CPaneMgr* field_0x58; /* 0x005C */ int field_0x5c; /* 0x0060 */ int field_0x60; /* 0x0064 */ u8 field_0x64; - /* 0x0064 */ u8 field_0x65; + /* 0x0065 */ u8 field_0x65; /* 0x0068 */ CPaneMgr* field_0x68[3]; /* 0x0074 */ u8 field_0x74[0x10]; /* 0x0084 */ CPaneMgr* field_0x84[2]; /* 0x008C */ u8 field_0x8c[0x10]; /* 0x009C */ u8 field_0x9c; + /* 0x009D */ u8 field_0x9d; + /* 0x009E */ u8 field_0x9e; /* 0x00A0 */ int field_0xa0; /* 0x00A4 */ u8 field_0xa4[0x10]; /* 0x00B4 */ J2DPane* field_0xb4; @@ -197,7 +288,7 @@ private: /* 0x00C0 */ CPaneMgr* field_0xc0[2]; /* 0x00C8 */ char* field_0xc8[2]; /* 0x00D0 */ u8 field_0xd0; - /* 0x00D2 */ u8 field_0xd1; + /* 0x00D1 */ u8 field_0xd1; /* 0x00D2 */ u8 field_0xd2; /* 0x00D3 */ u8 field_0xd3; /* 0x00D4 */ CPaneMgr* field_0xd4[3]; @@ -215,22 +306,24 @@ private: /* 0x0132 */ u8 field_0x132[2]; /* 0x0134 */ u8 field_0x134[2]; /* 0x0138 */ CPaneMgr* field_0x138[2]; - /* 0x0140 */ void* field_0x140; + /* 0x0140 */ J2DAnmColorKey* field_0x140; /* 0x0144 */ int field_0x144; - /* 0x0148 */ void* field_0x148; + /* 0x0148 */ J2DAnmTextureSRTKey* field_0x148; /* 0x014C */ int field_0x14c; - /* 0x0150 */ void* field_0x150; + /* 0x0150 */ J2DAnmColorKey* field_0x150; /* 0x0154 */ int field_0x154; - /* 0x0158 */ void* field_0x158; + /* 0x0158 */ J2DAnmTextureSRTKey* field_0x158; /* 0x015C */ int field_0x15c; - /* 0x0160 */ void* field_0x160; + /* 0x0160 */ J2DAnmTevRegKey* field_0x160; /* 0x0164 */ int field_0x164; /* 0x0168 */ CPaneMgr* field_0x168[2]; - /* 0x0170 */ u8 field_0x170[8]; + /* 0x0170 */ char* field_0x170[2]; /* 0x0178 */ u8 field_0x178; /* 0x0179 */ u8 field_0x179; /* 0x017A */ u8 field_0x17a; - /* 0x017B */ u8 field_0x17b[0x19]; + /* 0x017B */ u8 field_0x17b; + /* 0x017C */ CPaneMgr* field_0x17c[3]; + /* 0x0188 */ CPaneMgr* field_0x188[3]; /* 0x0194 */ CPaneMgr* field_0x194; /* 0x0198 */ CPaneMgr* field_0x198; /* 0x019C */ u8 field_0x19c; @@ -243,7 +336,7 @@ private: /* 0x01AD */ u8 field_0x1ad[3]; /* 0x01B0 */ u8 field_0x1b0; /* 0x01B1 */ u8 field_0x1b1; - /* 0x01B2 */ u8 field_0x1b2; + /* 0x01B2 */ u8 mMenuProc; /* 0x01B3 */ u8 field_0x1b3; /* 0x01B4 */ u8 field_0x1b4; /* 0x01B5 */ u8 field_0x1b5; @@ -254,21 +347,19 @@ private: /* 0x01BA */ u8 mSaveStatus; /* 0x01BB */ u8 mEndStatus; /* 0x01BC */ u8 mUseType; - /* 0x01BD */ u8 field_0x1bd; + /* 0x01BD */ u8 mWaitTimer; /* 0x01BE */ u8 field_0x1be; /* 0x01BF */ u8 field_0x1bf; /* 0x01C0 */ u8 field_0x1c0; - /* 0x01C4 */ int field_0x1c4; - /* 0x01C8 */ int field_0x1c8; - /* 0x01CC */ void* field_0x1cc; - /* 0x01D0 */ u8 field_0x1d0[0xA94 * 3]; + /* 0x01CC */ void (dMenu_save_c::*field_0x1cc)(); + /* 0x01D0 */ u8 mSaveBuffer[0xA94 * 3]; /* 0x218C */ dMsgScrnExplain_c* mpScrnExplain; /* 0x2190 */ u8 field_0x2190; /* 0x2192 */ u16 field_0x2192; /* 0x2194 */ u8 field_0x2194; /* 0x2195 */ u8 field_0x2195; - /* 0x2198 */ int field_0x2198; - /* 0x219C */ u8 field_0x219c; + /* 0x2198 */ int mCmdState; + /* 0x219C */ bool field_0x219c; /* 0x219D */ u8 field_0x219d; /* 0x219E */ u8 field_0x219e; /* 0x219F */ u8 field_0x219f; diff --git a/include/d/menu/d_menu_window.h b/include/d/menu/d_menu_window.h index 08ea875b53..5462f54c37 100644 --- a/include/d/menu/d_menu_window.h +++ b/include/d/menu/d_menu_window.h @@ -8,6 +8,7 @@ #include "dolphin/types.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_graphic.h" +#include "m_Do/m_Do_mtx.h" class dMenu_Ring_c; class dMenu_Dmap_c; @@ -15,7 +16,62 @@ class dMenu_Fmap_c; class dDlst_MENU_CAPTURE_c : public dDlst_base_c { public: - /* 801FDFCC */ virtual void draw(); + /* 801FDFCC */ virtual void draw();/* { + if (getDrawFlag() == 1) { + setDrawFlag(); + dComIfGp_onPauseFlag(); + GXSetTexCopySrc(0, 0, 608, 448); + GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE); + GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE); + GXPixModeSync(); + } else { + GXTexObj tex; + GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), 304, 224, + (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&tex, GX_TEXMAP0); + GXSetNumChans(0); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXColor color = {0xFF, 0xFF, 0xFF, mAlpha}; + GXSetTevColor(GX_TEVREG0, color); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetZCompLoc(GX_TRUE); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_OR); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); + GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); + GXSetFogRangeAdj(GX_FALSE, 0, NULL); + GXSetCullMode(GX_CULL_NONE); + GXSetDither(GX_TRUE); + GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0); + GXSetCurrentMtx(0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0); + + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0); + GXTexCoord2s8(0, 0); + + GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0); + GXTexCoord2s8(1, 0); + + GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0); + GXTexCoord2s8(1, 1); + + GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0); + GXTexCoord2s8(0, 1); + GXEnd(); + } + } */ /* 801FE2E8 */ virtual ~dDlst_MENU_CAPTURE_c(); dDlst_MENU_CAPTURE_c() { @@ -28,6 +84,8 @@ public: bool checkDraw() { return mFlag; } u8 getAlpha() { return mAlpha; } u8 getTopFlag() { return mTopFlag; } + u8 getDrawFlag() { return mFlag; } + void setDrawFlag() { mFlag = 3; } private: /* 0x4 */ u8 mFlag; diff --git a/include/d/meter/d_meter2.h b/include/d/meter/d_meter2.h index eb711581b8..de6d979ed5 100644 --- a/include/d/meter/d_meter2.h +++ b/include/d/meter/d_meter2.h @@ -222,6 +222,9 @@ public: void onRupeeSoundBit(int bit) { mRupeeSound |= (1 << bit); } void offRupeeSoundBit(int bit) { mRupeeSound &= ~(1 << bit); } bool isRupeeSoundBit(int bit) { return mRupeeSound & (1 << bit); } + s16 getNowLifeGauge() { return mNowLifeGauge; } + u8 getSubContents() { return mSubContents; } + u16 getSubContentsStringType() { return mSubContentsStringType; } private: /* 0x100 */ JKRExpHeap* mpHeap; diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 0a052d2e5a..dd61939d35 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -65,7 +65,7 @@ public: virtual ~dMeter2Info_c(); void init(void); int setFloatingMessage(u16, s16, bool); - void setFloatingFlow(u16, s16, bool); + int setFloatingFlow(u16, s16, bool); int isFloatingMessageVisible(void); int decFloatingMessageTimer(void); void resetFloatingMessage(void); @@ -73,8 +73,8 @@ public: void getString(u32, char*, JMSMesgEntry_c*); // define JMSMesgEntry void getStringKana(u32, char*, JMSMesgEntry_c*); void getStringKanji(u32, char*, JMSMesgEntry_c*); - double getStringLength(J2DTextBox*, char*); // define J2DTextBox - dMeter2Info_c* getStringLength(JUTFont*, f32, f32, char*); + f32 getStringLength(J2DTextBox*, char*); + f32 getStringLength(JUTFont*, f32, f32, char*); void onDirectUseItem(int); bool isDirectUseItem(int); int setMeterString(s32); @@ -84,12 +84,12 @@ public: void resetMeterString(void); void setWarpInfo(const char*, const cXyz&, s16, u8, u8, u8); u8 getItemType(u8); - u8 readItemTexture(u8, void*, J2DPicture*, void*, J2DPicture*, void*, J2DPicture*, void*, - J2DPicture*, int); // define J2DPicture + int readItemTexture(u8, void*, J2DPicture*, void*, J2DPicture*, void*, J2DPicture*, void*, + J2DPicture*, int); void setItemColor(u8, J2DPicture*, J2DPicture*, J2DPicture*, J2DPicture*); - s8 get2ndTexture(u8); - s8 get3rdTexture(u8); - s8 get4thTexture(u8); + s16 get2ndTexture(u8); + s16 get3rdTexture(u8); + s16 get4thTexture(u8); void set1stColor(u8, J2DPicture*); void set2ndColor(u8, J2DPicture*); void set3rdColor(u8, J2DPicture*); @@ -150,8 +150,11 @@ public: const char* getSaveStageName() { return mSaveStageName; } void onShopTalkFlag() { mShopTalkFlag = true; } void setLightDropGetFlag(int index, u8 flag) { mLightDropGetFlag[index] = flag; } - u8 getRentalBombBag() { return mRentalBombBag; } + u8 getRentalBombBag() { return mRentalBombBagIdx; } void setTableMapRegionNo(u8 regionNo) { mTableMapRegionNo = regionNo; } + dMeter2_c* getMeterClass() { return mMeterClass; } + u8 getMiniGameItemSetFlag() { return mMiniGameItemSetFlag; } + s16 getMsgKeyWaitTimer() { return mMsgKeyWaitTimer; } public: /* 0x04 */ u8 unk4[4]; @@ -178,7 +181,7 @@ public: /* 0x80 */ f32 unk128; /* 0x84 */ u32 mTimeMs; /* 0x88 */ u32 mMsgTimeMs; - /* 0x8C */ u32 mMeterString; + /* 0x8C */ s32 mMeterString; /* 0x90 */ u32 mTempBits; /* 0x94 */ s16 mMsgKeyWaitTimer; /* 0x96 */ u16 mHorseLifeCount; @@ -207,19 +210,19 @@ public: /* 0xC1 */ u8 mPauseStatus; /* 0xC2 */ u8 mGameOverType; /* 0xC3 */ u8 mInsectSelectType; - /* 0xC4 */ u8 unk196[4]; - /* 0xC8 */ u8 unk200[4]; - /* 0xCC */ u8 unk204; - /* 0xCD */ u8 unk205; // arrow num - /* 0xCE */ u8 unk206; // item 1 - /* 0xCF */ u8 unk207; // item 2 - /* 0xD0 */ u8 unk208[4]; - /* 0xD4 */ u8 unk212[4]; - /* 0xD8 */ u8 unk216; // bomb num - /* 0xD9 */ u8 unk217; // arrow num? - /* 0xDA */ u8 unk218; // item 1? - /* 0xDB */ u8 unk219; // item 2 - /* 0xDC */ u8 mRentalBombBag; + /* 0xC4 */ u8 mSaveSelItemIdx[4]; + /* 0xC8 */ u8 mSaveMixItemIdx[4]; + /* 0xCC */ u8 mSaveBombNum; + /* 0xCD */ u8 mSaveArrowNum; + /* 0xCE */ u8 mSaveBowItem; + /* 0xCF */ u8 mSaveBombItem; + /* 0xD0 */ u8 mSaveSelItemIdxMG[4]; + /* 0xD4 */ u8 mSaveMixItemIdxMG[4]; + /* 0xD8 */ u8 mSaveBombNumMG; + /* 0xD9 */ u8 mSaveArrowNumMG; + /* 0xDA */ u8 mSaveBowItemMG; + /* 0xDB */ u8 mSaveBombItemMG; + /* 0xDC */ u8 mRentalBombBagIdx; /* 0xDD */ u8 mMiniGameItemSetFlag; // 1: rented in game, 3: rented not in game /* 0xDE */ u8 mMiniGameCount; /* 0xDF */ u8 mCollectCursorPosX; @@ -239,6 +242,8 @@ public: extern dMeter2Info_c g_meter2_info; void dMeter2Info_setSword(u8, bool); +void dMeter2Info_setCloth(u8 i_clothId, bool param_1); +void dMeter2Info_setShield(u8 i_itemId, bool param_1); void dMeter2Info_set2DVibration(); void dMeter2Info_set2DVibrationM(); @@ -446,6 +451,10 @@ inline u8 dMeter2Info_getRentalBombBag() { return g_meter2_info.getRentalBombBag(); } +inline u8 dMeter2Info_getMiniGameItemSetFlag() { + return g_meter2_info.getMiniGameItemSetFlag(); +} + inline void dMeter2Info_resetMiniGameItem(bool param_0) { g_meter2_info.resetMiniGameItem(param_0); } @@ -458,6 +467,22 @@ inline void dMeter2Info_changeWater(u8 bottleIdx) { g_meter2_info.changeWater(bottleIdx); } +inline void dMeter2Info_warpInProc() { + g_meter2_info.warpInProc(); +} + +inline void dMeter2Info_warpOutProc() { + g_meter2_info.warpOutProc(); +} + +inline dMeter2_c* dMeter2Info_getMeterClass() { + return g_meter2_info.getMeterClass(); +} + +inline s16 dMeter2Info_getMsgKeyWaitTimer() { + return g_meter2_info.getMsgKeyWaitTimer(); +} + char* dMeter2Info_getNumberTextureName(int pIndex); void dMeter2Info_recieveLetter(); u8 dMeter2Info_getNewLetterNum(); diff --git a/include/d/msg/d_msg_class.h b/include/d/msg/d_msg_class.h index 9c76a8a165..71593d6de3 100644 --- a/include/d/msg/d_msg_class.h +++ b/include/d/msg/d_msg_class.h @@ -4,10 +4,8 @@ #include "dolphin/types.h" #include "f_op/f_op_actor.h" -class msg_class { +class msg_class : public leafdraw_class { public: - /* 0x00 */ base_process_class field_0x0; - /* 0xB8 */ u8 field_0xb8[8]; /* 0xC0 */ int field_0xc0; /* 0xC4 */ create_tag_class field_0xc4; /* 0xD8 */ leafdraw_method_class* field_0xd8; diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index 741538ae21..6b4383f8ba 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -10,6 +10,7 @@ #include "dolphin/types.h" class COutFont_c; +class dMsgScrnBase_c; class dMsgObject_c : public msg_class { public: @@ -23,7 +24,7 @@ public: /* 80233FD8 */ void getRevoMessageIndex(u32); /* 802340D4 */ void getMessageIndexAlways(u32); /* 80234128 */ void getMessageIDAlways(u32); - /* 8023413C */ void getMessageGroup(u32); + /* 8023413C */ static s16 getMessageGroup(u32); /* 80234150 */ void waitProc(); /* 80234318 */ void openProc(); /* 802349D8 */ void outnowProc(); @@ -50,9 +51,9 @@ public: /* 80236D0C */ void changeGroupLocal(s16); /* 80236DE4 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, char*, char*, s16*); - /* 802370A8 */ void isGetItemMessage(); - /* 802370BC */ void isKanbanMessage(); - /* 802370E8 */ void isHowlMessage(); + /* 802370A8 */ BOOL isGetItemMessage(); + /* 802370BC */ BOOL isKanbanMessage(); + /* 802370E8 */ BOOL isHowlMessage(); /* 802370FC */ bool isMidonaMessage(); /* 80237138 */ void isMidonaNormalTalkWait(); /* 802371B0 */ void isMidonaTalkWait(); @@ -78,19 +79,19 @@ public: /* 8023759C */ void getBombBuyPriceLocal(u8); /* 802375E4 */ void addSelectBomBag(u8); /* 80237610 */ void resetSelectBomBag(); - /* 8023763C */ void getSelectBombBagIDLocal(); - /* 8023768C */ void getSelectBombPriceLocal(); + /* 8023763C */ u8 getSelectBombBagIDLocal(); + /* 8023768C */ s16 getSelectBombPriceLocal(); /* 8023773C */ void setEquipBombInfoLocal(); /* 80237748 */ void updateEquipBombInfoLocal(); /* 802378B8 */ static void setShopWaitTimer(u8); /* 802378CC */ void setSelectWordFlagLocal(u8); - /* 802378D4 */ void isHowlHearingModeLocal(); + /* 802378D4 */ bool isHowlHearingModeLocal(); /* 80237934 */ void isCameraCancelFlag(); /* 80237950 */ void onCameraCancelFlag(); /* 80237968 */ void offCameraCancelFlag(); /* 80237980 */ static bool isKillMessageFlag(); /* 80237994 */ static void onKillMessageFlag(); - /* 802379AC */ void setKillMessageFlag(); + /* 802379AC */ static void setKillMessageFlag(); /* 802379D8 */ void setKillMessageFlagLocal(); /* 80237A74 */ void setTalkPartner(fopAc_ac_c*); /* 80237A88 */ void setNowTalkFlowNo(s16); @@ -109,9 +110,11 @@ public: /* 80237F10 */ void setTalkActorLocal(fopAc_ac_c*); /* 8023800C */ static void readMessageGroup(mDoDvdThd_mountXArchive_c**); /* 8023803C */ static void changeFlowGroup(s32); + /* 8023806C */ void demoMessageGroup(); + /* 80238098 */ static void endFlowGroup(); + /* 802380C4 */ static void changeGroup(s16); /* 8023806C */ static void demoMessageGroup(); /* 80238098 */ void endFlowGroup(); - /* 802380C4 */ void changeGroup(s16); /* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, char*, char*, s16*); /* 80238174 */ static u8* getMsgDtPtr(); @@ -146,19 +149,21 @@ public: /* 80238528 */ void getSelectWord(int); /* 80238544 */ void setSelectWordFlag(u8); /* 80238574 */ void getSelectWordFlag(); - /* 80238588 */ void isHowlHearingMode(); + /* 80238588 */ bool isHowlHearingMode(); /* 802385B4 */ static u8 getSelectBombBagID(); /* 802385E0 */ static s16 getSelectBombPrice(); /* 8023860C */ void setEquipBombInfo(); - /* 80238638 */ void getItemEquipButton(); + /* 80238638 */ u8 getItemEquipButton(); /* 8023864C */ static void setSelectCancelPos(u8); void setShopWaitTimerLocal(u8 timer) { mShopWaitTimer = timer; } + void setSelectCancelPosLocal(u8 pos) { mSelectCancelPos = pos; } + u8 getItemEquipButtonLocal() { return mItemEquipButton; } u8 getSelectPushFlag() { return mSelectPushFlag; } u8 getSelectCancelPos() { return mSelectCancelPos; } /* 0x100 */ msg_class* field_0x100; - /* 0x104 */ int mpScrnDraw; + /* 0x104 */ dMsgScrnBase_c* mpScrnDraw; /* 0x108 */ dMsgString_c* mpMsgString; /* 0x10C */ COutFont_c* mpOutFont; /* 0x110 */ JMessage::TResourceContainer* mpResCont; @@ -282,4 +287,206 @@ inline void dMsgObject_setTalkActor(fopAc_ac_c* actor) { } } +inline void dMsgObject_onKillMessageFlag() { + dMsgObject_c::onKillMessageFlag(); +} + +inline void dMsgObject_setKillMessageFlag() { + dMsgObject_c::setKillMessageFlag(); +} + +inline void dMsgObject_endFlowGroup() { + dMsgObject_c::endFlowGroup(); +} + + +class dMsgObject_HowlHIO_c { +public: + /* 80232AEC */ dMsgObject_HowlHIO_c(); + /* 80238B94 */ virtual ~dMsgObject_HowlHIO_c() {} + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ JUtility::TColor mHowlLineStartCol; + /* 0x0C */ JUtility::TColor mHowlLineEndCol; + /* 0x10 */ f32 mHighlightScale; + /* 0x14 */ JUtility::TColor mHighlightMoyaR0; + /* 0x18 */ JUtility::TColor mHighlightMoyaR1; + /* 0x1C */ JUtility::TColor mHighlightMoyabsR0; + /* 0x20 */ JUtility::TColor mHighlightMoyabsR1; + /* 0x24 */ JUtility::TColor mHighlightPikaR0; + /* 0x28 */ JUtility::TColor mHighlightPikaR1; + /* 0x2C */ f32 mAnmSpeed; + /* 0x30 */ JUtility::TColor mGuideUpperBlack; + /* 0x34 */ JUtility::TColor mGuideUpperWhite; + /* 0x38 */ JUtility::TColor mGuideMidBlack; + /* 0x3C */ JUtility::TColor mGuideMidWhite; + /* 0x40 */ JUtility::TColor mGuideLowerBlack; + /* 0x44 */ JUtility::TColor mGuideLowerWhite; + /* 0x48 */ JUtility::TColor mAnswerUpperBlack; + /* 0x4C */ JUtility::TColor mAnswerUpperWhite; + /* 0x50 */ JUtility::TColor mAnswerMidBlack; + /* 0x54 */ JUtility::TColor mAnswerMidWhite; + /* 0x58 */ JUtility::TColor mAnswerLowerBlack; + /* 0x5C */ JUtility::TColor mAnswerLowerWhite; + /* 0x60 */ JUtility::TColor mDotBlack; + /* 0x64 */ JUtility::TColor mDotWhite; + /* 0x68 */ f32 mDotScale; + /* 0x6C */ f32 mDrawInterval; + /* 0x70 */ f32 mLineThickness; + /* 0x74 */ f32 mCrossPosX; + /* 0x78 */ f32 mCrossPosY; + /* 0x7C */ f32 mCrossScale; + /* 0x80 */ f32 mWindowPosX; + /* 0x84 */ f32 mWindowPosY; + /* 0x88 */ f32 mWindowScale; + /* 0x8C */ f32 mInputStartPoint; + /* 0x90 */ f32 mGuideUpperAlpha; + /* 0x94 */ f32 mGuideMidAlpha; + /* 0x98 */ f32 mGuideLowerAlpha; + /* 0x9C */ f32 mAnswerUpperAlpha; + /* 0xA0 */ f32 mAnswerMidAlpha; + /* 0xA4 */ f32 mAnswerLowerAlpha; + /* 0xA8 */ f32 mLineSpaceOffset; + /* 0xAC */ u16 mWaveformThickness; + /* 0xAE */ u16 mWaveformLineLen; + /* 0xB0 */ u16 mWaveformDotLen; +}; + +class dMsgObject_HIO_c { +public: + /* 80232D6C */ dMsgObject_HIO_c(); + /* 80238BDC */ virtual ~dMsgObject_HIO_c() {} + + /* 0x004 */ s8 field_0x4; + /* 0x008 */ f32 mBoxMidna_fontSizeX; + /* 0x00C */ f32 field_0xc; + /* 0x010 */ f32 mBoxMidna_fontSizeY; + /* 0x014 */ f32 field_0x14; + /* 0x018 */ f32 mBoxTalkAlphaP; + /* 0x01C */ f32 mBoxNaviAlphaP; + /* 0x020 */ f32 mBoxMidnaAlphaP; + /* 0x024 */ f32 mBoxItemAlphaP; + /* 0x028 */ f32 mBoxStoneAlphaP; + /* 0x02C */ f32 mBoxWoodAlphaP; + /* 0x030 */ f32 mBoxBookAlphaP; + /* 0x034 */ f32 mBoxWolfAlphaP; + /* 0x038 */ f32 mSubtitleAlphaP; + /* 0x03C */ f32 field_0x3c; + /* 0x040 */ f32 mBoxNaviAnmSpeed; + /* 0x044 */ f32 field_0x44; + /* 0x048 */ f32 mBoxItemAnmSpeed; + /* 0x04C */ f32 field_0x4c; + /* 0x050 */ f32 field_0x50; + /* 0x054 */ f32 field_0x54; + /* 0x058 */ f32 mBoxWolfAnmSpeed; + /* 0x05C */ f32 mBoxItemHaloAlpha; + /* 0x060 */ f32 mBoxNaviHaloAlpha; + /* 0x064 */ f32 mBoxMidnaHaloAlpha; + /* 0x068 */ f32 mBoxWolfHaloAlpha; + /* 0x06C */ f32 mBoxTalkHaloAlpha; + /* 0x070 */ f32 mBoxTalkScaleX; + /* 0x074 */ f32 mBoxNaviScaleX; + /* 0x078 */ f32 mBoxMidnaScaleX; + /* 0x07C */ f32 mBoxItemScaleX; + /* 0x080 */ f32 mBoxStoneScaleX; + /* 0x084 */ f32 mBoxWoodScaleX; + /* 0x088 */ f32 mBoxBookScaleX; + /* 0x08C */ f32 mBoxWolfScaleX; + /* 0x090 */ f32 mStageTitleScaleX; + /* 0x094 */ f32 mSubtitleScaleX; + /* 0x098 */ f32 mBossNameScaleX; + /* 0x09C */ f32 mBoxTalkScaleY; + /* 0x0A0 */ f32 mBoxNaviScaleY; + /* 0x0A4 */ f32 mBoxMidnaScaleY; + /* 0x0A8 */ f32 mBoxItemScaleY; + /* 0x0AC */ f32 mBoxStoneScaleY; + /* 0x0B0 */ f32 mBoxWoodScaleY; + /* 0x0B4 */ f32 mBoxBookScaleY; + /* 0x0B8 */ f32 mBoxWolfScaleY; + /* 0x0BC */ f32 mStageTitleScaleY; + /* 0x0C0 */ f32 mSubtitleScaleY; + /* 0x0C4 */ f32 mBossNameScaleY; + /* 0x0C8 */ f32 mBoxItemSizeX; + /* 0x0CC */ f32 mBoxItemSizeY; + /* 0x0D0 */ f32 mBoxItemPosX; + /* 0x0D4 */ f32 mBoxItemPosY; + /* 0x0D8 */ f32 mBoxItemTextSizeX; + /* 0x0DC */ f32 mBoxItemTextSizeY; + /* 0x0E0 */ f32 mBoxItemTextPosX; + /* 0x0E4 */ f32 mBoxItemTextPosY; + /* 0x0E8 */ JUtility::TColor mBoxStartBlack[10]; // talk, navi, midna, item, stone, wood, book, wolf, + /* 0x110 */ JUtility::TColor mBoxEndBlack[10]; + /* 0x138 */ JUtility::TColor mBoxStartWhite[10]; + /* 0x160 */ JUtility::TColor mBoxEndWhite[10]; + /* 0x188 */ JUtility::TColor mSelMsgInactiveCol; + /* 0x18C */ f32 mStageTitleCharPosX; + /* 0x190 */ f32 mBossNameCharPosX; + /* 0x194 */ f32 mStageTitleCharPosY; + /* 0x198 */ f32 mBossNameCharPosY; + /* 0x19C */ f32 mStageTitleCharSizeX; + /* 0x1A0 */ f32 mBossNameCharSizeX; + /* 0x1A4 */ f32 mStageTitleCharSizeY; + /* 0x1A8 */ f32 mBossNameCharSizeY; + /* 0x1AC */ f32 mStageTitleBasePosX; + /* 0x1B0 */ f32 mBossNameBasePosX; + /* 0x1B4 */ f32 mStageTitleBasePosY; + /* 0x1B8 */ f32 mBossNameBasePosY; + /* 0x1BC */ f32 mStageTitleBaseSizeX; + /* 0x1C0 */ f32 mBossNameBaseSizeX; + /* 0x1C4 */ f32 mStageTitleBaseSizeY; + /* 0x1C8 */ f32 mBossNameBaseSizeY; + /* 0x1CC */ f32 mStageTitleBaseAlpha; + /* 0x1D0 */ f32 mBossNameBaseAlpha; + /* 0x1D4 */ f32 mChoicePos[3][10]; // down, mid, top + /* 0x24C */ f32 mBoxPos[3][10]; // down, mid, top // talk, navi, midna, item, stone, wood, book, wolf, + /* 0x2C4 */ f32 mPortalIconScale; + /* 0x2C8 */ f32 mTextPosX; + /* 0x2CC */ f32 mTextPosY; + /* 0x2D0 */ f32 mPikariScale; + /* 0x2D4 */ JUtility::TColor mPikariMoyaR0; + /* 0x2D8 */ JUtility::TColor mPikariMoyaR1; + /* 0x2DC */ JUtility::TColor mPikariMoyabsR0; + /* 0x2E0 */ JUtility::TColor mPikariMoyabsR1; + /* 0x2E4 */ JUtility::TColor mPikariPikaR0; + /* 0x2E8 */ JUtility::TColor mPikariPikaR1; + /* 0x2EC */ f32 mPikariAnmSpeed; + /* 0x2F0 */ u16 mPikariHaloDelay_spirit; + /* 0x2F2 */ u8 mStageTitleDisplayType; + /* 0x2F4 */ u16 mMsgIndex; + /* 0x2F6 */ u16 mFlowIndex; + /* 0x2F8 */ u16 mSaveSeqMsgIndex; + /* 0x2FA */ u16 mSelWeightFrame; + /* 0x2FC */ u16 mBoxAppearBound; + /* 0x2FE */ u16 mBoxAppearFrame; + /* 0x300 */ u16 mWaitFrame; + /* 0x302 */ u16 mLightAppearFrame; + /* 0x304 */ u16 field_0x304; + /* 0x306 */ u16 mStageTitleFadeIn; + /* 0x308 */ u16 mStageTitleFadeOut; + /* 0x30A */ u16 mBossNameFadeIn; + /* 0x30C */ u16 mBossNameFadeOut; + /* 0x30E */ u16 mStageTitleDisplayTime; + /* 0x310 */ u16 mBossNameDisplayTime; + /* 0x312 */ u16 mBatchDisplayWeight_3; + /* 0x314 */ u16 mCharDisplayWeight_5; + /* 0x316 */ u16 mBatchDisplayWeight_8; + /* 0x318 */ u16 mBatchDisplayWeight_9; + /* 0x31A */ u16 mHaloDelayFrame; + /* 0x31C */ u16 mHaloDelayFrameSpirit; + /* 0x31E */ bool mSaveSeqMsgDebug; + /* 0x31F */ bool mMsgDebug; + /* 0x320 */ u8 field_0x320; + /* 0x320 */ bool mTextColorDebug; + /* 0x321 */ u8 mTextColorUpperR[9]; // Default, Red, Green, Blue, Yellow, L.Blue, Purple, Grey, Orange, + /* 0x32A */ u8 mTextColorUpperG[9]; + /* 0x333 */ u8 mTextColorUpperB[9]; + /* 0x33C */ u8 mTextColorLowerR[9]; // Default, Red, Green, Blue, Yellow, L.Blue, Purple, Grey, Orange, + /* 0x345 */ u8 mTextColorLowerG[9]; + /* 0x34E */ u8 mTextColorLowerB[9]; + /* 0x357 */ u8 mDisplaySpeed; + /* 0x358 */ u8 mDisplaySpeedSpirit; + /* 0x359 */ u8 mMessageDisplay; + /* 0x35C */ dMsgObject_HowlHIO_c mHowlHIO; +}; + #endif /* D_MSG_D_MSG_OBJECT_H */ diff --git a/include/d/msg/d_msg_out_font.h b/include/d/msg/d_msg_out_font.h index 815a1e0848..e11307c730 100644 --- a/include/d/msg/d_msg_out_font.h +++ b/include/d/msg/d_msg_out_font.h @@ -2,5 +2,63 @@ #define D_MSG_D_MSG_OUT_FONT_H #include "dolphin/types.h" +#include "JSystem/J2DGraph/J2DTextBox.h" +#include "JSystem/J2DGraph/J2DPicture.h" + +class COutFontSet_c { +public: + /* 80225BB8 */ COutFontSet_c(); + /* 80225C3C */ void initialize(); + /* 80225C70 */ void drawFont(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8); + + /* 80225BF4 */ virtual ~COutFontSet_c(); + + u8 getType() { return mType; } + u32 getColor() { return mColor; } + f32 getPosX() { return mPosX; } + f32 getPosY() { return mPosY; } + f32 getSizeX() { return mSizeX; } + f32 getSizeY() { return mSizeY; } + J2DTextBox* getTextBoxPtr() { return mpTextBoxPtr; } + void setTextBoxPtr(J2DTextBox* p_textBox) { mpTextBoxPtr = p_textBox; } + void resetType() { mType = 0x47; } + +private: + /* 0x04 */ J2DTextBox* mpTextBoxPtr; + /* 0x08 */ f32 mPosX; + /* 0x0C */ f32 mPosY; + /* 0x10 */ f32 mSizeX; + /* 0x14 */ f32 mSizeY; + /* 0x18 */ u32 mColor; + /* 0x1C */ u8 mAlpha; + /* 0x1D */ u8 mType; +}; + +class COutFont_c { +public: + /* 80225C94 */ COutFont_c(u8); + /* 80226CF8 */ void initialize(); + /* 80228490 */ void setBlendAnime(J2DPicture*, s16); + /* 80228530 */ const char* getBtiName(int); + + /* 80225D60 */ virtual ~COutFont_c(); + /* 80225E7C */ virtual void setPane(J2DPicture*); + /* 80225EA8 */ virtual void createPane(); + /* 80226DB0 */ virtual void draw(J2DTextBox*, f32, f32, f32); + /* 80228448 */ virtual void reset(J2DTextBox*); + /* 80226D4C */ virtual void drawFont(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8); + /* 80226DA8 */ virtual void setAlphaRatio(f32); + +private: + /* 0x004 */ COutFontSet_c* mpOfs[35]; + /* 0x090 */ J2DPicture* mpPane[70]; + /* 0x1A8 */ f32 mAlphaRatio; + /* 0x1AC */ f32 field_0x1ac; + /* 0x1B0 */ f32 field_0x1b0; + /* 0x1B4 */ s16 field_0x1b4[70]; + /* 0x240 */ bool field_0x240; + /* 0x241 */ u8 mRupeeColor; + /* 0x242 */ u8 field_0x242; +}; #endif /* D_MSG_D_MSG_OUT_FONT_H */ diff --git a/include/d/msg/d_msg_string.h b/include/d/msg/d_msg_string.h index c596bde84f..7c2d8eafe4 100644 --- a/include/d/msg/d_msg_string.h +++ b/include/d/msg/d_msg_string.h @@ -1,6 +1,26 @@ #ifndef D_MSG_D_MSG_STRING_H #define D_MSG_D_MSG_STRING_H -#include "dolphin/types.h" +#include "d/msg/d_msg_string_base.h" +#include "d/msg/d_msg_out_font.h" + +class dMsgString_c { +public: + + /* 80249C20 */ dMsgString_c(); + /* 80249CA0 */ dMsgString_c(u8); + /* 80249D28 */ ~dMsgString_c(); + + /* 80191B6C */ virtual void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8); + /* 801E1D10 */ virtual void getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, + u8); + /* 80249DB4 */ virtual void resetStringLocal(J2DTextBox*); + /* 80249DE4 */ virtual void drawOutFontLocal(J2DTextBox*, f32); + /* 80249ED0 */ virtual void drawFontLocal(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8); + +private: + /* 0x24 */ COutFont_c* mpOutFont; + /* 0x28 */ u8 field_0x28; +}; #endif /* D_MSG_D_MSG_STRING_H */ diff --git a/include/d/msg/d_msg_string_base.h b/include/d/msg/d_msg_string_base.h index 596f9156ea..0dcb053c29 100644 --- a/include/d/msg/d_msg_string_base.h +++ b/include/d/msg/d_msg_string_base.h @@ -1,6 +1,41 @@ #ifndef D_MSG_D_MSG_STRING_BASE_H #define D_MSG_D_MSG_STRING_BASE_H -#include "dolphin/types.h" +#include "d/msg/d_msg_object.h" + +struct jmessage_string_tControl; +struct jmessage_string_tReference; +struct jmessage_string_tSequenceProcessor; +struct jmessage_string_tRenderingProcessor; + +class dMsgStringBase_c { +public: + /* 802493B4 */ dMsgStringBase_c(); + /* 80249528 */ ~dMsgStringBase_c(); + /* 80249700 */ void getResource(); + /* 80249768 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8); + /* 802498D8 */ void getStringPageLocal(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, + COutFont_c*, u8); + /* 80249A48 */ void getPageMax(int); + /* 80249A70 */ void getMessageLocal(u32, char*); + + /* 80249BB0 */ virtual void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8); + /* 80249BD0 */ virtual void getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, + u8); + /* 80249BF8 */ virtual void getMessage(u32, char*); + /* 80249C18 */ virtual void resetStringLocal(J2DTextBox*); + /* 80249C1C */ virtual void drawOutFontLocal(J2DTextBox*, f32); + /* 80249BAC */ virtual void drawFontLocal(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8); + +private: + /* 0x04 */ JMessage::TResourceContainer* mpResCont; + /* 0x08 */ jmessage_string_tControl* mpCtrl; + /* 0x0C */ jmessage_string_tReference* mpRefer; + /* 0x10 */ jmessage_string_tSequenceProcessor* mpSeqProc; + /* 0x14 */ jmessage_string_tRenderingProcessor* mpRenProc; + /* 0x18 */ JMessage::TParse* mpParse; + /* 0x1C */ void* field_0x1c; + /* 0x20 */ u16 field_0x20; +}; #endif /* D_MSG_D_MSG_STRING_BASE_H */ diff --git a/include/d/pane/d_pane_class_alpha.h b/include/d/pane/d_pane_class_alpha.h index a016a31110..5034f6c99d 100644 --- a/include/d/pane/d_pane_class_alpha.h +++ b/include/d/pane/d_pane_class_alpha.h @@ -39,6 +39,7 @@ public: J2DPane* getPanePtr() { return (J2DPane*)mWindow; } u8 getAlpha() { return getPanePtr()->getAlpha(); } s16 getAlphaTimer() { return mAlphaTimer; } + void alphaAnimeStart(s16 start) { mAlphaTimer = start; } /* 0x04 */ J2DWindow* mWindow; /* 0x08 */ JKRExpHeap* heap; diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h index a154b9975d..5abca2df63 100644 --- a/include/d/particle/d_particle.h +++ b/include/d/particle/d_particle.h @@ -53,6 +53,28 @@ public: /* 0x10 */ void* mData; }; // Size: 0x14 +class dPa_followEcallBack : public dPa_levelEcallBack { +public: + /* 80049580 */ dPa_followEcallBack(u8, u8); + + /* 80050200 */ virtual ~dPa_followEcallBack(); + /* 800495BC */ virtual void execute(JPABaseEmitter*); + /* 800496B0 */ virtual void draw(JPABaseEmitter*); + /* 800496B4 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8); + /* 80050284 */ virtual void cleanup(); + /* 8004974C */ virtual void end(); + + void remove() { end(); } + + /* 0x04 */ JPABaseEmitter* mpEmitter; + /* 0x08 */ cXyz* field_0x8; + /* 0x0C */ csXyz* field_0xc; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; + /* 0x13 */ u8 field_0x13; +}; + extern u8 data_80450EC4; class dPa_control_c { @@ -66,6 +88,8 @@ public: /* 8004B5AC */ void cleanup(); /* 8004FBFC */ emitter_c(); + JPABaseEmitter* getEmitter() { return mEmitter; } + private: /* 0x00 */ u32 mId; /* 0x04 */ u16 mNameId; @@ -83,7 +107,7 @@ public: /* 8004B874 */ void get(u32); /* 8004B8B4 */ void forceOnEventMove(u32); /* 8004B8E8 */ void allForceOnEventMove(); - /* 8004B918 */ emitter_c* getEmitter(u32); + /* 8004B918 */ JPABaseEmitter* getEmitter(u32); /* 8004B94C */ void entry(u16, JPABaseEmitter*, dPa_levelEcallBack*); /* 8004BA40 */ void addTable(dPa_control_c::level_c::emitter_c*); /* 8004BA74 */ void cutTable(dPa_control_c::level_c::emitter_c*); @@ -136,7 +160,7 @@ public: dKy_tevstr_c const*, u32, u32, csXyz const*, cXyz const*, s8); void forceOnEventMove(u32 param_0) { field_0x210.forceOnEventMove(param_0); } - level_c::emitter_c* getEmitter(u32 param_0) { return field_0x210.getEmitter(param_0); } + JPABaseEmitter* getEmitter(u32 param_0) { return field_0x210.getEmitter(param_0); } u32 setNormal(u32 param_0, u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, diff --git a/include/d/s/d_s_logo.h b/include/d/s/d_s_logo.h index 086b209115..0627e86dd1 100644 --- a/include/d/s/d_s_logo.h +++ b/include/d/s/d_s_logo.h @@ -3,6 +3,7 @@ #include "d/com/d_com_inf_game.h" #include "dolphin/types.h" +#include "SSystem/SComponent/c_lib.h" class dLog_HIO_c { public: @@ -119,7 +120,4 @@ static int phase_0(dScnLogo_c* logo); static int phase_1(dScnLogo_c* logo); static int phase_2(dScnLogo_c* logo); -template <typename T> -T cLib_calcTimer(T* val); - #endif /* D_S_D_S_LOGO_H */ diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 5cac4e2acc..17a72a4811 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -384,7 +384,7 @@ public: int isMagicFlag(u8 i_magic) const; u16 getMaxLife() { return mMaxLife; } - u16 getLife() { return mLife; } + u16 getLife() const { return mLife; } u16 getRupee() { return mRupee; } u16 getOil() { return mOil; } u16 getMaxOil() const { return mMaxOil; } @@ -515,6 +515,7 @@ public: s8 getRoomNo() { return mRoomNo; } char getWarpAcceptStage() { return mWarpAcceptStage; } void resetWarpAcceptStage() { mWarpAcceptStage = -1; } + void setWarpAcceptStage(s8 accept) { mWarpAcceptStage = accept; } private: /* 0x00 */ cXyz mPos; @@ -522,7 +523,7 @@ private: /* 0x0E */ char mName[8]; /* 0x16 */ u8 mSpawnId; /* 0x17 */ s8 mRoomNo; - /* 0x18 */ char mWarpAcceptStage; + /* 0x18 */ s8 mWarpAcceptStage; /* 0x19 */ u8 unk25[3]; }; // Size: 0x1C @@ -813,6 +814,7 @@ public: onDungeonItem(STAGE_BOSS_ENEMY); onDungeonItem(OOCCOO_NOTE); } + s32 isStageBossEnemy() const { return isDungeonItem(STAGE_BOSS_ENEMY); } s32 isDungeonItemWarp() const { return isDungeonItem(OOCCOO_NOTE); } void onStageLife() { onDungeonItem(STAGE_LIFE); } @@ -1085,6 +1087,7 @@ public: u8 getDataNum() const { return mDataNum; } void removeZone(int zoneNo) { mZone[zoneNo].reset(); } void setNoFile(u8 file) { mNoFile = file; } + u8 getNewFile() const { return mNewFile; } static const int MEMORY_SWITCH = 0x80; static const int DAN_SWITCH = 0x40; diff --git a/include/d/save/d_save_HIO.h b/include/d/save/d_save_HIO.h index ef4b049302..dfa7c8b147 100644 --- a/include/d/save/d_save_HIO.h +++ b/include/d/save/d_save_HIO.h @@ -201,8 +201,7 @@ public: /* 8025C6FC */ virtual ~dSvBit_HIO_c(); -private: - /* 0x004 */ u8 field_0x4; + /* 0x004 */ s8 field_0x4; /* 0x008 */ dSvBit_childSwitchHIO_c mSwitch; /* 0x210 */ dSvBit_childItemHIO_c mItem; /* 0x3D8 */ dSvBit_childTreasureHIO_c mTreasure; |
