mirror of
https://github.com/izzy2lost/Starship.git
synced 2026-07-05 15:19:42 -07:00
Add quick boot and add ram editing to object ram watch (#236)
* upgrades * one cleanup * streamlining * whoops mods * more ub * cast cleanup
This commit is contained in:
Vendored
+3
-1
@@ -143,7 +143,9 @@
|
||||
"os_motor.h": "c",
|
||||
"os_pfs.h": "c",
|
||||
"semaphore": "c",
|
||||
"bgm.h": "c"
|
||||
"bgm.h": "c",
|
||||
"*.tcc": "c",
|
||||
"object_ram.h": "c"
|
||||
},
|
||||
"C_Cpp_Runner.msvcBatchPath": ""
|
||||
}
|
||||
@@ -1,6 +1,15 @@
|
||||
#ifndef MODS_H
|
||||
#define MODS_H
|
||||
|
||||
/**
|
||||
* Quick Boot:
|
||||
* Define this variable to a game state to boot into that
|
||||
* state. Two presets (map and main menu) are provided.
|
||||
* For the full list of game states, see sf64thread.h.
|
||||
*/
|
||||
// #define MODS_BOOT_STATE 3 // main menu
|
||||
// #define MODS_BOOT_STATE 4 // map
|
||||
|
||||
/**
|
||||
* Level Select:
|
||||
* Use the D-Pad to select a level. Press L to start in
|
||||
|
||||
@@ -464,15 +464,15 @@ void* AudioHeap_SearchRegularCaches(s32 tableType, s32 cache, s32 id) {
|
||||
|
||||
switch (tableType) {
|
||||
case SEQUENCE_TABLE:
|
||||
loadedCache = (AudioCache*) &gSeqCache;
|
||||
loadedCache = &gSeqCache;
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
loadedCache = (AudioCache*) &gFontCache;
|
||||
loadedCache = &gFontCache;
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
loadedCache = (AudioCache*) &gSampleBankCache;
|
||||
loadedCache = &gSampleBankCache;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -737,7 +737,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
ramAddr = AudioLoad_SearchCaches(tableType, id);
|
||||
if (ramAddr != NULL) {
|
||||
loadStatus = 2;
|
||||
osSendMesg(retQueue, (void*) (retData << 0x18), OS_MESG_NOBLOCK);
|
||||
osSendMesg(retQueue, (OSMesg) (retData << 0x18), OS_MESG_NOBLOCK);
|
||||
} else {
|
||||
table = AudioLoad_GetLoadTable(tableType);
|
||||
size = table->entries[id].size;
|
||||
|
||||
@@ -2823,7 +2823,7 @@ void ActorCutscene_Draw(Actor* actor) {
|
||||
sp2B8.y = 0.0f;
|
||||
sp2B8.z = 40.0f;
|
||||
|
||||
Matrix_MultVec3fNoTranslate(gCalcMatrix, (Vec3f*) (&sp2B8), &sp2AC);
|
||||
Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp2B8, &sp2AC);
|
||||
Matrix_Translate(gGfxMatrix, actor->obj.pos.x + sp2AC.x, actor->obj.pos.y + sp2AC.y,
|
||||
actor->obj.pos.z + sp2AC.z, MTXF_APPLY);
|
||||
Matrix_Scale(gGfxMatrix, actor->fwork[6], actor->fwork[6], actor->fwork[6], MTXF_APPLY);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "mods.h"
|
||||
#include "global.h"
|
||||
#include "assets/ast_arwing.h"
|
||||
#include "assets/ast_allies.h"
|
||||
@@ -1738,17 +1737,4 @@ void Play_Draw(void) {
|
||||
func_display_80051B30();
|
||||
sPlayersVisible[gPlayerNum] = 0;
|
||||
Matrix_Pop(&gGfxMatrix);
|
||||
#if MODS_FPS_COUNTER == 1
|
||||
Play_RenderFps();
|
||||
#endif
|
||||
#if MODS_OBJECT_RAM == 1
|
||||
ObjectRam_Update();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if MODS_FPS_COUNTER == 1
|
||||
#include "../mods/fpscounter.c"
|
||||
#endif
|
||||
#if MODS_OBJECT_RAM == 1
|
||||
#include "../mods/object_ram.c"
|
||||
#endif
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "global.h"
|
||||
#include "sf64dma.h"
|
||||
#include "assets/ast_logo.h"
|
||||
#include "mods.h"
|
||||
|
||||
f32 D_game_80161A10;
|
||||
f32 D_game_80161A14;
|
||||
@@ -54,6 +55,18 @@ void Game_Initialize(void) {
|
||||
Rand_Init();
|
||||
Rand_SetSeed(1, 29000, 9876);
|
||||
gGameState = GSTATE_BOOT;
|
||||
#ifdef MODS_BOOT_STATE
|
||||
gNextGameState = GSTATE_INIT;
|
||||
if (Save_Read() != 0) {
|
||||
#ifdef AVOID_UB
|
||||
gSaveFile.save = gDefaultSave;
|
||||
gSaveFile.backup = gDefaultSave;
|
||||
#else
|
||||
gSaveFile = *((SaveFile*) &gDefaultSave);
|
||||
#endif
|
||||
Save_Write();
|
||||
}
|
||||
#endif
|
||||
gNextGameStateTimer = 0;
|
||||
gBgColor = 0;
|
||||
gBlurAlpha = 255;
|
||||
@@ -361,7 +374,12 @@ void Game_Update(void) {
|
||||
break;
|
||||
case GSTATE_CHECK_SAVE:
|
||||
if (Save_Read() != 0) {
|
||||
#ifdef AVOID_UB
|
||||
gSaveFile.save = gDefaultSave;
|
||||
gSaveFile.backup = gDefaultSave;
|
||||
#else
|
||||
gSaveFile = *((SaveFile*) &gDefaultSave);
|
||||
#endif
|
||||
Save_Write();
|
||||
}
|
||||
gGameState++;
|
||||
@@ -396,6 +414,9 @@ void Game_Update(void) {
|
||||
gFillScreenAlpha = 0;
|
||||
gNextGameState = D_ctx_80177C94 = D_ctx_80177CAC = D_ctx_80177CB4 = D_ctx_80177CBC = D_ctx_80177CC4 =
|
||||
D_ctx_80177C9C = D_ctx_80177CA4 = D_play_80161A5C = D_game_80161A34 = 0;
|
||||
#ifdef MODS_BOOT_STATE
|
||||
gNextGameState = MODS_BOOT_STATE;
|
||||
#endif
|
||||
for (i = 0; i < 4; i++) {
|
||||
gBoostButton[i] = L_CBUTTONS;
|
||||
gBrakeButton[i] = D_CBUTTONS;
|
||||
@@ -553,9 +574,22 @@ void Game_Update(void) {
|
||||
gFillScreenGreen, gFillScreenBlue, gFillScreenAlpha);
|
||||
}
|
||||
Audio_dummy_80016A50();
|
||||
#if MODS_OBJECT_RAM == 1
|
||||
ObjectRam_Update();
|
||||
#endif
|
||||
#if MODS_FPS_COUNTER == 1
|
||||
Play_RenderFps();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if MODS_FPS_COUNTER == 1
|
||||
#include "../mods/fpscounter.c"
|
||||
#endif
|
||||
#if MODS_OBJECT_RAM == 1
|
||||
#include "../mods/object_ram.c"
|
||||
#endif
|
||||
|
||||
Actor* Game_SpawnActor(ObjectId objId) {
|
||||
Actor* actor = gActors;
|
||||
s32 i;
|
||||
|
||||
@@ -1374,7 +1374,6 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a
|
||||
return false;
|
||||
}
|
||||
|
||||
// arg5 could be Vec3f (not Vec3f*)
|
||||
s32 Player_CheckPolyCollision(Player* player, ObjectId objId, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6,
|
||||
f32 arg7) {
|
||||
Vec3f sp84;
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
|
||||
char D_800C7C80[] = "$Id: sprintf.c,v 1.5 1997/03/19 02:28:53 hayakawa Exp $";
|
||||
|
||||
void* proutSprintf(void* dst, const char* fmt, size_t size) {
|
||||
return (void*) ((uintptr_t) memcpy(dst, fmt, size) + size);
|
||||
char* proutSprintf(char* dst, const char* fmt, size_t size) {
|
||||
return (char*) ((uintptr_t) memcpy(dst, fmt, size) + size);
|
||||
}
|
||||
|
||||
s32 vsprintf(char* dst, const char* fmt, va_list args) {
|
||||
s32 ret = _Printf((outfun*) proutSprintf, dst, fmt, args);
|
||||
s32 ret = _Printf(proutSprintf, dst, fmt, args);
|
||||
|
||||
if (ret > -1) {
|
||||
dst[ret] = 0;
|
||||
@@ -20,7 +20,7 @@ int sprintf(char* s, const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
ret = _Printf((outfun*) proutSprintf, s, fmt, args);
|
||||
ret = _Printf(proutSprintf, s, fmt, args);
|
||||
|
||||
if (ret >= 0) {
|
||||
s[ret] = 0;
|
||||
|
||||
@@ -45,7 +45,7 @@ void Map_LevelSelect(void) {
|
||||
if (difficulty > 2) {
|
||||
difficulty = 0;
|
||||
}
|
||||
if ((difficulty == 1) && ((mission == 1) || (mission == 5))) {
|
||||
if ((difficulty == 1) && ((mission == 1) || (mission == 5) || (mission == 6))) {
|
||||
difficulty = 2;
|
||||
}
|
||||
} else if ((gControllerPress[0].button & D_JPAD) && (mission != 0)) {
|
||||
@@ -84,7 +84,7 @@ void Map_LevelSelect(void) {
|
||||
} else if (sCurrentPlanetId == PLANET_VENOM) {
|
||||
Graphics_DisplaySmallText(80, 210, 1.0f, 1.0f, "ANDROSS");
|
||||
} else if (sCurrentPlanetId == PLANET_AREA_6) {
|
||||
Graphics_DisplaySmallText(80, 210, 1.0f, 1.0f, "UNKNOWN 4");
|
||||
Graphics_DisplaySmallText(80, 210, 1.0f, 1.0f, "BETA SB");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -97,8 +97,7 @@ void Map_LevelSelect(void) {
|
||||
} else if (sPlanetArray[mission][difficulty] == SAVE_SLOT_VENOM_2) {
|
||||
gCurrentLevel = LEVEL_VENOM_2;
|
||||
}
|
||||
}
|
||||
if (startOption && (sCurrentPlanetId == PLANET_AREA_6)) {
|
||||
} else if ((sCurrentPlanetId == PLANET_AREA_6) && startOption) {
|
||||
gCurrentLevel = LEVEL_UNK_4;
|
||||
}
|
||||
Map_801A61B4(gCurrentLevel);
|
||||
|
||||
+243
-167
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,96 @@
|
||||
#ifndef OBJECT_RAM_H
|
||||
#define OBJECT_RAM_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#define ORAM_ENTRY(struct, index, field, format) \
|
||||
{ ORAM_##struct, index, offsetof(struct, field), NULL, 0, FMT_##format, WIDTH_##format, 0, 0 }
|
||||
#define ORAM_OFF \
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
|
||||
#define WRAP_MODE(val, max) ((u8) ((val) + (max)) % max)
|
||||
|
||||
#define OBJ_ARRAY_INFO(objarr, name) \
|
||||
{ objarr, sizeof(*objarr), ARRAY_COUNT(objarr), name }
|
||||
|
||||
typedef struct ObjArrayInfo {
|
||||
void* ptr;
|
||||
size_t size;
|
||||
s32 count;
|
||||
char* name;
|
||||
} ObjArrayInfo;
|
||||
|
||||
typedef struct RamEntry {
|
||||
u8 type;
|
||||
u8 index;
|
||||
s16 offset;
|
||||
Object* objPtr;
|
||||
void* dataPtr;
|
||||
u8 fmt;
|
||||
u8 width;
|
||||
u16 x;
|
||||
u16 y;
|
||||
} RamEntry;
|
||||
|
||||
typedef enum ObjectRamType {
|
||||
ORAM_NONE,
|
||||
ORAM_Player,
|
||||
ORAM_Scenery360,
|
||||
ORAM_Scenery,
|
||||
ORAM_Sprite,
|
||||
ORAM_Actor,
|
||||
ORAM_Boss,
|
||||
ORAM_Item,
|
||||
ORAM_Effect,
|
||||
ORAM_PlayerShot,
|
||||
ORAM_TexturedLine,
|
||||
ORAM_RadarMark,
|
||||
ORAM_BonusText,
|
||||
ORAM_MAX,
|
||||
} ObjectRamType;
|
||||
|
||||
typedef enum FormatType {
|
||||
FMT_HEX,
|
||||
FMT_SIGN,
|
||||
FMT_UNSIGN,
|
||||
FMT_FLOAT,
|
||||
FMT_MAX,
|
||||
} FormatType;
|
||||
|
||||
typedef enum EditMode {
|
||||
EDM_TYPE,
|
||||
EDM_INDEX,
|
||||
EDM_OFFSET,
|
||||
EDM_FORMAT,
|
||||
EDM_WIDTH,
|
||||
EDM_VALUE,
|
||||
// EDM_POS,
|
||||
EDM_MAX,
|
||||
} EditMode;
|
||||
|
||||
#define FMT_f32 FMT_FLOAT
|
||||
#define WIDTH_f32 2
|
||||
#define FMT_s32 FMT_SIGN
|
||||
#define WIDTH_s32 2
|
||||
#define FMT_u32 FMT_UNSIGN
|
||||
#define WIDTH_u32 2
|
||||
#define FMT_x32 FMT_HEX
|
||||
#define WIDTH_x32 2
|
||||
|
||||
#define FMT_s16 FMT_SIGN
|
||||
#define WIDTH_s16 1
|
||||
#define FMT_u16 FMT_UNSIGN
|
||||
#define WIDTH_u16 1
|
||||
#define FMT_x16 FMT_HEX
|
||||
#define WIDTH_x16 1
|
||||
|
||||
#define FMT_s8 FMT_SIGN
|
||||
#define WIDTH_s8 0
|
||||
#define FMT_u8 FMT_UNSIGN
|
||||
#define WIDTH_u8 0
|
||||
#define FMT_x8 FMT_HEX
|
||||
#define WIDTH_x8 0
|
||||
|
||||
u32 ObjectRam_GetData(RamEntry* entry);
|
||||
|
||||
#endif
|
||||
+2
-2
@@ -90,7 +90,7 @@ void func_800074AC(s32 arg0, s32 arg1, s32 arg2) {
|
||||
}
|
||||
}
|
||||
|
||||
void* func_80007604(void* arg0, const char* arg1, size_t arg2) {
|
||||
char* func_80007604(char* arg0, const char* arg1, size_t arg2) {
|
||||
return (char*) memcpy(arg0, arg1, arg2) + arg2;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ void func_8000762C(s32 arg0, s32 arg1, const char* fmt, ...) {
|
||||
sp40[i] = 0;
|
||||
}
|
||||
|
||||
if (_Printf((outfun*) func_80007604, sp40, fmt, args) <= 0) {
|
||||
if (_Printf(func_80007604, sp40, fmt, args) <= 0) {
|
||||
return;
|
||||
}
|
||||
for (var_s0 = sp40; *var_s0 != 0; var_s0++) {
|
||||
|
||||
Reference in New Issue
Block a user