mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
ending_hero5 OK (#40)
* ending_hero5 OK * Formatting * Fixed formatting and changed colors to decimal
This commit is contained in:
+69
-70
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user