ending_hero5 OK (#40)

* ending_hero5 OK

* Formatting

* Fixed formatting and changed colors to decimal
This commit is contained in:
fullgrowngaming
2020-10-26 19:00:02 -04:00
committed by GitHub
parent c4f4dcebc7
commit a9138a7c0f
5 changed files with 173 additions and 82 deletions
+69 -70
View File
@@ -7,6 +7,8 @@
/* Types */
/* Private macro to wrap other macros in do {...} while (0) */
#define _DW(macro) do {macro} while (0)
#define F3DEX_GBI_2
@@ -1259,16 +1261,6 @@ typedef struct {
char pad3;
} Light_t;
// Added for Zelda decomp
typedef struct {
unsigned char col[3]; /* diffuse light value (rgba) */
char pad1;
unsigned char colc[3]; /* copy of diffuse light value (rgba) */
char pad2;
signed short pos[3];
char unkE;
} LightPos_t;
typedef struct {
unsigned char col[3]; /* ambient light value (rgba) */
char pad1;
@@ -1282,7 +1274,6 @@ typedef struct {
typedef union {
Light_t l;
LightPos_t lPos;
long long int force_structure_alignment[2];
} Light;
@@ -1693,12 +1684,12 @@ _DW({ \
* +-+---+-----------------------------+
*/
# define gSPVertex(pkt, v, n, v0) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = \
_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7); \
_g->words.w1 = (unsigned int)(v); \
}
})
# define gsSPVertex(v, n, v0) \
{ \
(_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7)), \
@@ -1763,12 +1754,12 @@ _DW({ \
}
#define gImmp1(pkt, c, p0) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL((c), 24, 8); \
_g->words.w1 = (unsigned int)(p0); \
}
})
#define gsImmp1(c, p0) \
{ \
@@ -1804,13 +1795,13 @@ _DW({ \
}
#define gImmp21(pkt, c, p0, p1, dat) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | \
_SHIFTL((p1), 0, 8)); \
_g->words.w1 = (unsigned int) (dat); \
}
})
#define gsImmp21(c, p0, p1, dat) \
{ \
@@ -1909,13 +1900,13 @@ _DW({ \
*** 1 Triangle
***/
#define gSP1Triangle(pkt, v0, v1, v2, flag) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_TRI1, 24, 8)| \
__gsSP1Triangle_w1f(v0, v1, v2, flag); \
_g->words.w1 = 0; \
}
})
#define gsSP1Triangle(v0, v1, v2, flag) \
{ \
_SHIFTL(G_TRI1, 24, 8)|__gsSP1Triangle_w1f(v0, v1, v2, flag), \
@@ -1966,13 +1957,13 @@ _DW({ \
*** 1 Quadrangle
***/
#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_QUAD, 24, 8)| \
__gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \
_g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \
}
})
#define gsSP1Quadrangle(v0, v1, v2, v3, flag) \
{ \
@@ -2061,13 +2052,13 @@ _DW({ \
*** 2 Triangles
***/
#define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| \
__gsSP1Triangle_w1f(v00, v01, v02, flag0)); \
_g->words.w1 = __gsSP1Triangle_w1f(v10, v11, v12, flag1); \
}
})
#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \
{ \
@@ -2303,7 +2294,7 @@ _DW({ \
* uc_dstart = ucode data section start
*/
#define gSPLoadUcodeEx(pkt, uc_start, uc_dstart, uc_dsize) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
_g->words.w1 = (unsigned int)(uc_dstart); \
@@ -2311,7 +2302,7 @@ _DW({ \
_g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)| \
_SHIFTL((int)(uc_dsize)-1,0,16)); \
_g->words.w1 = (unsigned int)(uc_start); \
}
})
#define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \
{ _SHIFTL(G_RDPHALF_1,24,8), \
@@ -2585,10 +2576,10 @@ _DW({ \
#endif /* F3DEX_GBI_2 */
#define gSPLookAt(pkt, la) \
{ \
gSPLookAtX(pkt,la) \
gSPLookAtY(pkt,(char *)(la)+16) \
}
_DW({ \
gSPLookAtX(pkt,la); \
gSPLookAtY(pkt,(char *)(la)+16); \
})
#define gsSPLookAt(la) \
gsSPLookAtX(la), \
gsSPLookAtY((char *)(la)+16)
@@ -2643,7 +2634,7 @@ _DW({ \
* Macros to turn texture on/off
*/
# define gSPTexture(pkt, s, t, level, tile, on) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \
@@ -2651,7 +2642,7 @@ _DW({ \
_SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \
_SHIFTL((on),1,7)); \
_g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \
}
})
# define gsSPTexture(s, t, level, tile, on) \
{ \
(_SHIFTL(G_TEXTURE,24,8) | _SHIFTL(BOWTIE_VAL,16,8) | \
@@ -2754,11 +2745,11 @@ _DW({ \
* gSPLoadGeometryMode(pkt, word) sets GeometryMode directly.
*/
#define gSPGeometryMode(pkt, c, s) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = _SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24);\
_g->words.w1 = (u32)(s); \
}
})
#define gsSPGeometryMode(c, s) \
{ \
@@ -2948,7 +2939,7 @@ _DW({ \
#define gDPSetMaskImage(pkt, i) gDPSetDepthImage(pkt, i)
#define gsDPSetMaskImage(i) gsDPSetDepthImage(i)
#define gDPSetTextureImage(pkt, f, s, w, i) gSetImage(pkt, G_SETTIMG, f, s, w, i)
#define gDPSetTextureImage(pkt, f, s, w, i) gSetImage(pkt, G_SETTIMG, f, s, w, i)
#define gsDPSetTextureImage(f, s, w, i) gsSetImage(G_SETTIMG, f, s, w, i)
/*
@@ -2987,7 +2978,7 @@ _DW({ \
#define gDPSetCombineLERP(pkt, a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \
a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | \
@@ -3005,7 +2996,7 @@ _DW({ \
G_CCMUX_##d1, \
G_ACMUX_##Ab1, \
G_ACMUX_##Ad1)); \
}
})
#define gsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \
a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \
@@ -3127,12 +3118,12 @@ _DW({ \
* modeB = G_AC_* | G_ZS_* | G_RM_* | G_RM_*2;
*/
#define gDPSetOtherMode(pkt, mode0, mode1) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24);\
_g->words.w1 = (unsigned int)(mode1); \
}
})
#define gsDPSetOtherMode(mode0, mode1) \
{ \
@@ -3201,14 +3192,14 @@ _DW({ \
TXL2WORDS_4b(width))
#define gDPLoadTileGeneric(pkt, c, tile, uls, ult, lrs, lrt) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | \
_SHIFTL(ult, 0, 12); \
_g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | \
_SHIFTL(lrt, 0, 12); \
}
})
#define gsDPLoadTileGeneric(c, tile, uls, ult, lrs, lrt) \
{ \
@@ -3227,7 +3218,7 @@ _DW({ \
#define gDPSetTile(pkt, fmt, siz, line, tmem, tile, palette, cmt, \
maskt, shiftt, cms, masks, shifts) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) |\
@@ -3237,7 +3228,7 @@ _DW({ \
_SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \
_SHIFTL(shiftt, 10, 4) |_SHIFTL(cms, 8, 2) | \
_SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4); \
}
})
#define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, \
maskt, shiftt, cms, masks, shifts) \
@@ -3261,7 +3252,7 @@ _DW({ \
* tile manipulation yourself. RJM.
*/
#define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | \
@@ -3269,7 +3260,7 @@ _DW({ \
_g->words.w1 = (_SHIFTL(tile, 24, 3) | \
_SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) |\
_SHIFTL(dxt, 0, 12)); \
}
})
#define gsDPLoadBlock(tile, uls, ult, lrs, dxt) \
{ \
@@ -3281,12 +3272,12 @@ _DW({ \
}
#define gDPLoadTLUTCmd(pkt, tile, count) \
{ \
_DW({ \
Gfx *_g = (Gfx *)pkt; \
\
_g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8); \
_g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10);\
}
})
#define gsDPLoadTLUTCmd(tile, count) \
{ \
@@ -3311,7 +3302,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
#define gDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height, \
@@ -3331,7 +3322,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/* Load fix rww 27jun95 */
@@ -3353,7 +3344,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3376,7 +3367,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
@@ -3396,7 +3387,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3418,7 +3409,7 @@ _DW({ \
maskt, shiftt, cms, masks, shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3440,7 +3431,7 @@ _DW({ \
maskt, shiftt, cms, masks, shifts); \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3462,7 +3453,7 @@ _DW({ \
maskt, shiftt, cms, masks, shifts); \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
#define gsDPLoadTextureBlock(timg, fmt, siz, width, height, \
@@ -3617,7 +3608,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/* Load fix rww 27jun95 */
@@ -3638,7 +3629,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3660,7 +3651,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3682,7 +3673,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
@@ -3702,7 +3693,7 @@ _DW({ \
shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC) \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
#define gsDPLoadTextureBlock_4b(timg, fmt, width, height, \
@@ -3827,7 +3818,7 @@ _DW({ \
(uls)<<G_TEXTURE_IMAGE_FRAC, \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC) \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
#else /******** WORKAROUND hw 1 load tile bug ********/
@@ -3877,7 +3868,7 @@ _DW({ \
(uls)<<G_TEXTURE_IMAGE_FRAC, \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC) \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
@@ -3961,7 +3952,7 @@ _DW({ \
(uls)<<G_TEXTURE_IMAGE_FRAC, \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC) \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
/*
@@ -3992,7 +3983,7 @@ _DW({ \
(uls)<<G_TEXTURE_IMAGE_FRAC, \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC) \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
#define gsDPLoadTextureTile_4b(timg, fmt, width, height, \
@@ -4061,7 +4052,7 @@ _DW({ \
G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \
gDPPipeSync(pkt) \
gDPPipeSync(pkt); \
}
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
@@ -4115,7 +4106,7 @@ _DW({ \
G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); \
gDPPipeSync(pkt) \
gDPPipeSync(pkt); \
}
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
@@ -4410,7 +4401,7 @@ _DW({ \
gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))
#define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \
@@ -4419,7 +4410,7 @@ _DW({ \
_SHIFTL(yl, 0, 12)); \
gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \
gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));\
}
})
/* like gSPTextureRectangle but accepts negative position arguments */
#define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
@@ -4493,9 +4484,17 @@ _DW({ \
#define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag)
#define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag)
#define gDPNoOpHere(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 1)
#define gDPNoOpString(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 2)
#define gDPNoOpWord(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 3)
#define gDPNoOpFloat(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 4)
#define gDPNoOpQuiet(pkt) gDma1p(pkt, G_NOOP, 0, 0, 5)
#define gDPNoOpVerbose(pkt, n) gDma1p(pkt, G_NOOP, 0, n, 5)
#define gDPNoOpCallBack(pkt, callback, arg) gDma1p(pkt, G_NOOP, callback, arg, 6)
#define gDPNoOpOpenDisp(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 7)
#define gDPNoOpCloseDisp(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 8)
#define gDPNoOpTag3(pkt, type, data, n) gDma1p(pkt, G_NOOP, data, n, type)
#endif
/* Private macro to wrap other macros in do {...} while (0) */
#define _DW(macro) do {macro} while (0)
#endif
+3 -2
View File
@@ -8684,8 +8684,9 @@ SECTIONS
ovl_En_Ending_Hero5 : AT(RomLocation)
{
build/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.o(.text)
build/asm/ovl_En_Ending_Hero5_data.o(.data)
build/asm/ovl_En_Ending_Hero5_rodata.o(.rodata)
build/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.o(.data)
build/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.o(.rodata)
build/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5_overlay.o(.ovl)
}
SegmentEnd = .;
SegmentSize = SegmentEnd - SegmentStart;
+9
View File
@@ -28,6 +28,15 @@ D_060011E0 = 0x060011E0;
D_06000288 = 0x06000288;
D_060019B4 = 0x060019B4;
/* z_en_ending_hero5 */
D_0600A850 = 0x0600A850;
D_06002FA0 = 0x06002FA0;
D_060070C0 = 0x060070C0;
D_06006FB0 = 0x06006FB0;
D_06006E80 = 0x06006E80;
D_06006D70 = 0x06006D70;
D_0600A390 = 0x0600A390;
/* z_bg_market_step */
D_0601F050 = 0x0601F050;
D_06018DA0 = 0x06018DA0;
@@ -9,7 +9,9 @@ void EnEndingHero5_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnEndingHero5_Update(Actor* thisx, GlobalContext* globalCtx);
void EnEndingHero5_Draw(Actor* thisx, GlobalContext* globalCtx);
/*
void func_80C23980(EnEndingHero5* this);
void func_80C2399C(EnEndingHero5* this, GlobalContext* globalCtx);
const ActorInit En_Ending_Hero5_InitVars = {
ACTOR_EN_ENDING_HERO5,
ACTORTYPE_NPC,
@@ -21,18 +23,91 @@ const ActorInit En_Ending_Hero5_InitVars = {
(ActorFunc)EnEndingHero5_Update,
(ActorFunc)EnEndingHero5_Draw
};
*/
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/EnEndingHero5_Init.asm")
extern SkeletonHeader D_0600A850;
extern AnimationHeader D_06002FA0;
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/EnEndingHero5_Destroy.asm")
extern Gfx D_060070C0[];
extern Gfx D_06006FB0[];
extern Gfx D_06006E80[];
extern Gfx D_06006D70[];
extern Gfx D_0600A390[];
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/func_80C23980.asm")
void EnEndingHero5_Init(Actor* thisx, GlobalContext* globalCtx) {
EnEndingHero5* this = THIS;
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/func_80C2399C.asm")
this->actor.unkA0.mass = 0xFF;
Actor_SetScale(&this->actor, 0.01f);
this->actor.unk1F = 6;
this->actor.gravity = -3.0f;
SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->limbDrawTable,
this->transitionDrawTable, 17);
Actor_SetDrawParams(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f);
this->unk25C = this->actor.params;
func_80C23980(this);
}
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/EnEndingHero5_Update.asm")
void EnEndingHero5_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/func_80C23A30.asm")
void func_80C23980(EnEndingHero5* this) {
this->unk258 = 1;
this->actionFunc = func_80C2399C;
}
GLOBAL_ASM("asm/non_matchings/ovl_En_Ending_Hero5_0x80C238C0/EnEndingHero5_Draw.asm")
void func_80C2399C(EnEndingHero5* this, GlobalContext* globalCtx) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
}
void EnEndingHero5_Update(Actor* thisx, GlobalContext* globalCtx) {
EnEndingHero5* this = THIS;
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
func_800B78B8(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
Gfx* D_80C23BF0[] = { D_060070C0, D_06006FB0, D_06006E80, D_06006D70, D_0600A390 };
void func_80C23A30(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
EnEndingHero5* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx);
if (limbIndex == 15) {
gSPDisplayList(oGfxCtx->polyOpa.p++, D_80C23BF0[this->unk25C]);
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
void EnEndingHero5_Draw(Actor* thisx, GlobalContext* globalCtx) {
EnEndingHero5* this = THIS;
func_8012C28C(globalCtx->state.gfxCtx);
func_8012C2DC(globalCtx->state.gfxCtx);
OPEN_DISPS(globalCtx->state.gfxCtx);
switch (this->unk25C) {
case 0:
gDPSetEnvColor(oGfxCtx->polyOpa.p++, 170, 10, 70, 255);
break;
case 1:
gDPSetEnvColor(oGfxCtx->polyOpa.p++, 170, 200, 255, 255);
break;
case 2:
gDPSetEnvColor(oGfxCtx->polyOpa.p++, 0, 230, 70, 255);
break;
case 3:
gDPSetEnvColor(oGfxCtx->polyOpa.p++, 200, 0, 150, 255);
break;
case 4:
gDPSetEnvColor(oGfxCtx->polyOpa.p++, 245, 155, 0, 255);
break;
}
SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL,
func_80C23A30, &this->actor);
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
@@ -5,9 +5,16 @@
struct EnEndingHero5;
typedef void (*EnEndingHero5ActionFunc)(struct BgHakaCurtain*, GlobalContext*);
typedef struct EnEndingHero5 {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x11C];
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s limbDrawTable[17];
/* 0x1EE */ Vec3s transitionDrawTable[17];
/* 0x254 */ EnEndingHero5ActionFunc actionFunc;
/* 0x258 */ u16 unk258;
/* 0x25C */ s32 unk25C;
} EnEndingHero5; // size = 0x260
extern const ActorInit En_Ending_Hero5_InitVars;