Matched board/ui

This commit is contained in:
mrshigure 2024-01-23 20:43:24 -08:00
parent 5db390678a
commit 44a6066f08
8 changed files with 2075 additions and 16 deletions

View file

@ -4,7 +4,7 @@ symbols: config/GMPE01_00/symbols.txt
splits: config/GMPE01_00/splits.txt
quick_analysis: true # Faster re-runs after initial analysis
mw_comment_version: 10 # GC 2.6 linker
force_active: [__register_global_object]
force_active: [__register_global_object, lbl_801D40D0]
modules:
- object: orig/GMPE01_00/files/dll/_minigameDll.rel

View file

@ -375,7 +375,7 @@ config.libs = [
Object(NonMatching, "game/board/mushroom.c"),
Object(NonMatching, "game/board/star.c"),
Object(NonMatching, "game/board/roll.c"),
Object(NonMatching, "game/board/ui.c"),
Object(Matching, "game/board/ui.c"),
Object(NonMatching, "game/board/block.c"),
Object(NonMatching, "game/board/item.c"),
Object(NonMatching, "game/board/bowser.c"),

View file

@ -111,13 +111,25 @@ static inline u16 __OSf32tou16(register f32 inF)
static inline void OSf32tou16(f32 *f, u16 *out) { *out = __OSf32tou16(*f); }
static inline float __OSs8tof32(register const s8* arg) {
register float ret;
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_S8
}
return ret;
}
static inline void OSs8tof32(const s8* in, float* out) { *out = __OSs8tof32(in); }
static inline float __OSs16tof32(register const s16* arg) {
register float ret;
asm {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_S16
}
return ret;
}
@ -129,7 +141,7 @@ static inline float __OSu8tof32(register const u8* arg) {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_U8
}
return ret;
}
@ -141,7 +153,7 @@ static inline float __OSu16tof32(register const u16* arg) {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_U16
}
return ret;
}

36
include/game/board/ui.h Executable file
View file

@ -0,0 +1,36 @@
#ifndef _BOARD_UI_H
#define _BOARD_UI_H
#include "game/sprite.h"
s32 BoardItemModelGet(s32 arg0);
s32 BoardItemNameGet(s32 arg0);
BOOL BoardStatusStopCheck(s32 arg0);
s32 BoardStatusVisibleGet(s32 arg0);
void BoardStatusShowSetAll(s32 arg0);
void BoardStatusItemSet(s32 arg0);
void BoardStatusShowSetForce(s32 arg0);
void BoardStatusGraySet(s32 arg0, s32 arg1);
void BoardStatusShowSet(s32 arg0, s32 arg1);
void BoardStatusItemHideSet(s32 arg0, s32 arg1);
void BoardStatusTargetPosSet(s32 arg0, Vec *arg1);
void BoardStatusPosGet(s32 arg0, float *arg1);
void BoardStatusPosSet(s32 arg0, Vec *arg1);
void BoardStatusHammerCreate(s32 arg0);
void BoardStatusHammerShowSet(s32 arg0, s32 arg1);
void BoardStatusHammerKill(s32 arg0);
void BoardStatusKill(void);
void BoardStatusCreate(void);
void BoardSpriteCreate(s32 file, s32 prio, AnimData **anim, s16 *sprite);
void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2);
void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3);
void BoardPickerBackFlagSet(s32 arg0);
BOOL BoardPickerDoneCheck(void);
s32 BoardPickerPosGet(Vec *arg0);
s32 BoardPickerChoiceGet(void);
s32 BoardItemUseExec(s32 arg0);
void BoardMakeRandomItem(void);
void BoardItemGetDestPos(s32 arg0, Vec *arg1);
void BoardItemStatusKill(s32 arg0);
#endif

View file

@ -6,6 +6,7 @@
void GWInit(void);
void GWGameStatReset(void);
s32 GWMessSpeedGet(void);
s32 GWMessDelayGet(void);
void GWMGRecordSet(int index, s32 value);
s32 GWMGRecordGet(int index);
void GWCharColorGet(int character, GXColor *color);

View file

@ -41,7 +41,7 @@ typedef struct system_state {
/* 0x30 */ u8 mess_delay;
/* 0x31 */ struct {
u8 field31_bit0 : 4;
u8 field31_bit4 : 4;
u8 field31_bit4 : 4;
};
/* 0x32 */ s8 unk_32;
/* 0x34 */ u16 mg_next;
@ -57,7 +57,7 @@ typedef struct player_state {
u16 com : 1;
u16 character : 4;
u16 auto_size : 2;
u16 field00_bit9 : 1;
u16 field00_bit9 : 1;
};
/* 0x02 */ struct {
u8 team : 1;
@ -147,19 +147,34 @@ extern PlayerState GWPlayer[4];
extern SystemState GWSystem;
extern GameStat GWGameStat;
static inline s32 GWTeamGet(void)
{
return GWSystem.team;
}
static inline s32 GWLanguageGet(void)
{
return GWGameStat.language;
return GWGameStat.language;
}
static inline s32 GWMGTypeGet()
static inline s32 GWMGTypeGet(void)
{
return GWSystem.mg_type;
return GWSystem.mg_type;
}
static inline s32 GWMessSpeedGet()
static inline s32 GWMessSpeedGet(void)
{
return GWSystem.mess_speed;
return GWSystem.mess_speed;
}
static inline s32 GWBoardGet(void)
{
return GWSystem.board;
}
static inline s32 GWPlayerTeamGet(s32 player)
{
return GWPlayer[player].team;
}
#endif

View file

@ -1982,8 +1982,6 @@ static float last5GfxPosTbl[2][3][2] = {
static void UpdateLast5Gfx(omObjData *object);
void BoardSpriteCreate(s32 file, s16 prio, AnimData **anim, s16 *sprite);
void BoardLast5GfxInit(void)
{
Last5GfxWork *work;
@ -2011,7 +2009,7 @@ void BoardLast5GfxInit(void)
lastF = 0;
}
for(i=0; i<3; i++) {
s16 prio;
s32 prio;
s32 spr_file;
if(i == 1) {

1997
src/game/board/ui.c Executable file

File diff suppressed because it is too large Load diff