mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Merge pull request #330 from Cuyler36:match_camera2
Match m_camera2 fully
This commit is contained in:
+5
-5
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+230
-198
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user