Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
67e9549885
39 changed files with 6553 additions and 361 deletions
|
|
@ -478,12 +478,12 @@ static void TitleInit(void)
|
|||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2));
|
||||
sprite = HuSprCreate(sprite_data, 2, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 2, sprite);
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR);
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||
HuSprPosSet(titleGroup, 2, 288, 380);
|
||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9));
|
||||
sprite = HuSprCreate(sprite_data, 0, 0);
|
||||
HuSprGrpMemberSet(titleGroup, 3, sprite);
|
||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR);
|
||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||
HuSprPosSet(titleGroup, 3, 288, 200);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "common.h"
|
||||
#include "REL/executor.h"
|
||||
#include <dolphin/mtx.h>
|
||||
#include "game/objsub.h"
|
||||
|
||||
// global data //
|
||||
typedef struct unkStruct18FC10 {
|
||||
|
|
@ -94,7 +95,6 @@ extern void espBankSet(s16, s16);
|
|||
extern void espDrawNoSet(s16, s16);
|
||||
extern void WipeCreate(s16, s16, s16);
|
||||
extern u8 WipeStatGet(void);
|
||||
extern void omGameSysInit(omObjData*);
|
||||
extern f32 PSVECNormalize(Vec3f*, Vec3f*);
|
||||
|
||||
// local data //
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@
|
|||
#include "board_unsplit.h"
|
||||
#include "game/hsfman.h"
|
||||
|
||||
void BoardModelPosSet(s16, f32, f32, f32);
|
||||
s32 BoardModelMotionStart(s16, s32, s32);
|
||||
s32 BoardModelPosSet(s16, f32, f32, f32);
|
||||
s32 BoardModelMotionStart(s16, s32, u32);
|
||||
|
||||
void fn_8005B150(void*, void*);
|
||||
void fn_1_740(void);
|
||||
|
|
@ -26,7 +26,7 @@ void fn_1_AF8(void);
|
|||
void fn_1_DEC(void);
|
||||
void fn_1_10B0(void);
|
||||
s32 fn_1_12C8(void);
|
||||
void fn_8006DDE8(s16, f32);
|
||||
s32 fn_8006DDE8(s16, f32);
|
||||
void fn_1_10E4(omObjData* arg0);
|
||||
extern Process *boardObjMan;
|
||||
typedef void (*VoidFunc)(void);
|
||||
|
|
@ -35,7 +35,7 @@ extern const VoidFunc _dtors[];
|
|||
|
||||
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
s16 BoardModelCreate(s32, void*, s32);
|
||||
s16 BoardModelCreate(s32, s32*, s32);
|
||||
void BoardModelKill(s16);
|
||||
void BoardModelMotionStartEndSet(s16, s32, s32);
|
||||
void Hu3DFogSet(f32, f32, u8, u8, u8);
|
||||
|
|
@ -142,10 +142,10 @@ void BoardCreate(void) {
|
|||
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
|
||||
lbl_1_data_1E4 = BoardModelCreate(0x77001B, &lbl_1_data_20C, 0);
|
||||
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
|
||||
lbl_1_data_1E6 = BoardModelCreate(0x2000D, &lbl_1_data_214, 0);
|
||||
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "REL/w03Dll.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/board/player.h"
|
||||
#include "math.h"
|
||||
#include "board_unsplit.h"
|
||||
|
|
@ -67,7 +68,6 @@ s32 BoardVecDAngleCalcRange(float *value, float min, float range);
|
|||
void BoardCameraQuakeSet(s32 duration, float strength);
|
||||
s16 MGSeqCreate(s32, ...);
|
||||
u8 MGSeqStatGet(s16);
|
||||
void omVibrate(s16, s16, s16, s16);
|
||||
f32 BoardPlayerRotYGet(s32);
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "board_unsplit.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/objsub.h"
|
||||
|
||||
void fn_1_1358(void);
|
||||
void fn_1_152C(void);
|
||||
|
|
@ -29,7 +30,6 @@ s32 BoardPlayerMotBlendCheck(s32);
|
|||
f32 BoardPlayerRotYGet(s32);
|
||||
void BoardConfettiCreate(Point3d*, s16, f32);
|
||||
double atan2(double y, double x);
|
||||
void omVibrate(s16, s16, s16, s16);
|
||||
f32 BoardModelMotionTimeGet(s16);
|
||||
|
||||
//DATA
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Vec lbl_1_data_80[2] = {
|
|||
|
||||
void fn_1_AEC(void) {
|
||||
lbl_1_bss_1C = 0;
|
||||
lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), &lbl_1_data_78, 0);
|
||||
lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), lbl_1_data_78, 0);
|
||||
BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001);
|
||||
BoardTutorialHostSet(lbl_1_bss_1E);
|
||||
BoardModelLayerSet(lbl_1_bss_1E, 6);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "game/data.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "math.h"
|
||||
|
|
@ -35,7 +36,6 @@ static void CoinChgDisappear(omObjData*, coinChg*);
|
|||
|
||||
extern void BoardTutorialHookExec(s16, s32);
|
||||
extern void BoardCameraViewSet(s32);
|
||||
extern void omVibrate(s16, s16, s16, s16);
|
||||
extern void BoardPlayerPosGet(s32, Vec*);
|
||||
extern void BoardModelPosGet(s16, Vec*);
|
||||
extern void BoardPlayerMotionEndWait(s32);
|
||||
|
|
|
|||
1487
src/game/board/boo.c
Executable file
1487
src/game/board/boo.c
Executable file
File diff suppressed because it is too large
Load diff
1902
src/game/board/item.c
Executable file
1902
src/game/board/item.c
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -290,7 +290,7 @@ void BoardSaveInit(s32 board)
|
|||
GWSystem.field31_bit4 = 0;
|
||||
GWSystem.unk_32 = 1;
|
||||
GWSystem.mg_next = 0;
|
||||
GWSystem.mg_next_extra = 0;
|
||||
GWSystem.mg_next_type = 0;
|
||||
GWSystem.unk_38 = 0;
|
||||
GWSystem.block_pos = 0;
|
||||
memset(GWSystem.board_data, 0, 32);
|
||||
|
|
@ -334,13 +334,13 @@ void BoardSaveInit(s32 board)
|
|||
}
|
||||
}
|
||||
|
||||
void BoardStoryConfigSet(s32 mg_type, s32 diff_story)
|
||||
void BoardStoryConfigSet(s32 mg_list, s32 diff_story)
|
||||
{
|
||||
GWSystem.party = 0;
|
||||
GWSystem.team = 0;
|
||||
GWSystem.diff_story = diff_story;
|
||||
GWSystem.bonus_star = 0;
|
||||
GWSystem.mg_type = mg_type;
|
||||
GWSystem.mg_list = mg_list;
|
||||
GWPlayer[0].handicap = 0;
|
||||
GWPlayer[1].handicap = 0;
|
||||
GWPlayer[2].handicap = 0;
|
||||
|
|
@ -358,13 +358,13 @@ void BoardStoryConfigSet(s32 mg_type, s32 diff_story)
|
|||
_SetFlag(FLAG_ID_MAKE(1, 10));
|
||||
}
|
||||
|
||||
void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_type, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap)
|
||||
void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap)
|
||||
{
|
||||
GWSystem.party = 1;
|
||||
GWSystem.team = team;
|
||||
GWSystem.diff_story = 0;
|
||||
GWSystem.bonus_star = bonus_star;
|
||||
GWSystem.mg_type = mg_type;
|
||||
GWSystem.mg_list = mg_list;
|
||||
GWSystem.max_turn = max_turn;
|
||||
memset(GWPlayer, 0, 4*sizeof(PlayerState));
|
||||
GWPlayer[0].handicap = p1_handicap;
|
||||
|
|
@ -617,11 +617,11 @@ static void CreateBoard(void)
|
|||
GWSystem.mg_next = -1;
|
||||
if(!GWGameStat.field10E_bit5) {
|
||||
s32 type_temp;
|
||||
if(GWSystem.mg_type == 3) {
|
||||
GWSystem.mg_type = 0;
|
||||
if(GWSystem.mg_list == 3) {
|
||||
GWSystem.mg_list = 0;
|
||||
}
|
||||
if(GWMGTypeGet() == 2) {
|
||||
GWSystem.mg_type = 0;
|
||||
if(GWMGListGet() == 2) {
|
||||
GWSystem.mg_list = 0;
|
||||
}
|
||||
}
|
||||
if(GWSystem.mess_speed == 3) {
|
||||
|
|
@ -2023,7 +2023,7 @@ void BoardLast5GfxInit(void)
|
|||
}
|
||||
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
|
||||
HuSprGrpMemberSet(work->group, i, work->sprites[i]);
|
||||
HuSprAttrSet(work->group, i, SPIRTE_ATTR_BILINEAR);
|
||||
HuSprAttrSet(work->group, i, SPRITE_ATTR_BILINEAR);
|
||||
HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]);
|
||||
}
|
||||
if(!work->is_last) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
#include "game/board/player.h"
|
||||
|
||||
//// #include "game/objsub.h"
|
||||
extern void omVibrate(s16, s16, s16, s16);
|
||||
#include "game/objsub.h"
|
||||
//// #include "game/board/ui.h"
|
||||
extern void BoardStatusHammerShowSet(s32, s32);
|
||||
extern void BoardYourTurnExec(s32);
|
||||
|
|
|
|||
|
|
@ -6,12 +6,11 @@
|
|||
#include "game/hsfman.h"
|
||||
#include "game/data.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/objsub.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "string.h"
|
||||
|
||||
extern void omVibrate(s16, s16, s16, s16);
|
||||
|
||||
|
||||
extern s16 BoardStarHostMdlGet(void);
|
||||
extern void BoardModelPosSetV(s16 model, Vec *pos);
|
||||
|
|
|
|||
|
|
@ -9,13 +9,15 @@
|
|||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/item.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "board_unsplit.h"
|
||||
|
||||
#include "math.h"
|
||||
|
||||
#define ABS(x) ((x < 0) ? -x : x)
|
||||
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct {
|
||||
|
|
@ -91,18 +93,10 @@ typedef struct {
|
|||
} UnkUiWork04;
|
||||
|
||||
void BoardPlayerSparkSet(s32);
|
||||
s32 BoardItemDoneCheck(void);
|
||||
void BoardItemStart(s32, s32);
|
||||
void BoardTutorialHookExec(s16, s32);
|
||||
s16 BoardBowserSuitModelGet(void);
|
||||
void BoardBowserSuitMotionCreate(void);
|
||||
s16 BoardBowserSuitPlayerModelGet(void);
|
||||
void CharModelLayerSetAll(s32);
|
||||
void BoardItemBagItemSet(void*);
|
||||
float BoardModelMotionTimeGet(s16);
|
||||
void BoardModelMotionStartEndSet(s16, s16, s16);
|
||||
void BoardModelMotionTimeSet(s16, float);
|
||||
void BoardModelPosGet(s16, Vec*);
|
||||
s32 BoardComTutorialItemGet(s32);
|
||||
void BoardTutorialHostHide(s32);
|
||||
|
||||
|
|
@ -1201,7 +1195,7 @@ void BoardMakeRandomItem(void) {
|
|||
itemRandTbl[i] = temp_r3;
|
||||
}
|
||||
}
|
||||
BoardItemBagItemSet(&itemRandTbl);
|
||||
BoardItemBagItemSet(itemRandTbl);
|
||||
}
|
||||
|
||||
static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "game/wipe.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfex.h"
|
||||
#include "game/objsub.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "math.h"
|
||||
|
||||
|
|
@ -14,7 +15,6 @@ static void WarpFall(s32);
|
|||
static void WarpImpact(s32);
|
||||
|
||||
|
||||
extern void omVibrate(s16, s16, s16, s16);
|
||||
extern void BoardCharWheelInit(s32, s32);
|
||||
extern void BoardCharWheelSpeedSet(f32);
|
||||
extern void BoardCharWheelWait(void);
|
||||
|
|
|
|||
277
src/game/fault.c
277
src/game/fault.c
|
|
@ -1,4 +1,4 @@
|
|||
#include "game/gamework_data.h"
|
||||
#include "game/fault.h"
|
||||
#include "stdarg.h"
|
||||
#include "stdio.h"
|
||||
|
||||
|
|
@ -9,11 +9,10 @@ typedef struct rgb_color {
|
|||
} RGBColor;
|
||||
|
||||
typedef struct xfb_geometry {
|
||||
void* unk0[4];
|
||||
u16 unk4;
|
||||
u16 unk5;
|
||||
u16 unk6;
|
||||
u16 unk7;
|
||||
void* frame_buffers[4];
|
||||
u16 width;
|
||||
u16 height;
|
||||
u16 mode;
|
||||
} XFBGeometry;
|
||||
|
||||
static RGBColor XFB_Colors[5] = {
|
||||
|
|
@ -28,23 +27,23 @@ static RGBColor XFB_Colors[5] = {
|
|||
|
||||
XFBGeometry XFB_Geometry;
|
||||
|
||||
static s32 (*XFB_putc)(u8 arg0, s32 arg1, s32 arg2);
|
||||
static s32 (*XFB_putc)(u8 c, s32 x, s32 y);
|
||||
|
||||
static RGBColor Draw_Color;
|
||||
|
||||
static s32 x_start;
|
||||
static s32 y_start;
|
||||
|
||||
const char* lbl_801D34A0 = "OSPanic encounterd:";
|
||||
|
||||
s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2);
|
||||
s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2);
|
||||
s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2);
|
||||
s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2);
|
||||
void XFB_WriteBackCache(void);
|
||||
void XFB_CR(s32 arg0, s32* arg1, s32* arg2);
|
||||
static s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2);
|
||||
static s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2);
|
||||
static s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2);
|
||||
static s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2);
|
||||
static void XFB_WriteBackCache(void);
|
||||
static void XFB_CR(s32 arg0, s32* arg1, s32* arg2);
|
||||
|
||||
void OSPanic(const char* file, int line, const char* msg, ...) {
|
||||
static char* titleMes = "OSPanic encounterd:";
|
||||
|
||||
va_list sp78;
|
||||
s32 sp74;
|
||||
s32 sp70;
|
||||
|
|
@ -53,7 +52,7 @@ void OSPanic(const char* file, int line, const char* msg, ...) {
|
|||
|
||||
sp74 = x_start = 0x10;
|
||||
sp70 = y_start = 0x20;
|
||||
puts = XFB_puts((s8*)lbl_801D34A0, sp74, sp70);
|
||||
puts = XFB_puts((s8*)titleMes, sp74, sp70);
|
||||
XFB_CR(puts + 1, &sp74, &sp70);
|
||||
sprintf(sp84, "%s:%d", file, line);
|
||||
puts = XFB_puts((s8*)sp84, sp74, sp70);
|
||||
|
|
@ -71,77 +70,74 @@ void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode) {
|
|||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
XFB_Geometry.unk0[i] = 0;
|
||||
XFB_Geometry.frame_buffers[i] = 0;
|
||||
}
|
||||
|
||||
XFB_Geometry.unk4 = 0;
|
||||
XFB_Geometry.unk5 = 0;
|
||||
XFB_Geometry.unk6 = 0;
|
||||
XFB_Geometry.width = 0;
|
||||
XFB_Geometry.height = 0;
|
||||
XFB_Geometry.mode = 0;
|
||||
|
||||
XFB_putc = XFB_putcProgressive;
|
||||
Draw_Color = XFB_Colors[1];
|
||||
|
||||
if (mode) {
|
||||
XFB_Geometry.unk4 = ((u16)mode->fbWidth + 0xF) & 0xFFFFFFF0;
|
||||
XFB_Geometry.unk5 = mode->xfbHeight;
|
||||
XFB_Geometry.unk6 = mode->xFBmode;
|
||||
XFB_Geometry.width = ((u16)mode->fbWidth + 0xF) & 0xFFFFFFF0;
|
||||
XFB_Geometry.height = mode->xfbHeight;
|
||||
XFB_Geometry.mode = mode->xFBmode;
|
||||
|
||||
if (XFB_Geometry.unk6 == 0) {
|
||||
if (XFB_Geometry.mode == 0) {
|
||||
XFB_putc = XFB_putcInterlace;
|
||||
return;
|
||||
} else {
|
||||
XFB_putc = XFB_putcProgressive;
|
||||
}
|
||||
XFB_putc = XFB_putcProgressive;
|
||||
}
|
||||
}
|
||||
|
||||
void HuFaultSetXfbAddress(s16 index, void* value) {
|
||||
if (index >= 0 && index < 4) {
|
||||
XFB_Geometry.unk0[index] = value;
|
||||
XFB_Geometry.frame_buffers[index] = value;
|
||||
}
|
||||
}
|
||||
|
||||
void XFB_WriteBackCache(void) {
|
||||
s32 var_r31;
|
||||
void* temp_r30;
|
||||
static void XFB_WriteBackCache(void) {
|
||||
s32 i;
|
||||
void* frame_buffer;
|
||||
u32 temp_r29;
|
||||
|
||||
temp_r29 = XFB_Geometry.unk4 * 2 * XFB_Geometry.unk5;
|
||||
temp_r29 = XFB_Geometry.width * 2 * XFB_Geometry.height;
|
||||
|
||||
if (temp_r29 != 0) {
|
||||
var_r31 = 0;
|
||||
|
||||
while (var_r31 < 4) {
|
||||
temp_r30 = XFB_Geometry.unk0[var_r31];
|
||||
if (temp_r30) {
|
||||
DCStoreRange(temp_r30, temp_r29);
|
||||
for (i = 0; i < 4; i += 1) {
|
||||
frame_buffer = XFB_Geometry.frame_buffers[i];
|
||||
|
||||
if (frame_buffer) {
|
||||
DCStoreRange(frame_buffer, temp_r29);
|
||||
}
|
||||
var_r31 += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void XFB_CR(s32 arg0, s32* arg1, s32* arg2) {
|
||||
static void XFB_CR(s32 arg0, s32* x_ptr, s32* y_ptr) {
|
||||
s32 temp_r30;
|
||||
s32 var_r31;
|
||||
s32 var_r29;
|
||||
s32 y;
|
||||
s32 x;
|
||||
|
||||
var_r29 = *arg1;
|
||||
var_r31 = *arg2;
|
||||
x = *x_ptr;
|
||||
y = *y_ptr;
|
||||
|
||||
var_r29 = x_start;
|
||||
var_r31 += 0x12;
|
||||
x = x_start;
|
||||
y += 0x12;
|
||||
|
||||
temp_r30 = arg0 & 7;
|
||||
if (temp_r30 != 0) {
|
||||
var_r31 += temp_r30 * 0x12;
|
||||
y += temp_r30 * 0x12;
|
||||
}
|
||||
|
||||
*arg1 = var_r29;
|
||||
*arg2 = var_r31;
|
||||
*x_ptr = x;
|
||||
*y_ptr = y;
|
||||
}
|
||||
|
||||
s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) {
|
||||
static s32 XFB_puts(s8* message, s32 x, s32 y) {
|
||||
s32 i;
|
||||
s32 temp_r31;
|
||||
s8 current_char;
|
||||
|
|
@ -149,24 +145,24 @@ s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) {
|
|||
i = 0;
|
||||
|
||||
do {
|
||||
current_char = *arg0++;
|
||||
current_char = *message++;
|
||||
|
||||
if (current_char == '\n') {
|
||||
XFB_CR(0, &arg1, &arg2);
|
||||
XFB_CR(0, &x, &y);
|
||||
|
||||
i += 1;
|
||||
} else {
|
||||
temp_r31 = XFB_putcS(current_char, arg1, arg2);
|
||||
temp_r31 = XFB_putcS(current_char, x, y);
|
||||
|
||||
if (temp_r31 >= 0) {
|
||||
if (temp_r31 != 0) {
|
||||
temp_r31 -= 1;
|
||||
|
||||
XFB_CR(temp_r31, &arg1, &arg2);
|
||||
XFB_CR(temp_r31, &x, &y);
|
||||
|
||||
i += temp_r31 + 1;
|
||||
}
|
||||
arg1 += 0x10;
|
||||
x += 0x10;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
|
@ -176,7 +172,7 @@ s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) {
|
|||
return i;
|
||||
}
|
||||
|
||||
s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2) {
|
||||
static s32 XFB_putcS(u8 c, s32 x, s32 y) {
|
||||
RGBColor sp8;
|
||||
s32 var_r26;
|
||||
s32 var_r25;
|
||||
|
|
@ -187,91 +183,76 @@ s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2) {
|
|||
var_r27 = 0;
|
||||
sp8 = Draw_Color;
|
||||
|
||||
if (arg1 + 0x11 >= XFB_Geometry.unk4) {
|
||||
var_r26 = arg1;
|
||||
var_r29 = arg2;
|
||||
if (0 != 0) {
|
||||
var_r29 += 0 * 0x12;
|
||||
}
|
||||
var_r26 = x_start;
|
||||
var_r29 += 0x12;
|
||||
var_r25 = 0;
|
||||
|
||||
if (var_r25 != 0) {
|
||||
var_r29 += var_r25 * 0x12;
|
||||
}
|
||||
|
||||
arg1 = var_r26;
|
||||
arg2 = var_r29;
|
||||
if (x + 0x11 >= XFB_Geometry.width) {
|
||||
XFB_CR(0, &x, &y);
|
||||
var_r27++;
|
||||
}
|
||||
|
||||
Draw_Color = *XFB_Colors;
|
||||
XFB_putc(arg0, arg1, arg2 - 2);
|
||||
XFB_putc(arg0, arg1, arg2 + 2);
|
||||
XFB_putc(arg0, arg1 - 1, arg2);
|
||||
XFB_putc(arg0, arg1 + 1, arg2);
|
||||
Draw_Color = XFB_Colors[0];
|
||||
XFB_putc(c, x, y - 2);
|
||||
XFB_putc(c, x, y + 2);
|
||||
XFB_putc(c, x - 1, y);
|
||||
XFB_putc(c, x + 1, y);
|
||||
|
||||
Draw_Color = sp8;
|
||||
XFB_putc(arg0, arg1, arg2);
|
||||
XFB_putc(c, x, y);
|
||||
|
||||
return var_r27;
|
||||
}
|
||||
|
||||
s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2) {
|
||||
s32 var_r21;
|
||||
static s32 XFB_putcProgressive(u8 c, s32 x, s32 y) {
|
||||
s32 result;
|
||||
s32 temp_r20;
|
||||
u8 spA;
|
||||
u8 sp9;
|
||||
u8 sp8;
|
||||
s32 var_r25;
|
||||
s32 var_r24;
|
||||
u8 red;
|
||||
u8 blue;
|
||||
u8 green;
|
||||
s32 i;
|
||||
s32 j;
|
||||
s32 var_r23;
|
||||
u8* var_r29;
|
||||
s32 var_r28;
|
||||
s32 k;
|
||||
s32 var_r27;
|
||||
s32 var_r26;
|
||||
u32 temp_r31;
|
||||
u32 var_r30;
|
||||
u32 var_r22;
|
||||
u8* var_r31;
|
||||
u8* frame_buffer;
|
||||
|
||||
var_r21 = 0;
|
||||
result = 0;
|
||||
|
||||
if (arg0 == 0) {
|
||||
if (c == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (arg1 + 0x10 >= XFB_Geometry.unk4) {
|
||||
arg2 += 0x12;
|
||||
arg1 = x_start;
|
||||
var_r21 = 1;
|
||||
if (x + 0x10 >= XFB_Geometry.width) {
|
||||
y += 0x12;
|
||||
x = x_start;
|
||||
result = 1;
|
||||
}
|
||||
|
||||
if (arg2 + 0x10 >= XFB_Geometry.unk5) {
|
||||
if (y + 0x10 >= XFB_Geometry.height) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
spA = Draw_Color.r;
|
||||
sp8 = Draw_Color.g;
|
||||
sp9 = Draw_Color.b;
|
||||
red = Draw_Color.r;
|
||||
green = Draw_Color.g;
|
||||
blue = Draw_Color.b;
|
||||
|
||||
temp_r20 = XFB_Geometry.unk4 * 2;
|
||||
var_r23 = (arg1 & 0xFFFE) * 2 + arg2 * temp_r20;
|
||||
var_r29 = Ascii8x8_1bpp + (arg0 * 8);
|
||||
var_r25 = 8;
|
||||
temp_r20 = XFB_Geometry.width * 2;
|
||||
var_r23 = (x & 0xFFFE) * 2 + y * temp_r20;
|
||||
var_r29 = Ascii8x8_1bpp + (c * 8);
|
||||
|
||||
while (var_r25 != 0) {
|
||||
var_r24 = 2;
|
||||
i = 8;
|
||||
|
||||
while (i != 0) {
|
||||
j = 2;
|
||||
|
||||
while (var_r24 != 0) {
|
||||
var_r28 = 0;
|
||||
|
||||
while (var_r28 < 4) {
|
||||
var_r31 = XFB_Geometry.unk0[var_r28];
|
||||
while (j != 0) {
|
||||
for (k = 0; k < 4; k ++) {
|
||||
frame_buffer = XFB_Geometry.frame_buffers[k];
|
||||
|
||||
if (var_r31 != 0) {
|
||||
var_r31 += var_r23;
|
||||
if (frame_buffer != 0) {
|
||||
frame_buffer += var_r23;
|
||||
|
||||
var_r22 = *var_r29;
|
||||
var_r30 = 0;
|
||||
|
|
@ -284,99 +265,101 @@ s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2) {
|
|||
var_r22 >>= 1;
|
||||
}
|
||||
var_r27 = 8;
|
||||
if ((s32) (arg1 & 1) != 0) {
|
||||
if ((s32) (x & 1) != 0) {
|
||||
var_r30 *= 2;
|
||||
var_r27 = 0xA;
|
||||
}
|
||||
|
||||
while (var_r27 != 0) {
|
||||
if ((u32) (var_r30 & 3) != 0) {
|
||||
var_r31[1] = sp9;
|
||||
var_r31[3] = sp8;
|
||||
frame_buffer[1] = blue;
|
||||
frame_buffer[3] = green;
|
||||
|
||||
if ((u32) (var_r30 & 1) != 0) {
|
||||
var_r31[0] = spA;
|
||||
frame_buffer[0] = red;
|
||||
}
|
||||
if ((u32) (var_r30 & 2) != 0) {
|
||||
var_r31[2] = spA;
|
||||
frame_buffer[2] = red;
|
||||
}
|
||||
}
|
||||
var_r27 -= 1;
|
||||
var_r31 += 4;
|
||||
frame_buffer += 4;
|
||||
var_r30 = var_r30 >> 2;
|
||||
}
|
||||
}
|
||||
var_r28 += 1;
|
||||
}
|
||||
var_r24 -= 1;
|
||||
|
||||
j -= 1;
|
||||
var_r23 += temp_r20;
|
||||
}
|
||||
var_r25 -= 1;
|
||||
i -= 1;
|
||||
var_r29 += 1;
|
||||
}
|
||||
return var_r21;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2) {
|
||||
u8 var_r24;
|
||||
u8 var_r22;
|
||||
u8 var_r21;
|
||||
static s32 XFB_putcInterlace(u8 c, s32 x, s32 y) {
|
||||
u8 red;
|
||||
u8 blue;
|
||||
u8 green;
|
||||
s32 temp_r23;
|
||||
s32 var_r26;
|
||||
s32 i;
|
||||
s32 var_r25;
|
||||
u8* var_r28;
|
||||
s32 var_r27;
|
||||
s32 j;
|
||||
s16 var_r29;
|
||||
s32 var_r30;
|
||||
u8* var_r31;
|
||||
|
||||
if (arg0 == 0) {
|
||||
if (c == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (arg1 + 8 >= XFB_Geometry.unk4 || arg2 + 8 >= XFB_Geometry.unk5) {
|
||||
if (x + 8 >= XFB_Geometry.width || y + 8 >= XFB_Geometry.height) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
var_r24 = Draw_Color.r;
|
||||
var_r21 = Draw_Color.g;
|
||||
var_r22 = Draw_Color.b;
|
||||
red = Draw_Color.r;
|
||||
green = Draw_Color.g;
|
||||
blue = Draw_Color.b;
|
||||
|
||||
temp_r23 = XFB_Geometry.unk4 * 2;
|
||||
var_r25 = ((arg1 & 0xFFFE) * 2) + ((arg2 >> 1) * temp_r23);
|
||||
var_r28 = Ascii8x8_1bpp + arg0 * 8;
|
||||
var_r26 = 8;
|
||||
temp_r23 = XFB_Geometry.width * 2;
|
||||
var_r25 = ((x & 0xFFFE) * 2) + ((y >> 1) * temp_r23);
|
||||
var_r28 = Ascii8x8_1bpp + c * 8;
|
||||
|
||||
while (var_r26) {
|
||||
for (var_r27 = 0; var_r27 < 4; var_r27 += 2) {
|
||||
var_r30 = var_r27;
|
||||
i = 8;
|
||||
|
||||
while (i != 0) {
|
||||
for (j = 0; j < 4; j += 2) {
|
||||
var_r30 = j;
|
||||
|
||||
if ((s32) (arg2 & 1) != 0) {
|
||||
if ((s32) (y & 1) != 0) {
|
||||
var_r30 += 1;
|
||||
}
|
||||
|
||||
var_r31 = XFB_Geometry.unk0[var_r30];
|
||||
var_r31 = XFB_Geometry.frame_buffers[var_r30];
|
||||
|
||||
if (var_r31) {
|
||||
var_r31 = var_r31 + var_r25;
|
||||
var_r29 = *var_r28;
|
||||
var_r30 = 4;
|
||||
|
||||
if (arg1 & 1) {
|
||||
if (x & 1) {
|
||||
var_r29 = (s16)var_r29 * 2;
|
||||
var_r30 = 5;
|
||||
}
|
||||
|
||||
while (var_r30) {
|
||||
if (var_r29 & 3) {
|
||||
var_r31[1] = var_r22;
|
||||
var_r31[3] = var_r21;
|
||||
var_r31[1] = blue;
|
||||
var_r31[3] = green;
|
||||
|
||||
if (var_r29 & 1) {
|
||||
var_r31[0] = var_r24;
|
||||
var_r31[0] = red;
|
||||
}
|
||||
if (var_r29 & 2) {
|
||||
var_r31[2] = var_r24;
|
||||
var_r31[2] = red;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -387,8 +370,8 @@ s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2) {
|
|||
}
|
||||
}
|
||||
|
||||
var_r26 -= 1;
|
||||
arg2 += 1;
|
||||
i -= 1;
|
||||
y += 1;
|
||||
var_r28 += 1;
|
||||
var_r25 += temp_r23;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "math.h"
|
||||
#include "string.h"
|
||||
|
||||
#define ABS(x) ((x < 0) ? -x : x)
|
||||
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ModelData *unk00;
|
||||
|
|
|
|||
|
|
@ -2063,10 +2063,10 @@ void Hu3DProjectionKill(s16 arg0) {
|
|||
Hu3DProjection[arg0].unk_04 = NULL;
|
||||
}
|
||||
|
||||
void Hu3DProjectionPosSet(s16 arg0, Vec arg1, Vec arg2, Vec arg3) {
|
||||
Hu3DProjection[arg0].unk_14 = arg1;
|
||||
Hu3DProjection[arg0].unk_20 = arg3;
|
||||
Hu3DProjection[arg0].unk_2C = arg2;
|
||||
void Hu3DProjectionPosSet(s16 arg0, Vec* arg1, Vec* arg2, Vec* arg3) {
|
||||
Hu3DProjection[arg0].unk_14 = *arg1;
|
||||
Hu3DProjection[arg0].unk_20 = *arg3;
|
||||
Hu3DProjection[arg0].unk_2C = *arg2;
|
||||
}
|
||||
|
||||
void Hu3DProjectionTPLvlSet(s16 arg0, f32 arg8) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "game/init.h"
|
||||
#include "game/fault.h"
|
||||
#include "dolphin/os.h"
|
||||
#include "dolphin/gx.h"
|
||||
#include "dolphin/dvd.h"
|
||||
|
|
@ -14,8 +15,6 @@ extern void HuAudInit();
|
|||
extern void HuCardInit();
|
||||
extern void HuARInit();
|
||||
extern u32 frand();
|
||||
extern void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode);
|
||||
extern void HuFaultSetXfbAddress(int fb, void *addr);
|
||||
|
||||
static GXRenderModeObj rmodeobj;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,35 +15,34 @@
|
|||
|
||||
extern FileListEntry _ovltbl[];
|
||||
u32 GlobalCounter;
|
||||
u32 lbl_801D3A50;
|
||||
u32 lbl_801D3A4C;
|
||||
u32 lbl_801D3A48;
|
||||
u32 lbl_801D3A44;
|
||||
u32 lbl_801D3A40;
|
||||
u32 lbl_801D3A3C;
|
||||
u32 lbl_801D3A38;
|
||||
u32 lbl_801D3A34;
|
||||
u32 lbl_801D3A30;
|
||||
u32 lbl_801D3A2C;
|
||||
u32 lbl_801D3A28;
|
||||
u32 lbl_801D3A24;
|
||||
u32 lbl_801D3A20;
|
||||
u32 lbl_801D3A1C;
|
||||
u32 lbl_801D3A18;
|
||||
u32 lbl_801D3A14;
|
||||
u32 lbl_801D3A10;
|
||||
u32 lbl_801D3A0C;
|
||||
u32 lbl_801D3A08;
|
||||
static u32 vcheck;
|
||||
static u32 vmiss;
|
||||
static u32 vstall;
|
||||
static u32 top_pixels_in;
|
||||
static u32 top_pixels_out;
|
||||
static u32 bot_pixels_in;
|
||||
static u32 bot_pixels_out;
|
||||
static u32 clr_pixels_in;
|
||||
static u32 total_copy_clks;
|
||||
static u32 cp_req;
|
||||
static u32 tc_req;
|
||||
static u32 cpu_rd_req;
|
||||
static u32 cpu_wr_req;
|
||||
static u32 dsp_req;
|
||||
static u32 io_req;
|
||||
static u32 vi_req;
|
||||
static u32 pe_req;
|
||||
static u32 rf_req;
|
||||
static u32 fi_req;
|
||||
s32 HuDvdErrWait;
|
||||
s32 SystemInitF;
|
||||
|
||||
void main(void) {
|
||||
u32 sp14;
|
||||
u32 sp10;
|
||||
s32 spC;
|
||||
s32 sp8;
|
||||
s16 var_r31;
|
||||
s32 temp_r30;
|
||||
void main(void)
|
||||
{
|
||||
u32 met0;
|
||||
u32 met1;
|
||||
s16 i;
|
||||
s32 retrace;
|
||||
|
||||
HuDvdErrWait = 0;
|
||||
SystemInitF = 0;
|
||||
|
|
@ -58,14 +57,14 @@ void main(void) {
|
|||
HuDataInit();
|
||||
HuPerfInit();
|
||||
HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF);
|
||||
HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF);
|
||||
HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF);
|
||||
WipeInit(RenderMode);
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
GWPlayerCfg[var_r31].character = -1;
|
||||
for (i = 0; i < 4; i++) {
|
||||
GWPlayerCfg[i].character = -1;
|
||||
}
|
||||
|
||||
omMasterInit(0, _ovltbl, 0x63, 1);
|
||||
omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT);
|
||||
VIWaitForRetrace();
|
||||
|
||||
if (VIGetNextField() == 0) {
|
||||
|
|
@ -73,7 +72,7 @@ void main(void) {
|
|||
VIWaitForRetrace();
|
||||
}
|
||||
while (1) {
|
||||
temp_r30 = VIGetRetraceCount();
|
||||
retrace = VIGetRetraceCount();
|
||||
if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -100,28 +99,31 @@ void main(void) {
|
|||
pfDrawFonts();
|
||||
HuPerfEnd(1);
|
||||
msmMusFdoutEnd();
|
||||
HuSysDoneRender(temp_r30);
|
||||
GXReadGPMetric(&sp14, &sp10);
|
||||
GXReadVCacheMetric(&lbl_801D3A50, &lbl_801D3A4C, &lbl_801D3A48);
|
||||
GXReadPixMetric(&lbl_801D3A44, &lbl_801D3A40, &lbl_801D3A3C, &lbl_801D3A38, &lbl_801D3A34, &lbl_801D3A30);
|
||||
GXReadMemMetric(&lbl_801D3A2C, &lbl_801D3A28, &lbl_801D3A24, &lbl_801D3A20, &lbl_801D3A1C, &lbl_801D3A18, &lbl_801D3A14, &lbl_801D3A10, &lbl_801D3A0C, &lbl_801D3A08);
|
||||
HuSysDoneRender(retrace);
|
||||
GXReadGPMetric(&met0, &met1);
|
||||
GXReadVCacheMetric(&vcheck, &vmiss, &vstall);
|
||||
GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks);
|
||||
GXReadMemMetric(&cp_req, &tc_req, &cpu_rd_req, &cpu_wr_req, &dsp_req, &io_req, &vi_req, &pe_req, &rf_req, &fi_req);
|
||||
HuPerfEnd(2);
|
||||
GlobalCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
void HuSysVWaitSet(s16 arg0) {
|
||||
minimumVcount = arg0;
|
||||
minimumVcountf = arg0;
|
||||
void HuSysVWaitSet(s16 vcount)
|
||||
{
|
||||
minimumVcount = vcount;
|
||||
minimumVcountf = vcount;
|
||||
}
|
||||
|
||||
s16 HuSysVWaitGet(void) {
|
||||
s16 HuSysVWaitGet(s16 param)
|
||||
{
|
||||
return (s16) minimumVcount;
|
||||
}
|
||||
|
||||
s32 rnd_seed = 0x0000D9ED;
|
||||
|
||||
s32 rand8(void) {
|
||||
s32 rand8(void)
|
||||
{
|
||||
rnd_seed = (rnd_seed * 0x41C64E6D) + 0x3039;
|
||||
return (u8)(((rnd_seed + 1) >> 0x10) & 0xFF);
|
||||
return (u8)(((rnd_seed + 1) >> 16) & 0xFF);
|
||||
}
|
||||
|
|
|
|||
1504
src/game/minigame_seq.c
Normal file
1504
src/game/minigame_seq.c
Normal file
File diff suppressed because it is too large
Load diff
1221
src/game/objsub.c
Normal file
1221
src/game/objsub.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -675,7 +675,7 @@ void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank)
|
|||
sprite_ptr->bg = bg;
|
||||
sprite_ptr->bg_bank = bg_bank;
|
||||
sprite_ptr->wrap_t = sprite_ptr->wrap_s = GX_REPEAT;
|
||||
sprite_ptr->attr &= ~SPIRTE_ATTR_BILINEAR;
|
||||
sprite_ptr->attr &= ~SPRITE_ATTR_BILINEAR;
|
||||
}
|
||||
|
||||
void AnimDebug(AnimData *anim)
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ void HuSprDisp(SpriteData *sprite)
|
|||
continue;
|
||||
}
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||
HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & SPIRTE_ATTR_BILINEAR) ? GX_LINEAR : GX_NEAR);
|
||||
HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & SPRITE_ATTR_BILINEAR) ? GX_LINEAR : GX_NEAR);
|
||||
if(layer->alpha != 255 || color_sum != 255*4) {
|
||||
color.a = (u16)(sprite->a*layer->alpha) >> 8;
|
||||
GXSetTevColor(GX_TEVSTAGE1, color);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue