Merge pull request #132 from gamemasterplc/main

Finish BoardLast5GfxInit
This commit is contained in:
gamemasterplc 2024-01-19 17:01:34 -06:00 committed by GitHub
commit cf62f8879e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 26 additions and 33 deletions

View file

@ -545,7 +545,7 @@ XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0
XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4
GWInit = .text:0x800308B8; // type:function size:0x14C GWInit = .text:0x800308B8; // type:function size:0x14C
GWGameStatReset = .text:0x80030A04; // type:function size:0x318 GWGameStatReset = .text:0x80030A04; // type:function size:0x318
GWMessSpeedGet = .text:0x80030D1C; // type:function size:0x4C GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C
GWMGRecordSet = .text:0x80030D68; // type:function size:0x54 GWMGRecordSet = .text:0x80030D68; // type:function size:0x54
GWMGRecordGet = .text:0x80030DBC; // type:function size:0x18 GWMGRecordGet = .text:0x80030DBC; // type:function size:0x18
GWCharColorGet = .text:0x80030DD4; // type:function size:0x140 GWCharColorGet = .text:0x80030DD4; // type:function size:0x140

View file

@ -105,7 +105,7 @@ typedef struct player_state {
typedef struct game_stat { typedef struct game_stat {
/* 0x0 */ s16 unk_00; /* 0x0 */ s16 unk_00;
/* 0x2 */ s8 language; /* 0x2 */ u8 language;
/* 0x3 */ u8 sound_mode; /* 0x3 */ u8 sound_mode;
/* 0x4 */ s8 rumble; /* 0x4 */ s8 rumble;
/* 0x6 */ u16 total_stars; /* 0x6 */ u16 total_stars;
@ -147,4 +147,19 @@ extern PlayerState GWPlayer[4];
extern SystemState GWSystem; extern SystemState GWSystem;
extern GameStat GWGameStat; extern GameStat GWGameStat;
static inline s32 GWLanguageGet(void)
{
return GWGameStat.language;
}
static inline s32 GWMGTypeGet()
{
return GWSystem.mg_type;
}
static inline s32 GWMessSpeedGet()
{
return GWSystem.mess_speed;
}
#endif #endif

View file

@ -93,17 +93,6 @@ static s32 ExecTurnStart(void);
static void CreateBoard(void); static void CreateBoard(void);
static void DestroyBoard(void); static void DestroyBoard(void);
static inline int GWMGTypeGet()
{
return GWSystem.mg_type;
}
static inline int GWMessSpeedGet()
{
return GWSystem.mess_speed;
}
#define BOARD_FABS(value) ((value < 0) ? -(value) : (value)) #define BOARD_FABS(value) ((value < 0) ? -(value) : (value))
void BoardCommonInit(BoardFunc create, BoardFunc destroy) void BoardCommonInit(BoardFunc create, BoardFunc destroy)
@ -2042,13 +2031,8 @@ void BoardLast5GfxInit(void)
prio = 1400; prio = 1400;
} }
spr_file = last5GfxSprTbl[i]; spr_file = last5GfxSprTbl[i];
if(i == 2 && work->is_last) { if(i == 2 && work->is_last && GWLanguageGet() != 0) {
//FIXME: unnecessary extsb during comparison spr_file = MAKE_DATA_NUM(DATADIR_BOARD, 98);
s8 language = GWGameStat.language;
if(language != 0) {
spr_file = MAKE_DATA_NUM(DATADIR_BOARD, 98);
}
} }
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
HuSprGrpMemberSet(work->group, i, work->sprites[i]); HuSprGrpMemberSet(work->group, i, work->sprites[i]);

View file

@ -182,7 +182,6 @@ void BoardWinPause(void) {
void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) { void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) {
s32 i; s32 i;
s32 speed;
winPosIdx = pos; winPosIdx = pos;
@ -213,13 +212,11 @@ void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) {
if (GWSystem.mess_speed == 3) { if (GWSystem.mess_speed == 3) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;
} }
speed = GWSystem.mess_speed; BoardWinSpeedSet(GWMessSpeedGet());
BoardWinSpeedSet(speed);
BoardWinPlayerSet(GWSystem.player_curr); BoardWinPlayerSet(GWSystem.player_curr);
} }
void BoardWinCreate(s32 pos, u32 mess, s32 portrait) { void BoardWinCreate(s32 pos, u32 mess, s32 portrait) {
s32 speed;
s32 i; s32 i;
winPosIdx = pos; winPosIdx = pos;
@ -250,8 +247,7 @@ void BoardWinCreate(s32 pos, u32 mess, s32 portrait) {
if (GWSystem.mess_speed == 3) { if (GWSystem.mess_speed == 3) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;
} }
speed = GWSystem.mess_speed; BoardWinSpeedSet(GWMessSpeedGet());
BoardWinSpeedSet(speed);
BoardWinPlayerSet(GWSystem.player_curr); BoardWinPlayerSet(GWSystem.player_curr);
autoPickF = 0; autoPickF = 0;
} }
@ -381,7 +377,7 @@ void BoardWinPlayerSet(s32 player) {
void BoardWinStartComKeySet(void) { void BoardWinStartComKeySet(void) {
s32 comkey[4]; s32 comkey[4];
s32 speed; s32 delay;
s32 waitnum; s32 waitnum;
s32 i; s32 i;
@ -410,12 +406,12 @@ void BoardWinStartComKeySet(void) {
} }
} }
} }
speed = GWMessSpeedGet(); delay = GWMessDelayGet();
waitnum = HuWinKeyWaitNumGet(winMess); waitnum = HuWinKeyWaitNumGet(winMess);
if (waitnum != 0) { if (waitnum != 0) {
HuWinComKeyReset(); HuWinComKeyReset();
for (i = 0; i < waitnum; i++) { for (i = 0; i < waitnum; i++) {
HuWinComKeyWait(comkey[0], comkey[1], comkey[2], comkey[3], speed); HuWinComKeyWait(comkey[0], comkey[1], comkey[2], comkey[3], delay);
} }
} }
} }

View file

@ -134,7 +134,7 @@ void GWGameStatReset(void)
ResetBoardSettings(); ResetBoardSettings();
} }
s32 GWMessSpeedGet(void) s32 GWMessDelayGet(void)
{ {
if(GWSystem.mess_delay > 48) { if(GWSystem.mess_delay > 48) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;

View file

@ -201,14 +201,12 @@ void HuWindowInit(void) {
void HuWinInit(s32 mess_data_no) { void HuWinInit(s32 mess_data_no) {
s16 i; s16 i;
void *anim_data; void *anim_data;
s8 language;
if (!winProc) { if (!winProc) {
HuAR_ARAMtoMRAM(winAMemP); HuAR_ARAMtoMRAM(winAMemP);
winProc = HuPrcCreate(HuWinProc, 0x64, 0x1000, 0); winProc = HuPrcCreate(HuWinProc, 0x64, 0x1000, 0);
HuPrcSetStat(winProc, 0xC); HuPrcSetStat(winProc, 0xC);
language = GWGameStat.language; LanguageNo = GWLanguageGet();
LanguageNo = language;
messDataNo = mess_data_no; messDataNo = mess_data_no;
fontWidthP = (LanguageNo == 0) ? charWJTbl : charWETbl; fontWidthP = (LanguageNo == 0) ? charWJTbl : charWETbl;
HuWinMesRead(mess_data_no); HuWinMesRead(mess_data_no);