Bunch of stuff I had forgotten I had (#458)

* fix warns

* memory

* hehe

* name

* name

* yes

* Surpress bloaty warnings on matching builds

* Update game_ui.c

* label unused vi offset

* fix doubleword memcpy

* segment momento

* swap prefix since it'll be a bit more prominent

* Update src/save_data.c

Co-authored-by: Ryan Myers <ryan.p.myers@gmail.com>

---------

Co-authored-by: Ryan Myers <ryan.p.myers@gmail.com>
This commit is contained in:
Fazana
2025-02-13 15:19:38 +00:00
committed by GitHub
co-authored by Ryan Myers
parent e73b533cbb
commit 6c700e9726
28 changed files with 171 additions and 137 deletions
+4
View File
@@ -214,6 +214,10 @@ ifeq ($(shell getconf LONG_BIT), 64)
endif
CC_CHECK_CFLAGS := -fsyntax-only -funsigned-char $(INCLUDE_CFLAGS) $(DEF_INC_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB -D_LANGUAGE_C -DNDEBUG -Werror-implicit-function-declaration
# Disable GCC complaining about fakematches necessary to match if building a matching ROM. Example: "var2 = (0, var1)"
ifeq ($(NON_MATCHING),0)
CC_CHECK_CFLAGS += -Wno-unused-value
endif
#Warnings to ignore
CC_CHECK_CFLAGS += -Wno-builtin-declaration-mismatch -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -Wno-switch
+1 -1
View File
@@ -261,7 +261,7 @@ glabel func_80087F14
/* 088EB8 800882B8 25080004 */ addiu $t0, $t0, 4
/* 088EBC 800882BC 14BFFFBE */ bne $a1, $ra, .L800881B8
/* 088EC0 800882C0 A3200000 */ sb $zero, ($t9)
/* 088EC4 800882C4 0C01D859 */ jal packDirectoryFree
/* 088EC4 800882C4 0C01D859 */ jal cpak_free_files
/* 088EC8 800882C8 AFAA0078 */ sw $t2, 0x78($sp)
/* 088ECC 800882CC 8FAE0090 */ lw $t6, 0x90($sp)
/* 088ED0 800882D0 3C108012 */ lui $s0, %hi(sCurrentControllerPakFreeSpace) # $s0, 0x8012
+6 -6
View File
@@ -544,9 +544,9 @@ void debug_render_line(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVal
temp_tris[0].vi0 = 2;
temp_tris[0].vi1 = 1;
temp_tris[0].vi2 = 0;
temp_tris[0].uv0.u = 0x3E0;
temp_tris[0].uv0.v = 0x3E0;
temp_tris[0].uv1.u = 0x3E0;
temp_tris[0].uv0.u = 1024 - 32;
temp_tris[0].uv0.v = 1024 - 32;
temp_tris[0].uv1.u = 1024 - 32;
temp_tris[0].uv1.v = 0;
temp_tris[0].uv2.u = 1;
temp_tris[0].uv2.v = 0;
@@ -555,9 +555,9 @@ void debug_render_line(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVal
temp_tris[1].vi1 = 2;
temp_tris[1].vi2 = 1;
temp_tris[1].uv0.u = 1;
temp_tris[1].uv0.v = 0x3E0;
temp_tris[1].uv1.u = 0x3E0;
temp_tris[1].uv1.v = 0x3E0;
temp_tris[1].uv0.v = 1024 - 32;
temp_tris[1].uv1.u = 1024 - 32;
temp_tris[1].uv1.v = 1024 - 32;
temp_tris[1].uv2.u = 1;
temp_tris[1].uv2.v = 0;
temp_tris += 2;
+7 -5
View File
@@ -381,7 +381,7 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *obj, s3
gMinimapOpacity = 0;
}
}
if (gShowHUD == 0) {
if (gShowHUD == FALSE) {
racer = (Object_Racer *) obj->unk64;
if (D_8012718A) {
D_80126D10 = 1 - racer->playerIndex;
@@ -959,7 +959,8 @@ void render_hud_battle(s32 countdown, Object *obj, s32 updateRate) {
}
}
#ifdef NON_EQUIVALENT
#ifdef NON_MATCHING
// hud_render_lives
void func_800A1E48(Object *racerObj, s32 updateRate) {
f32 temp;
s32 i;
@@ -2188,10 +2189,11 @@ void hud_draw_finish_misc(Object_Racer *racer) {
}
}
#ifdef NON_EQUIVALENT
#ifdef NON_MATCHING
// hud_render_finish
void func_800A6254(Object_Racer *racer, s32 updateRate) {
s32 *var_a0;
s32 var_t0;
UNUSED s32 *var_a0;
UNUSED s32 var_t0;
s32 var_a2;
s32 var_v1;
s32 raceType;
+8 -5
View File
@@ -8,7 +8,7 @@
/************ .data ************/
huft *gHuftTable = NULL; // gzip_huft_alloc
s32 *gAssetAddress = NULL;
s32 *gPackedHeader = NULL;
u8 *gzip_inflate_input = NULL;
u8 *gzip_inflate_output = NULL;
@@ -22,9 +22,12 @@ s32 gHuftTablePos; // gzip_hufts
/******************************/
void init_rzip(void) {
/**
* Allocate space for the decompression heap and file header.
*/
void gzip_init(void) {
gHuftTable = (huft *) allocate_from_main_pool_safe(0x2800, COLOUR_TAG_BLACK);
gAssetAddress = (s32 *) allocate_from_main_pool_safe(0x10, COLOUR_TAG_BLACK);
gPackedHeader = (s32 *) allocate_from_main_pool_safe(0x10, COLOUR_TAG_BLACK);
}
/**
@@ -46,8 +49,8 @@ s32 byteswap32(u8 *arg0) {
* Official name: rzipUncompressSizeROM
*/
s32 get_asset_uncompressed_size(s32 assetIndex, s32 assetOffset) {
load_asset_to_address(assetIndex, (u32) gAssetAddress, assetOffset, 8);
return byteswap32((u8 *) gAssetAddress);
load_asset_to_address(assetIndex, (u32) gPackedHeader, assetOffset, 8);
return byteswap32((u8 *) gPackedHeader);
}
/**
+1 -1
View File
@@ -18,7 +18,7 @@ typedef struct huft {
#define BMAX 16 /* maximum bit length of any code (16 for explode) */
#define N_MAX 288 /* maximum number of codes in any set */
void init_rzip(void);
void gzip_init(void);
s32 byteswap32(u8 *arg0);
s32 get_asset_uncompressed_size(s32 assetIndex, s32 assetOffset);
u8 *gzip_inflate(u8 *compressedInput, u8 *decompressedOutput);
+2 -1
View File
@@ -761,7 +761,8 @@ GLOBAL_ASM("asm/math_util/area_triangle_2d.s")
GLOBAL_ASM("asm/math_util/set_breakpoint.s")
#ifdef NON_MATCHING
void dmacopy_doubleword(void *src, void *dst, s32 size) {
void dmacopy_doubleword(void *src, void *dst, s32 end) {
s32 size = end - (u32) dst;
memcpy(dst, src, size);
}
#else
+1 -1
View File
@@ -58,7 +58,7 @@ void f32_matrix_from_position(Matrix *mtx, f32 x, f32 y, f32 z);
void f32_matrix_from_scale(Matrix, f32, f32, f32);
s32 atan2s(s32 xDelta, s32 zDelta);
f32 area_triangle_2d(f32 x0, f32 z0, f32 x1, f32 z1, f32 x2, f32 z2);
void dmacopy_doubleword(void *src, void *dst, s32 size);
void dmacopy_doubleword(void *src, void *dst, s32 end);
unk800B7D10 *get_stack_pointer(void);
u32 disable_interrupts(void);
void enable_interrupts(u32 flags);
+19 -22
View File
@@ -107,7 +107,7 @@ void *allocate_from_main_pool_safe(s32 size, u32 colourTag) {
dump_memory_to_cpak(get_stack_pointer()->unk14, size, colourTag);
}
temp_v0 = allocate_from_memory_pool(0, size, colourTag);
if (temp_v0 == (void *) NULL) {
if (temp_v0 == NULL) {
dump_memory_to_cpak(get_stack_pointer()->unk14, size, colourTag);
}
return temp_v0;
@@ -673,23 +673,6 @@ UNUSED void render_memory_colour_tags(void) {
render_printf("ORANGE %d\n\n", get_memory_colour_tag_count(COLOUR_TAG_ORANGE));
}
/************ .rodata ************/
UNUSED const char D_800E7590[] = "Region = %d loc = %x size = %x\t";
UNUSED const char D_800E75B4[] = "FREE";
UNUSED const char D_800E75BC[] = "ALLOCATED";
UNUSED const char D_800E75C8[] = "ALLOCATED,FIXED";
UNUSED const char D_800E75D8[] = "\n";
UNUSED const char D_800E75DC[] = "\n";
UNUSED const char D_800E75E0[] = "Region number = %d\t";
UNUSED const char D_800E75F4[] = "maxSlots = %d\t";
UNUSED const char D_800E7604[] = "slotsUsed = %d\t";
UNUSED const char D_800E7614[] = "loc = %x\t";
UNUSED const char D_800E7620[] = "size = %x\n";
UNUSED const char D_800E762C[] = "\n";
/*********************************/
UNUSED void mmSlotPrint(void) {
s32 i;
s32 skip;
@@ -698,7 +681,8 @@ UNUSED void mmSlotPrint(void) {
s32 nextIndex;
MemoryPoolSlot *slot;
for (i = 0; (gNumberOfMemoryPools ^ 0) >= i; i++) {
for (i = 0; gNumberOfMemoryPools >= i; i++) {
stubbed_printf("Region = %d loc = %x size = %x\t", i, gMemoryPools[i].slots, gMemoryPools[i].size);
if (i && i) {} // Fakematch
slot = &gMemoryPools[i].slots[0];
index = 1;
@@ -720,10 +704,23 @@ UNUSED void mmSlotPrint(void) {
}
}
// Unused. Does nothing?
UNUSED void func_80071CE8(void) {
UNUSED const char D_800E75B4[] = "FREE";
UNUSED const char D_800E75BC[] = "ALLOCATED";
UNUSED const char D_800E75C8[] = "ALLOCATED,FIXED";
UNUSED const char D_800E75D8[] = "\n";
UNUSED const char D_800E75DC[] = "\n";
/**
* Print out the current status of each existing memory pool.
*/
UNUSED void mempool_print_data(void) {
s32 i;
for (i = gNumberOfMemoryPools; i != -1; i--) {
// Nothing here. There might've been a printf or something similar.
stubbed_printf("Region number = %d\t", i);
stubbed_printf("maxSlots = %d\t", gMemoryPools[i].maxNumSlots);
stubbed_printf("slotsUsed = %d\t", gMemoryPools[i].curNumSlots);
stubbed_printf("loc = %x\t", gMemoryPools[i].slots);
stubbed_printf("size = %x\n", gMemoryPools[i].size);
stubbed_printf("\n");
}
}
-1
View File
@@ -87,7 +87,6 @@ u8 *align8(u8 *address);
u8 *align4(u8 *address);
void print_memory_colour_tags(void);
void render_memory_colour_tags(void);
void func_80071CE8(void);
MemoryPoolSlot *new_memory_pool(MemoryPoolSlot *slots, s32 poolSize, s32 numSlots);
void free_memory_pool_slot(s32 poolIndex, s32 slotIndex);
s32 allocate_memory_pool_slot(s32 poolIndex, s32 slotIndex, s32 size, s32 slotIsTaken, s32 newSlotIsTaken,
+3 -3
View File
@@ -3830,7 +3830,7 @@ SIDeviceStatus savemenu_load_sources(void) {
gSaveMenuOptionCountUpper++;
}
}
packDirectoryFree();
cpak_free_files();
} else if (temp == CONTROLLER_PAK_RUMBLE_PAK_FOUND) {
gSaveMenuRumbleConnected = TRUE;
if (gSaveMenuSourceState < 0) {
@@ -4573,7 +4573,7 @@ SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1) {
gBootPakData[i - 1][j] = 0;
} while (&gBootPakData != &sCurrentControllerPakAllFileNames);
packDirectoryFree(); // Free D_800DE440 from memory
cpak_free_files(); // Free gPakFileList from memory
get_free_space(*controllerIndex, &sCurrentControllerPakFreeSpace, NULL); // Get Available Space in Controller
// Pak
sCurrentControllerPakFreeSpace = sCurrentControllerPakFreeSpace / 256; // Bytes
@@ -10115,7 +10115,7 @@ s32 menu_results_loop(s32 updateRate) {
dialogue_close(7);
dialogue_clear(7);
if (gResultOptionText[gMenuOption] == gMenuText[ASSET_MENU_TEXT_TRYAGAIN]) {
return (MENU_RESULT_FLAGS_100 | MENU_RESULT_FLAGS_2); // This gets parsed in menu_logic_loop as a flag
return (MENU_RESULT_FLAGS_100 | MENU_RESULT_FLAGS_2); // This gets parsed in mode_menu as a flag
// and an ID from the bottom 7 bits.
}
if (gResultOptionText[gMenuOption] == gMenuText[ASSET_MENU_TEXT_SELECTTRACK]) {
+1 -1
View File
@@ -73,7 +73,7 @@ void allocate_object_model_pools(void) {
checksum += *(u8 *) (((s32) &render_scene) + i);
}
if (checksum != gTractionTableChecksum) {
antipiracy_modify_surface_traction_table();
drm_vehicle_traction();
}
#endif
}
+3 -3
View File
@@ -5761,7 +5761,7 @@ void func_8001E6EC(s8 arg0) {
void func_8001E89C(void) {
s32 i;
Object *obj;
Object_8001E89C_64 *obj64;
Object_8001E89C_64 *obj64;
// some flag, flips to 1 when loading a new zone
if (D_8011AE01 != 0) {
@@ -6459,7 +6459,7 @@ s32 get_object_property_size(Object *obj, Object_64 *obj64) {
ret = sizeof(Object_AudioLine);
break;
case BHV_AINODE:
ret = 0x1C;
ret = sizeof(Object_AiNode);
break;
case BHV_MODECHANGE:
case BHV_BONUS:
@@ -6500,7 +6500,7 @@ s32 get_object_property_size(Object *obj, Object_64 *obj64) {
ret = sizeof(Object_LaserGun);
break;
case BHV_OVERRIDE_POS:
ret = 0x10;
ret = sizeof(Object_OverridePos);
break;
case BHV_DINO_WHALE:
case BHV_ANIMATED_OBJECT:
+4 -5
View File
@@ -143,7 +143,6 @@ s32 gCurrentCarSteerVel;
s32 D_8011D558;
s32 gCurrentPlayerIndex;
s16 D_8011D560; // Set, but never read.
UNUSED s16 D_8011D562;
f32 *gCurrentRacerMiscAssetPtr;
f32 *D_8011D568;
f32 gCurrentRacerWeightStat;
@@ -5699,7 +5698,7 @@ s32 timetrial_load_player_ghost(s32 controllerID, s32 mapId, s16 arg2, s16 *char
nodeID = (gCurrentGhostIndex + 1) & 1;
cpakStatus = func_80074B34(controllerID, mapId, arg2, (u16 *) characterID, time, &nodeCount,
(GhostHeader *) gGhostData[nodeID]);
(unk80075000 *) gGhostData[nodeID]);
if (characterID) {
if (cpakStatus == CONTROLLER_PAK_GOOD) {
gGhostNodeCount[nodeID] = nodeCount;
@@ -5752,7 +5751,7 @@ void timetrial_free_staff_ghost(void) {
*/
SIDeviceStatus timetrial_write_player_ghost(s32 controllerIndex, s32 mapId, s16 arg2, s16 arg3, s16 arg4) {
return func_80075000(controllerIndex, (s16) mapId, arg2, arg3, arg4, gGhostNodeCount[gCurrentGhostIndex],
(GhostHeader *) gGhostData[gCurrentGhostIndex]);
(unk80075000_body *) gGhostData[gCurrentGhostIndex]);
}
/**
@@ -5942,7 +5941,7 @@ void racer_set_dialogue_camera(void) {
* Antipiracy function that loops over an address of a function a number of times.
* It compares the number it gets to a generated checksum to determine if the game has been tampered with at all.
*/
void compare_balloon_checksums(void) {
void drm_checksum_balloon(void) {
s32 i;
s32 count = 0;
u8 *temp = (u8 *) &obj_loop_goldenballoon;
@@ -6580,7 +6579,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_8005B818.s")
* Triggered upon failure of an anti-tamper test. Sets the first index of the surface speed
* table to an unreasonable value, wrecking drivability while on it.
*/
void antipiracy_modify_surface_traction_table(void) {
void drm_vehicle_traction(void) {
gSurfaceTractionTable[SURFACE_DEFAULT] = 0.05f;
}
#endif
+2 -2
View File
@@ -193,8 +193,8 @@ SIDeviceStatus timetrial_write_player_ghost(s32 controllerIndex, s32 mapId, s16
s16 timetrial_ghost_full(void);
void disable_racer_input(void);
void racer_set_dialogue_camera(void);
void compare_balloon_checksums(void);
void antipiracy_modify_surface_traction_table(void);
void drm_checksum_balloon(void);
void drm_vehicle_traction(void);
s32 turn_head_towards_object(Object *obj, Object_Racer *racer, Object *targetObj, f32 distance);
void onscreen_ai_racer_physics(Object *obj, Object_Racer *racer, s32 arg2);
void func_8005C270(Object_Racer *racer);
+18 -17
View File
@@ -7,6 +7,7 @@
#include "macros.h"
#include "video.h"
#include "camera.h"
#include "set_rsp_segment.h"
// #include "lib/src/unknown_0D24D0.h"
/************ .data ************/
@@ -136,11 +137,11 @@ Gfx dTextureRectangleScaledXlu[][2] = {
u8 gDramStack[SP_DRAM_STACK_SIZE8];
u8 gGfxSPTaskYieldBuffer[YIELD_BUFFER_SIZE];
OSMesgQueue D_80125EA0;
OSMesg D_80125EB8;
OSMesgQueue D_80125EC0;
OSMesgQueue gRCPMesgQueue;
OSMesg gRCPMesgBuf;
UNUSED OSMesgQueue gUnusedMesgQueue;
OSMesgQueue gGfxTaskMesgQueue;
OSMesg D_80125EF0[8];
UNUSED OSMesg gUnusedMesgBuf[8];
OSMesg gGfxTaskMesgBuf[8];
u8 gChequerBGColourR1;
u8 gChequerBGColourG1;
@@ -190,7 +191,7 @@ s32 setup_ostask_xbus(Gfx *dlBegin, Gfx *dlEnd, UNUSED s32 recvMesg) {
dkrtask->task.dram_stack = (u64 *) gDramStack;
dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8;
dkrtask->task.output_buff = (u64 *) gGfxSPTaskYieldBuffer;
dkrtask->task.output_buff_size = (u64 *) &D_80125EA0;
dkrtask->task.output_buff_size = (u64 *) &gRCPMesgQueue;
dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData;
dkrtask->task.yield_data_size = sizeof(gGfxTaskYieldData);
dkrtask->task.output_buff = NULL;
@@ -245,12 +246,12 @@ UNUSED void setup_ostask_xbus_2(Gfx *dlBegin, Gfx *dlEnd, s32 recvMesg) {
dkrtask->unk68 = 0;
if (recvMesg) {
dkrtask->mesgQueue = &D_80125EA0;
dkrtask->mesgQueue = &gRCPMesgQueue;
}
osWritebackDCacheAll();
osSendMesg(osScInterruptQ, dkrtask, 1);
if (recvMesg) {
osRecvMesg(&D_80125EA0, &mesgBuf, OS_MESG_BLOCK);
osRecvMesg(&gRCPMesgQueue, &mesgBuf, OS_MESG_BLOCK);
}
}
@@ -298,13 +299,13 @@ UNUSED void setup_ostask_fifo(Gfx *dlBegin, Gfx *dlEnd, s32 recvMesg) {
dkrtask->unk68 = 0;
if (recvMesg) {
dkrtask->mesgQueue = &D_80125EA0;
dkrtask->mesgQueue = &gRCPMesgQueue;
}
osWritebackDCacheAll();
osSendMesg(osScInterruptQ, dkrtask, 1);
if (recvMesg) {
osRecvMesg(&D_80125EA0, &mesgBuf, OS_MESG_BLOCK);
osRecvMesg(&gRCPMesgQueue, &mesgBuf, OS_MESG_BLOCK);
}
}
@@ -336,7 +337,7 @@ UNUSED void setup_ostask_fifo_2(Gfx *dlBegin, Gfx *dlEnd, s32 recvMesg) {
dkrtask->task.dram_stack = (u64 *) gDramStack;
dkrtask->task.dram_stack_size = SP_DRAM_STACK_SIZE8;
dkrtask->task.output_buff = (u64 *) gGfxSPTaskYieldBuffer;
dkrtask->task.output_buff_size = (u64 *) &D_80125EA0;
dkrtask->task.output_buff_size = (u64 *) &gRCPMesgQueue;
dkrtask->task.yield_data_ptr = (u64 *) gGfxTaskYieldData;
dkrtask->task.yield_data_size = sizeof(gGfxTaskYieldData);
dkrtask->next = NULL;
@@ -374,7 +375,7 @@ s32 wait_for_gfx_task(void) {
return (s32) mesg[1];
}
UNUSED void func_80077AAC(void *bufPtr, s32 bufSize, UNUSED s32 unused) {
UNUSED void gfxtask_run_rdp(void *bufPtr, s32 bufSize, UNUSED s32 unused) {
osWritebackDCacheAll();
while (osDpGetStatus() & DPC_CLR_CMD_CTR) {}
osDpSetNextBuffer(bufPtr, bufSize);
@@ -424,11 +425,11 @@ void render_background(Gfx **dList, Matrix *mtx, s32 drawBG) {
//!@bug: the scissor does not need the off by one here, despite being intended for fill mode.
gDPSetScissor((*dList)++, 0, 0, 0, w - 1, h - 1);
gDPSetCycleType((*dList)++, G_CYC_FILL);
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, SEGMENT_DEPTH_BUFFER);
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, SEGMENT_ZBUFFER << 24);
gDPSetFillColor((*dList)++, GPACK_RGBA5551(255, 255, 240, 0) << 16 | GPACK_RGBA5551(255, 255, 240, 0));
gDPFillRectangle((*dList)++, 0, 0, w - 1, h - 1);
gDPPipeSync((*dList)++);
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, SEGMENT_COLOUR_BUFFER);
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, SEGMENT_FRAMEBUFFER << 24);
if (drawBG) {
if (check_viewport_background_flag(0)) {
if (gChequerBGEnabled) {
@@ -477,8 +478,8 @@ void render_background(Gfx **dList, Matrix *mtx, s32 drawBG) {
*/
void init_rdp_and_framebuffer(Gfx **dList) {
s32 width = GET_VIDEO_WIDTH(get_video_width_and_height_as_s32());
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, SEGMENT_COLOUR_BUFFER);
gDPSetDepthImage((*dList)++, SEGMENT_DEPTH_BUFFER);
gDPSetColorImage((*dList)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, SEGMENT_FRAMEBUFFER << 24);
gDPSetDepthImage((*dList)++, SEGMENT_ZBUFFER << 24);
gSPDisplayList((*dList)++, dRdpInit);
}
@@ -495,8 +496,8 @@ void init_rsp(Gfx **dList) {
*/
void setup_gfx_mesg_queues(OSSched *sc) {
osScInterruptQ = osScGetInterruptQ(sc);
osCreateMesgQueue(&D_80125EA0, &D_80125EB8, 1);
osCreateMesgQueue(&D_80125EC0, D_80125EF0, ARRAY_COUNT(D_80125EF0));
osCreateMesgQueue(&gRCPMesgQueue, &gRCPMesgBuf, 1);
osCreateMesgQueue(&gUnusedMesgQueue, gUnusedMesgBuf, ARRAY_COUNT(gUnusedMesgBuf));
osCreateMesgQueue(&gGfxTaskMesgQueue, gGfxTaskMesgBuf, ARRAY_COUNT(gGfxTaskMesgBuf));
}
-4
View File
@@ -10,9 +10,6 @@
#include "game_ui.h"
#include "video.h"
#define SEGMENT_DEPTH_BUFFER 0x02000000
#define SEGMENT_COLOUR_BUFFER 0x01000000
enum TextureRectangleFlags {
TEXRECT_BILERP,
TEXRECT_POINT = (1 << 0),
@@ -65,7 +62,6 @@ extern s8 rspF3DDKRFifoStart[];
extern s8 rspF3DDKRDataFifoStart[];
s32 wait_for_gfx_task(void);
void func_80077AAC(void *bufPtr, s32 bufSize, UNUSED s32 arg2);
void set_background_prim_colour(u8 red, u8 green, u8 blue);
void set_background_fill_colour(s32 red, s32 green, s32 blue);
void init_rdp_and_framebuffer(Gfx **dList);
+24 -20
View File
@@ -15,7 +15,7 @@
/************ .data ************/
s8 *D_800DE440 = 0;
s8 *gPakFileList = 0;
u8 gN64FontCodes[] = "\0 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#'*+,-./:=?@";
@@ -1263,7 +1263,7 @@ SIDeviceStatus func_80074EB8(s32 controllerIndex, s16 levelId, s16 vehicleId, s1
if (1) {} // fake
ghost = allocate_from_main_pool_safe(sp24 + (GHSS_SIZE * 2), COLOUR_TAG_BLACK);
ghost->signature = GHSS;
ghostBody = &ghost->data;
ghostBody = &ghost->data[0];
ghostBody[0].unk0 = levelId;
ghostBody[0].unk1 = vehicleId;
ghostBody[0].unk2 = GHSS_SIZE;
@@ -1273,8 +1273,9 @@ SIDeviceStatus func_80074EB8(s32 controllerIndex, s16 levelId, s16 vehicleId, s1
ghostBody[i].unk2 = ghostBody[1].unk2;
}
func_80074AA8(AS_BYTES(ghost) + ghostBody[0].unk2, ghostCharacterId, ghostTime, ghostNodeCount, dest);
pakStatus = write_controller_pak_file(controllerIndex, -1, "DKRACING-GHOSTS", "", ghost, sp24 + GHSS_SIZE);
func_80074AA8((GhostHeader *) (AS_BYTES(ghost) + ghostBody[0].unk2), ghostCharacterId, ghostTime, ghostNodeCount,
dest);
pakStatus = write_controller_pak_file(controllerIndex, -1, "DKRACING-GHOSTS", "", (u8 *) ghost, sp24 + GHSS_SIZE);
free_from_memory_pool(ghost);
return pakStatus;
}
@@ -1634,7 +1635,7 @@ SIDeviceStatus repair_controller_pak(s32 controllerIndex) {
s32 status = get_si_device_status(controllerIndex);
if (status == CONTROLLER_PAK_GOOD || status == CONTROLLER_PAK_INCONSISTENT) {
status = osPfsChecker(&pfs[controllerIndex]);
if (status == 0) {
if (status == CONTROLLER_PAK_GOOD) {
ret = CONTROLLER_PAK_GOOD;
} else if (status == PFS_ERR_NEW_PACK) {
ret = CONTROLLER_PAK_CHANGED;
@@ -1677,7 +1678,7 @@ s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, ch
s32 ret;
s32 maxNumOfFilesOnCpak;
s32 files_used;
s8 *temp_D_800DE440;
s8 *list;
s32 i;
u32 gameCode;
@@ -1704,23 +1705,23 @@ s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, ch
maxNumOfFilesOnCpak = maxNumOfFilesToGet;
}
if (D_800DE440 != NULL) {
free_from_memory_pool(D_800DE440);
if (gPakFileList != NULL) {
free_from_memory_pool(gPakFileList);
}
files_used = maxNumOfFilesOnCpak * 24;
D_800DE440 = allocate_from_main_pool_safe(files_used, COLOUR_TAG_BLACK);
bzero(D_800DE440, files_used);
temp_D_800DE440 = D_800DE440;
gPakFileList = allocate_from_main_pool_safe(files_used, COLOUR_TAG_BLACK);
bzero(gPakFileList, files_used);
list = gPakFileList;
// TODO: There's probably an unidentified struct here
for (i = 0; i < maxNumOfFilesOnCpak; i++) {
fileNames[i] = (char *) temp_D_800DE440;
temp_D_800DE440 += 0x12;
fileExtensions[i] = (char *) temp_D_800DE440;
fileNames[i] = (char *) list;
list += 0x12;
fileExtensions[i] = (char *) list;
fileSizes[i] = 0;
fileTypes[i] = SAVE_FILE_TYPE_UNSET;
temp_D_800DE440 += 6;
list += 6;
}
while (i < maxNumOfFilesToGet) {
@@ -1757,12 +1758,15 @@ s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, ch
return CONTROLLER_PAK_GOOD;
}
// Free D_800DE440
void packDirectoryFree(void) {
if (D_800DE440 != 0) {
free_from_memory_pool(D_800DE440);
/**
* Free the controller pak file list from memory.
* Official Name: pakDirectoryFree
*/
void cpak_free_files(void) {
if (gPakFileList) {
free_from_memory_pool(gPakFileList);
}
D_800DE440 = 0;
gPakFileList = NULL;
}
// Get Available Space in Controller Pak
+2 -2
View File
@@ -114,7 +114,7 @@ typedef struct unk80075000 {
unk80075000_body data[1];
} unk80075000;
extern s8 *D_800DE440;
extern s8 *gPakFileList;
extern u8 gN64FontCodes[68];
extern s32 gRumbleKillTimer;
extern OSPfs pfs[MAXCONTROLLERS];
@@ -146,7 +146,7 @@ SIDeviceStatus check_for_rumble_pak(s32 controllerIndex);
SIDeviceStatus repair_controller_pak(s32 controllerIndex);
SIDeviceStatus reformat_controller_pak(s32 controllerIndex);
s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, char **fileNames, char **fileExtensions, u32 *fileSizes, u8 *fileTypes);
void packDirectoryFree(void);
void cpak_free_files(void);
s32 get_free_space(s32 controllerIndex, u32 *bytesFree, s32 *notesFree);
s32 delete_file(s32 controllerIndex, s32 fileNum);
s32 copy_controller_pak_data(s32 controllerIndex, s32 fileNumber, s32 secondControllerIndex);
+1 -1
View File
@@ -11,6 +11,6 @@
* This is used for the colour and depth buffers.
* Official name: segSetBase
*/
void set_rsp_segment(Gfx **dlist, s32 segment, s32 base) {
void rsp_segment(Gfx **dlist, s32 segment, s32 base) {
gSPSegment((*dlist)++, segment, base + K0BASE)
}

Some files were not shown because too many files have changed in this diff Show More