Match FNT

This commit is contained in:
Aetias
2023-10-21 18:16:48 +02:00
parent 068dc9498e
commit e6f2b7c31c
2 changed files with 11 additions and 0 deletions
+1
View File
@@ -438,6 +438,7 @@ bool WriteFnt(FILE *fpRom, size_t *pAddress, FileTree *pRoot, size_t firstFileId
size_t tableStart = address;
if (!WriteFntSubtable(pRoot, &ctx)) return false;
ctx.table[0].parentId = ctx.tableSize;
size_t tableLength = ctx.tableSize * sizeof(FntEntry);
for (size_t i = 0; i < ctx.tableSize; ++i) {
+10
View File
@@ -137,10 +137,18 @@ bool FreeFileTree(FileTree *pTree) {
int CompareFileTree(const void *a, const void *b) {
FileTree *treeA = (FileTree*) a;
FileTree *treeB = (FileTree*) b;
// Files before directories
bool dirA = treeA->entry == NULL || treeA->entry->isSubdir;
bool dirB = treeB->entry == NULL || treeB->entry->isSubdir;
if (dirA && !dirB) return 1;
if (!dirA && dirB) return -1;
size_t lenA = treeA->entry->length;
size_t lenB = treeB->entry->length;
size_t minSize = (lenA < lenB) ? lenA : lenB;
// Alphabetic name order
const char *nameA = treeA->entry->name;
const char *nameB = treeB->entry->name;
for (size_t i = 0; i < minSize; ++i) {
@@ -148,6 +156,8 @@ int CompareFileTree(const void *a, const void *b) {
const char chB = tolower(nameB[i]);
if (chA != chB) return chA - chB;
}
// Shortest name first
if (lenA < lenB) return -1;
if (lenA > lenB) return 1;
return 0;