mirror of https://github.com/pmret/papermario.git
186 lines
4.5 KiB
C
186 lines
4.5 KiB
C
#include "common.h"
|
|
|
|
// Need data segment and vars declared above
|
|
#ifdef NON_MATCHING
|
|
void pause_set_cursor_opacity(s32 val) {
|
|
gPauseMenuCursorTargetOpacity = val;
|
|
}
|
|
#else
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_set_cursor_opacity);
|
|
#endif
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80242BAC);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80242D04);
|
|
|
|
// Delay slot issue with gPauseMenuCursorTargetOpacity (needs .data)
|
|
#ifdef NON_MATCHING
|
|
void pause_interp_cursor(void) {
|
|
s32* posX = &gPauseMenuCursorPosX;
|
|
s32* posY = &gPauseMenuCursorPosY;
|
|
s32* targetPosX = &gPauseMenuTargetPosX;
|
|
s32* targetPosY = &gPauseMenuTargetPosY;
|
|
s32 xDelta;
|
|
s32 yDelta;
|
|
s32* opacity;
|
|
|
|
xDelta = (*targetPosX - *posX) * 0.5;
|
|
yDelta = (*targetPosY - *posY) * 0.5;
|
|
|
|
if ((*targetPosX != *posX) || (*targetPosY != *posY)) {
|
|
if ((xDelta == 0) && (yDelta == 0)) {
|
|
*posX = *targetPosX;
|
|
*posY = *targetPosY;
|
|
}
|
|
}
|
|
|
|
// Macros? something strange
|
|
{
|
|
s32* posX = &gPauseMenuCursorPosX;
|
|
*posX += xDelta;
|
|
}
|
|
|
|
{
|
|
s32* posY = &gPauseMenuCursorPosY;
|
|
*posY += yDelta;
|
|
}
|
|
|
|
if (gPauseMenuCursorTargetOpacity == 0) {
|
|
opacity = &gPauseMenuCursorOpacity;
|
|
|
|
*opacity -= 128;
|
|
if (*opacity < 0) {
|
|
*opacity = 0;
|
|
}
|
|
} else {
|
|
opacity = &gPauseMenuCursorOpacity;
|
|
|
|
*opacity += 32;
|
|
if (*opacity > 255) {
|
|
*opacity = 255;
|
|
}
|
|
}
|
|
gPauseMenuCursorTargetOpacity = 255;
|
|
}
|
|
#else
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_interp_cursor);
|
|
#endif
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80242F90);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80242FBC);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80242FF4);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80243090);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_802430E4);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_8024313C);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80243188);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80243238);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_802432E8);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", func_80243388);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_interp_text_scroll);
|
|
|
|
// Slight ordering issue with the sign flip at the beginning
|
|
#ifdef NON_MATCHING
|
|
s32 pause_interp_vertical_scroll(s32 deltaBefore) {
|
|
s32 val;
|
|
s32 s;
|
|
s32 db;
|
|
|
|
db = deltaBefore;
|
|
if (deltaBefore < 0) {
|
|
db = -deltaBefore;
|
|
}
|
|
|
|
s = sign(deltaBefore);
|
|
|
|
if (db >= 16) {
|
|
val = db / 2;
|
|
if (val > 20) {
|
|
val = 20;
|
|
}
|
|
} else {
|
|
val = gPauseMenuPageScrollInterpEasingLUT[db];
|
|
}
|
|
|
|
return val * s;
|
|
}
|
|
#else
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_interp_vertical_scroll, s32 deltaBefore);
|
|
#endif
|
|
|
|
void pause_update_cursor(s32 arg0, s32 offsetX, s32 offsetY) {
|
|
s32 opacity;
|
|
|
|
pause_interp_cursor();
|
|
opacity = gPauseMenuCursorOpacity;
|
|
if (opacity > 0) {
|
|
if (opacity > 255) {
|
|
opacity = 255;
|
|
}
|
|
icon_set_opacity(gPauseMenuCommonIconIDs[0], opacity);
|
|
set_icon_render_pos(gPauseMenuCommonIconIDs[0], offsetX + gPauseMenuCursorPosX, offsetY + gPauseMenuCursorPosY);
|
|
draw_icon_2(gPauseMenuCommonIconIDs[0]);
|
|
}
|
|
}
|
|
|
|
void func_80243568(void) {
|
|
}
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_textbox_draw_contents);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tutorial_draw_contents);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_init);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tutorial_input);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_handle_input);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_cleanup);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_get_total_equipped_bp_cost);
|
|
|
|
INCLUDE_ASM(void, "code_135EE0", pause_draw_rect, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 tileDescriptor, s32 uls,
|
|
s32 ult, s32 dsdx, s32 dtdy);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_sort_item_list);
|
|
|
|
void pause_tabs_draw_invis(void) {
|
|
}
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_stats);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_badges);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_items);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_party);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_spirits);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_draw_map);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_init);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_handle_input);
|
|
|
|
INCLUDE_ASM(s32, "code_135EE0", pause_tabs_update);
|
|
|
|
void pause_tabs_cleanup(void) {
|
|
s32* iconIDs = gPauseMenuTabIconIDs;
|
|
s32 i;
|
|
|
|
for (i = 0; i < ARRAY_COUNT(gPauseMenuTabIconIDs); i++) {
|
|
free_icon(iconIDs[i]);
|
|
}
|
|
}
|