mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-07-06 03:44:32 -04:00
2343 lines
78 KiB
C
2343 lines
78 KiB
C
#include "m_submenu_ovl.h"
|
|
|
|
#include "m_font.h"
|
|
#include "m_play.h"
|
|
#include "m_trademark.h"
|
|
#include "m_rcp.h"
|
|
#include "libultra/libultra.h"
|
|
#include "sys_matrix.h"
|
|
#include "libforest/emu64/emu64_wrapper.h"
|
|
#include "m_inventory_ovl.h"
|
|
#include "m_hboard_ovl.h"
|
|
#include "m_timeIn_ovl.h"
|
|
#include "m_ledit_ovl.h"
|
|
#include "m_map_ovl.h"
|
|
#include "m_notice_ovl.h"
|
|
#include "m_repay_ovl.h"
|
|
#include "m_mscore_ovl.h"
|
|
#include "m_birthday_ovl.h"
|
|
#include "m_editor_ovl.h"
|
|
#include "m_mailbox_ovl.h"
|
|
#include "m_board_ovl.h"
|
|
#include "m_address_ovl.h"
|
|
#include "m_haniwa_ovl.h"
|
|
#include "m_editEndChk_ovl.h"
|
|
#include "m_warning_ovl.h"
|
|
#include "m_cpmail_ovl.h"
|
|
#include "m_cpwarning_ovl.h"
|
|
#include "m_cpedit_ovl.h"
|
|
#include "m_catalog_ovl.h"
|
|
#include "m_music_ovl.h"
|
|
#include "m_bank_ovl.h"
|
|
#include "m_needlework_ovl.h"
|
|
#include "m_cporiginal_ovl.h"
|
|
#include "m_design_ovl.h"
|
|
#include "m_gba_ovl.h"
|
|
#include "m_diary_ovl.h"
|
|
#include "m_calendar_ovl.h"
|
|
#include "m_passwordMake_ovl.h"
|
|
#include "m_passwordChk_ovl.h"
|
|
#include "m_tag_ovl.h"
|
|
#include "m_hand_ovl.h"
|
|
#include "m_haniwaPortrait_ovl.h"
|
|
|
|
static Submenu_Overlay_c ovl_base;
|
|
|
|
static void mSM_setup_view(Submenu* submenu, GRAPH* graph, int init_flag) {
|
|
Mtx* mtx;
|
|
|
|
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_POLY_OPA_DISP(graph);
|
|
|
|
if (init_flag == FALSE) {
|
|
View* view;
|
|
|
|
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
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetScissor(POLY_OPA_DISP++, G_SC_NON_INTERLACE, view->screen.l, view->screen.top, view->screen.r,
|
|
view->screen.bottom);
|
|
gSPViewport(POLY_OPA_DISP++, &view->viewport);
|
|
gDPSetScissor(POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, 640, 480);
|
|
}
|
|
|
|
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
|
|
|
CLOSE_POLY_OPA_DISP(graph);
|
|
}
|
|
|
|
static void mSM_change_view(GRAPH* graph, f32 eye_dist, f32 y_lookAt, f32 vp_x, f32 vp_y, s16 angle, int width,
|
|
int height) {
|
|
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
|
|
};
|
|
|
|
Vp* viewport = GRAPH_ALLOC_TYPE(graph, Vp, 1);
|
|
Mtx* mtx = GRAPH_ALLOC_TYPE(graph, Mtx, 1);
|
|
Mtx* view_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)(int)vp_x;
|
|
|
|
viewport->vp.vscale[1] = height << 1;
|
|
viewport->vp.vtrans[1] = (height << 1) + (s16)(int)vp_y;
|
|
|
|
viewport->vp.vtrans[2] = 511;
|
|
viewport->vp.vscale[2] = 511;
|
|
|
|
viewport->vp.vtrans[3] = 0;
|
|
viewport->vp.vscale[3] = 0;
|
|
}
|
|
|
|
OPEN_DISP(graph);
|
|
|
|
gSPViewport(NOW_POLY_OPA_DISP++, viewport);
|
|
|
|
CLOSE_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);
|
|
}
|
|
|
|
OPEN_DISP(graph);
|
|
|
|
gSPPerspNormalize(NOW_POLY_OPA_DISP++, persp_norm);
|
|
gSPMatrix(NOW_POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
|
|
|
CLOSE_DISP(graph);
|
|
|
|
if (angle == DEG2SHORT_ANGLE(90.0f)) {
|
|
angle = 0x4100;
|
|
} else if (angle == DEG2SHORT_ANGLE(-90.0f)) {
|
|
angle = -0x3F00;
|
|
}
|
|
|
|
y_eye = y_lookAt + eye_dist * sin_s(angle);
|
|
z_eye = eye_dist * cos_s(angle);
|
|
|
|
if (angle < DEG2SHORT_ANGLE(-90.0f) || angle >= DEG2SHORT_ANGLE(90.0f)) {
|
|
guLookAt(view_mtx, 0.0f, y_eye, z_eye, 0.0f, y_lookAt, 0.0f, 0.0f, -1.0f, 0.0f);
|
|
} else {
|
|
guLookAt(view_mtx, 0.0f, y_eye, z_eye, 0.0f, y_lookAt, 0.0f, 0.0f, 1.0f, 0.0f);
|
|
}
|
|
|
|
OPEN_DISP(graph);
|
|
|
|
gSPMatrix(NOW_POLY_OPA_DISP++, view_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_POLY_OPA_DISP(graph);
|
|
|
|
gSPMatrix(POLY_OPA_DISP++, &Mtx_clear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
|
|
CLOSE_POLY_OPA_DISP(graph);
|
|
}
|
|
|
|
static void mSM_cbuf_copy(GRAPH* graph, PreRender* prerender, int x, int y, int mode) {
|
|
int temp;
|
|
int temp0;
|
|
int src_w;
|
|
int src_h;
|
|
int dst_w;
|
|
int dst_h;
|
|
int uls;
|
|
int ult;
|
|
int lrs;
|
|
int lrt;
|
|
int tmem_line;
|
|
int y_min;
|
|
int x_min;
|
|
int x_max;
|
|
int y_max;
|
|
int tex_wd;
|
|
void* src_buffer;
|
|
void* dst_buffer;
|
|
|
|
if (x >= (640 - 1) || x <= -prerender->width_bak || y <= -prerender->height_bak || y >= (480 - 1)) {
|
|
return;
|
|
}
|
|
|
|
if (x < 0) {
|
|
x_max = prerender->width_bak + x;
|
|
x_min = -x;
|
|
x = 0;
|
|
} else {
|
|
x_min = 0;
|
|
|
|
if (x + prerender->width_bak >= 640) {
|
|
x_max = 640 - x;
|
|
} else {
|
|
x_max = prerender->width_bak;
|
|
}
|
|
}
|
|
|
|
if (y < 0) {
|
|
y_max = prerender->height_bak + y;
|
|
y_min = -y;
|
|
y = 0;
|
|
} else {
|
|
y_min = 0;
|
|
|
|
if (y + prerender->height_bak >= 480) {
|
|
y_max = (480 - 1) - y;
|
|
} else {
|
|
y_max = prerender->height_bak;
|
|
}
|
|
}
|
|
|
|
if (mode == 0) {
|
|
src_w = 640;
|
|
src_h = 480;
|
|
dst_w = prerender->width_bak;
|
|
dst_h = prerender->height_bak;
|
|
uls = x;
|
|
ult = y;
|
|
lrt = y_min;
|
|
lrs = x_min;
|
|
src_buffer = prerender->framebuffer_bak;
|
|
} else {
|
|
src_w = prerender->width_bak;
|
|
src_h = prerender->height_bak;
|
|
dst_w = 640;
|
|
dst_h = 480;
|
|
uls = x_min;
|
|
ult = y_min;
|
|
lrt = y;
|
|
lrs = x;
|
|
dst_buffer = prerender->framebuffer_bak;
|
|
}
|
|
|
|
tmem_line = (4 << 10) / ((((x_max + 4) - 1) & ~(4 - 1)) * 2);
|
|
temp0 = uls + (x_max - 1);
|
|
tex_wd = (lrs + x_max - 1) << 2;
|
|
lrs <<= 2;
|
|
|
|
OPEN_DISP(graph);
|
|
if (mode) {
|
|
Gfx* 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);
|
|
} else {
|
|
gDPPipeSync(NEXT_POLY_OPA_DISP);
|
|
gSPClearGeometryMode(NEXT_POLY_OPA_DISP, 0xFFFFFF);
|
|
gDPSetOtherMode(NEXT_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(NEXT_POLY_OPA_DISP, G_IM_FMT_RGBA, G_IM_SIZ_16b, dst_w, src_buffer);
|
|
gDPSetScissor(NEXT_POLY_OPA_DISP, G_SC_NON_INTERLACE, 0, 0, dst_w, dst_h);
|
|
|
|
while (y_max > 0) {
|
|
if (tmem_line > y_max) {
|
|
tmem_line = y_max;
|
|
}
|
|
|
|
temp = ult + tmem_line - 1;
|
|
gDPLoadTextureTile(NEXT_POLY_OPA_DISP, dst_buffer, G_IM_FMT_RGBA, G_IM_SIZ_16b, src_w, src_h, uls, ult,
|
|
temp0, temp, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
|
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
|
|
|
gSPTextureRectangle(NEXT_POLY_OPA_DISP, lrs, lrt << 2, tex_wd, (lrt + tmem_line - 1) << 2, G_TX_RENDERTILE,
|
|
uls << 5, ult << 5, (4 << 10), (1 << 10));
|
|
|
|
ult += tmem_line;
|
|
lrt += tmem_line;
|
|
y_max -= tmem_line;
|
|
}
|
|
}
|
|
|
|
CLOSE_DISP(graph);
|
|
}
|
|
|
|
static void mSM_set_drawMode(GRAPH* graph, PreRender* prerender, f32 eye_dist, f32 eye_height, s16 angle) {
|
|
static Vp viewport_data = { 0, 0, 511, 0, 0, 0, 511, 0 };
|
|
static Lights1 light_data = {
|
|
/* Ambient */
|
|
105, 90, 90, /* ambient color */
|
|
0, /* pad */
|
|
105, 90, 90, /* ambient color copy */
|
|
0, /* pad */
|
|
|
|
/* Light */
|
|
255, 255, 245, /* color */
|
|
0, /* pad */
|
|
255, 255, 245, /* color copy */
|
|
0, /* pad */
|
|
0, 60, 60, /* direction */
|
|
0 /* pad */
|
|
};
|
|
|
|
int width = prerender->width_bak;
|
|
int height = prerender->height_bak;
|
|
|
|
OPEN_DISP(graph);
|
|
|
|
gDPPipeSync(NEXT_POLY_OPA_DISP);
|
|
gSPClearGeometryMode(NEXT_POLY_OPA_DISP, 0xFFFFFF);
|
|
gSPTexture(NEXT_POLY_OPA_DISP, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
|
|
gDPSetCombineMode(NEXT_POLY_OPA_DISP, G_CC_SHADE, G_CC_SHADE);
|
|
gDPSetOtherMode(NEXT_POLY_OPA_DISP,
|
|
G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
|
|
G_TD_CLAMP | G_TP_PERSP | G_CYC_FILL | G_PM_NPRIMITIVE,
|
|
G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2);
|
|
gSPLoadGeometryMode(NEXT_POLY_OPA_DISP, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH);
|
|
gDPSetScissor(NEXT_POLY_OPA_DISP, G_SC_NON_INTERLACE, 0, 0, width, height);
|
|
gSPClipRatio(NEXT_POLY_OPA_DISP, FRUSTRATIO_1);
|
|
gDPSetColorImage(NEXT_POLY_OPA_DISP, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, prerender->zbuffer_bak);
|
|
gDPSetFillColor(NEXT_POLY_OPA_DISP, ((0xFFFC) << 16) | (0xFFFC));
|
|
gDPFillRectangle(NEXT_POLY_OPA_DISP, 0, 0, width - 1, height - 1);
|
|
gDPPipeSync(NEXT_POLY_OPA_DISP);
|
|
gDPSetColorImage(NEXT_POLY_OPA_DISP, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, prerender->framebuffer_bak);
|
|
gDPPipeSync(NEXT_POLY_OPA_DISP);
|
|
gDPSetDepthImage(NEXT_POLY_OPA_DISP, prerender->zbuffer_bak);
|
|
|
|
{
|
|
Vp* vp = GRAPH_ALLOC_TYPE(graph, Vp, 1);
|
|
Mtx* projMtx = GRAPH_ALLOC_TYPE(graph, Mtx, 1);
|
|
Mtx* viewMtx = GRAPH_ALLOC_TYPE(graph, Mtx, 1);
|
|
u16 perspNorm;
|
|
|
|
if (vp == NULL) {
|
|
vp = &viewport_data;
|
|
} else {
|
|
vp->vp.vscale[0] = vp->vp.vtrans[0] = width * 2;
|
|
vp->vp.vscale[1] = vp->vp.vtrans[1] = height * 2;
|
|
vp->vp.vscale[2] = vp->vp.vtrans[2] = 511;
|
|
vp->vp.vscale[3] = vp->vp.vtrans[3] = 0;
|
|
}
|
|
|
|
gSPViewport(NEXT_POLY_OPA_DISP, vp);
|
|
|
|
if (width != 256) {
|
|
guPerspective(projMtx, &perspNorm, 35.0f, (f32)width / (f32)height, 1.0f, 2000.0f, 1.0f);
|
|
} else {
|
|
guPerspective(projMtx, &perspNorm, 20.0f, (f32)width / (f32)height, 100.0f, 800.0f, 1.0f);
|
|
}
|
|
|
|
gSPPerspNormalize(NEXT_POLY_OPA_DISP, perspNorm);
|
|
gSPMatrix(NEXT_POLY_OPA_DISP, projMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
|
|
|
{
|
|
f32 yEye;
|
|
f32 zEye;
|
|
|
|
if (angle == DEG2SHORT_ANGLE(90.0f)) {
|
|
angle = 0x4100;
|
|
} else if (angle == DEG2SHORT_ANGLE(-90.0f)) {
|
|
angle = -0x3F00;
|
|
}
|
|
|
|
yEye = eye_height + eye_dist * sin_s(angle);
|
|
zEye = eye_dist * cos_s(angle);
|
|
|
|
if (angle < DEG2SHORT_ANGLE(-90.0f) || angle >= DEG2SHORT_ANGLE(90.0f)) {
|
|
guLookAt(viewMtx, 0.0f, yEye, zEye, 0.0f, eye_height, 0.0f, 0.0f, -1.0f, 0.0f);
|
|
} else {
|
|
guLookAt(viewMtx, 0.0f, yEye, zEye, 0.0f, eye_height, 0.0f, 0.0f, 1.0f, 0.0f);
|
|
}
|
|
}
|
|
|
|
gSPMatrix(NEXT_POLY_OPA_DISP, viewMtx, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
|
gSPSetLights1(NEXT_POLY_OPA_DISP, light_data);
|
|
}
|
|
|
|
SET_POLY_OPA_DISP(gfx_set_fog_nosync(NEXT_POLY_OPA_DISP, 255, 255, 255, 255, 1000, 1000));
|
|
|
|
CLOSE_DISP(graph);
|
|
}
|
|
|
|
static int mSM_get_groupNo(mActor_name_t item) {
|
|
return ITEM_NAME_GET_INDEX(item);
|
|
}
|
|
|
|
typedef struct inventory_icon_info_s {
|
|
u16* pal;
|
|
u8* tex;
|
|
} mSM_inventory_icon_info_c;
|
|
|
|
extern u8 inv_win_mark_tex[];
|
|
|
|
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) {
|
|
f32 rect_xh;
|
|
f32 rect_yh;
|
|
int t;
|
|
int scale_factor;
|
|
|
|
OPEN_POLY_OPA_DISP(graph);
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_THRESHOLD);
|
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, l, color->r, color->g, color->b, color->a);
|
|
|
|
/* Check if we're drawing the shadow or the actual icon */
|
|
if (draw_shadow) {
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 40);
|
|
} else {
|
|
if (color->a == 255) {
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 254);
|
|
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0, TEXEL0,
|
|
PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0);
|
|
} else {
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 40);
|
|
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0,
|
|
TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
|
|
}
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16);
|
|
gDPSetTexturePersp(POLY_OPA_DISP++, G_TP_NONE);
|
|
gDPLoadTLUT_Dolphin(POLY_OPA_DISP++, 15, 16, 1, palette);
|
|
gDPSetTextureImage_Dolphin(POLY_OPA_DISP++, G_IM_FMT_CI, G_IM_SIZ_4b, 32, 32, icon_info->tex);
|
|
gDPSetTile_Dolphin(POLY_OPA_DISP++, G_DOLPHIN_TLUT_DEFAULT_MODE, G_TX_RENDERTILE, 15, GX_MIRROR, GX_MIRROR,
|
|
GX_CLAMP, GX_CLAMP);
|
|
|
|
t = (int)(x * 0.975f);
|
|
x = (160.0f + (f32)t) - scale * 12.0f;
|
|
y = (120.0f - y) - scale * 12.0f;
|
|
scale_factor = (int)((1.0f / scale) * 1365.333333333f);
|
|
|
|
/* Draw 2D rectangle with icon texture */
|
|
if (x < 320.0f) {
|
|
f32 mod = scale * 24.0f;
|
|
|
|
rect_xh = x + mod;
|
|
rect_yh = y + mod;
|
|
|
|
POLY_OPA_DISP = gfx_gSPScisTextureRectangle1(POLY_OPA_DISP, x * 4.0f, y * 4.0f, rect_xh * 4.0f, rect_yh * 4.0f,
|
|
G_TX_RENDERTILE, 0, 0, scale_factor, scale_factor);
|
|
}
|
|
|
|
if (draw_mark) {
|
|
f32 frame_per = (((f32)(gamePT->frame_counter % 40)) * (1.0f / 40.0f)) * 2.0f;
|
|
|
|
if (frame_per > 1.0f) {
|
|
frame_per = 2.0f - frame_per;
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE);
|
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, (int)(frame_per * 90.0f + 95.0f), 0, 255);
|
|
gDPSetEnvColor(POLY_OPA_DISP++, (int)(frame_per * 60.0f), (int)(frame_per * 45.0f + 210.0f),
|
|
(int)(frame_per * 60.0f), 255);
|
|
gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_NONE);
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 8);
|
|
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); // duplicate?
|
|
gDPSetTextureImage_Dolphin(POLY_OPA_DISP++, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, inv_win_mark_tex);
|
|
gDPSetTile_Dolphin(POLY_OPA_DISP++, G_DOLPHIN_TLUT_DEFAULT_MODE, G_TX_RENDERTILE, 0, GX_MIRROR, GX_MIRROR,
|
|
GX_CLAMP, GX_CLAMP);
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 254); // bug? doesn't this undo the previous blend color set?
|
|
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_BLENDPEDECALA, G_CC_BLENDPEDECALA);
|
|
|
|
/* Draw 2D rectangle with mark texture */
|
|
if (x < 320.0f) {
|
|
f32 mod = scale * 24.0f;
|
|
|
|
rect_xh = x + mod;
|
|
rect_yh = y + mod;
|
|
|
|
POLY_OPA_DISP =
|
|
gfx_gSPScisTextureRectangle1(POLY_OPA_DISP, x * 4.0f, y * 4.0f, rect_xh * 4.0f, rect_yh * 4.0f,
|
|
G_TX_RENDERTILE, 0, 0, scale_factor, scale_factor);
|
|
}
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16);
|
|
gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_NONE);
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 8);
|
|
gDPSetTexturePersp(POLY_OPA_DISP++, G_TP_PERSP);
|
|
|
|
CLOSE_POLY_OPA_DISP(graph);
|
|
}
|
|
|
|
extern u16 inv_mwin_leaf_pal[];
|
|
extern u8 inv_mwin_leaf_tex[];
|
|
|
|
extern u16 inv_mwin_haniwa_pal[];
|
|
extern u8 inv_mwin_haniwa_tex[];
|
|
|
|
extern u16 inv_mwin_kaseki2_pal[];
|
|
extern u8 inv_mwin_kaseki2_tex[];
|
|
|
|
extern u16 inv_mwin_unknown_pal[];
|
|
extern u8 inv_mwin_unknown_tex[];
|
|
|
|
extern u16 inv_mwin_pbox2_pal[];
|
|
extern u8 inv_mwin_pbox_tex[];
|
|
|
|
extern u16 inv_mwin_pbox1_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_pbox1_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_pbox2_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_pbox2_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_pbox3_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_pbox3_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_pbox4_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_pbox4_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_pbox5_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_pbox5_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_binsen1_pal[];
|
|
extern u8 inv_mwin_binsen1_tex[];
|
|
extern u8 inv_mwin_binsen2_tex[];
|
|
extern u8 inv_mwin_binsen3_tex[];
|
|
extern u8 inv_mwin_binsen4_tex[];
|
|
|
|
extern u16 inv_mwin_okane1_pal[];
|
|
extern u8 inv_mwin_okane1_tex[];
|
|
extern u8 inv_mwin_okane2_tex[];
|
|
extern u8 inv_mwin_okane3_tex[];
|
|
extern u8 inv_mwin_okane4_tex[];
|
|
|
|
extern u16 inv_mwin_mushi_pal[];
|
|
extern u8 inv_mwin_mushi_tex[];
|
|
extern u16 inv_mwin_ono_pal[];
|
|
extern u8 inv_mwin_ono_tex[];
|
|
extern u16 inv_mwin_scoop_pal[];
|
|
extern u8 inv_mwin_scoop_tex[];
|
|
extern u16 inv_mwin_turi_tex_pal[];
|
|
extern u8 inv_mwin_turi_tex[];
|
|
extern u16 inv_mwin_unbrella_pal[];
|
|
extern u8 inv_mwin_unbrella_tex[];
|
|
extern u16 inv_mwin_mushi_pal[];
|
|
extern u8 inv_mwin_mushi_tex[];
|
|
extern u16 inv_mwin_gmushi_pal[];
|
|
extern u8 inv_mwin_gmushi_tex[];
|
|
extern u16 inv_mwin_gono_pal[];
|
|
extern u8 inv_mwin_gono_tex[];
|
|
extern u16 inv_mwin_gscoop_pal[];
|
|
extern u8 inv_mwin_gscoop_tex[];
|
|
extern u16 inv_mwin_gturi_pal[];
|
|
extern u8 inv_mwin_gturi_tex[];
|
|
extern u16 inv_mwin_ono_pal[];
|
|
extern u8 inv_mwin_ono_tex[];
|
|
extern u8 inv_mwin_ono2_tex[];
|
|
extern u8 inv_mwin_ono3_tex[];
|
|
extern u16 inv_mwin_fuusen_pal[];
|
|
extern u8 inv_mwin_fuusen_tex[];
|
|
extern u16 inv_mwin_kazaguruma_pal[];
|
|
extern u8 inv_mwin_kazaguruma_tex[];
|
|
extern u16 inv_mwin_utiwa_pal[];
|
|
extern u8 inv_mwin_utiwa_tex[];
|
|
|
|
extern u16 inv_mwin_01funa_pal[];
|
|
extern u8 inv_mwin_01funa_tex[];
|
|
extern u16 inv_mwin_02masu_pal[];
|
|
extern u8 inv_mwin_02masu_tex[];
|
|
extern u16 inv_mwin_03koi_pal[];
|
|
extern u8 inv_mwin_03koi_tex[];
|
|
extern u16 inv_mwin_04nishiki_pal[];
|
|
extern u8 inv_mwin_04nishiki_tex[];
|
|
extern u16 inv_mwin_07namazu_pal[];
|
|
extern u8 inv_mwin_07namazu_tex[];
|
|
extern u16 inv_mwin_13bass_pal[];
|
|
extern u8 inv_mwin_13bass_tex[];
|
|
extern u16 inv_mwin_14bassm_pal[];
|
|
extern u8 inv_mwin_14bassm_tex[];
|
|
extern u16 inv_mwin_15bassl_pal[];
|
|
extern u8 inv_mwin_15bassl_tex[];
|
|
extern u16 inv_mwin_12gill_pal[];
|
|
extern u8 inv_mwin_12gill_tex[];
|
|
extern u16 inv_mwin_08oonamazu_pal[];
|
|
extern u8 inv_mwin_08oonamazu_tex[];
|
|
extern u16 inv_mwin_16raigyo_pal[];
|
|
extern u8 inv_mwin_16raigyo_tex[];
|
|
extern u16 inv_mwin_05nigoi_pal[];
|
|
extern u8 inv_mwin_05nigoi_tex[];
|
|
extern u16 inv_mwin_06ugui_pal[];
|
|
extern u8 inv_mwin_06ugui_tex[];
|
|
extern u16 inv_mwin_09oikawa_pal[];
|
|
extern u8 inv_mwin_09oikawa_tex[];
|
|
extern u16 inv_mwin_10tanago_pal[];
|
|
extern u8 inv_mwin_10tanago_tex[];
|
|
extern u16 inv_mwin_11dojyou_pal[];
|
|
extern u8 inv_mwin_11dojyou_tex[];
|
|
extern u16 inv_mwin_19wakasagi_pal[];
|
|
extern u8 inv_mwin_19wakasagi_tex[];
|
|
extern u16 inv_mwin_20ayu_pal[];
|
|
extern u8 inv_mwin_20ayu_tex[];
|
|
extern u16 inv_mwin_21yamame_pal[];
|
|
extern u8 inv_mwin_21yamame_tex[];
|
|
extern u16 inv_mwin_23iwana_pal[];
|
|
extern u8 inv_mwin_23iwana_tex[];
|
|
extern u16 inv_mwin_22niji_pal[];
|
|
extern u8 inv_mwin_22niji_tex[];
|
|
extern u16 inv_mwin_24itou_pal[];
|
|
extern u8 inv_mwin_24itou_tex[];
|
|
extern u16 inv_mwin_25sake_pal[];
|
|
extern u8 inv_mwin_25sake_tex[];
|
|
extern u16 inv_mwin_26kingyo_pal[];
|
|
extern u8 inv_mwin_26kingyo_tex[];
|
|
extern u16 inv_mwin_30pirania_pal[];
|
|
extern u8 inv_mwin_30pirania_tex[];
|
|
extern u16 inv_mwin_31aroana_pal[];
|
|
extern u8 inv_mwin_31aroana_tex[];
|
|
extern u16 inv_mwin_17unagi_pal[];
|
|
extern u8 inv_mwin_17unagi_tex[];
|
|
extern u16 inv_mwin_18donko_pal[];
|
|
extern u8 inv_mwin_18donko_tex[];
|
|
extern u16 inv_mwin_29angel_pal[];
|
|
extern u8 inv_mwin_29angel_tex[];
|
|
extern u16 inv_mwin_28gupi_pal[];
|
|
extern u8 inv_mwin_28gupi_tex[];
|
|
extern u16 inv_mwin_27demekin_pal[];
|
|
extern u8 inv_mwin_27demekin_tex[];
|
|
extern u16 inv_mwin_32kaseki_pal[];
|
|
extern u8 inv_mwin_32kaseki_tex[];
|
|
extern u16 inv_mwin_33zarigani_pal[];
|
|
extern u8 inv_mwin_33zarigani_tex[];
|
|
extern u16 inv_mwin_34kaeru_pal[];
|
|
extern u8 inv_mwin_34kaeru_tex[];
|
|
extern u16 inv_mwin_35medaka_pal[];
|
|
extern u8 inv_mwin_35medaka_tex[];
|
|
extern u16 inv_mwin_36kurage_pal[];
|
|
extern u8 inv_mwin_36kurage_tex[];
|
|
extern u16 inv_mwin_37suzuki_pal[];
|
|
extern u8 inv_mwin_37suzuki_tex[];
|
|
extern u16 inv_mwin_38tai_pal[];
|
|
extern u8 inv_mwin_38tai_tex[];
|
|
extern u16 inv_mwin_39ishidai_pal[];
|
|
extern u8 inv_mwin_39ishidai_tex[];
|
|
extern u16 inv_mwin_40piraruku_pal[];
|
|
extern u8 inv_mwin_40piraruku_tex[];
|
|
|
|
extern u16 inv_mwin_fuku3_pal[];
|
|
extern u8 inv_mwin_fuku3_tex[];
|
|
|
|
extern u16 inv_mwin_mtegami_pal[];
|
|
extern u8 inv_mwin_mtegami_tex[];
|
|
|
|
extern u16 inv_mwin_video_pal[];
|
|
extern u8 inv_mwin_video_tex[];
|
|
|
|
extern u16 inv_mwin_tetyou_pal[];
|
|
extern u8 inv_mwin_tetyou_tex[];
|
|
|
|
extern u16 inv_mwin_pokepi_pal[];
|
|
extern u8 inv_mwin_pokepi_tex[];
|
|
|
|
extern u16 inv_mwin_manga_pal[];
|
|
extern u8 inv_mwin_manga_tex[];
|
|
|
|
extern u16 inv_mwin_ehon_pal[];
|
|
extern u8 inv_mwin_ehon_tex[];
|
|
|
|
extern u16 inv_mwin_GB_pal[];
|
|
extern u8 inv_mwin_GB_tex[];
|
|
|
|
extern u16 inv_mwin_camera2_pal[];
|
|
extern u8 inv_mwin_camera_tex[];
|
|
|
|
extern u16 inv_mwin_tokei_pal[];
|
|
extern u8 inv_mwin_tokei_tex[];
|
|
|
|
extern u16 inv_mwin_hankati_pal[];
|
|
extern u8 inv_mwin_hankati_tex[];
|
|
|
|
extern u16 inv_mwin_glasses_pal[];
|
|
extern u8 inv_mwin_glasses_tex[];
|
|
|
|
extern u16 inv_mwin_aki_pal[];
|
|
extern u8 inv_mwin_akikan_tex[];
|
|
|
|
extern u16 inv_mwin_kutu_pal[];
|
|
extern u8 inv_mwin_kutu_tex[];
|
|
|
|
extern u8 inv_mwin_taiya_tex[];
|
|
|
|
extern u16 inv_mwin_kaseki_pal[];
|
|
extern u8 inv_mwin_kaseki_tex[];
|
|
|
|
extern u16 inv_mwin_ana_pal[];
|
|
extern u8 inv_mwin_ana_tex[];
|
|
|
|
extern u16 inv_mwin_hiougi_pal[];
|
|
extern u8 inv_mwin_hiougi_tex[];
|
|
|
|
extern u16 inv_mwin_hirako_pal[];
|
|
extern u8 inv_mwin_hirako_tex[];
|
|
|
|
extern u16 inv_mwin_hone_pal[];
|
|
extern u8 inv_mwin_hone_tex[];
|
|
|
|
extern u16 inv_mwin_hoshida_pal[];
|
|
extern u8 inv_mwin_hoshida_tex[];
|
|
|
|
extern u16 inv_mwin_sanddollar_pal[];
|
|
extern u8 inv_mwin_sanddollar_tex[];
|
|
|
|
extern u16 inv_mwin_syako_pal[];
|
|
extern u8 inv_mwin_syako_tex[];
|
|
|
|
extern u16 inv_mwin_hora_pal[];
|
|
extern u8 inv_mwin_hora_tex[];
|
|
|
|
extern u16 inv_mwin_sango_pal[];
|
|
extern u8 inv_mwin_sango_tex[];
|
|
|
|
extern u16 inv_mwin_kanban_pal[];
|
|
extern u8 inv_mwin_kanban_tex[];
|
|
|
|
extern u16 inv_mwin_taisou_pal[];
|
|
extern u8 inv_mwin_taisou_tex[];
|
|
|
|
extern u16 inv_mwin_fork_pal[];
|
|
extern u8 inv_mwin_fork_tex[];
|
|
|
|
extern u16 inv_mwin_jyuutan_pal[];
|
|
extern u8 inv_mwin_jyuutan_tex[];
|
|
|
|
extern u16 inv_mwin_kabe2_pal[];
|
|
extern u8 inv_mwin_kabe_tex[];
|
|
|
|
extern u16 inv_mwin_apple_pal[];
|
|
extern u8 inv_mwin_apple_tex[];
|
|
|
|
extern u16 inv_mwin_nuts_pal[];
|
|
extern u8 inv_mwin_nuts_tex[];
|
|
|
|
extern u16 inv_mwin_pear_pal[];
|
|
extern u8 inv_mwin_pear_tex[];
|
|
|
|
extern u16 inv_mwin_peach_pal[];
|
|
extern u8 inv_mwin_peach_tex[];
|
|
|
|
extern u16 inv_mwin_orange_pal[];
|
|
extern u8 inv_mwin_orange_tex[];
|
|
|
|
extern u16 inv_mwin_matutake2_pal[];
|
|
extern u8 inv_mwin_matutake_tex[];
|
|
|
|
extern u16 inv_mwin_ame_pal[];
|
|
extern u8 inv_mwin_ame_tex[];
|
|
|
|
extern u16 inv_mwin_yashi_pal[];
|
|
extern u8 inv_mwin_yashi_tex[];
|
|
|
|
extern u16 inv_mwin_naegi_pal[];
|
|
extern u8 inv_mwin_naegi_tex[];
|
|
|
|
extern u16 inv_mwin_cnaegi_pal[];
|
|
extern u8 inv_mwin_cnaegi_tex[];
|
|
|
|
extern u16 inv_mwin_seed_pal[];
|
|
extern u8 inv_mwin_seed_tex[];
|
|
|
|
extern u16 inv_mwin_onpu_pal[];
|
|
extern u8 inv_mwin_onpu_tex[];
|
|
|
|
extern u16 inv_mwin_nittki_pal[];
|
|
extern u8 inv_mwin_nittki_tex[];
|
|
|
|
extern u16 inv_mwin_1fukubiki_pal[];
|
|
extern u16 inv_mwin_2fukubiki_pal[];
|
|
extern u16 inv_mwin_3fukubiki_pal[];
|
|
extern u16 inv_mwin_4fukubiki_pal[];
|
|
extern u16 inv_mwin_5fukubiki_pal[];
|
|
extern u16 inv_mwin_6fukubiki_pal[];
|
|
extern u16 inv_mwin_7fukubiki_pal[];
|
|
extern u16 inv_mwin_8fukubiki_pal[];
|
|
extern u16 inv_mwin_9fukubiki_pal[];
|
|
extern u16 inv_mwin_10fukubiki_pal[];
|
|
extern u16 inv_mwin_11fukubiki_pal[];
|
|
extern u16 inv_mwin_12fukubiki_pal[];
|
|
|
|
extern u8 inv_mwin_1biki1_tex[];
|
|
extern u8 inv_mwin_1biki2_tex[];
|
|
extern u8 inv_mwin_1biki3_tex[];
|
|
extern u8 inv_mwin_1biki4_tex[];
|
|
extern u8 inv_mwin_1biki5_tex[];
|
|
|
|
extern u16 inv_mwin_01monshiro_pal[];
|
|
extern u8 inv_mwin_01monshiro_tex[];
|
|
extern u16 inv_mwin_02monki_pal[];
|
|
extern u8 inv_mwin_02monki_tex[];
|
|
extern u16 inv_mwin_03kiageha_pal[];
|
|
extern u8 inv_mwin_03kiageha_tex[];
|
|
extern u16 inv_mwin_04ohmurasaki_pal[];
|
|
extern u8 inv_mwin_04ohmurasaki_tex[];
|
|
extern u16 inv_mwin_06minmin_pal[];
|
|
extern u8 inv_mwin_06minmin_tex[];
|
|
extern u16 inv_mwin_07tukutuku_pal[];
|
|
extern u8 inv_mwin_07tukutuku_tex[];
|
|
extern u16 inv_mwin_08higurashi_pal[];
|
|
extern u8 inv_mwin_08higurashi_tex[];
|
|
extern u16 inv_mwin_05abura_pal[];
|
|
extern u8 inv_mwin_05abura_tex[];
|
|
extern u16 inv_mwin_23hati_pal[];
|
|
extern u8 inv_mwin_23hati_tex[];
|
|
extern u16 inv_mwin_10shiokara_pal[];
|
|
extern u8 inv_mwin_10shiokara_tex[];
|
|
extern u16 inv_mwin_09akiakane_pal[];
|
|
extern u8 inv_mwin_09akiakane_tex[];
|
|
extern u16 inv_mwin_11ginyanma_pal[];
|
|
extern u8 inv_mwin_11ginyanma_tex[];
|
|
extern u16 inv_mwin_12oniyanma_pal[];
|
|
extern u8 inv_mwin_12oniyanma_tex[];
|
|
extern u16 inv_mwin_20syouryou_pal[];
|
|
extern u8 inv_mwin_20syouryou_tex[];
|
|
extern u16 inv_mwin_21tonosama_pal[];
|
|
extern u8 inv_mwin_21tonosama_tex[];
|
|
extern u16 inv_mwin_13koorogi_pal[];
|
|
extern u8 inv_mwin_13koorogi_tex[];
|
|
extern u16 inv_mwin_14kirigirisu_pal[];
|
|
extern u8 inv_mwin_14kirigirisu_tex[];
|
|
extern u16 inv_mwin_16suzumushi_pal[];
|
|
extern u8 inv_mwin_16suzumushi_tex[];
|
|
extern u16 inv_mwin_15matumushi_pal[];
|
|
extern u8 inv_mwin_15matumushi_tex[];
|
|
extern u16 inv_mwin_25kanabun_pal[];
|
|
extern u8 inv_mwin_25kanabun_tex[];
|
|
extern u16 inv_mwin_28kabuto_pal[];
|
|
extern u8 inv_mwin_28kabuto_tex[];
|
|
extern u16 inv_mwin_29hirata_pal[];
|
|
extern u8 inv_mwin_29hirata_tex[];
|
|
extern u16 inv_mwin_27tamamushi_pal[];
|
|
extern u8 inv_mwin_27tamamushi_tex[];
|
|
extern u16 inv_mwin_26gomadara_pal[];
|
|
extern u8 inv_mwin_26gomadara_tex[];
|
|
extern u16 inv_mwin_17tentou_pal[];
|
|
extern u8 inv_mwin_17tentou_tex[];
|
|
extern u16 inv_mwin_18nanahoshi_pal[];
|
|
extern u8 inv_mwin_18nanahoshi_tex[];
|
|
extern u16 inv_mwin_19kamakiri_pal[];
|
|
extern u8 inv_mwin_19kamakiri_tex[];
|
|
extern u16 inv_mwin_24genji_pal[];
|
|
extern u8 inv_mwin_24genji_tex[];
|
|
extern u16 inv_mwin_22danna_pal[];
|
|
extern u8 inv_mwin_22danna_tex[];
|
|
extern u16 inv_mwin_30nokogiri_pal[];
|
|
extern u8 inv_mwin_30nokogiri_tex[];
|
|
extern u16 inv_mwin_31miyama_pal[];
|
|
extern u8 inv_mwin_31miyama_tex[];
|
|
extern u16 inv_mwin_32okuwa_pal[];
|
|
extern u8 inv_mwin_32okuwa_tex[];
|
|
extern u16 inv_mwin_33maimai_pal[];
|
|
extern u8 inv_mwin_33maimai_tex[];
|
|
extern u16 inv_mwin_34kera_pal[];
|
|
extern u8 inv_mwin_34kera_tex[];
|
|
extern u16 inv_mwin_35amenbo_pal[];
|
|
extern u8 inv_mwin_35amenbo_tex[];
|
|
extern u16 inv_mwin_36mino_pal[];
|
|
extern u8 inv_mwin_36mino_tex[];
|
|
extern u16 inv_mwin_37dango_pal[];
|
|
extern u8 inv_mwin_37dango_tex[];
|
|
extern u16 inv_mwin_38kumo_pal[];
|
|
extern u8 inv_mwin_38kumo_tex[];
|
|
extern u16 inv_mwin_39ari_pal[];
|
|
extern u8 inv_mwin_39ari_tex[];
|
|
extern u16 inv_mwin_40ka_pal[];
|
|
extern u8 inv_mwin_40ka_tex[];
|
|
extern u16 inv_mwin_hitodama_pal[];
|
|
extern u8 inv_mwin_hitodama1_tex[];
|
|
extern u8 inv_mwin_hitodama2_tex[];
|
|
extern u8 inv_mwin_hitodama3_tex[];
|
|
extern u8 inv_mwin_hitodama4_tex[];
|
|
extern u8 inv_mwin_hitodama5_tex[];
|
|
|
|
extern u16 inv_mwin_fukubukuro_pal[];
|
|
extern u8 inv_mwin_fukubukuro_tex[];
|
|
|
|
extern u16 inv_mwin_fukubukuro2_pal[];
|
|
extern u8 inv_mwin_fukubukuro_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_fukubukuro2_tex_rgb_ci4_pal[];
|
|
extern u8 inv_mwin_fukubukuro2_tex_rgb_ci4[];
|
|
|
|
extern u16 inv_mwin_cabu1_pal[];
|
|
extern u8 inv_mwin_cabu1_tex[];
|
|
extern u8 inv_mwin_cabu2_tex[];
|
|
extern u8 inv_mwin_cabu3_tex[];
|
|
|
|
extern u16 inv_mwin_2cabu1_pal[];
|
|
extern u8 inv_mwin_2cabu1_tex[];
|
|
|
|
static void mSM_draw_item(GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, mActor_name_t item, int present_flag,
|
|
int color_flag, int anim_frame, int shadow_flag, int mark_flag) {
|
|
static mSM_inventory_icon_info_c furniture_tex_data = { inv_mwin_leaf_pal, inv_mwin_leaf_tex };
|
|
static mSM_inventory_icon_info_c haniwa_tex_data = { inv_mwin_haniwa_pal, inv_mwin_haniwa_tex };
|
|
static mSM_inventory_icon_info_c fossil_tex_data = { inv_mwin_kaseki2_pal, inv_mwin_kaseki2_tex };
|
|
static mSM_inventory_icon_info_c unknown_tex_data = { inv_mwin_unknown_pal, inv_mwin_unknown_tex };
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c present_tex_data[] = {
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox1_tex_rgb_ci4_pal, inv_mwin_pbox1_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox1_tex_rgb_ci4_pal, inv_mwin_pbox1_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox2_tex_rgb_ci4_pal, inv_mwin_pbox2_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox2_tex_rgb_ci4_pal, inv_mwin_pbox2_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox3_tex_rgb_ci4_pal, inv_mwin_pbox3_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox3_tex_rgb_ci4_pal, inv_mwin_pbox3_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox4_tex_rgb_ci4_pal, inv_mwin_pbox4_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox4_tex_rgb_ci4_pal, inv_mwin_pbox4_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox5_tex_rgb_ci4_pal, inv_mwin_pbox5_tex_rgb_ci4 },
|
|
{ inv_mwin_pbox5_tex_rgb_ci4_pal, inv_mwin_pbox5_tex_rgb_ci4 },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c binsen_tex_table[] = {
|
|
{ inv_mwin_binsen1_pal, inv_mwin_binsen1_tex },
|
|
{ inv_mwin_binsen1_pal, inv_mwin_binsen2_tex },
|
|
{ inv_mwin_binsen1_pal, inv_mwin_binsen3_tex },
|
|
{ inv_mwin_binsen1_pal, inv_mwin_binsen4_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c money_tex_table[] = {
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane1_tex },
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane2_tex },
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane3_tex },
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane4_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c tool_tex_table[] = {
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono_tex },
|
|
{ inv_mwin_scoop_pal, inv_mwin_scoop_tex },
|
|
{ inv_mwin_turi_tex_pal, inv_mwin_turi_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_unbrella_pal, inv_mwin_unbrella_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_mushi_pal, inv_mwin_mushi_tex },
|
|
{ inv_mwin_gmushi_pal, inv_mwin_gmushi_tex },
|
|
{ inv_mwin_gono_pal, inv_mwin_gono_tex },
|
|
{ inv_mwin_gscoop_pal, inv_mwin_gscoop_tex },
|
|
{ inv_mwin_gturi_pal, inv_mwin_gturi_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono2_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono2_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono2_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono3_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono3_tex },
|
|
{ inv_mwin_ono_pal, inv_mwin_ono3_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_fuusen_pal, inv_mwin_fuusen_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_kazaguruma_pal, inv_mwin_kazaguruma_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
{ inv_mwin_utiwa_pal, inv_mwin_utiwa_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c fish_tex_table[] = {
|
|
{ inv_mwin_01funa_pal, inv_mwin_01funa_tex },
|
|
{ inv_mwin_02masu_pal, inv_mwin_02masu_tex },
|
|
{ inv_mwin_03koi_pal, inv_mwin_03koi_tex },
|
|
{ inv_mwin_04nishiki_pal, inv_mwin_04nishiki_tex },
|
|
{ inv_mwin_07namazu_pal, inv_mwin_07namazu_tex },
|
|
{ inv_mwin_13bass_pal, inv_mwin_13bass_tex },
|
|
{ inv_mwin_14bassm_pal, inv_mwin_14bassm_tex },
|
|
{ inv_mwin_15bassl_pal, inv_mwin_15bassl_tex },
|
|
{ inv_mwin_12gill_pal, inv_mwin_12gill_tex },
|
|
{ inv_mwin_08oonamazu_pal, inv_mwin_08oonamazu_tex },
|
|
{ inv_mwin_16raigyo_pal, inv_mwin_16raigyo_tex },
|
|
{ inv_mwin_05nigoi_pal, inv_mwin_05nigoi_tex },
|
|
{ inv_mwin_06ugui_pal, inv_mwin_06ugui_tex },
|
|
{ inv_mwin_09oikawa_pal, inv_mwin_09oikawa_tex },
|
|
{ inv_mwin_10tanago_pal, inv_mwin_10tanago_tex },
|
|
{ inv_mwin_11dojyou_pal, inv_mwin_11dojyou_tex },
|
|
{ inv_mwin_19wakasagi_pal, inv_mwin_19wakasagi_tex },
|
|
{ inv_mwin_20ayu_pal, inv_mwin_20ayu_tex },
|
|
{ inv_mwin_21yamame_pal, inv_mwin_21yamame_tex },
|
|
{ inv_mwin_23iwana_pal, inv_mwin_23iwana_tex },
|
|
{ inv_mwin_22niji_pal, inv_mwin_22niji_tex },
|
|
{ inv_mwin_24itou_pal, inv_mwin_24itou_tex },
|
|
{ inv_mwin_25sake_pal, inv_mwin_25sake_tex },
|
|
{ inv_mwin_26kingyo_pal, inv_mwin_26kingyo_tex },
|
|
{ inv_mwin_30pirania_pal, inv_mwin_30pirania_tex },
|
|
{ inv_mwin_31aroana_pal, inv_mwin_31aroana_tex },
|
|
{ inv_mwin_17unagi_pal, inv_mwin_17unagi_tex },
|
|
{ inv_mwin_18donko_pal, inv_mwin_18donko_tex },
|
|
{ inv_mwin_29angel_pal, inv_mwin_29angel_tex },
|
|
{ inv_mwin_28gupi_pal, inv_mwin_28gupi_tex },
|
|
{ inv_mwin_27demekin_pal, inv_mwin_27demekin_tex },
|
|
{ inv_mwin_32kaseki_pal, inv_mwin_32kaseki_tex },
|
|
{ inv_mwin_33zarigani_pal, inv_mwin_33zarigani_tex },
|
|
{ inv_mwin_34kaeru_pal, inv_mwin_34kaeru_tex },
|
|
{ inv_mwin_35medaka_pal, inv_mwin_35medaka_tex },
|
|
{ inv_mwin_36kurage_pal, inv_mwin_36kurage_tex },
|
|
{ inv_mwin_37suzuki_pal, inv_mwin_37suzuki_tex },
|
|
{ inv_mwin_38tai_pal, inv_mwin_38tai_tex },
|
|
{ inv_mwin_39ishidai_pal, inv_mwin_39ishidai_tex },
|
|
{ inv_mwin_40piraruku_pal, inv_mwin_40piraruku_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c cloth_tex_table[1] = {
|
|
{ inv_mwin_fuku3_pal, inv_mwin_fuku3_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c etc_tex_table[] = {
|
|
{ inv_mwin_mtegami_pal, inv_mwin_mtegami_tex },
|
|
{ inv_mwin_fuku3_pal, inv_mwin_fuku3_tex },
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane1_tex },
|
|
{ inv_mwin_video_pal, inv_mwin_video_tex },
|
|
{ inv_mwin_tetyou_pal, inv_mwin_tetyou_tex },
|
|
{ inv_mwin_pokepi_pal, inv_mwin_pokepi_tex },
|
|
{ inv_mwin_manga_pal, inv_mwin_manga_tex },
|
|
{ inv_mwin_ehon_pal, inv_mwin_ehon_tex },
|
|
{ inv_mwin_GB_pal, inv_mwin_GB_tex },
|
|
{ inv_mwin_camera2_pal, inv_mwin_camera_tex },
|
|
{ inv_mwin_tokei_pal, inv_mwin_tokei_tex },
|
|
{ inv_mwin_hankati_pal, inv_mwin_hankati_tex },
|
|
{ inv_mwin_glasses_pal, inv_mwin_glasses_tex },
|
|
{ inv_mwin_okane1_pal, inv_mwin_okane1_tex },
|
|
{ inv_mwin_aki_pal, inv_mwin_akikan_tex },
|
|
{ inv_mwin_kutu_pal, inv_mwin_kutu_tex },
|
|
{ inv_mwin_kutu_pal, inv_mwin_taiya_tex },
|
|
{ inv_mwin_kaseki_pal, inv_mwin_kaseki_tex },
|
|
{ inv_mwin_ana_pal, inv_mwin_ana_tex },
|
|
{ inv_mwin_ana_pal, inv_mwin_ana_tex },
|
|
{ inv_mwin_hiougi_pal, inv_mwin_hiougi_tex },
|
|
{ inv_mwin_hirako_pal, inv_mwin_hirako_tex },
|
|
{ inv_mwin_hone_pal, inv_mwin_hone_tex },
|
|
{ inv_mwin_hoshida_pal, inv_mwin_hoshida_tex },
|
|
{ inv_mwin_sanddollar_pal, inv_mwin_sanddollar_tex },
|
|
{ inv_mwin_syako_pal, inv_mwin_syako_tex },
|
|
{ inv_mwin_hora_pal, inv_mwin_hora_tex },
|
|
{ inv_mwin_sango_pal, inv_mwin_sango_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_kanban_pal, inv_mwin_kanban_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_pbox2_pal, inv_mwin_pbox_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_taisou_pal, inv_mwin_taisou_tex },
|
|
{ inv_mwin_fork_pal, inv_mwin_fork_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c carpet_tex_table[1] = {
|
|
{ inv_mwin_jyuutan_pal, inv_mwin_jyuutan_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c wall_tex_table[1] = {
|
|
{ inv_mwin_kabe2_pal, inv_mwin_kabe_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c food_tex_table[] = {
|
|
{ inv_mwin_apple_pal, inv_mwin_apple_tex },
|
|
{ inv_mwin_nuts_pal, inv_mwin_nuts_tex },
|
|
{ inv_mwin_pear_pal, inv_mwin_pear_tex },
|
|
{ inv_mwin_peach_pal, inv_mwin_peach_tex },
|
|
{ inv_mwin_orange_pal, inv_mwin_orange_tex },
|
|
{ inv_mwin_matutake2_pal, inv_mwin_matutake_tex },
|
|
{ inv_mwin_ame_pal, inv_mwin_ame_tex },
|
|
{ inv_mwin_yashi_pal, inv_mwin_yashi_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c plant_tex_table[] = {
|
|
{ inv_mwin_naegi_pal, inv_mwin_naegi_tex },
|
|
{ inv_mwin_cnaegi_pal, inv_mwin_cnaegi_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
{ inv_mwin_seed_pal, inv_mwin_seed_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c minidisk_tex_table[1] = {
|
|
{ inv_mwin_onpu_pal, inv_mwin_onpu_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c etc2_tex_table[] = {
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
{ inv_mwin_nittki_pal, inv_mwin_nittki_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c ticket_tex_table[] = {
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_1fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_2fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_3fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_4fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_5fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_6fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_7fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_8fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_9fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_10fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_11fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki2_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki3_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki4_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki5_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki1_tex },
|
|
{ inv_mwin_12fukubiki_pal, inv_mwin_1biki1_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c insect_tex_table[] = {
|
|
{ inv_mwin_01monshiro_pal, inv_mwin_01monshiro_tex },
|
|
{ inv_mwin_02monki_pal, inv_mwin_02monki_tex },
|
|
{ inv_mwin_03kiageha_pal, inv_mwin_03kiageha_tex },
|
|
{ inv_mwin_04ohmurasaki_pal, inv_mwin_04ohmurasaki_tex },
|
|
{ inv_mwin_06minmin_pal, inv_mwin_06minmin_tex },
|
|
{ inv_mwin_07tukutuku_pal, inv_mwin_07tukutuku_tex },
|
|
{ inv_mwin_08higurashi_pal, inv_mwin_08higurashi_tex },
|
|
{ inv_mwin_05abura_pal, inv_mwin_05abura_tex },
|
|
{ inv_mwin_23hati_pal, inv_mwin_23hati_tex },
|
|
{ inv_mwin_10shiokara_pal, inv_mwin_10shiokara_tex },
|
|
{ inv_mwin_09akiakane_pal, inv_mwin_09akiakane_tex },
|
|
{ inv_mwin_11ginyanma_pal, inv_mwin_11ginyanma_tex },
|
|
{ inv_mwin_12oniyanma_pal, inv_mwin_12oniyanma_tex },
|
|
{ inv_mwin_20syouryou_pal, inv_mwin_20syouryou_tex },
|
|
{ inv_mwin_21tonosama_pal, inv_mwin_21tonosama_tex },
|
|
{ inv_mwin_13koorogi_pal, inv_mwin_13koorogi_tex },
|
|
{ inv_mwin_14kirigirisu_pal, inv_mwin_14kirigirisu_tex },
|
|
{ inv_mwin_16suzumushi_pal, inv_mwin_16suzumushi_tex },
|
|
{ inv_mwin_15matumushi_pal, inv_mwin_15matumushi_tex },
|
|
{ inv_mwin_25kanabun_pal, inv_mwin_25kanabun_tex },
|
|
{ inv_mwin_28kabuto_pal, inv_mwin_28kabuto_tex },
|
|
{ inv_mwin_29hirata_pal, inv_mwin_29hirata_tex },
|
|
{ inv_mwin_27tamamushi_pal, inv_mwin_27tamamushi_tex },
|
|
{ inv_mwin_26gomadara_pal, inv_mwin_26gomadara_tex },
|
|
{ inv_mwin_17tentou_pal, inv_mwin_17tentou_tex },
|
|
{ inv_mwin_18nanahoshi_pal, inv_mwin_18nanahoshi_tex },
|
|
{ inv_mwin_19kamakiri_pal, inv_mwin_19kamakiri_tex },
|
|
{ inv_mwin_24genji_pal, inv_mwin_24genji_tex },
|
|
{ inv_mwin_22danna_pal, inv_mwin_22danna_tex },
|
|
{ inv_mwin_30nokogiri_pal, inv_mwin_30nokogiri_tex },
|
|
{ inv_mwin_31miyama_pal, inv_mwin_31miyama_tex },
|
|
{ inv_mwin_32okuwa_pal, inv_mwin_32okuwa_tex },
|
|
{ inv_mwin_33maimai_pal, inv_mwin_33maimai_tex },
|
|
{ inv_mwin_34kera_pal, inv_mwin_34kera_tex },
|
|
{ inv_mwin_35amenbo_pal, inv_mwin_35amenbo_tex },
|
|
{ inv_mwin_36mino_pal, inv_mwin_36mino_tex },
|
|
{ inv_mwin_37dango_pal, inv_mwin_37dango_tex },
|
|
{ inv_mwin_38kumo_pal, inv_mwin_38kumo_tex },
|
|
{ inv_mwin_39ari_pal, inv_mwin_39ari_tex },
|
|
{ inv_mwin_40ka_pal, inv_mwin_40ka_tex },
|
|
{ inv_mwin_hitodama_pal, inv_mwin_hitodama1_tex },
|
|
{ inv_mwin_hitodama_pal, inv_mwin_hitodama2_tex },
|
|
{ inv_mwin_hitodama_pal, inv_mwin_hitodama3_tex },
|
|
{ inv_mwin_hitodama_pal, inv_mwin_hitodama4_tex },
|
|
{ inv_mwin_hitodama_pal, inv_mwin_hitodama5_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c hukuro_tex_table[] = {
|
|
{ inv_mwin_fukubukuro_pal, inv_mwin_fukubukuro_tex },
|
|
{ inv_mwin_fukubukuro_pal, inv_mwin_fukubukuro_tex },
|
|
{ inv_mwin_fukubukuro2_pal, inv_mwin_fukubukuro_tex_rgb_ci4 },
|
|
{ inv_mwin_fukubukuro2_pal, inv_mwin_fukubukuro_tex_rgb_ci4 },
|
|
{ inv_mwin_fukubukuro2_tex_rgb_ci4_pal, inv_mwin_fukubukuro2_tex_rgb_ci4 },
|
|
{ inv_mwin_fukubukuro2_tex_rgb_ci4_pal, inv_mwin_fukubukuro2_tex_rgb_ci4 },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c kabu_tex_table[] = {
|
|
{ inv_mwin_cabu1_pal, inv_mwin_cabu1_tex },
|
|
{ inv_mwin_cabu1_pal, inv_mwin_cabu2_tex },
|
|
{ inv_mwin_cabu1_pal, inv_mwin_cabu3_tex },
|
|
{ inv_mwin_2cabu1_pal, inv_mwin_2cabu1_tex },
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_inventory_icon_info_c* item_tex_data_table[] = {
|
|
binsen_tex_table,
|
|
money_tex_table,
|
|
tool_tex_table,
|
|
fish_tex_table,
|
|
cloth_tex_table,
|
|
etc_tex_table,
|
|
carpet_tex_table,
|
|
wall_tex_table,
|
|
food_tex_table,
|
|
plant_tex_table,
|
|
minidisk_tex_table,
|
|
etc2_tex_table,
|
|
ticket_tex_table,
|
|
insect_tex_table,
|
|
hukuro_tex_table,
|
|
kabu_tex_table,
|
|
};
|
|
// clang-format on
|
|
|
|
mSM_inventory_icon_info_c* icon;
|
|
u16* palette;
|
|
rgba_t color;
|
|
int category = -1;
|
|
int alpha_flag = FALSE;
|
|
u8 l;
|
|
|
|
if (scale < 0.05f) {
|
|
return;
|
|
}
|
|
|
|
if (present_flag) {
|
|
if (anim_frame > 11) {
|
|
/* Start fading out */
|
|
icon = &present_tex_data[11];
|
|
if (anim_frame > 22) {
|
|
alpha_flag = TRUE;
|
|
}
|
|
} else {
|
|
icon = &present_tex_data[anim_frame];
|
|
}
|
|
} else {
|
|
if (item >= HANIWA_START && item <= HANIWA_END) {
|
|
icon = &haniwa_tex_data;
|
|
} else if (item >= FTR_DINO_START && item <= FTR_DINO_END) {
|
|
icon = &fossil_tex_data;
|
|
} else if (mNT_check_unknown(item) == TRUE) {
|
|
icon = &unknown_tex_data;
|
|
} else if (ITEM_IS_FTR(item)) {
|
|
icon = &furniture_tex_data;
|
|
} else {
|
|
int groupNo = mSM_get_groupNo(item);
|
|
|
|
category = ITEM_NAME_GET_CAT(item);
|
|
switch (category) {
|
|
case ITEM1_CAT_HUKUBUKURO:
|
|
icon = &item_tex_data_table[category][anim_frame];
|
|
break;
|
|
case ITEM1_CAT_PAPER:
|
|
icon = &item_tex_data_table[category][1 + PAPER2STACK(item - ITM_PAPER_START)] - 1;
|
|
break;
|
|
case ITEM1_CAT_CLOTH:
|
|
case ITEM1_CAT_CARPET:
|
|
case ITEM1_CAT_WALL:
|
|
case ITEM1_CAT_MINIDISK:
|
|
case ITEM1_CAT_DUMMY:
|
|
icon = &item_tex_data_table[category][0];
|
|
break;
|
|
default:
|
|
icon = &item_tex_data_table[category][groupNo];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (icon != NULL) {
|
|
if ((category == ITEM1_CAT_FISH || category == ITEM1_CAT_INSECT) && anim_frame != 0) {
|
|
/* Fish & insects have two back-to-back palettes for inventory & collection windows */
|
|
palette = 16 + icon->pal;
|
|
} else {
|
|
palette = icon->pal;
|
|
}
|
|
|
|
if (color_flag) {
|
|
if (alpha_flag) {
|
|
color.a = (int)(((48 - anim_frame) * 255) / 26);
|
|
} else {
|
|
color.a = 255;
|
|
}
|
|
|
|
color.r = 255;
|
|
color.g = 255;
|
|
color.b = 255;
|
|
l = 255;
|
|
} else {
|
|
color.r = 100;
|
|
color.g = 115;
|
|
color.b = 160;
|
|
color.a = 255;
|
|
l = 100;
|
|
}
|
|
}
|
|
|
|
if (icon != NULL) {
|
|
mSM_set_dl_item(graph, pos_x, pos_y, scale, icon, palette, l, &color, shadow_flag, mark_flag);
|
|
}
|
|
}
|
|
|
|
enum {
|
|
mSM_MAIL_NORMAL,
|
|
mSM_MAIL_PRESENT,
|
|
mSM_MAIL_SEND,
|
|
mSM_MAIL_SEND_PRESENT,
|
|
mSM_MAIL_NORMAL2,
|
|
mSM_MAIL_PRESENT2,
|
|
|
|
mSM_MAIL_NUM
|
|
};
|
|
|
|
extern u16 inv_mwin_mtegami_pal[];
|
|
extern u8 inv_mwin_mtegami_tex[];
|
|
extern u8 inv_mwin_pmtegami_tex[];
|
|
|
|
extern u16 inv_mwin_otegami_pal[];
|
|
extern u8 inv_mwin_otegami_tex[];
|
|
extern u8 inv_mwin_potegami_tex[];
|
|
|
|
extern u16 inv_mwin_mtegami2_pal[];
|
|
extern u8 inv_mwin_mtegami2_tex[];
|
|
extern u8 inv_mwin_pmtegami2_tex[];
|
|
|
|
extern Gfx inv_item_model[];
|
|
extern Gfx inv_mark_model[];
|
|
|
|
static void mSM_draw_mail(GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, Mail_c* mail, int color_flag, int shadow_flag,
|
|
int mark_flag) {
|
|
static mSM_inventory_icon_info_c letter_tex_data_table[] = {
|
|
/* Letters */
|
|
{ inv_mwin_mtegami_pal, inv_mwin_mtegami_tex },
|
|
{ inv_mwin_mtegami_pal, inv_mwin_pmtegami_tex },
|
|
|
|
/* Send letters */
|
|
{ inv_mwin_otegami_pal, inv_mwin_otegami_tex },
|
|
{ inv_mwin_otegami_pal, inv_mwin_potegami_tex },
|
|
|
|
/* Opened? letters */
|
|
{ inv_mwin_mtegami2_pal, inv_mwin_mtegami2_tex },
|
|
{ inv_mwin_mtegami2_pal, inv_mwin_pmtegami2_tex },
|
|
};
|
|
|
|
mSM_inventory_icon_info_c* icon;
|
|
int type;
|
|
|
|
if (mMl_check_send_mail(mail)) {
|
|
type = mSM_MAIL_SEND;
|
|
} else if (mail->content.font == mMl_FONT_4 || mail->content.font == mMl_FONT_2) {
|
|
type = mSM_MAIL_NORMAL2;
|
|
} else {
|
|
type = mSM_MAIL_NORMAL;
|
|
}
|
|
|
|
if (mail->present != EMPTY_NO) {
|
|
type++;
|
|
}
|
|
|
|
icon = &letter_tex_data_table[type];
|
|
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
|
Matrix_translate(pos_x, pos_y, 140.0f, 1);
|
|
Matrix_scale(scale, scale, 1.0f, 1);
|
|
|
|
OPEN_POLY_OPA_DISP(graph);
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_9, icon->pal);
|
|
gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_A, icon->tex);
|
|
gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_THRESHOLD);
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 40);
|
|
|
|
if (color_flag) {
|
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 255, 255, 255, 255, 255);
|
|
} else {
|
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 130, 255, 110, 105, 255);
|
|
}
|
|
|
|
if (shadow_flag == FALSE) {
|
|
gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0, TEXEL0,
|
|
PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0);
|
|
}
|
|
|
|
gSPDisplayList(POLY_OPA_DISP++, inv_item_model);
|
|
|
|
if (mark_flag) {
|
|
f32 frame_per = (((f32)(gamePT->frame_counter % 40)) * (1.0f / 40.0f)) * 2.0f;
|
|
|
|
if (frame_per > 1.0f) {
|
|
frame_per = 2.0f - frame_per;
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, (int)(frame_per * 90.0f + 95.0f), 0, 255);
|
|
gDPSetEnvColor(POLY_OPA_DISP++, (int)(frame_per * 60.0f), (int)(frame_per * 45.0f + 210.0f),
|
|
(int)(frame_per * 60.0f), 255);
|
|
gSPDisplayList(POLY_OPA_DISP++, inv_mark_model);
|
|
}
|
|
|
|
gDPPipeSync(POLY_OPA_DISP++);
|
|
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16);
|
|
gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_NONE);
|
|
gDPSetBlendColor(POLY_OPA_DISP++, 255, 255, 255, 8);
|
|
|
|
CLOSE_POLY_OPA_DISP(graph);
|
|
}
|
|
|
|
extern void mSM_draw_original(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, mActor_name_t item,
|
|
int color_flag) {
|
|
if (ITEM_IS_RSVNWORG(item)) {
|
|
mNW_draw_original(submenu, graph, pos_x, pos_y, scale, item - RSV_NW_ORIGINAL0, color_flag);
|
|
}
|
|
|
|
if (ITEM_IS_RSVCPORG(item)) {
|
|
mCO_draw_cporiginal(submenu, graph, pos_x, pos_y, scale, item - RSV_NW_ORIGINAL0, color_flag);
|
|
}
|
|
|
|
if (ITEM_IS_RSVGBAORG(item)) {
|
|
mGB_draw_gba(submenu, graph, pos_x, pos_y, scale, item - RSV_GBAORIGINAL0, color_flag);
|
|
}
|
|
}
|
|
|
|
static mSM_Ovl_dlftbl_c mSM_program_dlftbl[] = {
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mIV_inventory_ovl_construct,
|
|
&mIV_inventory_ovl_destruct,
|
|
&mIV_inventory_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mIV_inventory_ovl_construct,
|
|
&mIV_inventory_ovl_destruct,
|
|
&mIV_inventory_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mHB_hboard_ovl_construct,
|
|
&mHB_hboard_ovl_destruct,
|
|
&mHB_hboard_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mTI_timeIn_ovl_construct,
|
|
&mTI_timeIn_ovl_destruct,
|
|
&mTI_timeIn_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mLE_ledit_ovl_construct,
|
|
&mLE_ledit_ovl_destruct,
|
|
&mLE_ledit_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mMP_map_ovl_construct,
|
|
&mMP_map_ovl_destruct,
|
|
&mMP_map_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mNT_notice_ovl_construct,
|
|
&mNT_notice_ovl_destruct,
|
|
&mNT_notice_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mRP_repay_ovl_construct,
|
|
&mRP_repay_ovl_destruct,
|
|
&mRP_repay_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mMS_mscore_ovl_construct,
|
|
&mMS_mscore_ovl_destruct,
|
|
&mMS_mscore_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mBR_birthday_ovl_construct,
|
|
&mBR_birthday_ovl_destruct,
|
|
&mBR_birthday_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mED_editor_ovl_construct,
|
|
&mED_editor_ovl_destruct,
|
|
&mED_editor_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mMB_mailbox_ovl_construct,
|
|
&mMB_mailbox_ovl_destruct,
|
|
&mMB_mailbox_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mBD_board_ovl_construct,
|
|
&mBD_board_ovl_destruct,
|
|
&mBD_board_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mAD_address_ovl_construct,
|
|
&mAD_address_ovl_destruct,
|
|
&mAD_address_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mHW_haniwa_ovl_construct,
|
|
&mHW_haniwa_ovl_destruct,
|
|
&mHW_haniwa_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mEE_editEndChk_ovl_construct,
|
|
&mEE_editEndChk_ovl_destruct,
|
|
&mEE_editEndChk_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mWR_warning_ovl_construct,
|
|
&mWR_warning_ovl_destruct,
|
|
&mWR_warning_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCM_cpmail_ovl_construct,
|
|
&mCM_cpmail_ovl_destruct,
|
|
&mCM_cpmail_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCW_cpwarning_ovl_construct,
|
|
&mCW_cpwarning_ovl_destruct,
|
|
&mCW_cpwarning_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCE_cpedit_ovl_construct,
|
|
&mCE_cpedit_ovl_destruct,
|
|
&mCE_cpedit_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCL_catalog_ovl_construct,
|
|
&mCL_catalog_ovl_destruct,
|
|
&mCL_catalog_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mMU_music_ovl_construct,
|
|
&mMU_music_ovl_destruct,
|
|
&mMU_music_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mBN_bank_ovl_construct,
|
|
&mBN_bank_ovl_destruct,
|
|
&mBN_bank_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mNW_needlework_ovl_construct,
|
|
&mNW_needlework_ovl_destruct,
|
|
&mNW_needlework_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCO_cporiginal_ovl_construct,
|
|
&mCO_cporiginal_ovl_destruct,
|
|
&mCO_cporiginal_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mDE_design_ovl_construct,
|
|
&mDE_design_ovl_destruct,
|
|
&mDE_design_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mGB_gba_ovl_construct,
|
|
&mGB_gba_ovl_destruct,
|
|
&mGB_gba_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mDI_diary_ovl_construct,
|
|
&mDI_diary_ovl_destruct,
|
|
&mDI_diary_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mCD_calendar_ovl_construct,
|
|
&mCD_calendar_ovl_destruct,
|
|
&mCD_calendar_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mPM_passwordMake_ovl_construct,
|
|
&mPM_passwordMake_ovl_destruct,
|
|
&mPM_passwordMake_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
{
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mPC_passwordChk_ovl_construct,
|
|
&mPC_passwordChk_ovl_destruct,
|
|
&mPC_passwordChk_ovl_set_proc,
|
|
FALSE,
|
|
},
|
|
};
|
|
|
|
// clang-format off
|
|
static mSM_Ovl_dlftbl_c tag_program_dlftbl = {
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mTG_tag_ovl_construct,
|
|
&mTG_tag_ovl_destruct,
|
|
&mTG_tag_ovl_destruct,
|
|
FALSE,
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_Ovl_dlftbl_c hand_program_dlftbl = {
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mHD_hand_ovl_construct,
|
|
&mHD_hand_ovl_destruct,
|
|
&mHD_hand_ovl_destruct,
|
|
FALSE,
|
|
};
|
|
// clang-format on
|
|
|
|
// clang-format off
|
|
static mSM_Ovl_dlftbl_c haniwa_program_dlftbl = {
|
|
0,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
&mHP_haniwaPortrait_ovl_construct,
|
|
&mHP_haniwaPortrait_ovl_destruct,
|
|
&mHP_haniwaPortrait_ovl_destruct,
|
|
FALSE,
|
|
};
|
|
// clang-format on
|
|
|
|
static void mSM_ovl_prog_seg(Submenu* submenu, mSM_Ovl_dlftbl_c* dlftbl) {
|
|
mSM_Segment_c* segment = &submenu->overlay->segment;
|
|
|
|
if (dlftbl->in_ram_flag == TRUE) {
|
|
dlftbl->ct_proc(submenu);
|
|
} else {
|
|
mSM_OVL_CT_PROC ct_proc;
|
|
|
|
dlftbl->seg_start = NULL;
|
|
dlftbl->seg_end = NULL;
|
|
submenu->next_overlay_address = (char*)ALIGN_NEXT((u32)dlftbl->seg_end - (u32)dlftbl->seg_start, 64);
|
|
ct_proc = dlftbl->ct_proc;
|
|
(*ct_proc)(submenu);
|
|
dlftbl->ct_proc = ct_proc;
|
|
dlftbl->in_ram_flag = TRUE;
|
|
segment->dlftbl_loaded_tbl[segment->dlftbl_loaded_num] = dlftbl;
|
|
segment->dlftbl_loaded_num++;
|
|
}
|
|
}
|
|
|
|
static void mSM_set_other_seg(Submenu* submenu) {
|
|
static u8 flg_table[] = {
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_ITEM | mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_USE_HANIWA_PORTRAIT,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_ITEM | mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_ITEM | mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND | mSM_OVL_FLAG_USE_HANIWA_PORTRAIT,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_ITEM | mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_USE_ITEM | mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_USE_TAG | mSM_OVL_FLAG_USE_HAND,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
mSM_OVL_FLAG_NONE,
|
|
};
|
|
|
|
int flg = flg_table[submenu->current_menu_type];
|
|
|
|
if ((flg & mSM_OVL_FLAG_USE_TAG) != 0) {
|
|
mSM_ovl_prog_seg(submenu, &tag_program_dlftbl);
|
|
}
|
|
|
|
if ((flg & mSM_OVL_FLAG_USE_HAND) != 0) {
|
|
mSM_ovl_prog_seg(submenu, &hand_program_dlftbl);
|
|
}
|
|
|
|
if ((flg & mSM_OVL_FLAG_USE_HANIWA_PORTRAIT) != 0) {
|
|
mSM_ovl_prog_seg(submenu, &haniwa_program_dlftbl);
|
|
}
|
|
}
|
|
|
|
static void mSM_set_before_menu_proc(Submenu* submenu) {
|
|
int type = submenu->menu_type;
|
|
mSM_Ovl_dlftbl_c* dlftbl = &mSM_program_dlftbl[type];
|
|
mSM_MenuInfo_c* menu_info;
|
|
|
|
dlftbl->set_proc(submenu);
|
|
submenu->current_menu_type = type;
|
|
menu_info = &submenu->overlay->menu_info[type];
|
|
menu_info->next_menu_type = mSM_OVL_NONE;
|
|
}
|
|
|
|
static void mSM_set_new_seg(Submenu* submenu) {
|
|
int type = submenu->menu_type;
|
|
|
|
mSM_ovl_prog_seg(submenu, &mSM_program_dlftbl[type]);
|
|
submenu->current_menu_type = type;
|
|
}
|
|
|
|
typedef struct submenu_ovl_start_data_s {
|
|
f32 pos_x;
|
|
f32 pos_y;
|
|
f32 speed_x;
|
|
f32 speed_y;
|
|
} mSM_ovl_start_data_c;
|
|
|
|
static void mSM_set_new_start_data(Submenu* submenu) {
|
|
// clang-format off
|
|
static mSM_ovl_start_data_c data_table[] = {
|
|
{ 0.0, 0.0, 0.0, 0.0, },
|
|
{ 300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, -300.0, 0.0, 75.0, },
|
|
{ -300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 0.0, 0.0, 0.0, },
|
|
{ -300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, -300.0, 0.0, 75.0, },
|
|
{ 0.0, 0.0, 0.0, 0.0, },
|
|
{ 300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 0.0, 0.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 300.0, 0.0, 75.0, 0.0, },
|
|
{ -300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 300.0, 0.0, 75.0, 0.0, },
|
|
{ 300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ -300.0, 0.0, 75.0, 0.0, },
|
|
{ -300.0, 0.0, 75.0, 0.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
{ 0.0, 300.0, 0.0, 75.0, },
|
|
};
|
|
// clang-format on
|
|
int type = submenu->menu_type;
|
|
mSM_MenuInfo_c* menu = &submenu->overlay->menu_info[type];
|
|
mSM_ovl_start_data_c* data = &data_table[type];
|
|
|
|
menu->menu_type = type;
|
|
menu->position[0] = data->pos_x;
|
|
menu->position[1] = data->pos_y;
|
|
menu->speed[0] = data->speed_x;
|
|
menu->speed[1] = data->speed_y;
|
|
menu->data0 = submenu->param0;
|
|
menu->data1 = submenu->param1;
|
|
menu->data2 = submenu->param2;
|
|
menu->data3 = submenu->param3;
|
|
menu->move_flag = FALSE;
|
|
|
|
if (type == mSM_OVL_INVENTORY && submenu->param0 == mSM_IV_OPEN_CPMAIL) {
|
|
menu->position[0] = -300.0f;
|
|
}
|
|
|
|
if (type == mSM_OVL_NEEDLEWORK && submenu->param0 == 2) {
|
|
menu->position[0] = -300.0f;
|
|
}
|
|
}
|
|
|
|
static void mSM_move_chg_base(mSM_MenuInfo_c* menu_info, int mv_dir) {
|
|
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
|
menu_info->move_drt = mv_dir;
|
|
|
|
if ((mv_dir & 1) != 0) {
|
|
menu_info->next_proc_status = mSM_OVL_PROC_PLAY;
|
|
} else {
|
|
menu_info->next_proc_status = mSM_OVL_PROC_END;
|
|
}
|
|
}
|
|
|
|
static void mSM_make_trigger_data(Submenu* submenu) {
|
|
static u32 add_trigger[] = { BUTTON_CRIGHT, BUTTON_CUP, BUTTON_CLEFT, BUTTON_CDOWN };
|
|
int trigger = (getButton() & 0xF) | getTrigger();
|
|
mSM_Control_c* control = &submenu->overlay->menu_control;
|
|
|
|
if (gamePT->mcon.move_pR > 0.5f) {
|
|
u16 angle = gamePT->mcon.move_angle + DEG2SHORT_ANGLE2(45.0f);
|
|
|
|
trigger |= add_trigger[angle / DEG2SHORT_ANGLE2(90.0f)];
|
|
}
|
|
|
|
if (trigger == control->last_trigger) {
|
|
if (control->repeat_timer > 0) {
|
|
control->repeat_timer--;
|
|
trigger = 0;
|
|
} else {
|
|
control->repeat_timer = 3;
|
|
}
|
|
} else {
|
|
control->last_trigger = trigger;
|
|
control->repeat_timer = 25;
|
|
}
|
|
|
|
control->trigger = trigger;
|
|
}
|
|
|
|
static void mSM_save_before_func(Submenu* submenu) {
|
|
Submenu_Overlay_c* ovl = submenu->overlay;
|
|
mSM_MenuInfo_c* menu_info = &ovl->menu_info[submenu->menu_type];
|
|
mSM_MenuInfo_c* prev_info = &ovl->menu_info[submenu->current_menu_type];
|
|
|
|
menu_info->pre_menu_type = submenu->current_menu_type;
|
|
menu_info->pre_move_func = ovl->menu_control.menu_move_func;
|
|
menu_info->pre_draw_func = ovl->menu_control.menu_draw_func;
|
|
prev_info->next_menu_type = submenu->menu_type;
|
|
}
|
|
|
|
static void mSM_set_proc(Submenu* submenu) {
|
|
mSM_save_before_func(submenu);
|
|
mSM_set_new_start_data(submenu);
|
|
mSM_set_new_seg(submenu);
|
|
mSM_set_other_seg(submenu);
|
|
}
|
|
|
|
static void mSM_tex_move(Submenu* submenu) {
|
|
mSM_Control_c* control = &submenu->overlay->menu_control;
|
|
|
|
control->texture_pos[0] += 0.3535f;
|
|
control->texture_pos[1] += 0.3535f;
|
|
|
|
while (control->texture_pos[0] >= 1024.0f) {
|
|
control->texture_pos[0] -= 1024.0f;
|
|
}
|
|
|
|
while (control->texture_pos[1] >= 1024.0f) {
|
|
control->texture_pos[1] -= 1024.0f;
|
|
}
|
|
}
|
|
|
|
static void mSM_return_func(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
|
if (menu_info->next_menu_type != mSM_OVL_NONE) {
|
|
mSM_MenuInfo_c* next_menu_info = &submenu->overlay->menu_info[menu_info->next_menu_type];
|
|
mSM_MenuInfo_c* prev_menu_info = &submenu->overlay->menu_info[menu_info->pre_menu_type];
|
|
|
|
next_menu_info->pre_menu_type = menu_info->pre_menu_type;
|
|
next_menu_info->pre_move_func = menu_info->pre_move_func;
|
|
next_menu_info->pre_draw_func = menu_info->pre_draw_func;
|
|
prev_menu_info->next_menu_type = menu_info->next_menu_type;
|
|
} else {
|
|
mSM_Segment_c* segment = &submenu->overlay->segment;
|
|
|
|
submenu->menu_type = menu_info->pre_menu_type;
|
|
if (submenu->menu_type == mSM_OVL_NONE) {
|
|
|
|
while (segment->dlftbl_loaded_num != 0) {
|
|
segment->dlftbl_loaded_num--;
|
|
segment->dlftbl_loaded_tbl[segment->dlftbl_loaded_num]->dt_proc(submenu);
|
|
}
|
|
|
|
submenu->process_status = mSM_PROCESS_END;
|
|
submenu->move_proc = (SUBMENU_PROC)&none_proc1;
|
|
submenu->current_menu_type = menu_info->pre_menu_type;
|
|
submenu->overlay->menu_control.menu_move_func = (SUBMENU_PROC)&none_proc1;
|
|
submenu->overlay->menu_control.menu_draw_func = (SUBMENU_GAME_PROC)&none_proc1;
|
|
emu64_refresh();
|
|
} else {
|
|
mSM_set_before_menu_proc(submenu);
|
|
}
|
|
}
|
|
|
|
menu_info->open_flag = FALSE;
|
|
menu_info->pre_menu_type = mSM_OVL_NONE;
|
|
menu_info->next_menu_type = mSM_OVL_NONE;
|
|
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
|
menu_info->next_proc_status = mSM_OVL_PROC_MOVE;
|
|
}
|
|
|
|
static int mSM_move_menu(f32* pos, f32* speed, s16* flag, f32 speed_mult, f32 p0, f32 p1, f32 p2) {
|
|
if (*flag == FALSE) {
|
|
if ((p2 * (*pos - p0)) >= 0.0f) {
|
|
*speed *= speed_mult;
|
|
if (*speed < 1.0f) {
|
|
*speed = 1.0f;
|
|
} else if (*speed > 75.0f) {
|
|
*speed = 75.0f;
|
|
}
|
|
}
|
|
|
|
*flag = TRUE;
|
|
} else {
|
|
*flag = FALSE;
|
|
}
|
|
|
|
*pos += *speed * p2 * 0.5f;
|
|
if ((p2 * (*pos - p1)) > 0.0f) {
|
|
*flag = FALSE;
|
|
*pos = p1;
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
typedef struct submenu_move_data_s {
|
|
f32 speed_mult;
|
|
f32 start_pos;
|
|
f32 target_pos;
|
|
f32 check_mult;
|
|
} mSM_move_data_c;
|
|
|
|
static void mSM_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
|
static mSM_move_data_c move_data[] = {
|
|
{ 2.0f, 0.0f, 300.0f, 1.0f },
|
|
{ 0.5f, 120.0f, 0.0f, -1.0f },
|
|
};
|
|
int move_dir = menu_info->move_drt;
|
|
int idx = move_dir >> 2;
|
|
mSM_move_data_c* data_p = &move_data[move_dir & 1];
|
|
f32 dir;
|
|
int res;
|
|
|
|
if ((move_dir & 2)) {
|
|
dir = -1.0f;
|
|
} else {
|
|
dir = 1.0f;
|
|
}
|
|
|
|
res = mSM_move_menu(&menu_info->position[idx], &menu_info->speed[idx], &menu_info->move_flag, data_p->speed_mult,
|
|
data_p->start_pos * dir, data_p->target_pos * dir, data_p->check_mult * dir);
|
|
if (res == TRUE) {
|
|
menu_info->proc_status = menu_info->next_proc_status;
|
|
}
|
|
|
|
/* Round down to nearest int */
|
|
menu_info->position[idx] = (f32)(int)menu_info->position[idx];
|
|
}
|
|
|
|
static void mSM_move_End(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
|
mSM_return_func(submenu, menu_info);
|
|
}
|
|
|
|
static void mSM_menu_ovl_move(Submenu* submenu) {
|
|
mSM_Control_c* control = &submenu->overlay->menu_control;
|
|
|
|
mSM_make_trigger_data(submenu);
|
|
if (submenu->menu_type != submenu->current_menu_type) {
|
|
mSM_set_proc(submenu);
|
|
}
|
|
|
|
mSM_tex_move(submenu);
|
|
control->menu_move_func(submenu);
|
|
}
|
|
|
|
static void mSM_menu_ovl_draw(Submenu* submenu, GAME* game) {
|
|
mSM_setup_view(submenu, game->graph, TRUE);
|
|
submenu->overlay->menu_control.menu_draw_func(submenu, game);
|
|
}
|
|
|
|
extern void mSM_menu_ovl_init(Submenu* submenu) {
|
|
mSM_Control_c* control = &ovl_base.menu_control;
|
|
int i;
|
|
|
|
submenu->overlay = &ovl_base;
|
|
bzero(&ovl_base, sizeof(Submenu_Overlay_c));
|
|
|
|
for (i = 0; i < mSM_OVL_NUM; i++) {
|
|
mSM_program_dlftbl[i].in_ram_flag = FALSE;
|
|
}
|
|
|
|
tag_program_dlftbl.in_ram_flag = FALSE;
|
|
hand_program_dlftbl.in_ram_flag = FALSE;
|
|
haniwa_program_dlftbl.in_ram_flag = FALSE;
|
|
|
|
emu64_refresh();
|
|
submenu->current_menu_type = mSM_OVL_NONE;
|
|
control->menu_move_func = (SUBMENU_PROC)&none_proc1;
|
|
control->menu_draw_func = (SUBMENU_GAME_PROC)&none_proc1;
|
|
control->hand_move_func = (mSM_HAND_MOVE_FUNC)&none_proc1;
|
|
control->hand_draw_func = (mSM_HAND_DRAW_FUNC)&none_proc1;
|
|
control->tag_move_func = (mSM_TAG_MOVE_FUNC)&none_proc1;
|
|
control->tag_draw_func = (mSM_TAG_DRAW_FUNC)&none_proc1;
|
|
control->texture_movement_angle = DEG2SHORT_ANGLE2(45.0f);
|
|
|
|
submenu->overlay->return_func_proc = &mSM_return_func;
|
|
submenu->overlay->move_Move_proc = &mSM_move_Move;
|
|
submenu->overlay->move_End_proc = &mSM_move_End;
|
|
submenu->overlay->move_chg_base_proc = &mSM_move_chg_base;
|
|
submenu->overlay->set_char_matrix_proc = &mSM_set_char_matrix;
|
|
submenu->overlay->cbuf_copy_proc = &mSM_cbuf_copy;
|
|
submenu->overlay->set_drawMode_proc = &mSM_set_drawMode;
|
|
submenu->overlay->draw_item_proc = &mSM_draw_item;
|
|
submenu->overlay->draw_mail_proc = &mSM_draw_mail;
|
|
submenu->overlay->setup_view_proc = &mSM_setup_view;
|
|
submenu->overlay->change_view_proc = &mSM_change_view;
|
|
submenu->overlay->unused_func_968 = NULL;
|
|
|
|
mSM_set_proc(submenu);
|
|
submenu->move_proc = &mSM_menu_ovl_move;
|
|
submenu->draw_proc = &mSM_menu_ovl_draw;
|
|
mSM_menu_ovl_move(submenu);
|
|
}
|