x64 and hsfload improvements, build every REL (#582)

* Port some of hsfload.c

* More byteswaps in hsfload.c

* Finish hsfload besides cenv

* hsfload fixes

* Some x64 improvements

* More x64 improvements

* 64 bit improvements

* Link in lots of files

* Fix armem bug

* Fix dll killing, load modeseldll

* Fixes, clearing TODOs

* Tons of warning/error fixes

* Linux build fixes

* Add -fPIC flag to fix build on x64 linux

* GXSETARRAY sizes and misc fixes

* More fixes

* Build all RELs

* Implement C_Quat functions

* Fix PAL build
This commit is contained in:
Dávid Balatoni 2025-04-14 18:02:42 +02:00 committed by GitHub
parent bc19d2263b
commit 34cf507e3f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
186 changed files with 3256 additions and 1540 deletions

View file

@ -3,6 +3,8 @@
#include "dolphin.h"
void BoardLandBlueExec(s32 player, s32 space);
void BoardLandRedExec(s32 player, s32 space);
void BoardEventLandBlue(s32, s32);
void BoardEventLandRed(s32, s32);
s8 BoardCoinChgCreate(Vec*, s8);

View file

@ -8,10 +8,6 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1);
void BoardBooKill(void);
s32 BoardBooStealTypeSet(s32 arg0);
s32 BoardBooStealMain(void);
BOOL CheckBallCoinDone(void);
void TakeBallStar(void);
void ExecTakeBallStar(omObjData *arg0);
BOOL CheckTakeBallStarDone(void);
s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1);
BOOL BoardBooStealLightCheck(void);

View file

@ -8,6 +8,7 @@ void BoardBooHouseHostSet(s16);
s16 BoardBooHouseHostGet(void);
void BoardBooHouseCreate(void);
void BoardBooHouseExec(s32);
void BoardBooHouseKill(void);
s32 BoardBooComUseCheck(s32);
void BoardBooHouseTutorialExec(void);

View file

@ -0,0 +1,8 @@
#ifndef _BOARD_BOWSER_H
#define _BOARD_BOWSER_H
#include "game/process.h"
void BoardBowserExec(s32 player, s32 space);
#endif

View file

@ -0,0 +1,8 @@
#ifndef _BOARD_FORTUNE_H
#define _BOARD_FORTUNE_H
#include "game/process.h"
void BoardFortuneExec(s32 player, s32 space);
#endif

View file

@ -6,5 +6,8 @@
void BoardItemStart(s32 arg0, s32 arg1);
BOOL BoardItemDoneCheck(void);
void BoardItemBagItemSet(s16 *arg0);
#ifndef __MWERKS__
void BoardItemPlayerRestore(s32 arg0, s32 arg1);
#endif
#endif

View file

@ -1,72 +1,73 @@
#ifndef _BOARD_MAIN_H
#define _BOARD_MAIN_H
#include "dolphin.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/object.h"
#include "game/data.h"
#include "dolphin.h"
#define BOARD_ID_MAIN1 0 //TOADS_MIDWAY_MADNESS
#define BOARD_ID_MAIN2 1 //GOOMBAS_GREEDY_GALA
#define BOARD_ID_MAIN3 2 //SHY_GUYS_JUNGLE_JAM
#define BOARD_ID_MAIN4 3 //BOOS_HAUNTED_BASH
#define BOARD_ID_MAIN5 4 //KOOPAS_SEASIDE_SOIREE
#define BOARD_ID_MAIN6 5 //BOWSERS_GNARLY_PARTY
#define BOARD_ID_TUTORIAL 6 //TUTORIAL_BOARD
#define BOARD_ID_EXTRA1 7 //MEGA_BOARD_MAYHEM
#define BOARD_ID_EXTRA2 8 //MINI_BOARD_MAD_DASH
#define BOARD_ID_MAIN1 0 // TOADS_MIDWAY_MADNESS
#define BOARD_ID_MAIN2 1 // GOOMBAS_GREEDY_GALA
#define BOARD_ID_MAIN3 2 // SHY_GUYS_JUNGLE_JAM
#define BOARD_ID_MAIN4 3 // BOOS_HAUNTED_BASH
#define BOARD_ID_MAIN5 4 // KOOPAS_SEASIDE_SOIREE
#define BOARD_ID_MAIN6 5 // BOWSERS_GNARLY_PARTY
#define BOARD_ID_TUTORIAL 6 // TUTORIAL_BOARD
#define BOARD_ID_EXTRA1 7 // MEGA_BOARD_MAYHEM
#define BOARD_ID_EXTRA2 8 // MINI_BOARD_MAD_DASH
#define BOARD_FABS(value) ((value < 0) ? -(value) : (value))
typedef struct board_focus_data {
u16 view_type;
s16 time;
s16 max_time;
float fov_start;
float fov_end;
float zoom_start;
float zoom_end;
Vec rot_start;
Vec rot_end;
Vec target_start;
Vec target_end;
u16 view_type;
s16 time;
s16 max_time;
float fov_start;
float fov_end;
float zoom_start;
float zoom_end;
Vec rot_start;
Vec rot_end;
Vec target_start;
Vec target_end;
} BoardFocusData;
typedef struct board_camera_data {
struct {
u8 hide_all : 1;
u8 moving : 1;
u8 quaking : 1;
};
u16 mask;
s16 target_mdl;
s16 target_space;
s32 quake_timer;
float quake_strength;
float fov;
float near;
float far;
float aspect;
float viewport_x;
float viewport_y;
float viewport_w;
float viewport_h;
float viewport_near;
float viewport_far;
Vec pos;
Vec up;
Vec target;
Vec offset;
Vec rot;
float zoom;
void (*pos_calc)(struct board_camera_data *);
BoardFocusData focus;
struct {
u8 hide_all : 1;
u8 moving : 1;
u8 quaking : 1;
};
u16 mask;
s16 target_mdl;
s16 target_space;
s32 quake_timer;
float quake_strength;
float fov;
float nnear;
float ffar;
float aspect;
float viewport_x;
float viewport_y;
float viewport_w;
float viewport_h;
float viewport_near;
float viewport_far;
Vec pos;
Vec up;
Vec target;
Vec offset;
Vec rot;
float zoom;
void (*pos_calc)(struct board_camera_data *);
BoardFocusData focus;
} BoardCameraData;
extern BoardCameraData boardCamera;
extern Process *boardObjMan;
extern Process *boardMainProc;
extern u32 boardRandSeed;
SHARED_SYM extern Process *boardObjMan;
SHARED_SYM extern Process *boardMainProc;
SHARED_SYM extern u32 boardRandSeed;
extern omObjData *boardMainObj;
typedef void (*BoardFunc)(void);
@ -78,11 +79,11 @@ typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera);
typedef void (*BoardTurnStartHook)(s32 player, s32 space);
extern BoardTurnStartHook boardTurnStartFunc;
extern void (*boardStarShowNextHook)(void);
extern void (*boardStarGiveHook)(void);
extern BoardBowserHook boardBowserHook;
extern BoardFunc boardTurnFunc;
SHARED_SYM extern BoardTurnStartHook boardTurnStartFunc;
SHARED_SYM extern void (*boardStarShowNextHook)(void);
SHARED_SYM extern void (*boardStarGiveHook)(void);
SHARED_SYM extern BoardBowserHook boardBowserHook;
SHARED_SYM extern BoardFunc boardTurnFunc;
extern BoardLightHook boardLightResetHook;
extern BoardLightHook boardLightSetHook;
@ -119,12 +120,15 @@ void BoardCameraTargetSpaceSet(s32 space);
void BoardCameraQuakeSet(s32 duration, float strength);
void BoardCameraQuakeReset();
void BoardCameraTargetSet(float x, float y, float z);
#ifndef __MWERKS__
void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func);
#endif
void BoardCameraPosSet(float x, float y, float z);
void BoardCameraXRotZoomSet(float zoom, float x_rot);
void BoardCameraZoomSet(float zoom);
void BoardCameraRotSet(float x, float y);
void BoardCameraNearFarSet(float near, float far);
void BoardCameraNearFarGet(float *near, float *far);
void BoardCameraNearFarSet(float nnear, float ffar);
void BoardCameraNearFarGet(float *nnear, float *ffar);
void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target);
void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time);
void BoardCameraFovSet(float fov);
@ -166,4 +170,4 @@ void BoardTauntKill(void);
s32 BoardDataDirReadAsync(s32 data_num);
void BoardDataAsyncWait(s32 status);
#endif
#endif

View file

@ -41,6 +41,7 @@ s32 BoardModelMotionUpdateSet(s16 model, s32 flag);
s32 BoardModelVoiceEnableSet(s16 model, s32 motion, s32 flag);
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
s32 BoardModelMotionShiftIDGet(s16 model);
s32 BoardModelAttrSet(s16 model, u32 attr);
s32 BoardModelAttrReset(s16 model, u32 attr);
s32 BoardModelMotionTimeSet(s16 model, float time);

View file

@ -13,7 +13,7 @@
#include "game/board/space.h"
#include "game/board/ui.h"
extern s16 boardPlayerMdl[4];
SHARED_SYM extern s16 boardPlayerMdl[4];
static inline s32 BoardPlayerHandicapGet(s32 player)
{
@ -97,6 +97,9 @@ void BoardJunctionMaskReset(s32);
void BoardJunctionMaskZero(void);
void BoardPlayerVoiceEnableSet(s32, s32, s32);
#ifndef __MWERKS__
void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2);
#endif
void BoardPlayerMoveTo(s32, s32);
void BoardPlayerMoveToAsync(s32, s32);

View file

@ -17,6 +17,7 @@ typedef struct board_space {
u16 link[BOARD_SPACE_LINKMAX+1];
} BoardSpace;
s32 BoardSpaceWalkExec(s32 player, s32 space);
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
@ -27,6 +28,7 @@ BoardSpace *BoardSpaceGet(s32 layer, s32 index);
void BoardSpaceAttrSet(s32 layer, u32 attr);
void BoardSpaceAttrReset(s32 layer, u32 attr);
u32 BoardSpaceFlagGet(s32 layer, s32 index);
void BoardSpaceTypeForce(u16 from, u16 to);
s32 BoardSpaceTypeGet(s32 layer, s32 index);
void BoardSpaceTypeSet(s32 layer, s32 index, s32 type);
s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos);
@ -40,6 +42,7 @@ s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list);
s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type);
s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale);
void BoardSpaceHostSet(s32 space);
void BoardSpaceHide(s32 value);
void BoardSpaceStarSetIndex(s32 index);
s32 BoardSpaceStarGetNext(void);
s32 BoardSpaceStarGetRandom(s32 excl_pos);
@ -49,6 +52,7 @@ s32 BoardSpaceStarGetCurr(void);
s32 BoardSpaceStarCheck(s32 index);
void BoardSpaceLandExec(s32 player, s32 space);
void BoardSpaceCameraSet(u16 mask);
s32 BoardSpaceBlockExec(s32 player, s32 space);
void BoardSpaceBlockPosSet(void);
void BoardSpaceInit(s32 data_num);
void BoardSpaceDestroy(void);

View file

@ -2,6 +2,7 @@
#define _BOARD_TUTORIAL_H
#include "dolphin/types.h"
#include "version.h"
void BoardTutorialInit(void);
void BoardTutorialKill(void);
@ -16,7 +17,7 @@ void BoardTutorialItemSet(s8 arg0);
void BoardTutorialHostSet(s16 arg0);
void BoardTutorialHostHide(s8 arg0);
extern s32 boardTutorialData[4];
SHARED_SYM extern s32 boardTutorialData[4];
extern s8 boardTutorialDirInputX;
extern s8 boardTutorialDirInputY;
extern s16 boardTutorialDirInputTime;
@ -24,6 +25,6 @@ extern s32 boardTutorialBlockPos;
extern s8 boardTutorialBlockItem;
extern s8 boardTutorialBlockF;
extern s8 boardTutorialUseItem;
extern s8 boardTutorialF;
SHARED_SYM extern s8 boardTutorialF;
#endif