Merge pull request #330 from Cuyler36:match_camera2

Match m_camera2 fully
This commit is contained in:
Cuyler36
2024-04-27 15:07:27 -04:00
committed by GitHub
5 changed files with 2783 additions and 2942 deletions
+5 -5
View File
@@ -9,11 +9,11 @@
extern "C" {
#endif
#define BG2D_FLAGS_1 (1 << 0)
#define BG2D_FLAGS_2 (1 << 1)
#define BG2D_FLAGS_AC_THRESHOLD (1 << 2)
#define BG2D_FLAGS_LOAD_S2DEX2 (1 << 3)
#define BG2D_FLAGS_COPY (1 << 4)
#define BG2D_FLAGS_SAVE_OTHERMODE (1 << 0) /* Keep othermode settings */
#define BG2D_FLAGS_SAVE_COMBINER (1 << 1) /* Keep combiner settings */
#define BG2D_FLAGS_AC_THRESHOLD (1 << 2) /* Alpha compare uses threshold */
#define BG2D_FLAGS_LOAD_S2DEX2 (1 << 3) /* Load S2DEX2 ucode */
#define BG2D_FLAGS_COPY (1 << 4) /* Direct copy instead of combined */
typedef struct prerender_s {
/* 0x00 */ u16 width;
+9 -8
View File
@@ -48,7 +48,7 @@ extern void wallpaper_draw1(PreRenderBackground2DParams* bg2D, Gfx** gfxp) {
bg->b.frameW = bg2D->width * (1 << 2);
bg->b.frameH = bg2D->height * (1 << 2);
if (!(bg2D->flags & BG2D_FLAGS_1)) {
if (!(bg2D->flags & BG2D_FLAGS_SAVE_OTHERMODE)) {
gDPSetOtherMode(gfx++, bg2D->tt | G_CYC_COPY, alphaCompare);
}
@@ -60,14 +60,14 @@ extern void wallpaper_draw1(PreRenderBackground2DParams* bg2D, Gfx** gfxp) {
bg->b.tmemH = (1 << 10) / bg2D->yScale;
bg->s.imageYorig = bg->b.imageY;
if (!(bg2D->flags & BG2D_FLAGS_1)) {
if (!(bg2D->flags & BG2D_FLAGS_SAVE_OTHERMODE)) {
gDPSetOtherMode(gfx++, bg2D->tt | G_AD_DISABLE | G_CD_DISABLE | G_TC_FILT,
AA_EN | CVG_X_ALPHA | ALPHA_CVG_SEL |
GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_BL, G_BL_1MA) |
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_BL, G_BL_1MA) | alphaCompare);
}
if (!(bg2D->flags & BG2D_FLAGS_2)) {
if (!(bg2D->flags & BG2D_FLAGS_SAVE_COMBINER)) {
gDPSetCombineLERP(gfx++, 0, 0, 0, TEXEL0, 0, 0, 0, 1, 0, 0, 0, TEXEL0, 0, 0, 0, 1);
}
@@ -202,8 +202,9 @@ extern void PreRender_CopyRGBC(PreRender* render, Gfx** gfxp, int width, int hei
G_AC_NONE | G_ZS_PRIM | G_RM_OPA_SURF | G_RM_OPA_SURF2);
gDPSetCombineLERP(gfx++, 0, 0, 0, TEXEL0, 0, 0, 0, 1, 0, 0, 0, TEXEL0, 0, 0, 0, 1);
wallpaper_draw(&gfx, render->framebuffer_bak, 0, render->width_bak, render->height_bak, 0, 2, 0, 0, width, height,
1.0f, 1.0f, 11);
wallpaper_draw(&gfx, render->framebuffer_bak, 0, render->width_bak, render->height_bak, G_IM_FMT_RGBA, G_IM_SIZ_16b,
0, 0, width, height, 1.0f, 1.0f,
BG2D_FLAGS_SAVE_OTHERMODE | BG2D_FLAGS_SAVE_COMBINER | BG2D_FLAGS_LOAD_S2DEX2);
gfx = gfx_SetUpCFB(gfx, render->framebuffer_bak, render->width_bak, render->height_bak);
@@ -259,9 +260,9 @@ extern void PreRender_CopyRGBC(PreRender* render, Gfx** gfxp, int width, int hei
h = lrt + remain;
gDPLoadTextureTile(gfx++, render->framebuffer_bak, G_IM_FMT_I, G_IM_SIZ_8b, (render->width_bak << 1),
(render->height_bak << 1), (uls * 2), ult, ((lrs_max * 2) - 1), /* this has issues */
(lrt_max - 1), 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
(render->height_bak << 1), (uls * 2), ult, ((lrs_max * 2) - 1), (lrt_max - 1), 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gSPTextureRectangle(gfx++, ((u32)lrs) * 4, ((u32)lrt) << G_TEXTURE_IMAGE_FRAC, ((u32)w) << G_TEXTURE_IMAGE_FRAC,
((u32)h) << G_TEXTURE_IMAGE_FRAC, G_TX_RENDERTILE, (uls * 2) << 5, ult << 5, (1 << 1) << 10,
+2 -2
View File
@@ -24,8 +24,8 @@ ACTOR_PROFILE Mural_Profile = {
NULL,
};
static u8 tex[aML_MURAL_NUM][(32 * 32) / 2];
static u16 pal[aML_MURAL_NUM][16];
static u8 tex[aML_MURAL_NUM][(32 * 32) / 2] ATTRIBUTE_ALIGN(32);
static u16 pal[aML_MURAL_NUM][16] ATTRIBUTE_ALIGN(32);
static void Mural_Actor_ct(ACTOR* actorx, GAME* game) {
MURAL_ACTOR* mural = (MURAL_ACTOR*)actorx;
+2537 -2729
View File
File diff suppressed because it is too large Load Diff
+230 -198
View File
@@ -8,251 +8,283 @@
#include "sys_matrix.h"
static void mSM_setup_view(Submenu* submenu, GRAPH* graph, int init_flag) {
Gfx* gfx;
Mtx* mtx;
View* view;
Gfx* gfx;
Mtx* mtx;
View* view;
if (init_flag) {
mtx = GRAPH_ALLOC_TYPE(graph, Mtx, 1);
mFont_CulcOrthoMatrix(mtx);
submenu->overlay->projection_matrix = mtx;
}
else {
mtx = submenu->overlay->projection_matrix;
}
OPEN_DISP(graph);
gfx = NOW_POLY_OPA_DISP;
if (init_flag == FALSE) {
if (submenu->mode != 4) {
view = &((GAME_PLAY*)gamePT)->view;
}
else {
view = &((GAME_TRADEMARK*)gamePT)->view; // I'm not sure this is the correct game subclass
if (init_flag) {
mtx = GRAPH_ALLOC_TYPE(graph, Mtx, 1);
mFont_CulcOrthoMatrix(mtx);
submenu->overlay->projection_matrix = mtx;
} else {
mtx = submenu->overlay->projection_matrix;
}
gDPPipeSync(gfx++);
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, view->screen.l, view->screen.top, view->screen.r, view->screen.bottom);
gSPViewport(gfx++, &view->viewport);
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, 640, 480);
}
OPEN_DISP(graph);
gfx = NOW_POLY_OPA_DISP;
gSPMatrix(gfx++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
if (init_flag == FALSE) {
if (submenu->mode != 4) {
view = &((GAME_PLAY*)gamePT)->view;
} else {
view = &((GAME_TRADEMARK*)gamePT)->view; // I'm not sure this is the correct game subclass
}
SET_POLY_OPA_DISP(gfx);
CLOSE_DISP(graph);
gDPPipeSync(gfx++);
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, view->screen.l, view->screen.top, view->screen.r, view->screen.bottom);
gSPViewport(gfx++, &view->viewport);
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, 640, 480);
}
gSPMatrix(gfx++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
SET_POLY_OPA_DISP(gfx);
CLOSE_DISP(graph);
}
static void mSM_change_view(GRAPH* graph, s16 angle, int width, int height, f32 eye_dist, f32 y_lookAt, f32 vp_x, f32 vp_y) {
static Vp viewport_data = {
{ 0, 0, 511, 0 },
{ 0, 0, 511, 0 }
};
static void mSM_change_view(GRAPH* graph, s16 angle, int width, int height, f32 eye_dist, f32 y_lookAt, f32 vp_x,
f32 vp_y) {
static Vp viewport_data = { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } };
static Lights0 light_data = {
{ { 105, 90, 90 }, 0, { 105, 90, 90 }, 0 }, // Ambient
{ { { 255, 255, 245 }, 0, { 255, 255, 245 }, 0, { 0, 60, 60 }, 0 } } // Light
};
static Lights0 light_data = {
{ { 105, 90, 90 }, 0, { 105, 90, 90 }, 0 }, // Ambient
{ { { 255, 255, 245 }, 0, { 255, 255, 245 }, 0, { 0, 60, 60 }, 0 } } // Light
};
Vp* viewport = GRAPH_ALLOC_TYPE(graph, Vp, 1);
Mtx* mtx = GRAPH_ALLOC_TYPE(graph, mtx, 1);
u16 persp_norm;
f32 y_eye;
f32 z_eye;
Vp* viewport = GRAPH_ALLOC_TYPE(graph, Vp, 1);
Mtx* mtx = GRAPH_ALLOC_TYPE(graph, mtx, 1);
u16 persp_norm;
f32 y_eye;
f32 z_eye;
if (viewport == NULL) {
viewport = &viewport_data;
}
else {
viewport->vp.vscale[0] = width << 1;
viewport->vp.vtrans[0] = (width << 1) + (s16)vp_x;
viewport->vp.vscale[1] = height << 1;
viewport->vp.vtrans[1] = (height << 1) + (s16)vp_y;
viewport->vp.vscale[2] = 511;
viewport->vp.vtrans[2] = 511;
if (viewport == NULL) {
viewport = &viewport_data;
} else {
viewport->vp.vscale[0] = width << 1;
viewport->vp.vtrans[0] = (width << 1) + (s16)vp_x;
viewport->vp.vscale[3] = 0;
viewport->vp.vtrans[3] = 0;
}
viewport->vp.vscale[1] = height << 1;
viewport->vp.vtrans[1] = (height << 1) + (s16)vp_y;
OPEN_DISP(graph);
viewport->vp.vscale[2] = 511;
viewport->vp.vtrans[2] = 511;
gSPViewport(NOW_POLY_OPA_DISP++, viewport);
viewport->vp.vscale[3] = 0;
viewport->vp.vtrans[3] = 0;
}
CLOSE_DISP(graph);
OPEN_DISP(graph);
if (width != 256) {
guPerspective(
mtx,
&persp_norm,
35.0f,
(f32)width / (f32)height,
1.0f,
2000.0f,
1.0f
);
}
else {
guPerspective(
mtx,
&persp_norm,
20.0f,
(f32)width / (f32)height,
100.0f,
800.0f,
1.0f
);
}
gSPViewport(NOW_POLY_OPA_DISP++, viewport);
OPEN_DISP(graph);
CLOSE_DISP(graph);
gSPPerspNormalize(NOW_POLY_OPA_DISP++, persp_norm);
gSPMatrix(NOW_POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
if (width != 256) {
guPerspective(mtx, &persp_norm, 35.0f, (f32)width / (f32)height, 1.0f, 2000.0f, 1.0f);
} else {
guPerspective(mtx, &persp_norm, 20.0f, (f32)width / (f32)height, 100.0f, 800.0f, 1.0f);
}
CLOSE_DISP(graph);
OPEN_DISP(graph);
if (angle == DEG2SHORT_ANGLE(90.0f)) {
angle = 0x4100;
}
else if (angle == DEG2SHORT_ANGLE(-90.0f)) {
angle = -0x3F00;
}
gSPPerspNormalize(NOW_POLY_OPA_DISP++, persp_norm);
gSPMatrix(NOW_POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
y_eye = y_lookAt + eye_dist * sin_s(angle);
z_eye = eye_dist * cos_s(angle);
CLOSE_DISP(graph);
if (angle < DEG2SHORT_ANGLE(-90.0f) || angle > DEG2SHORT_ANGLE(90.0f)) {
guLookAt(
mtx,
0.0f, y_eye, z_eye,
0.0f, y_lookAt, 0.0f,
0.0f, -1.0f, 0.0f
);
}
else {
guLookAt(
mtx,
0.0f, y_eye, z_eye,
0.0f, y_lookAt, 0.0f,
0.0f, 1.0f, 0.0f
);
}
if (angle == DEG2SHORT_ANGLE(90.0f)) {
angle = 0x4100;
} else if (angle == DEG2SHORT_ANGLE(-90.0f)) {
angle = -0x3F00;
}
OPEN_DISP(graph);
y_eye = y_lookAt + eye_dist * sin_s(angle);
z_eye = eye_dist * cos_s(angle);
gSPMatrix(NOW_POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
gSPSetLights0(NOW_POLY_OPA_DISP++, light_data);
SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP++, 255, 255, 255, 255, 1000, 1000));
if (angle < DEG2SHORT_ANGLE(-90.0f) || angle > DEG2SHORT_ANGLE(90.0f)) {
guLookAt(mtx, 0.0f, y_eye, z_eye, 0.0f, y_lookAt, 0.0f, 0.0f, -1.0f, 0.0f);
} else {
guLookAt(mtx, 0.0f, y_eye, z_eye, 0.0f, y_lookAt, 0.0f, 0.0f, 1.0f, 0.0f);
}
CLOSE_DISP(graph);
OPEN_DISP(graph);
gSPMatrix(NOW_POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
gSPSetLights0(NOW_POLY_OPA_DISP++, light_data);
SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP++, 255, 255, 255, 255, 1000, 1000));
CLOSE_DISP(graph);
}
static void mSM_set_char_matrix(GRAPH* graph) {
OPEN_DISP(graph);
gSPMatrix(NOW_POLY_OPA_DISP++, &Mtx_clear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
CLOSE_DISP(graph);
OPEN_DISP(graph);
gSPMatrix(NOW_POLY_OPA_DISP++, &Mtx_clear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
CLOSE_DISP(graph);
}
static void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int mode) {
if (x < (640-1)) {
int width = prerender->width_bak;
if (x < (640 - 1)) {
u32 width = prerender->width_bak;
if (x > -width) {
int height = prerender->height_bak;
if (x > -width) {
int height = prerender->height_bak;
if (y > -height && y < (480-1)) {
int x_max;
int x_min;
int y_max;
int y_min;
u8* color_img_buf;
u8* texture_img_buf;
int w;
int h;
if (y > -height && y < (480 - 1)) {
int x_max;
int x_min;
int y_max;
int y_min;
u8* color_img_buf;
u8* texture_img_buf;
u32 w;
u32 h;
u32 tmem_line;
u32 uls;
u32 ult;
u32 lrs;
u32 lrt;
u32 width2;
u32 height2;
u32 lrt2;
if (x < 0) {
x_max = width + x;
x_min = -x;
x = 0;
} else {
x_min = 0;
if (x < 0) {
x_max = width + x;
x_min = -x;
x = 0;
if (x + width >= 640) {
x_max = 640 - x;
} else {
x_max = width;
}
}
if (y < 0) {
y_max = height + y;
y_min = -y;
y = 0;
} else {
y_min = 0;
if (y + height >= 480) {
y_max = (480 - 1) - y;
} else {
y_max = height;
}
}
if (mode == 0) {
color_img_buf = prerender->framebuffer_bak;
w = width;
height = height;
uls = x;
ult = y;
lrt = y_min;
lrs = x_min;
width2 = 640;
height2 = 480;
} else {
texture_img_buf = prerender->framebuffer_bak;
w = 640;
h = 480;
uls = x_min;
ult = y_min;
lrs = x;
lrt = y;
width2 = width;
height2 = height;
}
// TODO: finish
tmem_line = (1 << 12) / (u32)((x_max + 3) << 1);
lrt2 = (x_max + uls) - 1;
if (mode) {
Gfx* gfx;
OPEN_DISP(graph);
gfx = NOW_POLY_OPA_DISP;
prerender->width = 640;
prerender->height = 480;
PreRender_CopyRGBC(prerender, &gfx, x - x_min, y - y_min);
SET_POLY_OPA_DISP(gfx);
CLOSE_DISP(graph);
} else {
OPEN_DISP(graph);
gDPPipeSync(NOW_POLY_OPA_DISP++);
gSPClearGeometryMode(NOW_POLY_OPA_DISP++, 0xFFFFFF);
gDPSetOtherMode(NOW_POLY_OPA_DISP++,
G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE |
G_TL_TILE | G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE,
G_AC_NONE | G_ZS_PRIM | G_RM_NOOP | G_RM_NOOP2);
gDPSetColorImage(NOW_POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, color_img_buf);
gDPSetScissor(NOW_POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, width, height);
while (y_max > 0) {
if (tmem_line > y_max) {
tmem_line = y_max;
}
gDPLoadTextureTile(NEXT_POLY_OPA_DISP, texture_img_buf, G_IM_FMT_RGBA, G_IM_SIZ_16b, width2,
height2, uls, ult, lrt2, (ult + tmem_line - 1), 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
gSPTextureRectangle(NEXT_POLY_OPA_DISP, (lrs) * 4, (lrt) << G_TEXTURE_IMAGE_FRAC,
(lrs + (x_max - 1)) << G_TEXTURE_IMAGE_FRAC,
(lrt + (tmem_line - 1)) << G_TEXTURE_IMAGE_FRAC, G_TX_RENDERTILE, uls << 5,
ult << 5, (1 << 1) << 10, 1 << 10);
y_max -= tmem_line;
ult += tmem_line;
lrt += tmem_line;
}
CLOSE_DISP(graph);
}
}
}
else {
x_min = 0;
if (x + width >= 640) {
x_max = 640 - x;
}
else {
x_max = width;
}
}
if (y < 0) {
y_max = height + y;
y_min = -y;
y = 0;
}
else {
y_min = 0;
if (y + height >= 480) {
y_max = (480 - 1) - y;
}
else {
y_max = height;
}
}
// TODO: finish
if (mode == 0) {
}
else {
}
}
}
}
// gDPPipeSync(NOW_POLY_OPA_DISP++)
// gSPClearGeometryMode(NOW_POLY_OPA_DISP++, 0xFFFFFF)
// gDPSetOtherMode(NOW_POLY_OPA_DISP++, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PRIM | G_RM_NOOP | G_RM_NOOP2)
// gDPSetColorImage(NOW_POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, color_image_buf);
// gDPSetScissor(NOW_POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, width, height);
// gDPPipeSync(NOW_POLY_OPA_DISP++)
// gSPClearGeometryMode(NOW_POLY_OPA_DISP++, 0xFFFFFF)
// gDPSetOtherMode(NOW_POLY_OPA_DISP++, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP |
// G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PRIM | G_RM_NOOP
// | G_RM_NOOP2) gDPSetColorImage(NOW_POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, color_image_buf);
// gDPSetScissor(NOW_POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, width, height);
// LOOP
// [gDPLoadTextureTile]
// gDPSetTextureImage(NOW_POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, some_width, texture_img_buf);
// gDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD)
// gDPLoadSync()
// gDPLoadTile(G_TX_LOADTILE, ...)
// gDPPipeSync()
// gDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD)
// gDPSetTileSize(G_TX_RENDERTILE, ...)
//
// [gSPTextureRectangle]
// gTexRect(..., G_TX_RENDERTILE)
// gDPHalf1(...)
// gDPHalf2(...)
// LOOP
// [gDPLoadTextureTile]
// gDPSetTextureImage(NOW_POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, some_width, texture_img_buf);
// gDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
// G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD) gDPLoadSync() gDPLoadTile(G_TX_LOADTILE, ...)
// gDPPipeSync()
// gDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
// G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD) gDPSetTileSize(G_TX_RENDERTILE, ...)
//
// [gSPTextureRectangle]
// gTexRect(..., G_TX_RENDERTILE)
// gDPHalf1(...)
// gDPHalf2(...)
}
static void mSM_set_drawMode(GRAPH* graph, PreRender* prerender, f32 dist, f32 height, s16 angle) {
// TODO
// TODO
}
static int mSM_get_groupNo(mActor_name_t item) {
return ITEM_NAME_GET_INDEX(item);
return ITEM_NAME_GET_INDEX(item);
}
typedef struct inventory_icon_info_s {
u16* pal;
u8* tex;
u16* pal;
u8* tex;
} mSM_inventory_icon_info_c;
static void mSM_set_dl_item(GRAPH* graph, f32 x, f32 y, f32 scale, mSM_inventory_icon_info_c* icon_info, u16* palette, u8 l, rgba_t* color, int draw_shadow, int draw_mark) {
// TODO
static void mSM_set_dl_item(GRAPH* graph, f32 x, f32 y, f32 scale, mSM_inventory_icon_info_c* icon_info, u16* palette,
u8 l, rgba_t* color, int draw_shadow, int draw_mark) {
// TODO
}