MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / iSG_isSpaceForFile

Function iSG_isSpaceForFile

src/SB/Core/gc/isavegame.cpp:1152–1215  ·  view source on GitHub ↗

PS2 signature: static signed int iSG_isSpaceForFile(class st_ISG_MEMCARD_DATA* mcdata, S32 mcidx, S32 fsize, char* dpath, char* fname, S32* bytesNeeded, S32* availOnDisk)

Source from the content-addressed store, hash-verified

1150// static signed int iSG_isSpaceForFile(class st_ISG_MEMCARD_DATA* mcdata, S32 mcidx, S32 fsize,
1151// char* dpath, char* fname, S32* bytesNeeded, S32* availOnDisk)
1152static S32 iSG_isSpaceForFile(st_ISG_MEMCARD_DATA* mcdata, S32 param2, const char* param3,
1153 S32* param4, S32* param5, S32* param6)
1154{
1155 S32 rc = 0;
1156 S32 result = 0;
1157 s32 byteNotUsed = 0;
1158 s32 filesNotUsed = 0;
1159 S32 len;
1160
1161 if (mcdata->unk_0 == 0)
1162 {
1163 return 0;
1164 }
1165 len = iSG_cubeicon_size(mcdata->chan, mcdata->sectorSize);
1166 len = len + param2;
1167 len = ALIGN_THING(mcdata->sectorSize, len);
1168
1169 do
1170 {
1171 result = CARDFreeBlocks(mcdata->chan, &byteNotUsed, &filesNotUsed);
1172 } while (result == CARD_RESULT_BUSY);
1173
1174 if (result == CARD_RESULT_READY)
1175 {
1176 if (param5)
1177 {
1178 *param5 = byteNotUsed / mcdata->sectorSize;
1179 }
1180 if (param4)
1181 {
1182 *param4 = len / mcdata->sectorSize;
1183 }
1184 }
1185 else
1186 {
1187 return 0;
1188 }
1189
1190 if (param6)
1191 {
1192 *param6 = 1;
1193 }
1194
1195 if (iSG_get_finfo(mcdata, param3))
1196 {
1197 if (param6)
1198 {
1199 *param6 = *param6 - 1 & ~(*param6 - 1 >> 0x1f); // FIXME: Fakematch
1200 }
1201 if (len <= mcdata->unk_b0.length + byteNotUsed)
1202 {
1203 rc = 1;
1204 }
1205 }
1206 else
1207 {
1208 if (len <= byteNotUsed && filesNotUsed > 0)
1209 {

Callers 2

iSGTgtHaveRoomFunction · 0.70
iSGTgtHaveRoomStartupFunction · 0.70

Calls 3

iSG_cubeicon_sizeFunction · 0.85
CARDFreeBlocksFunction · 0.85
iSG_get_finfoFunction · 0.70

Tested by

no test coverage detected