From b0e6e8f24f3195e2fe3a9560a7fba1c7928d869c Mon Sep 17 00:00:00 2001 From: Raf <> Date: Thu, 11 Jul 2024 19:43:01 +0800 Subject: [PATCH] portx64: lots more u32 -> uintptr_t --- src/game/activemenu.c | 2 +- src/game/bg.c | 6 ++-- src/game/bondgun.c | 6 ++-- src/game/chr.c | 18 +++++------ src/game/dlights.c | 2 +- src/game/dyntex.c | 12 ++++---- src/game/filemgr.c | 4 +-- src/game/lang.c | 17 +++++----- src/game/mainmenu.c | 46 +++++++++++++-------------- src/game/menu.c | 22 ++++++++++++- src/game/menuitem.c | 2 +- src/game/modeldef.c | 6 ++-- src/game/modelmgr.c | 8 ++++- src/game/mplayer/ingame.c | 6 ++-- src/game/mplayer/scenarios.c | 6 ++-- src/game/mplayer/setup.c | 60 ++++++++++++++++++------------------ src/game/objectives.c | 2 +- src/game/player.c | 4 +++ src/game/playerreset.c | 7 ++++- src/game/propobj.c | 8 ++--- src/game/stars.c | 2 +- src/game/texdecompress.c | 4 +-- src/game/trainingmenus.c | 22 ++++++------- src/include/types.h | 8 +++-- src/lib/main.c | 2 +- 25 files changed, 161 insertions(+), 121 deletions(-) diff --git a/src/game/activemenu.c b/src/game/activemenu.c index bc984de99..e1dde59a7 100644 --- a/src/game/activemenu.c +++ b/src/game/activemenu.c @@ -177,7 +177,7 @@ MenuItemHandlerResult amPickTargetMenuList(s32 operation, struct menuitem *item, gdl = text0f153628(gdl); gdl = textRenderProjected(gdl, &x, &y, g_MpAllChrConfigPtrs[chrindex]->name, g_CharsHandelGothicSm, g_FontHandelGothicSm, colour, viGetWidth(), viGetHeight(), 0, 0); gdl = text0f153780(gdl); - return (s32)gdl; + return (uintptr_t)gdl; } case MENUOP_GETOPTIONHEIGHT: data->list.value = LINEHEIGHT; diff --git a/src/game/bg.c b/src/game/bg.c index c6dddc699..6ca79a5de 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -97,7 +97,7 @@ u16 g_BgUnloadDelay240; u16 g_BgUnloadDelay240_2; u32 var800a4bf4; RoomNum g_GlareRooms[100]; -u32 *g_BgPrimaryData2; +uintptr_t *g_BgPrimaryData2; struct bgroom *g_BgRooms; struct bgportal *g_BgPortals; struct portalmetric *g_PortalMetrics; @@ -2937,7 +2937,7 @@ void bgLoadRoom(s32 roomnum) // Copy gdls to the right-side of the allocation // and build a pointer array to them - texCopyGdls((void *) gfxblocks[0], (void *) (allocation + alloclen - (gfxblocks[numgdls] - gfxblocks[0])), (u32) (gfxblocks[numgdls] - gfxblocks[0])); + texCopyGdls((void *) gfxblocks[0], (void *) (allocation + alloclen - (gfxblocks[numgdls] - gfxblocks[0])), (uintptr_t) (gfxblocks[numgdls] - gfxblocks[0])); for (i = 0; i < numgdls + 1; i++) { gdlpointers[i] = gfxblocks[i] + (allocation + alloclen - gfxblocks[numgdls]); @@ -4243,7 +4243,7 @@ bool bgTestHitInVtxBatch(struct coord *arg0, struct coord *arg1, struct coord *a vtx = bgFindVerticesForGdl(roomnum, gdl); iter = &gdl[batch->gbicmdindex]; - vtx = (Vtx *)((UNSEGADDR(iter->words.w1) & 0xffffff) + (s32)vtx); + vtx = (Vtx *)((UNSEGADDR(iter->words.w1) & 0xffffff) + (uintptr_t)vtx); numvertices = (((u32) iter->bytes[GFX_W0_BYTE(1)] >> 4) & 0xf) + 1; ptr = var800a6470; diff --git a/src/game/bondgun.c b/src/game/bondgun.c index e6fc19619..1bfe79cc3 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -3798,13 +3798,13 @@ void bgunTickGunLoad(void) s32 padding; u32 allocsize; u32 loadsize; - u32 ptr; + uintptr_t ptr; struct player *player = g_Vars.currentplayer; struct modeldef *modeldef; struct fileinfo *fileinfo; struct fileinfo *gunfileinfo; s32 newvalue; - u32 end; + uintptr_t end; u32 stack; #if VERSION >= VERSION_NTSC_1_0 u32 stack2; @@ -3854,7 +3854,7 @@ void bgunTickGunLoad(void) fileinfo = &g_FileInfo[player->gunctrl.loadfilenum]; fileinfo->allocsize = allocsize; - end = ALIGN16((s32)ptr + allocsize); + end = ALIGN16((uintptr_t)ptr + allocsize); allocsize = end - ptr; if (1); remaining -= allocsize; diff --git a/src/game/chr.c b/src/game/chr.c index c037e9a3a..0cb5c8059 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -3866,13 +3866,13 @@ void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struc } if (rwdata->gdl == rodata->opagdl) { - gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); } else { gdlptr = rwdata->gdl; } if (rodata->xlugdl) { - gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } else { gdlptr2 = NULL; } @@ -4026,13 +4026,13 @@ void chrBruise(struct model *model, s32 hitpart, struct modelnode *node, struct // use the space... after the model definition's colour table? // Let's hope that's not being used by other instances... if (rwdata->gdl == rodata->opagdl) { - gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); } else { gdlptr = rwdata->gdl; } if (rodata->xlugdl) { - gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } else { gdlptr2 = NULL; } @@ -4168,13 +4168,13 @@ void chrBruise(struct model *model, s32 hitpart, struct modelnode *node, struct } if (rwdata->gdl == rodata->opagdl) { - gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); } else { gdlptr = rwdata->gdl; } if (rodata->xlugdl) { - gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } else { gdlptr2 = NULL; } @@ -4216,7 +4216,7 @@ void chrBruise(struct model *model, s32 hitpart, struct modelnode *node, struct coordinate = vertices[i].z + (s32)spd4.f[2]; if (coordinate == bestcoords[2]) { - if ((uintptr_t)rwdata->colours == ALIGN8((u32)rodata->vertices + rodata->numvertices * sizeof(Vtx))) { + if ((uintptr_t)rwdata->colours == ALIGN8((uintptr_t)rodata->vertices + rodata->numvertices * sizeof(Vtx))) { Col *colours = vtxstoreAllocate(rodata->numcolours, VTXSTORETYPE_CHRCOL, 0, 0); s32 j; @@ -4363,13 +4363,13 @@ void chrDisfigure(struct chrdata *chr, struct coord *exppos, f32 damageradius) if (rwdata->vertices != rodata->vertices && (uintptr_t)rwdata->colours != ALIGN8((uintptr_t)&rodata->vertices[rodata->numvertices])) { if (rwdata->gdl == rodata->opagdl) { - gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((s32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + gdlptr = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); } else { gdlptr = rwdata->gdl; } if (rodata->xlugdl) { - gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((s32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + gdlptr2 = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } else { gdlptr2 = NULL; } diff --git a/src/game/dlights.c b/src/game/dlights.c index c00836a0a..018f3e4e4 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -1049,7 +1049,7 @@ bool lightTickBroken(s32 roomnum, s32 lightnum) lightGetBboxCentre(roomnum, lightnum, ¢re); - room = (void *) ((u8 *) g_BgRooms + (u32) room); + room = (void *) ((u8 *) g_BgRooms + (uintptr_t) room); centre.x += room->pos.x; centre.y += room->pos.y; centre.z += room->pos.z; diff --git a/src/game/dyntex.c b/src/game/dyntex.c index 97ebf827c..f132f6cc7 100644 --- a/src/game/dyntex.c +++ b/src/game/dyntex.c @@ -79,7 +79,7 @@ void dyntexUpdateLinear(Vtx *vertices, struct dyntextype *type) s32 i; for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); vertex->t = g_DyntexVertices[type->vertexlistoffset + i].t + tmp; vertex->s = g_DyntexVertices[type->vertexlistoffset + i].s; @@ -91,7 +91,7 @@ void dyntexUpdateReset(Vtx *vertices, struct dyntextype *type) s32 i; for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); vertex->s = 0; vertex->t = 0; @@ -104,7 +104,7 @@ void dyntexUpdateMonitor(Vtx *vertices, struct dyntextype *type) s32 i; for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); vertex->t = g_DyntexVertices[type->vertexlistoffset + i].t - tmp; vertex->s = g_DyntexVertices[type->vertexlistoffset + i].s; @@ -124,7 +124,7 @@ void dyntexUpdateOcean(Vtx *vertices, struct dyntextype *type) mainOverrideVariable("ripsize", &ripsize); for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); angle = ((g_DyntexVertices[type->vertexlistoffset + i].t % modula) / (f32) modula + f24) * M_BADTAU; vertex->t = g_DyntexVertices[type->vertexlistoffset + i].t + (s16) (sinf(angle) * ripsize); @@ -140,7 +140,7 @@ void dyntexUpdateArrows(Vtx *vertices, struct dyntextype *type) s32 i; for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); vertex->s = g_DyntexVertices[type->vertexlistoffset + i].s + tmp; vertex->t = g_DyntexVertices[type->vertexlistoffset + i].t; @@ -182,7 +182,7 @@ void dyntexTickRoom(s32 roomnum, Vtx *vertices) // @bug: Using i for both outer and inner loops for (i = 0; i < type->numvertices; i++) { - Vtx *vertex = (Vtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); + Vtx *vertex = (Vtx *)((uintptr_t)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset); g_DyntexVertices[type->vertexlistoffset + i].s = vertex->s; g_DyntexVertices[type->vertexlistoffset + i].t = vertex->t; diff --git a/src/game/filemgr.c b/src/game/filemgr.c index aac819ad1..544c3b82d 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -428,7 +428,7 @@ s32 filemgrGetDeviceNameOrStartIndex(s32 listnum, s32 operation, s32 optionindex if (g_FileLists[listnum]->devicestartindexes[i] != -1) { if (remaining == 0) { if (operation == MENUOP_GETOPTGROUPTEXT) { - return (s32)langGet(names[i]); + return (uintptr_t)langGet(names[i]); } return g_FileLists[listnum]->devicestartindexes[i]; @@ -1252,7 +1252,7 @@ void func0f1097d0(s32 device) thing = memaAlloc(align16(g_FileTypeSizes[g_Menus[g_MpPlayerNum].fm.filetypeplusone - 1])); if (thing) { - filemgrSaveOrLoad(&g_FilemgrFileToCopy, g_Menus[g_MpPlayerNum].fm.filetypeplusone + 103, (s32) thing); + filemgrSaveOrLoad(&g_FilemgrFileToCopy, g_Menus[g_MpPlayerNum].fm.filetypeplusone + 103, (uintptr_t) thing); } else { filemgrPushErrorDialog(FILEERROR_OUTOFMEMORY); } diff --git a/src/game/lang.c b/src/game/lang.c index b2e595371..a1e672d9f 100644 --- a/src/game/lang.c +++ b/src/game/lang.c @@ -59,12 +59,12 @@ bool g_Jpn = VERSION == VERSION_JPN_FINAL ? true : false; u8 *g_LangBuffer = NULL; u8 *g_LangBufferPos = NULL; s32 g_LangBufferSize = 0; -u32 *g_LangBanks[69]; +uintptr_t *g_LangBanks[69]; struct jpncharpixels *g_JpnCharCachePixels; struct jpncacheitem *g_JpnCacheCacheItems; s32 g_LanguageId = LANGUAGE_NTSC_EN; #else -u32 *g_LangBanks[69]; +uintptr_t *g_LangBanks[69]; struct jpncharpixels *g_JpnCharCachePixels; struct jpncacheitem *g_JpnCacheCacheItems; bool g_Jpn = false; @@ -379,11 +379,11 @@ void langLoad(s32 bank) #if VERSION >= VERSION_PAL_BETA s32 len = fileGetInflatedSize(langGetFileId(bank)); - if ((s32)g_LangBuffer + len + g_LangBufferSize - (s32)g_LangBufferPos >= 0) { - s32 len2 = (s32)g_LangBuffer + g_LangBufferSize - (s32)g_LangBufferPos; + if ((uintptr_t)g_LangBuffer + len + g_LangBufferSize - (uintptr_t)g_LangBufferPos >= 0) { + s32 len2 = (uintptr_t)g_LangBuffer + g_LangBufferSize - (uintptr_t)g_LangBufferPos; len2 = len2 / 32 * 32; g_LangBanks[bank] = fileLoadToAddr(langGetFileId(bank), FILELOADMETHOD_DEFAULT, (u8 *)g_LangBufferPos, len2); - g_LangBufferPos = (u8 *)(align32((s32)g_LangBufferPos + len)); + g_LangBufferPos = (u8 *)(align32((uintptr_t)g_LangBufferPos + len)); } else { CRASH(); } @@ -418,11 +418,12 @@ char *langGet(s32 textid) { s32 bankindex = textid >> 9; s32 textindex = textid & 0x1ff; - u32 *bank = g_LangBanks[bankindex]; - u32 addr; + uintptr_t *bank = g_LangBanks[bankindex]; + uintptr_t addr; if (bank && bank[textindex]) { - addr = (uintptr_t)bank + PD_BE32(bank[textindex]); +// addr = (uintptr_t)bank + PD_BE32(bank[textindex]); + addr = (u8*)bank + (bank[textindex]); } else { addr = 0; } diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index 663e6160e..a69146c96 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -99,15 +99,15 @@ MenuItemHandlerResult menuhandlerControlStyleImpl(s32 operation, struct menuitem break; case MENUOP_GETOPTIONTEXT: if (data->list.value > 7) { - return (intptr_t) "Ext"; + return (uintptr_t) "Ext"; } else { - return (intptr_t) langGet(g_ControlStyleOptions[data->list.value]); + return (uintptr_t) langGet(g_ControlStyleOptions[data->list.value]); } case MENUOP_GETOPTGROUPTEXT: if (data->list.value > 1) { - return (intptr_t) "Port"; + return (uintptr_t) "Port"; } else { - return (intptr_t) langGet(categories[data->list.value]); + return (uintptr_t) langGet(categories[data->list.value]); } case MENUOP_GETGROUPSTARTINDEX: data->list.groupstartindex = data->list.value * 4; @@ -193,9 +193,9 @@ MenuItemHandlerResult menuhandlerAimControl(s32 operation, struct menuitem *item break; case MENUOP_GETOPTIONTEXT: #if VERSION >= VERSION_PAL_FINAL - return (s32) langGet(options[index][data->dropdown.value]); + return (uintptr_t) langGet(options[index][data->dropdown.value]); #else - return (s32) langGet(options[data->dropdown.value]); + return (uintptr_t) langGet(options[data->dropdown.value]); #endif case MENUOP_SET: optionsSetAimControl(playernum, data->dropdown.value); @@ -222,7 +222,7 @@ MenuItemHandlerResult menuhandlerSoundMode(s32 operation, struct menuitem *item, data->dropdown.value = 4; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(options[data->dropdown.value]); + return (uintptr_t) langGet(options[data->dropdown.value]); case MENUOP_SET: sndSetSoundMode(data->dropdown.value); g_Vars.modifiedfiles |= MODFILE_GAME; @@ -247,7 +247,7 @@ MenuItemHandlerResult menuhandlerScreenSize(s32 operation, struct menuitem *item data->dropdown.value = 3; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(options[data->dropdown.value]); + return (uintptr_t) langGet(options[data->dropdown.value]); case MENUOP_SET: optionsSetScreenSize(data->dropdown.value); g_Vars.modifiedfiles |= MODFILE_GAME; @@ -271,7 +271,7 @@ MenuItemHandlerResult menuhandlerScreenRatio(s32 operation, struct menuitem *ite data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(options[data->dropdown.value]); + return (uintptr_t) langGet(options[data->dropdown.value]); case MENUOP_SET: optionsSetScreenRatio(data->dropdown.value); g_Vars.modifiedfiles |= MODFILE_GAME; @@ -299,7 +299,7 @@ MenuItemHandlerResult menuhandlerLanguage(s32 operation, struct menuitem *item, data->dropdown.value = 5; break; case MENUOP_GETOPTIONTEXT: - return (s32)langGet(labels[data->dropdown.value]); + return (uintptr_t)langGet(labels[data->dropdown.value]); case MENUOP_SET: g_Vars.language = data->dropdown.value; langSetEuropean(g_Vars.language); @@ -330,7 +330,7 @@ MenuItemHandlerResult menuhandlerScreenSplit(s32 operation, struct menuitem *ite data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(options[data->dropdown.value]); + return (uintptr_t) langGet(options[data->dropdown.value]); case MENUOP_SET: if (data->dropdown.value != (u32)optionsGetScreenSplit()) { optionsSetScreenSplit(data->dropdown.value); @@ -1429,7 +1429,7 @@ MenuItemHandlerResult menuhandlerCoopBuddy(s32 operation, struct menuitem *item, extra = 0; } - return (s32)langGet(labels[data->dropdown.value + extra]); + return (uintptr_t)langGet(labels[data->dropdown.value + extra]); } case MENUOP_SET: { @@ -1546,7 +1546,7 @@ MenuItemHandlerResult menuhandlerAntiPlayer(s32 operation, struct menuitem *item data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(labels[data->dropdown.value]); + return (uintptr_t) langGet(labels[data->dropdown.value]); case MENUOP_SET: g_Vars.pendingantiplayernum = data->dropdown.value; g_Vars.modifiedfiles |= MODFILE_GAME; @@ -1892,11 +1892,11 @@ MenuItemHandlerResult menuhandlerMissionList(s32 operation, struct menuitem *ite if (data->list.value < data->list.unk04u32) { // Regular stage such as "dataDyne Central - Defection" // Return the name before the dash, such as "dataDyne Central" - return (s32) langGet(g_SoloStages[data->list.value].name1); + return (uintptr_t) langGet(g_SoloStages[data->list.value].name1); } // Special stages have no dash and suffix, so just return the name - return (s32) langGet(g_SoloStages[func0f104720(data->list.value - data->list.unk04u32)].name1); + return (uintptr_t) langGet(g_SoloStages[func0f104720(data->list.value - data->list.unk04u32)].name1); case MENUOP_SET: sp188 = data->list.value; menuhandlerMissionList(MENUOP_GETOPTIONCOUNT, item, &sp178); @@ -1959,9 +1959,9 @@ MenuItemHandlerResult menuhandlerMissionList(s32 operation, struct menuitem *ite break; case MENUOP_GETOPTGROUPTEXT: if (data->list.unk0c == data->list.value) { - return (s32) langGet(groups[9].name); // "Special Assignments" + return (uintptr_t) langGet(groups[9].name); // "Special Assignments" } - return (s32) langGet(groups[data->list.value].name); + return (uintptr_t) langGet(groups[data->list.value].name); case MENUOP_GETGROUPSTARTINDEX: if (data->list.unk0c == data->list.value) { menuhandlerMissionList(MENUOP_GETOPTIONCOUNT, item, &sp13c); @@ -2105,7 +2105,7 @@ MenuItemHandlerResult menuhandlerMissionList(s32 operation, struct menuitem *ite gdl = text0f153780(gdl); - return (s32) gdl; + return (uintptr_t) gdl; case MENUOP_GETOPTIONHEIGHT: data->list.value = 42; break; @@ -4255,7 +4255,7 @@ MenuItemHandlerResult menuhandlerFrInventoryList(s32 operation, struct menuitem break; case MENUOP_GETOPTIONTEXT: g_FrFocusedSlotIndex = data->list.value; - return (s32)bgunGetName(frGetWeaponBySlot(data->list.value)); + return (uintptr_t)bgunGetName(frGetWeaponBySlot(data->list.value)); case MENUOP_SET: g_FrFocusedSlotIndex = data->list.value; return 0; @@ -4285,7 +4285,7 @@ MenuItemHandlerResult menuhandlerInventoryList(s32 operation, struct menuitem *i data->list.value = invGetCount(); break; case MENUOP_GETOPTIONTEXT: - return (s32)invGetNameByIndex(data->list.value); + return (uintptr_t)invGetNameByIndex(data->list.value); case MENUOP_SET: { s32 weaponnum = invGetWeaponNumByIndex(data->list.value); @@ -4723,9 +4723,9 @@ MenuItemHandlerResult menuhandlerCinema(s32 operation, struct menuitem *item, un case MENUOP_GETOPTIONTEXT: if (data->list.value == 0) { sprintf(g_StringPointer, langGet(L_OPTIONS_448)); // "Play All" - return (s32) g_StringPointer; + return (uintptr_t) g_StringPointer; } - return (s32) langGet(g_Cutscenes[data->list.value - 1].name); + return (uintptr_t) langGet(g_Cutscenes[data->list.value - 1].name); case MENUOP_SET: if (data->list.value == 0) { // Play all @@ -4749,7 +4749,7 @@ MenuItemHandlerResult menuhandlerCinema(s32 operation, struct menuitem *item, un data->list.value = ARRAYCOUNT(groups); break; case MENUOP_GETOPTGROUPTEXT: - return (s32) langGet(groups[data->list.value].name); + return (uintptr_t) langGet(groups[data->list.value].name); case MENUOP_GETGROUPSTARTINDEX: data->list.groupstartindex = groups[data->list.value].first_cutscene_index; break; diff --git a/src/game/menu.c b/src/game/menu.c index 26c839f0a..2f3441964 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -475,7 +475,7 @@ char *menuResolveText(uintptr_t thing, void *dialogoritem) // Text ID if (thing < 0x5a00) { - return langGet((u32)thing); + return langGet((uintptr_t)thing); } #ifdef PLATFORM_N64 // unreliable otherwise, the above check should be enough? @@ -1880,7 +1880,11 @@ Gfx *menuRenderModel(Gfx *gdl, struct menumodel *menumodel, s32 modeltype) totalfilelen += ALIGN64(fileGetInflatedSize(headfilenum)); } +#ifdef PLATFORM_64BIT + totalfilelen += 0x6000; +#else totalfilelen += 0x4000; +#endif texInitPool(&texpool, menumodel->allocstart + totalfilelen, menumodel->alloclen - totalfilelen); @@ -1902,7 +1906,11 @@ Gfx *menuRenderModel(Gfx *gdl, struct menumodel *menumodel, s32 modeltype) modelInit(&menumodel->bodymodel, menumodel->bodymodeldef, menumodel->rwdata, true); animInit(&menumodel->bodyanim); +#ifdef PLATFORM_64BIT + menumodel->bodymodel.rwdatalen = 256 + 128; +#else menumodel->bodymodel.rwdatalen = 256; +#endif menumodel->bodymodel.anim = &menumodel->bodyanim; body0f02ce8c(bodynum, headnum, menumodel->bodymodeldef, menumodel->headmodeldef, totalfilelen * 0, &menumodel->bodymodel, false, 1); @@ -1921,7 +1929,11 @@ Gfx *menuRenderModel(Gfx *gdl, struct menumodel *menumodel, s32 modeltype) modelInit(&menumodel->bodymodel, menumodel->bodymodeldef, menumodel->rwdata, true); animInit(&menumodel->bodyanim); +#ifdef PLATFORM_64BIT + menumodel->bodymodel.rwdatalen = 256+128; +#else menumodel->bodymodel.rwdatalen = 256; +#endif menumodel->bodymodel.anim = &menumodel->bodyanim; } @@ -3891,11 +3903,19 @@ void menuReset(void) } for (i = 0; i < max; i++) { +#ifdef PLATFORM_64BIT + menuResetModel(&g_Menus[i].menumodel, IS4MB() ? 0xb400 : 0x38400, true); // 50% more +#else menuResetModel(&g_Menus[i].menumodel, IS4MB() ? 0xb400 : 0x25800, true); +#endif } if (IS8MB()) { +#ifdef PLATFORM_64BIT + menuResetModel(&g_MenuData.hudpiece, 0x12c00, true); // 50% more +#else menuResetModel(&g_MenuData.hudpiece, 0xc800, true); +#endif } g_MenuData.hudpiece.newparams = MENUMODELPARAMS_SET_FILENUM(FILE_GHUDPIECE); diff --git a/src/game/menuitem.c b/src/game/menuitem.c index f06218f30..df2216b42 100644 --- a/src/game/menuitem.c +++ b/src/game/menuitem.c @@ -1884,7 +1884,7 @@ Gfx *menuitemModelRender(Gfx *gdl, struct menurendercontext *context) renderdata.unk10 = true; data.type19.gdl = gdl; - data.type19.unk04 = (s32)&renderdata; + data.type19.unk04 = (uintptr_t)&renderdata; data.type19.renderdata2 = &renderdata; gdl = (Gfx *)context->item->handler(MENUOP_RENDER, context->item, &data); diff --git a/src/game/modeldef.c b/src/game/modeldef.c index 0d0913ff7..42f5d97a4 100644 --- a/src/game/modeldef.c +++ b/src/game/modeldef.c @@ -131,12 +131,12 @@ void modeldef0f1a7560(struct modeldef *modeldef, u16 filenum, u32 arg2, struct m s5 = gdl; if (gdl) { - s32 v1 = allocsize - (loadedsize - (s32)(((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff)) - (uintptr_t)modeldef)); - sp84 = (s32)v1 + (s32)((uintptr_t)modeldef - ((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff))); + s32 v1 = allocsize - (loadedsize - (uintptr_t)(((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff)) - (uintptr_t)modeldef)); + sp84 = (uintptr_t)v1 + (uintptr_t)((uintptr_t)modeldef - ((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff))); texCopyGdls((Gfx *)((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff)), (Gfx *)(v1 + (uintptr_t)modeldef), - loadedsize - (s32)(((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff)) - (uintptr_t)modeldef)); + loadedsize - (uintptr_t)(((uintptr_t)modeldef + (UNSEGADDR(gdl) & 0xffffff)) - (uintptr_t)modeldef)); texLoadFromConfigs(modeldef->texconfigs, modeldef->numtexconfigs, texpool, (uintptr_t)modeldef2 - arg2); while (node) { diff --git a/src/game/modelmgr.c b/src/game/modelmgr.c index 5251e8d58..d6bec4876 100644 --- a/src/game/modelmgr.c +++ b/src/game/modelmgr.c @@ -7,6 +7,8 @@ #include "data.h" #include "types.h" +#include "system.h" + struct model *g_ModelSlots; struct anim *g_AnimSlots; s32 g_ModelNumObjs; @@ -204,7 +206,7 @@ struct model *modelmgrInstantiateModel(struct modeldef *modeldef, bool withanim) } } } else { - // empty + sysLogPrintf(LOG_WARNING, "Unable to allocate rwdata"); } if (withanim) { @@ -213,6 +215,10 @@ struct model *modelmgrInstantiateModel(struct modeldef *modeldef, bool withanim) datalen = IS4MB() ? 52 : 256; } +#ifdef PLATFORM_64BIT + datalen += 128; +#endif + if (datalen < modeldef->rwdatalen) { datalen = modeldef->rwdatalen; } diff --git a/src/game/mplayer/ingame.c b/src/game/mplayer/ingame.c index ef96daa54..a4bef3f21 100644 --- a/src/game/mplayer/ingame.c +++ b/src/game/mplayer/ingame.c @@ -53,14 +53,14 @@ MenuItemHandlerResult mpStatsForPlayerDropdownHandler(s32 operation, struct menu mpchr = MPCHR(a1); if (v0 == data->list.value) { - return (s32) mpchr->name; + return (uintptr_t) mpchr->name; } v0++; } } - return (s32) ""; + return (uintptr_t) ""; case MENUOP_SET: v0 = 0; @@ -698,7 +698,7 @@ MenuItemHandlerResult mpAwardsMenuHandler(s32 operation, struct menuitem *item, } } - return (s32) gdl; + return (uintptr_t) gdl; } return 0; diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index aa502ed21..60a4f85f5 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -141,7 +141,7 @@ MenuItemHandlerResult menuhandlerMpSlowMotion(s32 operation, struct menuitem *it data->dropdown.value = 3; break; case MENUOP_GETOPTIONTEXT: - return (s32)langGet(labels[data->dropdown.value]); + return (uintptr_t)langGet(labels[data->dropdown.value]); case MENUOP_SET: g_MpSetup.options &= ~(MPOPTION_SLOWMOTION_ON | MPOPTION_SLOWMOTION_SMART); @@ -338,7 +338,7 @@ MenuItemHandlerResult scenarioScenarioMenuHandler(s32 operation, struct menuitem if (challengeIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature) && (teamgame || g_MpScenarioOverviews[i].teamonly == false)) { if (count == data->list.value) { - return (s32)langGet(g_MpScenarioOverviews[i].name); + return (uintptr_t)langGet(g_MpScenarioOverviews[i].name); } count++; @@ -383,7 +383,7 @@ MenuItemHandlerResult scenarioScenarioMenuHandler(s32 operation, struct menuitem } break; case MENUOP_GETOPTGROUPTEXT: - return (s32)langGet(groups[data->list.value].textid); + return (uintptr_t)langGet(groups[data->list.value].textid); case MENUOP_GETGROUPSTARTINDEX: for (i = 0; i < groups[data->list.value].startindex; i++) { if (challengeIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature) diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index 44834bbfb..646319f34 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -177,7 +177,7 @@ MenuItemHandlerResult mpArenaMenuHandler(s32 operation, struct menuitem *item, u for (i = 0; i < ARRAYCOUNT(g_MpArenas); i++) { if (challengeIsFeatureUnlocked(g_MpArenas[i].requirefeature)) { if (count == data->list.value) { - return (s32)langGet(g_MpArenas[i].name); + return (uintptr_t)langGet(g_MpArenas[i].name); } count++; @@ -226,7 +226,7 @@ MenuItemHandlerResult mpArenaMenuHandler(s32 operation, struct menuitem *item, u && count > 0) { count++; } - return (s32)langGet(groups[count].name); + return (uintptr_t)langGet(groups[count].name); case MENUOP_GETGROUPSTARTINDEX: groupindex = data->list.value; @@ -288,7 +288,7 @@ MenuItemHandlerResult menuhandlerMpWeaponSlot(s32 operation, struct menuitem *it data->dropdown.value = mpGetNumWeaponOptions(); break; case MENUOP_GETOPTIONTEXT: - return (s32) mpGetWeaponLabel(data->dropdown.value); + return (uintptr_t) mpGetWeaponLabel(data->dropdown.value); case MENUOP_SET: mpSetWeaponSlot(item->param3, data->dropdown.value); break; @@ -311,7 +311,7 @@ MenuItemHandlerResult menuhandlerMpWeaponSetDropdown(s32 operation, struct menui data->dropdown.value = func0f189058(item->param); break; case MENUOP_GETOPTIONTEXT: - return (s32) mpGetWeaponSetName(data->dropdown.value); + return (uintptr_t) mpGetWeaponSetName(data->dropdown.value); case MENUOP_SET: mpSetWeaponSet(data->dropdown.value); break; @@ -377,7 +377,7 @@ MenuItemHandlerResult menuhandlerMpAimControl(s32 operation, struct menuitem *it data->dropdown.value = 2; break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(labels[data->dropdown.value]); + return (uintptr_t) langGet(labels[data->dropdown.value]); case MENUOP_SET: optionsSetAimControl(g_MpPlayerNum, data->dropdown.value); break; @@ -767,7 +767,7 @@ MenuItemHandlerResult mpChallengesListHandler(s32 operation, struct menuitem *it loopx += 13; } - return (s32) gdl; + return (uintptr_t) gdl; case MENUOP_GETOPTIONHEIGHT: data->list.value = 26; break; @@ -1001,7 +1001,7 @@ MenuItemHandlerResult mpMedalMenuHandler(s32 operation, struct menuitem *item, u ((renderdata->x + 20) << 2) * g_ScaleX, (renderdata->y + 11) << 2, G_TX_RENDERTILE, 0, 0x0160, 1024 / g_ScaleX, -1024); - return (s32) gdl; + return (uintptr_t) gdl; } return 0; @@ -2082,11 +2082,11 @@ MenuItemHandlerResult mpLoadSettingsMenuHandler(s32 operation, struct menuitem * break; case MENUOP_GETOPTIONTEXT: if (data->list.value < mpGetNumUnlockedPresets()) { - return (s32)mpGetPresetNameBySlot(data->list.value); + return (uintptr_t)mpGetPresetNameBySlot(data->list.value); } if (g_FileLists[1] != NULL) { func0f0d564c(g_FileLists[1]->files[data->list.value - mpGetNumUnlockedPresets()].name, g_StringPointer, false); - return (s32)g_StringPointer; + return (uintptr_t)g_StringPointer; } break; case MENUOP_SET: @@ -2124,10 +2124,10 @@ MenuItemHandlerResult mpLoadSettingsMenuHandler(s32 operation, struct menuitem * break; case MENUOP_GETOPTGROUPTEXT: if (data->list.value == 0) { - return (s32)langGet(L_MPMENU_141); // "Presets" + return (uintptr_t)langGet(L_MPMENU_141); // "Presets" } if (g_FileLists[1] != NULL) { - return (s32)filemgrGetDeviceNameOrStartIndex(1, operation, data->list.value - 1); + return (uintptr_t)filemgrGetDeviceNameOrStartIndex(1, operation, data->list.value - 1); } break; case MENUOP_GETGROUPSTARTINDEX: @@ -2221,7 +2221,7 @@ MenuItemHandlerResult mpLoadPlayerMenuHandler(s32 operation, struct menuitem *it break; case MENUOP_GETOPTIONTEXT: filemgrGetSelectName(g_StringPointer, &g_FileLists[0]->files[data->list.value], FILETYPE_MPPLAYER); - return (s32)g_StringPointer; + return (uintptr_t)g_StringPointer; case MENUOP_SET: file = &g_FileLists[0]->files[data->list.value]; available = true; @@ -2742,7 +2742,7 @@ MenuItemHandlerResult mpAddChangeSimulantMenuHandler(s32 operation, struct menui for (i = 0; i < ARRAYCOUNT(g_BotProfiles); i++) { if (challengeIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) { if (count == data->list.value) { - return (s32)langGet(g_BotProfiles[i].name); + return (uintptr_t)langGet(g_BotProfiles[i].name); } count++; @@ -2803,7 +2803,7 @@ MenuItemHandlerResult mpAddChangeSimulantMenuHandler(s32 operation, struct menui data->list.value = 2; break; case MENUOP_GETOPTGROUPTEXT: - return (s32)langGet(groups[data->list.value].name); + return (uintptr_t)langGet(groups[data->list.value].name); case MENUOP_GETGROUPSTARTINDEX: for (i = 0; i < groups[data->list.value].offset; i++) { if (challengeIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) { @@ -2910,14 +2910,14 @@ MenuItemHandlerResult mpBotDifficultyMenuHandler(s32 operation, struct menuitem if (challengeIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) { if (count == data->dropdown.value) { // "Meat", "Easy", "Normal" etc - return (s32) langGet(L_MISC_082 + i); + return (uintptr_t) langGet(L_MISC_082 + i); } count++; } } - return (s32)"\n"; + return (uintptr_t)"\n"; } return 0; @@ -3481,10 +3481,10 @@ MenuItemHandlerResult func0f17dac4(s32 operation, struct menuitem *item, union h break; case MENUOP_GETOPTIONTEXT: if ((g_MpSetup.options & MPOPTION_TEAMSENABLED) == 0) { - return (s32) "\n"; + return (uintptr_t) "\n"; } - return (s32) g_BossFile.teamnames[data->list.value]; + return (uintptr_t) g_BossFile.teamnames[data->list.value]; } return menuhandlerMpTeamsLabel(operation, item, data); @@ -3913,14 +3913,14 @@ MenuItemHandlerResult mpSelectTuneListHandler(s32 operation, struct menuitem *it s32 numtracks = mpGetNumUnlockedTracks(); if (data->list.value < numtracks) { - return (s32) mpGetTrackName(data->list.value); + return (uintptr_t) mpGetTrackName(data->list.value); } if (mpGetUsingMultipleTunes()) { - return (s32) langGet(var80085ce8[1 + data->list.value - numtracks]); + return (uintptr_t) langGet(var80085ce8[1 + data->list.value - numtracks]); } - return (s32) langGet(var80085ce8[data->list.value - numtracks]); + return (uintptr_t) langGet(var80085ce8[data->list.value - numtracks]); } case MENUOP_SET: { @@ -4628,7 +4628,7 @@ MenuItemHandlerResult mpChallengesListMenuHandler(s32 operation, struct menuitem marginleft += 13; } - return (s32)gdl; + return (uintptr_t)gdl; case MENUOP_GETOPTIONHEIGHT: data->list.value = 26; break; @@ -4763,15 +4763,15 @@ MenuItemHandlerResult menuhandlerMpLock(s32 operation, struct menuitem *item, un break; case MENUOP_GETOPTIONTEXT: if (mpGetLockType() == MPLOCKTYPE_CHALLENGE) { - return (s32) langGet(L_MPMENU_049); // "Challenge" + return (uintptr_t) langGet(L_MPMENU_049); // "Challenge" } if (data->dropdown.value <= 3) { - return (s32) langGet(labels[data->dropdown.value]); + return (uintptr_t) langGet(labels[data->dropdown.value]); } if (mpGetLockType() == MPLOCKTYPE_PLAYER) { - return (s32) g_PlayerConfigsArray[mpGetLockPlayerNum()].base.name; + return (uintptr_t) g_PlayerConfigsArray[mpGetLockPlayerNum()].base.name; } - return (s32) mpGetCurrentPlayerName(item); + return (uintptr_t) mpGetCurrentPlayerName(item); case MENUOP_SET: if (mpGetLockType() != MPLOCKTYPE_CHALLENGE) { mpSetLock(data->dropdown.value, g_MpPlayerNum); @@ -5031,7 +5031,7 @@ MenuItemHandlerResult menuhandlerPlayerTeam(s32 operation, struct menuitem *item #endif break; case MENUOP_GETOPTIONTEXT: - return (s32) &g_BossFile.teamnames[data->dropdown.value]; + return (uintptr_t) &g_BossFile.teamnames[data->dropdown.value]; case MENUOP_SET: g_Vars.mpplayerteams[item->param] = data->dropdown.value; break; @@ -5061,7 +5061,7 @@ MenuItemHandlerResult menuhandlerMpNumberOfSimulants(s32 operation, struct menui break; case MENUOP_GETOPTIONTEXT: sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1); - return (s32) g_StringPointer; + return (uintptr_t) g_StringPointer; case MENUOP_SET: g_Vars.mpquickteamnumsims = data->dropdown.value + 1; break; @@ -5087,7 +5087,7 @@ MenuItemHandlerResult menuhandlerMpSimulantsPerTeam(s32 operation, struct menuit break; case MENUOP_GETOPTIONTEXT: sprintf(g_StringPointer, "%d\n", data->dropdown.value + 1); - return (s32) g_StringPointer; + return (uintptr_t) g_StringPointer; case MENUOP_SET: g_Vars.unk0004a0 = data->dropdown.value + 1; break; @@ -5123,7 +5123,7 @@ MenuItemHandlerResult mpQuickTeamSimulantDifficultyHandler(s32 operation, struct for (i = 0; i < NUM_BOTDIFFS; i++) { if (challengeIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) { if (count == data->dropdown.value) { - return (s32) langGet(i + L_MISC_082); + return (uintptr_t) langGet(i + L_MISC_082); } count++; diff --git a/src/game/objectives.c b/src/game/objectives.c index 01f38e962..9d079af7e 100644 --- a/src/game/objectives.c +++ b/src/game/objectives.c @@ -91,7 +91,7 @@ void tagsReset(void) g_NumTags = index; if (g_NumTags) { - u32 size = index * 4; + u32 size = index * sizeof(uintptr_t); g_TagPtrs = mempAlloc(ALIGN16(size), MEMPOOL_STAGE); for (index = 0; index < g_NumTags; index++) { diff --git a/src/game/player.c b/src/game/player.c index ddb73c726..198254e16 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -1454,6 +1454,10 @@ void playerTickChrBody(void) model->rwdatalen = 256; +#ifdef PLATFORM_64BIT + model->rwdatalen += 128; +#endif + texGetPoolLeftPos(&texpool); // @TODO: Figure out these arguments diff --git a/src/game/playerreset.c b/src/game/playerreset.c index 896601929..346dedc97 100644 --- a/src/game/playerreset.c +++ b/src/game/playerreset.c @@ -236,7 +236,7 @@ void playerReset(void) cmd = (struct cmd32 *)((uintptr_t)cmd + 12); break; case INTROCMD_CREDITOFFSET: - thing = (struct gecreditsdata *)((s32)g_GeCreditsData + cmd->param1); + thing = (struct gecreditsdata *)((uintptr_t)g_GeCreditsData + cmd->param1); g_CurrentGeCreditsData = thing; while (thing->text1 || thing->text2) { thing++; @@ -431,6 +431,11 @@ void playerReset(void) g_Vars.currentplayer->bond2.unk00.y = 0; g_Vars.currentplayer->bond2.unk00.z = cosf(turnanglerad); + // #TEMP + g_Vars.currentplayer->prop->pos.f[0] = -1101.97473; + g_Vars.currentplayer->prop->pos.f[1] = 481.576385; + g_Vars.currentplayer->prop->pos.f[2] = 283.67334; + g_Vars.currentplayer->prop->pos.f[0] = g_Vars.currentplayer->bondprevpos.f[0] = pos.f[0]; g_Vars.currentplayer->prop->pos.f[1] = g_Vars.currentplayer->bondprevpos.f[1] = pos.f[1]; g_Vars.currentplayer->prop->pos.f[2] = g_Vars.currentplayer->bondprevpos.f[2] = pos.f[2]; diff --git a/src/game/propobj.c b/src/game/propobj.c index 99c405475..2d36736c0 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -15041,13 +15041,13 @@ bool func0f0849dc(struct model *model, struct modelnode *nodearg, struct coord * if (rwdata->gdl != NULL) { if (rwdata->gdl == rodata->opagdl) { - s3 = (Gfx *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + s3 = (Gfx *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); } else { s3 = rwdata->gdl; } if (rodata->xlugdl != NULL) { - s5 = (void *)((uintptr_t)rodata->colours + ((u32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + s5 = (void *)((uintptr_t)rodata->colours + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } vertices = rwdata->vertices; @@ -15059,10 +15059,10 @@ bool func0f0849dc(struct model *model, struct modelnode *nodearg, struct coord * struct modelrodata_gundl *rodata = &node->rodata->gundl; if (rodata->opagdl != NULL) { - s3 = (Gfx *)((uintptr_t)rodata->baseaddr + ((u32)UNSEGADDR(rodata->opagdl) & 0xffffff)); + s3 = (Gfx *)((uintptr_t)rodata->baseaddr + ((uintptr_t)UNSEGADDR(rodata->opagdl) & 0xffffff)); if (rodata->xlugdl != NULL) { - s5 = (Gfx *)((uintptr_t)rodata->baseaddr + ((u32)UNSEGADDR(rodata->xlugdl) & 0xffffff)); + s5 = (Gfx *)((uintptr_t)rodata->baseaddr + ((uintptr_t)UNSEGADDR(rodata->xlugdl) & 0xffffff)); } vertices = (void *)(uintptr_t)rodata->baseaddr; diff --git a/src/game/stars.c b/src/game/stars.c index 3f15c28a5..e787fb1c5 100644 --- a/src/game/stars.c +++ b/src/game/stars.c @@ -142,7 +142,7 @@ void starsReset(void) } count = 6 * g_StarGridSize * g_StarGridSize + 1; - g_StarData3 = (f32 *)(count * sizeof(f32) + (s32)g_StarPosIndexes); + g_StarData3 = (f32 *)(count * sizeof(f32) + (uintptr_t)g_StarPosIndexes); stars0f135c70(); diff --git a/src/game/texdecompress.c b/src/game/texdecompress.c index 71d7b961d..7a71781f7 100644 --- a/src/game/texdecompress.c +++ b/src/game/texdecompress.c @@ -2097,7 +2097,7 @@ void texInitPool(struct texpool *pool, u8 *start, s32 len) pool->start = start; pool->end = (struct tex *)(start + len); pool->leftpos = start; - pool->rightpos = (struct tex *)((s32)start + len); + pool->rightpos = (struct tex *)((uintptr_t)start + len); } struct tex *texFindInPool(s32 texturenum, struct texpool *pool) @@ -2144,7 +2144,7 @@ struct tex *texFindInPool(s32 texturenum, struct texpool *pool) s32 texGetPoolFreeBytes(struct texpool *pool) { - return (s32) pool->rightpos - (s32) pool->leftpos; + return (uintptr_t) pool->rightpos - (uintptr_t) pool->leftpos; } u8 *texGetPoolLeftPos(struct texpool *pool) diff --git a/src/game/trainingmenus.c b/src/game/trainingmenus.c index 430d0db6b..495009312 100644 --- a/src/game/trainingmenus.c +++ b/src/game/trainingmenus.c @@ -209,7 +209,7 @@ MenuItemHandlerResult frWeaponListMenuHandler(s32 operation, struct menuitem *it G_TX_RENDERTILE, 0, 0x0160, 1024 / g_ScaleX, -1024); } - return (s32)gdl; + return (uintptr_t)gdl; } return 0; @@ -279,7 +279,7 @@ MenuItemHandlerResult frDifficultyDropdownMenuHandler(s32 operation, struct menu } break; case MENUOP_GETOPTIONTEXT: - return (s32) langGet(names[data->dropdown.value]); + return (uintptr_t) langGet(names[data->dropdown.value]); case MENUOP_SET: frSetDifficulty(data->dropdown.value); menuPushDialog(&g_FrTrainingInfoPreGameMenuDialog); @@ -876,7 +876,7 @@ MenuItemHandlerResult frScoringMenuHandler(s32 operation, struct menuitem *item, gdl = menugfxDrawDialogBorderLine(gdl, renderdata->x + 90, renderdata->y + 50, renderdata->x + 96, renderdata->y + 51, linecolourmid, linecolourfig); #endif - return (s32)gdl; + return (uintptr_t)gdl; } return 0; @@ -1438,10 +1438,10 @@ MenuItemHandlerResult ciOfficeInformationMenuHandler(s32 operation, struct menui case MENUOP_GETOPTIONTEXT: if (data->list.value < numunlockedchrbios) { chrbio = ciGetChrBioByBodynum(ciGetChrBioBodynumBySlot(data->list.value)); - return (s32) langGet(chrbio->name); + return (uintptr_t) langGet(chrbio->name); } else { miscbio = ciGetMiscBio(ciGetMiscBioIndexBySlot(data->list.value - numunlockedchrbios)); - return (s32) langGet(miscbio->name); + return (uintptr_t) langGet(miscbio->name); } break; case MENUOP_SET: @@ -1459,7 +1459,7 @@ MenuItemHandlerResult ciOfficeInformationMenuHandler(s32 operation, struct menui data->list.value = 2; break; case MENUOP_GETOPTGROUPTEXT: - return (s32) langGet(groups[data->list.value].name); + return (uintptr_t) langGet(groups[data->list.value].name); case MENUOP_GETGROUPSTARTINDEX: data->list.groupstartindex = data->list.value == 0 ? 0 : numunlockedchrbios; break; @@ -1693,7 +1693,7 @@ MenuItemHandlerResult dtDeviceListMenuHandler(s32 operation, struct menuitem *it data->list.value = dtGetNumAvailable(); break; case MENUOP_GETOPTIONTEXT: - return (s32) bgunGetName(dtGetWeaponByDeviceIndex(dtGetIndexBySlot(data->list.value))); + return (uintptr_t) bgunGetName(dtGetWeaponByDeviceIndex(dtGetIndexBySlot(data->list.value))); case MENUOP_SET: g_DtSlot = data->list.value; menuPushDialog(&g_DtDetailsMenuDialog); @@ -2006,7 +2006,7 @@ MenuItemHandlerResult htHoloListMenuHandler(s32 operation, struct menuitem *item data->list.value = htGetNumUnlocked(); break; case MENUOP_GETOPTIONTEXT: - return (s32) htGetName(htGetIndexBySlot(data->list.value)); + return (uintptr_t) htGetName(htGetIndexBySlot(data->list.value)); case MENUOP_SET: var80088bb4 = data->list.value; menuPushDialog(&g_HtDetailsMenuDialog); @@ -2512,7 +2512,7 @@ MenuItemHandlerResult ciHangarInformationMenuHandler(s32 operation, struct menui break; case MENUOP_GETOPTIONTEXT: bio = ciGetHangarBio(ciGetHangarBioIndexBySlot(data->list.value)); - return (s32) langGet(bio->name); + return (uintptr_t) langGet(bio->name); case MENUOP_SET: g_HangarBioSlot = data->list.value; bioindex = ciGetHangarBioIndexBySlot(g_HangarBioSlot); @@ -2530,7 +2530,7 @@ MenuItemHandlerResult ciHangarInformationMenuHandler(s32 operation, struct menui data->list.value = 2; break; case MENUOP_GETOPTGROUPTEXT: - return (s32) langGet(groups[data->list.value].name); + return (uintptr_t) langGet(groups[data->list.value].name); case MENUOP_GETGROUPSTARTINDEX: data->list.groupstartindex = data->list.value == 0 ? 0 : groups[1].offset; break; @@ -2612,7 +2612,7 @@ MenuItemHandlerResult ciHangarTitleMenuHandler(s32 operation, struct menuitem *i gdl = text0f153780(gdl); - return (s32)gdl; + return (uintptr_t)gdl; } return 0; diff --git a/src/include/types.h b/src/include/types.h index 88812911c..3a5059392 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -27,7 +27,7 @@ typedef s32 PakErr1; typedef s32 PakErr2; typedef s32 MenuDialogHandlerResult; -typedef intptr_t MenuItemHandlerResult; +typedef uintptr_t MenuItemHandlerResult; typedef s16 RoomNum; #ifdef PLATFORM_N64 @@ -3427,7 +3427,7 @@ struct menuitem { intptr_t param3; union { - s32 (*handler)(s32 operation, struct menuitem *item, union handlerdata *data); + uintptr_t (*handler)(s32 operation, struct menuitem *item, union handlerdata *data); void (*handlervoid)(s32 operation, struct menuitem *item, union handlerdata *data); }; }; @@ -3877,7 +3877,11 @@ struct menumodel { /*0x05e*/ s16 curanimnum; /*0x060*/ struct model bodymodel; /*0x084*/ struct anim bodyanim; +#ifdef PLATFORM_64BIT + /*0x110*/ u32 rwdata[256+128]; +#else /*0x110*/ u32 rwdata[256]; +#endif /*0x510*/ f32 curposx; /*0x514*/ f32 curposy; /*0x518*/ f32 curposz; diff --git a/src/lib/main.c b/src/lib/main.c index c03da5235..01c4d805d 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -978,7 +978,7 @@ void mainLoop(void) { char message[80]; u32 stack2; - sprintf(message, "boss.c default: %08x type %d\n", (s32) msg, *(s16 *) msg); + sprintf(message, "boss.c default: %08x type %d\n", (uintptr_t) msg, *(s16 *) msg); crashSetMessage(message); CRASH(); }