Moved mario global state vars in to struct

This commit is contained in:
jaburns
2020-10-27 15:11:12 -06:00
parent 0c67335112
commit b921cb04bb
15 changed files with 186 additions and 272 deletions
+3 -2
View File
@@ -37,6 +37,7 @@
#include "save_file.h"
// #include "sound_init.h"
// #include "thread6.h"
#include "../../load_anim_data.h"
/**************************************************
@@ -67,7 +68,7 @@ s32 is_anim_past_end(struct MarioState *m) {
s16 set_mario_animation(struct MarioState *m, s32 targetAnimID) {
struct Object *o = m->marioObj;
shim_load_mario_animation(m->animation, targetAnimID);
load_mario_animation(m->animation, targetAnimID);
struct Animation *targetAnim = m->animation->targetAnim;
//if (load_patchable_table(m->animation, targetAnimID)) {
// targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values);
@@ -101,7 +102,7 @@ s16 set_mario_animation(struct MarioState *m, s32 targetAnimID) {
s16 set_mario_anim_with_accel(struct MarioState *m, s32 targetAnimID, s32 accel) {
struct Object *o = m->marioObj;
shim_load_mario_animation(m->animation, targetAnimID);
load_mario_animation(m->animation, targetAnimID);
struct Animation *targetAnim = m->animation->targetAnim;
//if (load_patchable_table(m->animation, targetAnimID)) {
// targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values);
-4
View File
@@ -260,10 +260,6 @@ void bhv_mario_update(void) {
// }
}
void create_transformation_from_matrices(Mat4 a0, Mat4 a1, Mat4 a2) {
f32 spC, sp8, sp4;
+7 -7
View File
@@ -7,8 +7,8 @@
#include "object_stuff.h"
#include "platform_displacement.h"
#include "../shim.h"
struct SurfaceObjectTransform *gMarioPlatform = NULL;
#include "../global_state.h"
#include "../../load_surfaces.h"
#define absfx( x ) ( (x) < 0.0f ? -(x) : (x) )
@@ -47,16 +47,16 @@ void update_mario_platform(void) {
switch (awayFromFloor) {
case 1:
gMarioPlatform = NULL;
g_state->mgMarioPlatform = NULL;
gMarioObject->platform = NULL;
break;
case 0:
if (floor != NULL && floor->object != NULL) {
gMarioPlatform = (struct SurfaceObjectTransform *)floor->object;
g_state->mgMarioPlatform = floor->object;
gMarioObject->platform = floor->object;
} else {
gMarioPlatform = NULL;
g_state->mgMarioPlatform = NULL;
gMarioObject->platform = NULL;
}
break;
@@ -166,7 +166,7 @@ void apply_platform_displacement(u32 isMario, struct SurfaceObjectTransform *pla
* If Mario's platform is not null, apply platform displacement.
*/
void apply_mario_platform_displacement(void) {
struct SurfaceObjectTransform *platform = gMarioPlatform;
struct SurfaceObjectTransform *platform = g_state->mgMarioPlatform;
if (gMarioObject != NULL && platform != NULL) {
apply_platform_displacement(TRUE, platform);
@@ -177,5 +177,5 @@ void apply_mario_platform_displacement(void) {
* Set Mario's platform to NULL.
*/
void clear_mario_platform(void) {
gMarioPlatform = NULL;
g_state->mgMarioPlatform = NULL;
}
+5 -5
View File
@@ -83,7 +83,7 @@ extern u8 gLastCompletedStarNum;
extern s8 sUnusedGotGlobalCoinHiScore;
extern u8 gGotFileCoinHiScore;
extern u8 gCurrCourseStarFlags;
extern u8 gSpecialTripleJump;
//extern u8 gSpecialTripleJump;
extern s8 gLevelToCourseNumTable[];
// game progress flags
@@ -142,10 +142,10 @@ void save_file_collect_star_or_key(s16 coinScore, s16 starIndex);
s32 save_file_exists(s32 fileIndex);
u32 save_file_get_max_coin_score(s32 courseIndex);
s32 save_file_get_course_star_count(s32 fileIndex, s32 courseIndex);
s32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse);
void save_file_set_flags(u32 flags);
void save_file_clear_flags(u32 flags);
u32 save_file_get_flags(void);
//s32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse);
//void save_file_set_flags(u32 flags);
//void save_file_clear_flags(u32 flags);
//u32 save_file_get_flags(void);
u32 save_file_get_star_flags(s32 fileIndex, s32 courseIndex);
void save_file_set_star_flags(s32 fileIndex, s32 courseIndex, u32 starFlags);
s32 save_file_get_course_coin_score(s32 fileIndex, s32 courseIndex);
+21 -1
View File
@@ -1,3 +1,23 @@
#include "global_state.h"
struct GlobalState *gState = 0;
#include <stdlib.h>
#include <string.h>
struct GlobalState *g_state = 0;
struct GlobalState *global_state_create(void)
{
struct GlobalState *state = malloc( sizeof( struct GlobalState ));
memset( state, 0, sizeof( struct GlobalState ));
return state;
}
void global_state_bind(struct GlobalState *state)
{
g_state = state;
}
void global_state_destroy(struct GlobalState *state)
{
free( state );
}
+34 -28
View File
@@ -5,44 +5,50 @@
struct GlobalState
{
// Not yet implemented:
// interaction.c
u8 sDelayInvincTimer;
s16 sInvulnerable;
u8 msDelayInvincTimer;
s16 msInvulnerable;
// mario_actions_moving.c
Mat4 sFloorAlignMatrix;
Mat4 msFloorAlignMatrix;
// mario_actions_submerged.c
s16 sWasAtSurface;
s16 sSwimStrength;
s16 D_80339FD0;
s16 D_80339FD2;
f32 D_80339FD4;
s16 msWasAtSurface;
s16 msSwimStrength;
s16 mD_80339FD0;
s16 mD_80339FD2;
f32 mD_80339FD4;
// mario_misc.c
struct MarioBodyState gBodyStates[2];
struct MarioBodyState mgBodyStates[2];
// Implemented and in use:
// platform_displacement.c
void *gMarioPlatform;
void *mgMarioPlatform;
// misc
u32 gGlobalTimer;
u8 gSpecialTripleJump;
s16 gCurrLevelNum;
s16 gCameraMovementFlags;
u32 gAudioRandom;
s8 gShowDebugText;
s8 gDebugLevelSelect;
s16 gCurrSaveFileNum;
struct Controller gController;
struct SpawnInfo gMarioSpawnInfoVal;
struct SpawnInfo *gMarioSpawnInfo;
struct Area *gCurrentArea;
struct Object *gCurrentObject;
struct Object *gMarioObject;
struct MarioAnimation D_80339D10;
struct MarioState gMarioStateVal;
struct MarioState *gMarioState;
u32 mgGlobalTimer;
u8 mgSpecialTripleJump;
s16 mgCurrLevelNum;
s16 mgCameraMovementFlags;
u32 mgAudioRandom;
s8 mgShowDebugText;
s8 mgDebugLevelSelect;
s16 mgCurrSaveFileNum;
struct Controller mgController;
struct SpawnInfo mgMarioSpawnInfoVal;
struct Area *mgCurrentArea;
struct Object *mgCurrentObject;
struct Object *mgMarioObject;
struct MarioAnimation mD_80339D10;
struct MarioState mgMarioStateVal;
};
extern struct GlobalState *gState;
extern struct GlobalState *g_state;
extern struct GlobalState *global_state_create(void);
extern void global_state_bind(struct GlobalState *state);
extern void global_state_destroy(struct GlobalState *state);
-128
View File
@@ -1,128 +0,0 @@
#include <string.h>
#include "shim.h"
#include "../load_anim_data.h"
u32 gGlobalTimer = 0;
u8 gSpecialTripleJump = FALSE;
s16 gCurrLevelNum = 0;
s16 gCameraMovementFlags = 0;
u32 gAudioRandom = 0;
s8 gShowDebugText = 0;
s8 gDebugLevelSelect = 0;
s16 gCurrSaveFileNum = 1;
struct Controller gController;
struct SpawnInfo gMarioSpawnInfoVal;
struct SpawnInfo *gMarioSpawnInfo = &gMarioSpawnInfoVal;
struct Area *gCurrentArea = NULL;
struct Object *gCurrentObject;
struct Object *gMarioObject = NULL;
struct PlayerCameraState gPlayerCameraState;
struct MarioAnimation D_80339D10;
struct MarioState gMarioStateVal;
struct MarioState *gMarioState = &gMarioStateVal;
SM64DebugPrintFunctionPtr gDebugPrint = NULL;
void shim_load_mario_animation(struct MarioAnimation *a, u32 index)
{
if ((u32)a->currentAnimAddr != 1 + index) {
a->currentAnimAddr = (u8*)(1 + index);
a->targetAnim = &g_libsm64_mario_animations[index];
}
}
void *segmented_to_virtual(const void *addr)
{
return (void*)addr;
}
void *virtual_to_segmented(u32 segment, const void *addr)
{
return (void*)addr;
}
void func_80320A4C(u8 bankIndex, u8 arg1)
{
}
void lower_background_noise(s32 a)
{
}
void raise_background_noise(s32 a)
{
}
void set_camera_mode(struct Camera *c, s16 mode, s16 frames)
{
}
void print_text_fmt_int(s32 x, s32 y, const char *str, s32 n)
{
}
s16 level_trigger_warp(struct MarioState *m, s32 warpOp)
{
return 0;
}
void play_cap_music(u16 seqArgs)
{
}
void fadeout_cap_music(void)
{
}
void stop_cap_music(void)
{
}
void play_infinite_stairs_music(void)
{
}
s32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse)
{
return 0;
}
u32 save_file_get_flags(void)
{
return 0;
}
void save_file_set_flags(u32 flags)
{
}
void save_file_clear_flags(u32 flags)
{
}
void spawn_wind_particles(s16 pitch, s16 yaw)
{
}
void set_camera_shake_from_hit(s16 shake)
{
}
void load_level_init_text(u32 arg)
{
}
void spawn_default_star(f32 sp20, f32 sp24, f32 sp28)
{
}
void play_shell_music(void)
{
}
void stop_shell_music(void)
{
}
u16 level_control_timer(s32 timerOp)
{
}
+51 -86
View File
@@ -4,93 +4,58 @@
#include "game/area.h"
#include "game/level_update.h"
#include "../libsm64.h"
#include "global_state.h"
#define COURSE_MIN 0
#define COURSE_MAX 14
#define LEVEL_LLL 99
#define LEVEL_SSL 98
#define LEVEL_DDD 97
#define LEVEL_TTC 96
#define COURSE_MIN 0
#define COURSE_MAX 14
#define LEVEL_LLL 99
#define LEVEL_SSL 98
#define LEVEL_DDD 97
#define LEVEL_TTC 96
#define LEVEL_CASTLE 95
#define LEVEL_THI 94
#define LEVEL_THI 94
// From graph_node.h, trying not to pull that in yet
#define GRAPH_RENDER_INVISIBLE (1 << 4)
#define play_sound(a,b) {}
#define enable_time_stop() {}
#define disable_time_stop() {}
#define play_cutscene_music(a) {}
#define segmented_to_virtual(addr) ((void*)(addr))
#define virtual_to_segmented(seg,addr) ((void*)(addr))
#define func_80320A4C(bankIndex, arg1) {}
#define raise_background_noise(a) {}
#define lower_background_noise(a) {}
#define set_camera_mode(c, mode, frames) {}
#define print_text_fmt_int(x, y, str, n) {}
#define level_trigger_warp(m, warpOp) 0
#define play_cap_music(seqArgs) {}
#define fadeout_cap_music() {}
#define stop_cap_music() {}
#define play_infinite_stairs_music() {}
#define spawn_wind_particles(pitch, yaw) {}
#define set_camera_shake_from_hit(shake) {}
#define load_level_init_text(arg) {}
#define spawn_default_star(sp20, sp24, sp28) {}
#define play_shell_music() {}
#define stop_shell_music() {}
#define level_control_timer(timerOp) 0
#define save_file_get_flags() 0
#define save_file_set_flags(flags) {}
#define save_file_clear_flags(flags) {}
#define save_file_get_total_star_count(fileIndex, minCourse, maxCourse) 0
#define play_sound(a,b) ({})
#define enable_time_stop() ({})
#define disable_time_stop() ({})
#define play_cutscene_music(a) ({})
struct SurfaceObjectTransform
{
float aPosX, aPosY, aPosZ;
float aVelX, aVelY, aVelZ;
s16 aFaceAnglePitch;
s16 aFaceAngleYaw;
s16 aFaceAngleRoll;
s16 aAngleVelPitch;
s16 aAngleVelYaw;
s16 aAngleVelRoll;
};
struct SurfaceNode
{
struct SurfaceNode *next;
struct Surface *surface;
};
extern u32 gGlobalTimer;
extern u8 gSpecialTripleJump;
extern s16 gCurrLevelNum;
extern s16 gCameraMovementFlags;
extern u32 gAudioRandom;
extern s8 gShowDebugText;
extern s8 gDebugLevelSelect;
extern s16 gCurrSaveFileNum;
extern struct Controller gController;
extern struct SpawnInfo gMarioSpawnInfoVal;
extern struct SpawnInfo *gMarioSpawnInfo;
extern struct Area *gCurrentArea;
extern struct Object *gCurrentObject;
extern struct Object *gMarioObject;
extern struct PlayerCameraState gPlayerCameraState;
extern struct MarioAnimation D_80339D10;
extern struct MarioState *gMarioState;
extern SM64DebugPrintFunctionPtr gDebugPrint;
#define DEBUG_LOG( ... ) do { \
if( gDebugPrint ) { \
char debugStr[1024]; \
sprintf( debugStr, __VA_ARGS__ ); \
gDebugPrint( debugStr ); \
} \
} while(0)
extern void shim_load_mario_animation(struct MarioAnimation *a, u32 index);
extern void *segmented_to_virtual(const void *addr);
extern void *virtual_to_segmented(u32 segment, const void *addr);
extern void func_80320A4C(u8 bankIndex, u8 arg1);
extern void raise_background_noise(s32 a);
extern void lower_background_noise(s32 a);
extern void set_camera_mode(struct Camera *c, s16 mode, s16 frames);
extern void print_text_fmt_int(s32 x, s32 y, const char *str, s32 n);
extern s16 level_trigger_warp(struct MarioState *m, s32 warpOp);
extern void play_cap_music(u16 seqArgs);
extern void fadeout_cap_music(void);
extern void stop_cap_music(void);
extern void play_infinite_stairs_music(void);
extern s32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse);
extern u32 save_file_get_flags(void);
extern void save_file_set_flags(u32 flags);
extern void save_file_clear_flags(u32 flags);
extern void spawn_wind_particles(s16 pitch, s16 yaw);
extern void set_camera_shake_from_hit(s16 shake);
extern void load_level_init_text(u32 arg);
extern void spawn_default_star(f32 sp20, f32 sp24, f32 sp28);
extern void play_shell_music(void);
extern void stop_shell_music(void);
extern u16 level_control_timer(s32 timerOp);
#define gGlobalTimer (g_state->mgGlobalTimer)
#define gSpecialTripleJump (g_state->mgSpecialTripleJump)
#define gCurrLevelNum (g_state->mgCurrLevelNum)
#define gCameraMovementFlags (g_state->mgCameraMovementFlags)
#define gAudioRandom (g_state->mgAudioRandom)
#define gShowDebugText (g_state->mgShowDebugText)
#define gDebugLevelSelect (g_state->mgDebugLevelSelect)
#define gCurrSaveFileNum (g_state->mgCurrSaveFileNum)
#define gController (g_state->mgController)
#define gMarioSpawnInfoVal (g_state->mgMarioSpawnInfoVal)
#define gMarioSpawnInfo (&g_state->mgMarioSpawnInfoVal)
#define gCurrentArea (g_state->mgCurrentArea)
#define gCurrentObject (g_state->mgCurrentObject)
#define gMarioObject (g_state->mgMarioObject)
#define D_80339D10 (g_state->mD_80339D10)
#define gMarioState (&g_state->mgMarioStateVal)