1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-06 14:20:11 +00:00

Fix most compiler warnings in the boot and code segments (#674)

* Less warnings in boot & code segments

* few more warnings gone

* Ran formatter

* z_view warning gone

* -> 1

* f31 -> 31

* Remove function casts

* Few more small improvements

* Separate declaration and assignment in func_80091738 and Item_Give

Co-authored-by: Thar0 <maximilianc64@gmail.com>
This commit is contained in:
Tharo 2021-02-14 00:49:40 +00:00 committed by GitHub
parent d615ec4f31
commit f9d96d9f73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
208 changed files with 1702 additions and 1846 deletions

View file

@ -2,6 +2,7 @@
void __assert(const char* exp, const char* file, s32 line) {
char msg[256];
osSyncPrintf("Assertion failed: %s, file %s, line %d, thread %d\n", exp, file, line, osGetThreadId(NULL));
sprintf(msg, "ASSERT: %s:%d(%d)", file, line, osGetThreadId(NULL));
Fault_AddHungupAndCrashImpl(msg, exp);

View file

@ -24,6 +24,7 @@ void bootproc(void) {
Locale_Init();
StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, sIdleThreadStack + sizeof(sIdleThreadStack), 0, 256, "idle");
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, 0, sIdleThreadStack + sizeof(sIdleThreadStack), Z_PRIORITY_MAIN);
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
Z_PRIORITY_MAIN);
osStartThread(&sIdleThread);
}

View file

@ -16,25 +16,25 @@ u32 gViConfigFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF;
f32 gViConfigXScale = 1.0;
f32 gViConfigYScale = 1.0;
void Main_ThreadEntry(void* arg0) {
OSTime var1;
void Main_ThreadEntry(void* arg) {
OSTime time;
osSyncPrintf("mainx 実行開始\n");
DmaMgr_Init();
osSyncPrintf("codeセグメントロード中...");
var1 = osGetTime();
time = osGetTime();
DmaMgr_SendRequest1(_codeSegmentStart, (u32)_codeSegmentRomStart, _codeSegmentRomEnd - _codeSegmentRomStart,
"../idle.c", 238);
var1 -= osGetTime();
time -= osGetTime();
osSyncPrintf("\rcodeセグメントロード中...完了\n");
osSyncPrintf("転送時間 %6.3f\n");
bzero(_codeSegmentBssStart, _codeSegmentBssEnd - _codeSegmentBssStart);
osSyncPrintf("codeセグメントBSSクリア完了\n");
Main(arg0);
Main(arg);
osSyncPrintf("mainx 実行終了\n");
}
void Idle_ThreadEntry(void* a0) {
void Idle_ThreadEntry(void* arg) {
osSyncPrintf("アイドルスレッド(idleproc)実行開始\n");
osSyncPrintf("作製者 : %s\n", gBuildTeam);
osSyncPrintf("作成日時 : %s\n", gBuildDate);
@ -80,7 +80,7 @@ void Idle_ThreadEntry(void* a0) {
osViSwapBuffer(0x803DA80); //! @bug Invalid vram address (probably intended to be 0x803DA800)
osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQ, sPiMgrCmdBuff, 50);
StackCheck_Init(&sMainStackInfo, sMainStack, sMainStack + sizeof(sMainStack), 0, 0x400, "main");
osCreateThread(&gMainThread, 3, Main_ThreadEntry, a0, sMainStack + sizeof(sMainStack), Z_PRIORITY_MAIN);
osCreateThread(&gMainThread, 3, Main_ThreadEntry, arg, sMainStack + sizeof(sMainStack), Z_PRIORITY_MAIN);
osStartThread(&gMainThread);
osSetThreadPri(NULL, OS_PRIORITY_IDLE);

View file

@ -5,7 +5,7 @@ OSPiHandle* sISVHandle; // official name : is_Handle
#define gISVDbgPrnAdrs ((ISVDbg*)0xb3ff0000)
#define ASCII_TO_U32(a, b, c, d) ((u32)((a << 24) | (b << 16) | (c << 8) | (d << 0)))
void isPrintfInit() {
void isPrintfInit(void) {
sISVHandle = osCartRomInit();
osEPiWriteIo(sISVHandle, (u32)&gISVDbgPrnAdrs->put, 0);
osEPiWriteIo(sISVHandle, (u32)&gISVDbgPrnAdrs->get, 0);
@ -16,14 +16,14 @@ void osSyncPrintfUnused(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&is_proutSyncPrintf, NULL, fmt, args);
_Printf(is_proutSyncPrintf, NULL, fmt, args);
}
void osSyncPrintf(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&is_proutSyncPrintf, NULL, fmt, args);
_Printf(is_proutSyncPrintf, NULL, fmt, args);
}
// assumption
@ -31,10 +31,10 @@ void rmonPrintf(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&is_proutSyncPrintf, NULL, fmt, args);
_Printf(is_proutSyncPrintf, NULL, fmt, args);
}
u32 is_proutSyncPrintf(void* arg0, const char* str, s32 count) {
void* is_proutSyncPrintf(void* arg, const char* str, u32 count) {
u32 data;
s32 pos;
s32 start;
@ -75,6 +75,7 @@ u32 is_proutSyncPrintf(void* arg0, const char* str, s32 count) {
str++;
}
osEPiWriteIo(sISVHandle, (u32)&gISVDbgPrnAdrs->put, start);
return 1;
}

View file

@ -1,22 +1,22 @@
#include "global.h"
#include "vt.h"
f32 LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, f32 var1, const char* var2Name, f32 var2,
const char* var3Name, f32 var3) {
if (var1 < var2 || var3 < var1) {
osSyncPrintf("%s %d: range error %s(%f) < %s(%f) < %s(%f)\n", exp, arg1, var2Name, var2, var1Name, var1,
var3Name, var3);
f32 LogUtils_CheckFloatRange(const char* exp, s32 line, const char* valueName, f32 value, const char* minName, f32 min,
const char* maxName, f32 max) {
if (value < min || max < value) {
osSyncPrintf("%s %d: range error %s(%f) < %s(%f) < %s(%f)\n", exp, line, minName, min, valueName, value,
maxName, max);
}
return var1;
return value;
}
s32 LogUtils_CheckIntRange(const char* exp, s32 arg1, const char* var1Name, s32 var1, const char* var2Name, s32 var2,
const char* var3Name, s32 var3) {
if (var1 < var2 || var3 < var1) {
osSyncPrintf("%s %d: range error %s(%d) < %s(%d) < %s(%d)\n", exp, arg1, var2Name, var2, var1Name, var1,
var3Name, var3);
s32 LogUtils_CheckIntRange(const char* exp, s32 line, const char* valueName, s32 value, const char* minName, s32 min,
const char* maxName, s32 max) {
if (value < min || max < value) {
osSyncPrintf("%s %d: range error %s(%d) < %s(%d) < %s(%d)\n", exp, line, minName, min, valueName, value,
maxName, max);
}
return var1;
return value;
}
void LogUtils_LogHexDump(void* ptr, s32 size0) {
@ -84,14 +84,13 @@ void LogUtils_CheckBoundary(const char* name, s32 value, s32 unk, const char* fi
}
void LogUtils_CheckNullPointer(const char* exp, void* ptr, const char* file, s32 line) {
if (!ptr) {
if (ptr == NULL) {
osSyncPrintf(VT_COL(RED, WHITE) "%s %d:%s は はヌルポインタです\n" VT_RST, file, line, exp);
}
}
void LogUtils_CheckValidPointer(const char* exp, void* ptr0, const char* file, s32 line) {
u32 ptr = (u32)ptr0;
if (!ptr || ptr < 0x80000000U || (0x80000000U + osMemSize) <= ptr) {
void LogUtils_CheckValidPointer(const char* exp, void* ptr, const char* file, s32 line) {
if (ptr == NULL || (u32)ptr < 0x80000000 || (0x80000000 + osMemSize) <= (u32)ptr) {
osSyncPrintf(VT_COL(RED, WHITE) "%s %d:ポインタ %s(%08x) が異常です\n" VT_RST, file, line, exp, ptr);
}
}
@ -105,7 +104,7 @@ void LogUtils_HungupThread(const char* name, s32 line) {
Fault_AddHungupAndCrash(name, line);
}
void LogUtils_ResetHungup() {
void LogUtils_ResetHungup(void) {
osSyncPrintf("*** Reset ***\n");
Fault_AddHungupAndCrash("Reset", 0);
}

View file

@ -9,7 +9,7 @@ void StackCheck_Init(StackEntry* entry, void* stackTop, void* stackBottom, u32 i
StackEntry* iter;
u32* addr;
if (!entry) {
if (entry == NULL) {
sStackInfoListStart = NULL;
} else {
entry->head = (u32)stackTop;
@ -90,7 +90,7 @@ StackStatus StackCheck_GetState(StackEntry* entry) {
if (free == 0) {
ret = STACK_STATUS_OVERFLOW;
osSyncPrintf(VT_FGCOL(RED));
} else if (free < entry->minSpace && entry->minSpace != -1) {
} else if (free < (u32)entry->minSpace && entry->minSpace != -1) {
ret = STACK_STATUS_WARNING;
osSyncPrintf(VT_FGCOL(YELLOW));
} else {
@ -109,10 +109,10 @@ StackStatus StackCheck_GetState(StackEntry* entry) {
return ret;
}
u32 StackCheck_CheckAll() {
u32 StackCheck_CheckAll(void) {
u32 ret = 0;
StackEntry* iter = sStackInfoListStart;
while (iter) {
u32 state = StackCheck_GetState(iter);
if (state != STACK_STATUS_OK) {
@ -125,7 +125,7 @@ u32 StackCheck_CheckAll() {
}
u32 StackCheck_Check(StackEntry* entry) {
if (!entry) {
if (entry == NULL) {
return StackCheck_CheckAll();
} else {
return StackCheck_GetState(entry);

View file

@ -4,8 +4,8 @@
// this should probably go elsewhere but right now viconfig.o is the only object between idle and z_std_dma
OSPiHandle* gCartHandle = 0;
void ViConfig_UpdateVi(u32 arg0) {
if (arg0 != 0) {
void ViConfig_UpdateVi(u32 mode) {
if (mode != 0) {
osSyncPrintf(VT_COL(YELLOW, BLACK) "osViSetYScale1(%f);\n" VT_RST, 1.0f);
if (osTvType == 0) {
@ -34,10 +34,10 @@ void ViConfig_UpdateVi(u32 arg0) {
}
}
gViConfigUseDefault = arg0;
gViConfigUseDefault = mode;
}
void ViConfig_UpdateBlack() {
void ViConfig_UpdateBlack(void) {
if (gViConfigUseDefault != 0) {
osViBlack(1);
} else {

View file

@ -6,7 +6,7 @@ u32 sYaz0CurRomStart;
u32 sYaz0CurSize;
u32 sYaz0MaxPtr;
void* Yaz0_FirstDMA() {
void* Yaz0_FirstDMA(void) {
u32 pad0;
u32 pad1;
u32 dmaSize;
@ -29,7 +29,6 @@ void* Yaz0_NextDMA(void* curSrcPos) {
u32 dmaSize;
restSize = sYaz0CurDataEnd - (u32)curSrcPos;
dst = (restSize & 7) ? (sYaz0DataBuffer - (restSize & 7)) + 8 : sYaz0DataBuffer;
bcopy(curSrcPos, dst, restSize);
@ -51,19 +50,15 @@ void* Yaz0_NextDMA(void* curSrcPos) {
}
void Yaz0_DecompressImpl(Yaz0Header* hdr, u8* dst) {
u32 bitIdx;
u8* src;
u8* dstEnd;
u32 bitIdx = 0;
u8* src = (u8*)hdr->data;
u8* dstEnd = dst + hdr->decSize;
u32 chunkHeader;
u32 nibble;
u8* backPtr;
s32 chunkSize;
u32 chunkSize;
u32 off;
bitIdx = 0;
src = (u8*)hdr->data;
dstEnd = dst + hdr->decSize;
do {
if (bitIdx == 0) {
if ((sYaz0MaxPtr < (u32)src) && (sYaz0CurSize != 0)) {
@ -84,9 +79,9 @@ void Yaz0_DecompressImpl(Yaz0Header* hdr, u8* dst) {
backPtr = dst - off;
src += 2;
chunkSize = (nibble == 0) // N = chunkSize; B = back offset
? *src++ + 0x12 // 3 bytes 0B BB NN
: nibble + 2; // 2 bytes NB BB
chunkSize = (nibble == 0) // N = chunkSize; B = back offset
? (u32)(*src++ + 0x12) // 3 bytes 0B BB NN
: nibble + 2; // 2 bytes NB BB
do {
*dst++ = *(backPtr++ - 1);

View file

@ -4,7 +4,7 @@
u32 gCurrentRegion = 0;
LocaleCartInfo sCartInfo;
void Locale_Init() {
void Locale_Init(void) {
osEPiReadIo(gCartHandle, 0x38, &sCartInfo.mediaFormat);
osEPiReadIo(gCartHandle, 0x3C, &sCartInfo.regionInfo);
@ -29,11 +29,11 @@ void Locale_Init() {
osSyncPrintf("z_locale_init:日本用かアメリカ用か3コンで判断させる\n");
}
void Locale_ResetRegion() {
void Locale_ResetRegion(void) {
gCurrentRegion = REGION_NULL;
}
u32 func_80001F48() {
u32 func_80001F48(void) {
if (gCurrentRegion == REGION_NATIVE) {
return 0;
}
@ -45,7 +45,7 @@ u32 func_80001F48() {
return 1;
}
u32 func_80001F8C() {
u32 func_80001F8C(void) {
if (gCurrentRegion == REGION_NATIVE) {
return 0;
}
@ -58,6 +58,6 @@ u32 func_80001F8C() {
}
// This function appears to be unused?
u32 Locale_IsRegionNative() {
u32 Locale_IsRegionNative(void) {
return gCurrentRegion == REGION_NATIVE;
}

View file

@ -12,6 +12,7 @@ s32 sDmaMgrCurFileLine;
u32 D_80009460 = 0;
u32 gDmaMgrDmaBuffSize = 0x2000;
u32 sDmaMgrDataExistError = 0;
const char* sDmaMgrFileNames[0x5FC] = {
"makerom",
"boot",
@ -1573,10 +1574,9 @@ s32 DmaMgr_DMARomToRam(u32 rom, u32 ram, u32 size) {
OSMesgQueue queue;
OSMesg msg;
s32 ret;
u32 buffSize;
u32 buffSize = gDmaMgrDmaBuffSize;
s32 pad[2];
buffSize = gDmaMgrDmaBuffSize;
if (buffSize == 0) {
buffSize = 0x2000;
}
@ -1676,12 +1676,11 @@ s32 DmaMgr_DmaCallback0(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
}
void DmaMgr_DmaCallback1(u32 ram, u32 rom, u32 size) {
OSPiHandle* handle;
OSPiHandle* handle = osDriveRomInit();
OSMesgQueue queue;
OSMesg msg;
OSIoMesg ioMsg;
handle = osDriveRomInit();
osInvalICache((void*)ram, size);
osInvalDCache((void*)ram, size);
osCreateMesgQueue(&queue, &msg, 1);
@ -1694,21 +1693,17 @@ void DmaMgr_DmaCallback1(u32 ram, u32 rom, u32 size) {
handle->transferInfo.cmdType = 2;
osEPiStartDma(handle, &ioMsg, 0);
osRecvMesg(&queue, NULL, 1);
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
return;
}
void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc) {
u32 vrom;
u32 ram;
u32 size;
u32 vrom = req->vromAddr;
u32 ram = (u32)req->dramAddr;
u32 size = req->size;
char buff1[80];
char buff2[80];
vrom = req->vromAddr;
ram = (u32)req->dramAddr;
size = req->size;
osSyncPrintf("%c", 7);
osSyncPrintf(VT_FGCOL(RED));
osSyncPrintf("DMA致命的エラー(%s)\nROM:%X RAM:%X SIZE:%X %s\n",
@ -1735,11 +1730,8 @@ void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, cons
}
const char* DmaMgr_GetFileNameImpl(u32 vrom) {
DmaEntry* iter;
const char** name;
iter = gDmaDataTable;
name = sDmaMgrFileNames;
DmaEntry* iter = gDmaDataTable;
const char** name = sDmaMgrFileNames;
while (iter->vromEnd) {
if (vrom >= iter->vromStart && vrom < iter->vromEnd) {
@ -1755,7 +1747,8 @@ const char* DmaMgr_GetFileNameImpl(u32 vrom) {
const char* DmaMgr_GetFileName(u32 vrom) {
const char* ret = DmaMgr_GetFileNameImpl(vrom);
if (!ret) {
if (ret == NULL) {
return "(unknown)";
}
@ -1767,25 +1760,26 @@ const char* DmaMgr_GetFileName(u32 vrom) {
}
void DmaMgr_ProcessMsg(DmaRequest* req) {
u32 vrom;
void* ram;
u32 size;
u32 vrom = req->vromAddr;
void* ram = req->dramAddr;
u32 size = req->size;
u32 romStart;
u32 romSize;
u8 found;
u8 found = false;
DmaEntry* iter;
const char* filename;
vrom = req->vromAddr;
ram = req->dramAddr;
size = req->size;
found = false;
if (0) {
// the string is defined in .rodata but not used, suggesting
// a debug print is here but optimized out in some way
osSyncPrintf("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n");
// the last arg of this print looks like it may be filename, but
// filename above this block does not match
}
filename = DmaMgr_GetFileName(vrom);
iter = gDmaDataTable;
// defined in .rodata but not used
"DMA ROM:%08X RAM:%08X SIZE:%08X %s\n";
while (iter->vromEnd) {
if (vrom >= iter->vromStart && vrom < iter->vromEnd) {
if (1) {} // Necessary to match
@ -1799,7 +1793,9 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
DmaMgr_DMARomToRam(iter->romStart + (vrom - iter->vromStart), (u32)ram, size);
found = true;
"No Press ROM:%08X RAM:%08X SIZE:%08X\n";
if (0) {
osSyncPrintf("No Press ROM:%08X RAM:%08X SIZE:%08X\n", vrom, ram, size);
}
} else {
romStart = iter->romStart;
romSize = iter->romEnd - iter->romStart;
@ -1819,7 +1815,9 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
osSetThreadPri(NULL, Z_PRIORITY_DMAMGR);
found = true;
" Press ROM:%X RAM:%X SIZE:%X\n";
if (0) {
osSyncPrintf(" Press ROM:%X RAM:%X SIZE:%X\n", vrom, ram, size);
}
}
break;
}
@ -1834,7 +1832,9 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
DmaMgr_DMARomToRam(vrom, (u32)ram, size);
"No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n";
if (0) {
osSyncPrintf("No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n", vrom, ram, size);
}
}
}
@ -1846,17 +1846,20 @@ void DmaMgr_ThreadEntry(void* arg0) {
while (true) {
osRecvMesg(&sDmaMgrMsgQueue, &msg, 1);
req = (DmaRequest*)msg;
if (!req) {
if (req == NULL) {
break;
}
// strings present in .rodata but not actually used in the function, probably a removed function
"DMA登録受付 dmap=%08x\n";
if (0) {
osSyncPrintf("DMA登録受付 dmap=%08x\n", req);
}
DmaMgr_ProcessMsg(req);
if (req->notifyQueue) {
osSendMesg(req->notifyQueue, req->notifyMsg, 0);
"osSendMesg: dmap=%08x, mq=%08x, m=%08x \n";
osSendMesg(req->notifyQueue, req->notifyMsg, OS_MESG_NOBLOCK);
if (0) {
osSyncPrintf("osSendMesg: dmap=%08x, mq=%08x, m=%08x \n", req, req->notifyQueue, req->notifyMsg);
}
}
}
osSyncPrintf("DMAマネージャスレッド実行終了\n");
@ -1889,7 +1892,7 @@ s32 DmaMgr_SendRequestImpl(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk
}
}
osSendMesg(&sDmaMgrMsgQueue, req, 1);
osSendMesg(&sDmaMgrMsgQueue, req, OS_MESG_BLOCK);
return 0;
}
@ -1905,19 +1908,17 @@ s32 DmaMgr_SendRequest0(u32 ram, u32 vrom, u32 size) {
return ret;
}
osRecvMesg(&queue, NULL, 1);
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
return 0;
}
void DmaMgr_Init() {
void DmaMgr_Init(void) {
const char** name;
s32 idx;
DmaEntry* iter;
if (_dmadataSegmentRomStart) {} // Necessary to match
DmaMgr_DMARomToRam((u32)_dmadataSegmentRomStart, (u32)_dmadataSegmentStart,
(u32)_dmadataSegmentRomEnd - (u32)_dmadataSegmentRomStart);
(u32)(_dmadataSegmentRomEnd - _dmadataSegmentRomStart));
osSyncPrintf("dma_rom_ad[]\n");
sDmaMgrDataExistError = 0;
@ -1949,7 +1950,7 @@ void DmaMgr_Init() {
Fault_AddHungupAndCrash("../z_std_dma.c", 1055);
}
osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgs, sizeof(sDmaMgrMsgs) / sizeof(sDmaMgrMsgs[0]));
osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgs, ARRAY_COUNT(sDmaMgrMsgs));
StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, sDmaMgrStack + sizeof(sDmaMgrStack), 0, 0x100, "dmamgr");
osCreateThread(&sDmaMgrThread, 0x12, &DmaMgr_ThreadEntry, 0, sDmaMgrStack + sizeof(sDmaMgrStack),
Z_PRIORITY_DMAMGR);
@ -1968,7 +1969,6 @@ s32 DmaMgr_SendRequest1(void* ram0, u32 vrom, u32 size, const char* file, s32 li
s32 ret;
OSMesgQueue queue;
OSMesg msg;
u32 ram = (u32)ram0;
req.filename = file;