debug patches

This commit is contained in:
Sonic Dreamcaster
2025-10-28 14:41:57 -03:00
parent 00e7182768
commit 3958657143
8 changed files with 1204 additions and 26 deletions
+642
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -1,4 +1,9 @@
#ifndef DNZHRECOMP_DEBUG
#define DNZHRECOMP_DEBUG
#define DEBUG_MENU 0
// Not working
#define DEBUG_SKIP_INTRO 0
#endif
+177 -1
View File
@@ -1779,13 +1779,189 @@ extern f32 gMapYpos;
extern f32 gMapZpos;
extern Matrix4f D_80197DF0;
extern s16 D_8012C470;
extern u16 gCheatWeatherConfig;
extern volatile u16 gButton[4];
extern u8 _screenSelectButtonPressed_000E0589;
extern u8 _debugScreen_000E0588;
extern Fog gFog[4];
extern s16 gSkyTopR;
extern s16 gSkyTopG;
extern s16 gSkyTopB;
extern s16 gSkyBottomR;
extern s16 gSkyBottomG;
extern s16 gSkyBottomB;
extern Cloud gCloud[2];
extern s32 gCloudSpeed[2];
extern s32 gCloudAng[2];
extern Player gPlayer[4];
extern u8 _cmdButtonPressed_000E058A;
extern _11B300UnkStruct1 *D_8012F6E4;
extern s16 D_80138780;
extern SpriteType *gpSprite;
extern u32 gDisplayListSize;
extern s32 gDisplayListMaxSize;
extern u32 gVertexN64Size;
extern s32 gVertexN64MaxSize;
extern s32 gGfxTime;
extern s32 gCacheNum;
extern s32 gDisableAI;
extern s32 gAlertAliens;
extern s32 gSnoozingAliens;
extern s32 gAutoAim;
extern Config gConfig;
extern s32 gInvulnerability;
extern AlphaPalette *gpAlphaPalette;
extern s16 _sfxnum_000E0556;
extern code0UnkStruct4 D_801A1958;
extern musHandle _mushandle_000E0558;
extern MapChapter gMapChapter[39];
extern s16 gLoadMapNum;
extern char *_chapterName_000E055C[11];
extern u8 _playAmbient_000E0554;
extern s16 _musicnum_000E0552;
extern GlobalPalette *gpGlobalPalette;
extern Actor gActor[150];
extern s16 gActorSpriteMap[1500];
extern code0UnkStruct2 D_8010A940[4];
extern s16 D_800E17E0[8];
extern s32 gAiDebugGvar1;
extern s32 gAiDebugGvar2;
extern s32 gAiDebugGvar3;
extern s16 D_8011A680[4][24][10] __attribute__((aligned(16)));
extern u8 D_8016D174[4];
extern u16 D_801CC8CA;
extern s32 D_801CE5D8;
extern _E0640UnkStruct D_800DFA40[2];
extern u8 *D_801CDA94;
extern u8 *D_8010A938;
extern _E0640UnkStruct D_800DFB08[0x3D];
extern _E0640UnkStruct D_800E0778[3];
extern code0UnkStruct16 *D_801CDA20;
extern u8 *D_801CF638;
extern u8 *D_801CC91C;
extern u8 *D_801CC920;
extern u8 *D_801CDB1C;
extern code0UnkStruct16 *D_801CF70C;
extern _119280UnkStruct1 D_801CA310_000F4890[8];
extern s32 D_801CF630;extern s32 D_801CDB04;
extern Lights1 D_801CA3B8_000F4938;
extern Gfx *D_801CF62C;
extern Gfx *D_801ACBD4;
extern code0UnkStruct16 *D_801CC890;
extern code0UnkStruct16 *D_801CDBFC;
extern _119280UnkStruct1 D_801CA360_000F48E0[4];
extern _119280UnkStruct1 D_801CA388_000F4908[3];
extern s32 D_801CC88C;
extern s16 D_801CF640;
extern u16 D_801CC918;
extern musHandle gMusicHandle;
extern s16 gMusicNum;
extern s8 D_800BD3F9; extern s32 D_801CD974;
extern u8 D_800BD3F8;
extern u8 _debugPlayerNum;
extern u8 gDebugMenu;
float sinf(float angle);
float cosf(float angle);
void main_80002390(void);
void main_80000610(void);
void func_801C1114(void);
void func_80083700(s32, _119280UnkStruct1 *, s32, s32);
void func_801C14B4(code0UnkStruct16 *arg0, u8 r, u8 g, u8 b);
void func_801C1158(u8 r, u8 g, u8 b, u8 a);
void func_801C73A0(void);
code0UnkStruct16 *func_8008372C(s32, _119280UnkStruct1 *, s32, Lights1 *, s32);
code0UnkStruct16 *func_8007FC08(_E0640UnkStruct *arg0, void *arg1, s32 arg2, s32 arg3, s32 arg4);
void allocMemory(s32 width, s32 height, s32 dlist_size, s32 vertex_size);
void setCameraPosition(f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
void func_801C10C8(void);
void func_8007FD8C(_E0640UnkStruct *arg0, s32 arg1);
void main_80000624(ProcPointer proc);
void func_801C6560(void);
void edl_80081688(void *handle, s32 id);
u8 controller_8008AEF0(void);
f32 angleModF(f32 a);
void Bmemset(void *dst, u8 value, u32 size);
void scanSector(f32 lx, f32 rx, s32 sectnum);
f32 func_80011410(ModelInfo *model);
void grMtxL2F(f32 (*mf)[4], Mtx *m);
f32 _dotProduct(f32 *vec1, f32 *vec2);
void audio_80008574(s16 playernum, u16 sfxnum);;
void drawDebugString(s16 x, s16 y, char *string);
f32 func_80040C08(s32);
void func_80050408(void);
void func_8008E01C(s16, s32);
s32 getDisplayListVertexUsagePercentage(void);;
void initCache(u8 *dacachestart, s32 dacachesize);
void suckCache(void *suckptr);
void cache1d_8002AAC0(void);
void ageCache(void);
void alloCache(void *newhandle, u32 newbytes, u8 *newlockptr);
void cache1d_8002AAEC(void);
s32 getRemainingCacheSize(void);
void func_80019BC0(void);
void func_8001A1A4(void);
void func_8001B2D0(void);
void drawSky(void);
void drawClouds(void);
void drawDebugString(s16 x, s16 y, char *string);
void drawNumberString(s16 x, s16 y, char *string);
void drawString(s16 x, s16 y, char *string);
void drawString2(s16 x, s16 y, char *string);
void func_8001D238(s32 x, s32 y, u16 tilenum);
void func_8001D128(s32 *x, s32 *y);
int MusAsk(unsigned long flags);
extern void MusSetMasterVolume (unsigned long flags, int volume);
extern musHandle MusStartSong (void *addr);
extern musHandle MusStartSongFromMarker (void *addr, int marker);
extern musHandle MusStartEffect (int number);
extern musHandle MusStartEffect2 (int number, int volume, int pan , int restartflag, int priority);
extern void MusStop (unsigned long flags, int speed);
extern int MusAsk (unsigned long flags);
extern int MusHandleAsk (musHandle handle);
extern int MusHandleStop (musHandle handle, int speed);
extern int MusHandleSetVolume (musHandle handle, int volume);
extern int MusHandleSetPan (musHandle handle, int pan);
extern int MusHandleSetFreqOffset (musHandle handle, float offset);
extern int MusHandleSetTempo (musHandle handle, int tempo);
extern int MusHandleSetReverb (musHandle handle, int reverb);
extern int MusHandlePause (musHandle handle);
extern int MusHandleUnPause (musHandle handle);
extern void *MusHandleGetPtrBank (musHandle handle);
extern void MusPtrBankInitialize (void *pbank, void *wbank);
extern void *MusPtrBankSetSingle (void *ipbank);
extern void MusPtrBankSetCurrent (void *ipbank);
extern void *MusPtrBankGetCurrent (void);
extern void MusFxBankInitialize (void *fxbank);
extern void MusFxBankSetSingle (void *ifxbank);
extern void MusFxBankSetCurrent (void *ifxbank);
extern void *MusFxBankGetCurrent (void);
extern int MusFxBankNumberOfEffects (void *ifxbank);
extern void MusFxBankSetPtrBank (void *ifxbank, void *ipbank);
extern void *MusFxBankGetPtrBank (void *ifxbank);
extern void MusFxBankSetSingle (void *ifxbank);
extern void MusSetMarkerCallback (void *callback);
extern int MusHandleWaveCount (musHandle handle);
extern unsigned short *MusHandleWaveAddress(musHandle handle);
void dmaRomToRam(u8 *rom, u8 *ram, s32 size);
void initAudio(void);
void setVolume(u32 musicvol, u32 mastervol);
void playMusic(s32 musicnum);
void playAmbient(s32 ambientnum);
musHandle playSfx(u16 sfxnum);
musHandle playSfx2(u16 sfxnum, s16 volume, s16 pan, u8 restartflag, s16 priority);
void audio_80006CC0(void);
u8 audio_80007510(s32 x, s32 y);
musHandle audio_800077F4(u16 sfxnum, s16 spritenum);
musHandle audio_80007820(u16 sfxnum, s16 spritenum);
musHandle audio_8000784C(musHandle handle, s16);
musHandle audio_80007A44(u16 sfxnum, s16 spritenum, s32);
musHandle audio_80007A80(musHandle handle, s16, s32);
void audio_80007AB8(void);
void audio_800080E0(s16 playernum, u16);
void audio_80008574(s16 playernum, u16 sfxnum);
musHandle audio_80008604(void);
void audio_800086B0(u16);
void audio_80008710(s16);
#endif
+6 -1
View File
@@ -20,6 +20,11 @@ RECOMP_PATCH void main_80000C74(void)
RECOMP_PATCH void func_80000DDC(void) {
// recomp_printf("FramebufferIndex: %d\n", _framebufferIndex_000BE020);
gGraphicsOption = 1; // force graphics to be Medium
#if DEBUG_MENU == 1
gDebugMenu = 1;
#endif
gEXEnable(gpDisplayList++); // @recomp
gEXSetRDRAMExtended(gpDisplayList++, 1); // @recomp
gEXSetRefreshRate(gpDisplayList++, 60 / 1);
@@ -32,4 +37,4 @@ RECOMP_PATCH void func_80000DDC(void) {
gDPFillRectangle(gpDisplayList++, 0, 0, gScreenWidth - 1, gScreenHeight - 1);
}
}
#endif
#endif
+2 -14
View File
@@ -25,6 +25,7 @@
#define sinf __sinf_recomp
#define cosf __cosf_recomp
#define sprintf sprintf_recomp
// #define sqrtf sqrtf_recomp
#define bzero bzero_recomp
#define gRandFloat sRandFloat
@@ -36,22 +37,9 @@
#include "PR/mbi.h"
// #include "PR/os_thread.h"
// #include "PR/os_message.h"
// #include "common_structs.h"
#include "structs.h"
#include "externs.h"
// #include "misc_funcs.h"
// #include "defines.h"
// #include "macros.h"
// #include "course.h"
// #include "objects.h"
// #include "render_objects.h"
// #include "actor_types.h"
// #include "misc_funcs.h"
// #include "menu_items.h"
// #include "menus.h"
// #include "sounds.h"
// #include "objects.h"
// #include "debug.h"
#include "debug.h"
#define MAKE_RGB(r, g, b) (((r) << 0x10) | ((g) << 0x08) | (b << 0x00))
+370
View File
@@ -27,6 +27,8 @@
typedef f32 Matrix4f[4][4];
typedef f32 Vec4f[4];
typedef void (*ProcPointer)(void);
typedef struct
{
/*0x00*/ s16 dimx;
@@ -116,4 +118,372 @@ typedef struct
/*0x4DC0*/ Mtx mtx5[128]; /*?*/
} Dynamic;
typedef struct {
u8 r, g, b;
} Color;
typedef struct
{
Color primary;
Color env;
} AlphaPalette;
typedef struct
{
u16 r;
u16 g;
u16 b;
} GlobalPalette;
typedef struct {
s16 r;
s16 g;
s16 b;
} FogColor;
typedef struct {
s16 nr;
s16 fr;
} FogScale;
typedef struct
{
FogColor color[3];
FogScale scale[3];
s16 unk1E;
u8 unk20;
u8 pad;
} Fog;
typedef struct
{
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s16 picnum;
s32 height;
Color fog;
} Cloud;
typedef struct
{
s32 xpos;
s32 ypos;
s32 zpos;
s32 xvect;
s32 yvect;
s32 zvect;
s32 unk18;
s32 unk1C;
s32 unk20;
s32 unk24;
s32 unk28;
s32 unk2C;
s32 unk30;
s16 cursectnum;
s16 unk36;
s16 ang;
s16 unk3A;
s16 unk3C;
s16 unk3E;
s32 unk40;
u8 unk44;
u8 unk45;
s16 unk46;
s16 unk48;
s16 unk4A;
s16 skin;
s16 unk4E;
s16 unk50;
s16 unk52;
u8 unk54;
u8 unk55;
u8 unk56;
u8 unk57;
u8 unk58;
u8 unk59;
u8 unk5A;
u8 unk5B;
u8 unk5C;
s16 unk5E;
u8 third_person;
u8 unk61;
f32 unk64;
s16 unk68;
s16 unk6A;
u8 unk6C;
s16 unk6E;
s16 unk70;
s16 unk72;
s16 unk74;
s16 unk76;
f32 unk78;
f32 unk7C;
u8 unk80;
s16 unk82;
s16 unk84;
s16 unk86;
u8 keys[17];
u8 pad[2];
} Player;
typedef struct
{
s16 picnum;
s16 sfxnum;
char *actor;
u8 unk8;
u8 unk9;
u8 unkA;
u8 unkB;
} _11B300UnkStruct1;
typedef struct
{
s32 x;
s32 y;
s32 z;
s16 cstat;
s16 picnum;
s16 sectnum;
s16 statnum;
s16 ang;
s16 unk16;
s16 unk18;
s16 unk1A;
s16 unk1C;
s16 lotag;
s16 hitag;
s16 unk22;
u8 unk24;
u8 unk25;
u8 clipdist;
u8 xrepeat;
u8 yrepeat;
u8 unk29;
u8 unk2A;
u8 unk2B;
} SpriteType;
typedef struct
{
struct {
u8 main;
u8 options_2P;
u8 select_single_multi_player;
u8 multiplayer_options;
u8 unk4;
u8 unk5;
u8 controller_config;
u8 options_1P;
u8 select_difficulty;
u8 select_multiplayer_gametype;
u8 unkA;
u8 unkB;
u8 unkC;
u8 unkD;
u8 select_player;
u8 unkF;
u8 player_setup;
u8 unk11;
u8 cheats;
u8 cheats_others;
u8 cheats_game_type;
u8 cheats_weapons;
} menuIndex;
u16 sound;
u16 mastervol;
u16 musicvol;
u16 rumblepak;
struct {
u16 radar;
u16 time_limit;
u16 frag_count;
u16 split_2P;
u16 split_3P;
u16 friendly_fire;
u16 players;
} multiplayer;
u16 unused;
u16 controller_preset[4];
u16 crosshair[4];
u16 autoaim[4];
u16 autocenter[4];
u16 difficulty;
u8 unk50;
} Config;
typedef struct
{
u16 enemies_killed;
u16 enemies_total;
u16 babes_saved;
u16 babes_total;
u16 secrets_found;
u16 secrets_total;
s32 unkC;
u8 unk10;
} code0UnkStruct4;
typedef unsigned long musHandle;
typedef struct {
u16 chapter;
char *mapname;
} MapChapter;
typedef struct
{
s32 flag;
s32 unk4;
s16 unk8;
u16 unkA;
s32 *exec_ptr;
s32 *unk10;
s32 *unk14;
s32 *unk18;
s32 *unk1C;
s32 *unk20;
s32 *unk24;
s16 unk28;
s16 unk2A;
s16 unk2C;
s16 unk2E;
s16 unk30;
s16 unk32;
s16 unk34;
s16 unk36;
s32 unk38;
s32 unk3C;
s32 unk40;
s32 unk44;
s32 unk48;
s32 unk4C;
s32 unk50;
s32 unk54;
s32 unk58;
s32 unk5C;
s32 unk60;
s32 unk64;
s32 unk68;
musHandle unk6C;
musHandle unk70;
s32 unk74;
s32 unk78;
s16 unk7C;
s16 unk7E;
s16 unk80;
s16 unk82;
s16 unk84;
s16 unk86;
s16 unk88;
s16 unk8A;
s16 unk8C;
s16 unk8E;
s16 unk90;
u8 unk92;
u8 unk93;
u8 unk94;
u8 unk95;
u8 unk96;
u8 unk97;
u8 unk98;
u8 unk99;
u8 unk9A;
u8 unk9B;
u8 unk9C;
u8 unk9D;
u8 unk9E;
u8 unk9F;
u8 unkA0;
u8 unkA1;
u8 unkA2;
u8 unkA3;
} Actor;
typedef struct
{
s16 unk0;
u8 unk2[8];
s16 unkA[8];
} code0UnkStruct2;
typedef struct
{
u8 *texture;
u8 *palette;
s32 texoff;
s32 paloff;
s16 width;
s16 height;
} _E0640UnkStruct;
typedef struct
{
s16 x;
s16 y;
s16 z;
} code0UnkStruct18;
typedef struct
{
s8 unk0;
s32 unk4;
u32 unk8;
s32 unkC;
u8 unk10;
u8 unk11;
u8 unk12;
u8 pad2[1];
s32 unk14;
u8 pad3[28];
f32 unk34;
f32 unk38;
f32 unk3C;
f32 unk40;
f32 unk44;
f32 unk48;
f32 unk4C;
f32 unk50;
f32 unk54;
f32 unk58;
f32 unk5C;
f32 unk60;
f32 unk64;
Color unk68;
Color unk6B;
u8 pad7[2];
void *unk70;
s32 unk74;
s32 unk78;
void *unk7C;
void *unk80;
code0UnkStruct18 *unk84;
s32 unk88;
u8 *unk8C;
s32 unk90;
s32 unk94;
s32 unk98;
s32 unk9C;
s32 unkA0;
Gfx *unkA4;
u8 pad9[4];
Lights1 *unkAC;
} code0UnkStruct16;
typedef struct
{
u16 unk0;
u16 id;
u16 offset;
u16 vtx_count;
u16 dlist_count;
} _119280UnkStruct1;
#endif
+2 -1
View File
@@ -71,4 +71,5 @@ recomp_set_bgm_volume_59 = 0x8F0000EC;
recomp_set_bgm_volume_0 = 0x8F0000F0;
osPfsFindFile_recomp = 0x8F0000F4;
osPfsReadWriteFile_recomp = 0x8F0000F8;
osPfsDeleteFile_recomp = 0x8F0000FC;
osPfsDeleteFile_recomp = 0x8F0000FC;
sprintf_recomp = 0x8F000100;
-9
View File
@@ -23,15 +23,6 @@ extern "C" void recomp_sleep_miliseconds(uint8_t* rdram, recomp_context* ctx) {
ultramodern::sleep_milliseconds(time);
}
extern "C" void toupper_recomp(uint8_t* rdram, recomp_context* ctx) {
// Empty
s32 c = _arg<0, s32>(rdram, ctx);
if (c >= 'a' && c <= 'z')
ctx->r2 = c - ('a' - 'A');
ctx->r2 = c;
}
extern "C" void rmonPrintf_recomp(uint8_t* rdram, recomp_context* ctx) {
// Empty
}