Rename directory_file_mngr.c, directory_file.c symbols

This commit is contained in:
ElectricGeorge 2023-12-28 13:30:06 -05:00
parent 8b1029085e
commit 7b2686518d
No known key found for this signature in database
GPG Key ID: B32C74265E9C81A6
25 changed files with 223 additions and 216 deletions

View File

@ -750,7 +750,7 @@
.public ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS
.public ADVENTURE_LOG_PTR
.public ALERT_BOX_DEFAULT_WINDOW_PARAMS
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public AREA_NAME_BOX_DEFAULT_WINDOW_PARAMS
.public ARM9_UNKNOWN_DATA__NA_209E6BC
.public ARM9_UNKNOWN_PTR__NA_20A2C84
@ -816,7 +816,7 @@
.public Debug_GetLogFlag
.public GetDungeonModeSpecial
.public GetEvolutionPossibilities
.public GetFileLengthInPackWithPackNb
.public DirectoryFileMngr_GetDirectoryFileSize
.public GetHeldButtons
.public GetHero
.public GetHeroMemberIdx
@ -859,7 +859,7 @@
.public LANGUAGE_INFO_DATA
.public LIFE_SEED_HP_BOOST
.public LoadFileFromRom
.public LoadFileInPackWithPackId
.public DirectoryFileMngr_LoadDirectoryFile
.public LoadOverlay
.public MemAlloc
.public MemArenaAlloc

View File

@ -189,7 +189,7 @@
.public _s32_div_f
.public _u32_div_f
.public AddMoneyCarried
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public ARM9_UNKNOWN_FUNCTION_TABLE__NA_20A3CF4
.public ARM9_UNKNOWN_TABLE__NA_20A3CC8
.public ARM9_UNKNOWN_TABLE__NA_20A3CE4
@ -347,7 +347,7 @@
.public NO_SEND_ITEM_TABLE
.public NoteLoadBase
.public NoteSaveBase
.public OpenAllPackFiles
.public DirectoryFileMngr_ExtractAllDirectoryFiles
.public ov00_022BE0C8
.public ov01_02337B3C
.public ov01_02337B68

View File

@ -3,7 +3,7 @@
.public _020B0A5C
.public _s32_div_f
.public abs
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public BAG_ITEMS_PTR_MIRROR
.public CalcMenuHeightDiv8__020329E4
.public CleanStickyItemsInBag
@ -168,7 +168,7 @@
.public GetDungeonGroup
.public GetDungeonMode
.public GetDungeonModeSpecial
.public GetFileLengthInPackWithPackNb
.public DirectoryFileMngr_GetDirectoryFileSize
.public GetGameMode
.public GetItemAtIdx
.public GetMoneyCarried

View File

@ -2,7 +2,7 @@
.public _020AFC4C
.public _020AFC70
.public _s32_div_f
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public AllocTopScreenStatus
.public ChangeGiratinaFormIfSkyDungeon
.public ClearHiddenStairs

View File

@ -2,7 +2,7 @@
.public _020AFC28
.public _020AFC4C
.public _020AFC70
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public AnimationDelayOrSomething
.public CalcSpeedStageWrapper
.public DisplayMessage2

View File

@ -50,7 +50,7 @@
.public GetDirectionTowardsPosition
.public GetExp
.public GetExplorerMazeMonster
.public GetFileLengthInPackWithPackNb
.public DirectoryFileMngr_GetDirectoryFileSize
.public GetFloorType
.public GetForcedLossReason
.public GetLeader

View File

@ -1,7 +1,7 @@
#pragma once
.public _020A1894
.public AbilityIsActiveVeneer
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public ATK_STAT_IDX
.public BoostIQ
.public BoostOffensiveStat

View File

@ -3,7 +3,7 @@
.public _020AFC70
.public _s32_div_f
.public abs
.public AllocAndLoadFileInPack
.public DirectoryFileMngr_OpenDirectoryFile
.public CORNER_CARDINAL_NEIGHBOR_IS_OPEN
.public CountStickyItemsInBag
.public DetermineAllTilesWalkableNeighbors

View File

@ -21762,11 +21762,11 @@ _0201D4C0:
ldr sb, [r0, #0x500]
mov r0, r8
mov r1, r7
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, sb
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, sb
bl GetAtSize
mov r7, r0
@ -21780,7 +21780,7 @@ _0201D4C0:
_0201D53C:
mov r0, r8
mov r1, r7
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r1, r6
mov sb, r0
bl MemAlloc
@ -21788,7 +21788,7 @@ _0201D53C:
mov r0, r8
mov r1, r7
mov r2, r6
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
str sb, [r4, #0x28]
_0201D56C:
str r6, [r4, #0x34]
@ -21832,11 +21832,11 @@ _0201D5CC:
ldr sb, [r0, #0x500]
mov r0, r8
mov r1, r7
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, sb
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, sb
bl GetAtSize
mov r2, sb
@ -21847,11 +21847,11 @@ _0201D5CC:
_0201D62C:
mov r0, r8
mov r1, r7
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, r6
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
_0201D648:
mov r0, #2
strb r0, [r4, #0x21]
@ -21885,11 +21885,11 @@ ReplaceWanFromBinFile: ; 0x0201D684
mov r0, r5
mov r1, r4
ldr r8, [r6, #0x34]
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r5
mov r1, r4
mov r2, r7
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, r7
bl GetAtSize
mov r2, r7
@ -21901,11 +21901,11 @@ _0201D6E8:
ldr r7, [r6, #0x34]
mov r0, r5
mov r1, r4
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r5
mov r1, r4
mov r2, r7
bl LoadFileInPackWithPackId
bl DirectoryFileMngr_LoadDirectoryFile
_0201D708:
ldr r1, [r6, #0x34]
add r0, r6, #0x30
@ -22558,7 +22558,7 @@ LoadWteFromFileDirectory: ; 0x0201DEC4
mov r0, r1
mov r1, r2
add r2, sp, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp]
add r0, sp, #8
bl HandleSir0Translation
@ -22639,7 +22639,7 @@ LoadWtuFromBin: ; 0x0201DFB4
mov r0, r7
mov r1, r6
mov r3, r5
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r5, [sp]
ldr r1, _0201E01C ; =_02099720
str r5, [r4]
@ -88843,7 +88843,7 @@ GetLvlUpEntry: ; 0x0205379C
add r2, sp, #4
mov r0, #5
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation

View File

@ -4731,7 +4731,7 @@ sub_0205882C: ; 0x0205882C
add r2, sp, #0x14
mov r0, #4
str r3, [sp, #0x1c]
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #0x14]
add r0, sp, #0x1c
bl HandleSir0Translation
@ -4861,7 +4861,7 @@ _02058928:
add r2, sp, #0xc
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #0xc]
add r0, sp, #8
bl HandleSir0Translation
@ -19568,7 +19568,7 @@ _02064B94:
mov r3, r6
str r7, [r5, #0x48]
add r2, r5, #0x50
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldrsh r2, [r5, #0x4c]
add r1, sp, #0
mov r0, r5
@ -20955,7 +20955,7 @@ MainLoop: ; 0x02065D1C
ldr r0, [r0]
bl InitWanTable
bl sub_0201F208
bl OpenAllPackFiles
bl DirectoryFileMngr_ExtractAllDirectoryFiles
bl sub_0204AB18
bl InitKaomadoStream
bl sub_02025AD8

View File

@ -52459,15 +52459,15 @@ _020AFF3C_EU:
; pack file related
.global PACK_FILES_OPENED ; 0x20af69c
PACK_FILES_OPENED:
; [Runtime] A pointer to the 6 opened Pack files (listed at PACK_FILE_PATHS_TABLE)
.global DIRECTORY_FILES_EXTRACTED ; 0x20af69c
DIRECTORY_FILES_EXTRACTED:
; [Runtime] A pointer to the 6 opened Pack files (listed at DIRECTORY_FILE_TABLE)
.word 0x0
; List of pointers to path strings to all known pack files.
; The game uses this table to load its resources when launching dungeon mode.
.global PACK_FILE_PATHS_TABLE ; 0x020af6a0
PACK_FILE_PATHS_TABLE:
.global DIRECTORY_FILE_TABLE ; 0x020af6a0
DIRECTORY_FILE_TABLE:
.word STRING_MONSTER_MONSTER_BIN
.word STRING_MONSTER_M_ATTACK_BIN
.word STRING_MONSTER_M_GROUND_BIN

View File

@ -2244,7 +2244,7 @@ _022BE830:
add r1, r1, #0x10c
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
cmp r4, r0
bge _022BE980
add r5, sp, #0x30
@ -2306,7 +2306,7 @@ _022BE918:
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
cmp r4, r0
bge _022BE980
add r5, sp, #4
@ -6980,7 +6980,7 @@ ov10_022C2588: ; 0x022C2588
mov r1, r0, lsr #0x10
add r2, sp, #4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation
@ -7007,7 +7007,7 @@ ov10_022C25EC: ; 0x022C25EC
mov r1, r0, lsr #0x10
mov r2, r4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [r4]
add r0, sp, #0
bl HandleSir0Translation
@ -7041,7 +7041,7 @@ ov10_022C2654: ; 0x022C2654
mov r1, r0, lsr #0x10
mov r2, r4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [r4]
add r0, sp, #0
bl HandleSir0Translation
@ -7076,7 +7076,7 @@ InitTilesetBuffer: ; 0x022C26BC
mov r1, r0, lsr #0x10
add r2, sp, #4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation
@ -7109,7 +7109,7 @@ ov10_022C2720: ; 0x022C2720
add r2, sp, #4
mov r3, r4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation
@ -7126,7 +7126,7 @@ _022C2788:
add r2, sp, #4
mov r3, r4
mov r0, #4
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation

View File

@ -2511,7 +2511,7 @@ ov29_022DE300: ; 0x022DE300
mov r3, #0
ldr r2, [r2]
add r2, r2, #0x40
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r0, _022DE410 ; =ov29_02353530
ldr r1, [r0]
add r0, r1, #0x48

View File

@ -996,7 +996,7 @@ _022E0F80:
add r2, sp, #8
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #8]
add r0, sp, #0x14
bl HandleSir0Translation
@ -1020,7 +1020,7 @@ _022E0F80:
mov r0, #4
add r2, sp, #8
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #8]
add r0, sp, #0x10
bl HandleSir0Translation
@ -1060,7 +1060,7 @@ _022E1038:
add r2, sp, #8
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #8]
add r0, sp, #0x18
bl HandleSir0Translation
@ -1084,7 +1084,7 @@ _022E1038:
mov r0, #4
add r2, sp, #8
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #8]
add r0, sp, #0x1c
bl HandleSir0Translation
@ -1103,7 +1103,7 @@ _022E1038:
mov r0, #4
mov r1, #0x3e4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, _022E11EC ; =ov29_02353540
ldr r0, _022E11F0 ; =ov29_02353540
ldr r1, [r1, #4]
@ -1160,7 +1160,7 @@ ov29_022E11F8: ; 0x022E11F8
add r2, sp, #4
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation
@ -1242,7 +1242,7 @@ ov29_022E1304: ; 0x022E1304
add r2, sp, #8
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #8]
add r0, sp, #0x10
bl HandleSir0Translation

View File

@ -167,7 +167,7 @@ _022F756C:
_022F7598:
mov r1, r4
mov r0, #0
bl GetFileLengthInPackWithPackNb
bl DirectoryFileMngr_GetDirectoryFileSize
ldr r1, _022F75C4 ; =DUNGEON_PTR
ldr r1, [r1]
add r1, r1, #0x2c000

View File

@ -940,7 +940,7 @@ ApplyGonePebbleEffect: ; 0x0231D838
mov r0, #4
add r2, sp, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation

View File

@ -1533,7 +1533,7 @@ ov29_02338F68: ; 0x02338F68
ldr r2, _02338FC0 ; =ov29_02353784
mov r0, #4
mov r3, #0
bl AllocAndLoadFileInPack
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, _02338FC4 ; =ov29_0235376C
add r0, sp, #0
ldr r1, [r1, #0x18]

42
include/directory_file.h Normal file
View File

@ -0,0 +1,42 @@
#ifndef PMDSKY_DIRECTORY_FILE_H
#define PMDSKY_DIRECTORY_FILE_H
#include <file.h>
struct directory_entry {
u32 offset; // The offset of the file relative to the start of the Pack file
u32 length; // The size of the file
};
/* Information for reading a .bin Pack file
A pack file is an archive that contains multiple other files. They aren't named.
File format documentation at
https://projectpokemon.org/docs/mystery-dungeon-nds/pmd2-pack-file-format-r42 */
struct directory {
struct directory_entry* table_of_content;
u32 zero; // Loaded from file, but is always zero here. Seemingly unused.
u32 nb_entry_table_of_content; // loaded from file
struct file_stream opened_file;
};
// Open a Pack file, to be read later. Initialise the output structure.
// pack_file: [output] pack file struct
// file_path: file name
void DirectoryFile_ExtractDirectoryFile(struct directory *pack_file, char *file_path);
// Get the length of a file entry from a Pack archive
// pack_file: pack file struct
// file_index: file index
// return: size of the file in bytes from the Pack Table of Content
u32 DirectoryFile_GetDirectoryFileSize(struct directory* pack_file, u32 file_index);
// Load the indexed file from the Pack archive, itself loaded from the ROM.
// pack_file: pack file struct
// output_buffer: [output] target buffer
// file_index: file index
// return: number of read bytes (identical to the length of the pack from the Table of Content)
u32 DirectoryFile_LoadDirectoryFile(struct directory *pack_file, void *output_buffer,u32 file_index);
#endif //PMDSKY_DIRECTORY_FILE_H

View File

@ -0,0 +1,44 @@
#ifndef PMDSKY_DIRECTORY_FILE_MNGR_H
#define PMDSKY_DIRECTORY_FILE_MNGR_H
// Correspond to a .bin pack archive
enum directory_id {
PACK_ARCHIVE_MONSTER = 0,
PACK_ARCHIVE_M_ATTACK = 1,
PACK_ARCHIVE_M_GROUND = 2,
PACK_ARCHIVE_EFFECT = 3,
PACK_ARCHIVE_DUNGEON = 4,
PACK_ARCHIVE_M_LEVEL = 5
};
// Contain return result of the DirectoryFileMngr_OpenDirectoryFile function
struct directory_open_result {
void* data;
u32 length;
};
// Open the 6 files at DIRECTORY_FILE_TABLE into DIRECTORY_FILES_EXTRACTED. Called during game initialization.
void DirectoryFileMngr_ExtractAllDirectoryFiles(void);
// Call DirectoryFile_GetDirectoryFileSize after looking up the global Pack archive by its number
// pack_id: pack file number
// file_index: file number
// return: size of the file in bytes from the Pack Table of Content
u32 DirectoryFileMngr_GetDirectoryFileSize(enum directory_id pack_id, u32 file_index);
// Call DirectoryFile_LoadDirectoryFile after looking up the global Pack archive by its identifier
// pack_id: pack file identifier
// file_index: file index
// output_buffer: [output] target buffer
// return: number of read bytes (identical to the length of the pack from the Table of Content)
u32 DirectoryFileMngr_LoadDirectoryFile(enum directory_id pack_id, u32 file_index, void* output_buffer);
// Allocate a file and load a file from the pack archive inside.
// The data pointed by the pointer in the output need to be freed once is not needed anymore.
// pack_id: pack file identifier
// file_index: file index
// output: [output] result struct (will contain length and pointer)
// malloc_flags: allocation flags
void DirectoryFileMngr_OpenDirectoryFile(enum directory_id pack_id, u32 file_index, struct directory_open_result *output, u32 malloc_flags);
#endif //PMDSKY_DIRECTORY_FILE_MNGR_H

View File

@ -1,40 +0,0 @@
#ifndef PMDSKY_FILES_PACK_H
#define PMDSKY_FILES_PACK_H
#include <file.h>
struct pack_file_table_of_content {
u32 offset; // The offset of the file relative to the start of the Pack file
u32 length; // The size of the file
};
/* Information for reading a .bin Pack file
A pack file is an archive that contains multiple other files. They aren't named.
File format documentation at
https://projectpokemon.org/docs/mystery-dungeon-nds/pmd2-pack-file-format-r42 */
struct pack_file_opened {
struct pack_file_table_of_content* table_of_content;
u32 zero; // Loaded from file, but is always zero here. Seemingly unused.
u32 nb_entry_table_of_content; // loaded from file
struct file_stream opened_file;
};
// Correspond to a .bin pack archive
enum pack_file_id {
PACK_ARCHIVE_MONSTER = 0,
PACK_ARCHIVE_M_ATTACK = 1,
PACK_ARCHIVE_M_GROUND = 2,
PACK_ARCHIVE_EFFECT = 3,
PACK_ARCHIVE_DUNGEON = 4,
PACK_ARCHIVE_M_LEVEL = 5
};
// Contain return result of the AllocAndLoadFileInPack function
struct pack_alloc_and_load_result {
void* data;
u32 length;
};
#endif

View File

@ -1,48 +0,0 @@
#ifndef PMDSKY_MAIN_PACK_H
#define PMDSKY_MAIN_PACK_H
#include <files/pack.h>
// Open the 6 files at PACK_FILE_PATHS_TABLE into PACK_FILES_OPENED. Called during game initialization.
void OpenAllPackFiles(void);
// Call GetFileLengthInPack after looking up the global Pack archive by its number
// pack_id: pack file number
// file_index: file number
// return: size of the file in bytes from the Pack Table of Content
u32 GetFileLengthInPackWithPackNb(enum pack_file_id pack_id, u32 file_index);
// Call LoadFileInPack after looking up the global Pack archive by its identifier
// pack_id: pack file identifier
// file_index: file index
// output_buffer: [output] target buffer
// return: number of read bytes (identical to the length of the pack from the Table of Content)
u32 LoadFileInPackWithPackId(enum pack_file_id pack_id, u32 file_index, void* output_buffer);
// Allocate a file and load a file from the pack archive inside.
// The data pointed by the pointer in the output need to be freed once is not needed anymore.
// pack_id: pack file identifier
// file_index: file index
// output: [output] result struct (will contain length and pointer)
// malloc_flags: allocation flags
void AllocAndLoadFileInPack(enum pack_file_id pack_id, u32 file_index, struct pack_alloc_and_load_result *output, u32 malloc_flags);
// Open a Pack file, to be read later. Initialise the output structure.
// pack_file: [output] pack file struct
// file_path: file name
void OpenPackFile(struct pack_file_opened *pack_file, char *file_path);
// Get the length of a file entry from a Pack archive
// pack_file: pack file struct
// file_index: file index
// return: size of the file in bytes from the Pack Table of Content
u32 GetFileLengthInPack(struct pack_file_opened* pack_file, u32 file_index);
// Load the indexed file from the Pack archive, itself loaded from the ROM.
// pack_file: pack file struct
// output_buffer: [output] target buffer
// file_index: file index
// return: number of read bytes (identical to the length of the pack from the Table of Content)
u32 LoadFileInPack(struct pack_file_opened *pack_file, void *output_buffer,u32 file_index);
#endif //PMDSKY_MAIN_PACK_H

View File

@ -11,7 +11,8 @@ Static main
StackSize 0 2048
Object asm/main_02000C6C.o
Object src/debug.o
Object src/main_pack.o
Object src/directory_file_mngr.o
Object src/directory_file.o
Object asm/main_0200C4CC.o
Object src/main_02054BE0.o
Object asm/main_02054C24.o

45
src/directory_file.c Normal file
View File

@ -0,0 +1,45 @@
#include "directory_file.h"
extern void DataTransferInit(void);
extern void DataTransferStop(void);
extern void FileSeek(struct file_stream* file, int offset, int whence);
extern u32 FileRead(struct file_stream* file, void* buf, u32 size);
extern void FileInitVeneer(struct file_stream* file);
extern void FileOpen(struct file_stream* file, const char* filepath);
#include "debug.h"
extern void* MemAlloc(u32 len, u32 flags);
extern char STRING_FILE_DIRECTORY_INIT;
void DirectoryFile_ExtractDirectoryFile(struct directory *pack_file, char *file_path) {
DataTransferInit();
FileInitVeneer(&pack_file->opened_file);
FileOpen(&pack_file->opened_file,file_path);
FileRead(&pack_file->opened_file,&pack_file->zero,8);
FileSeek(&pack_file->opened_file,8,0);
u32 toc_total_size = pack_file->nb_entry_table_of_content * sizeof(struct directory_entry);
struct directory_entry *toc_alloc = (struct directory_entry *) MemAlloc(toc_total_size, 0);
pack_file->table_of_content = toc_alloc;
FileRead(&pack_file->opened_file,pack_file->table_of_content,toc_total_size);
Debug_Print0(&STRING_FILE_DIRECTORY_INIT,pack_file->zero,
pack_file->nb_entry_table_of_content,toc_total_size,file_path);
DataTransferStop();
return;
}
u32 DirectoryFile_GetDirectoryFileSize(struct directory* pack_file, u32 file_index) {
struct directory_entry* element = &pack_file->table_of_content[file_index];
return element->length;
}
u32 DirectoryFile_LoadDirectoryFile(struct directory *pack_file,void *output_buffer,u32 file_index) {
DataTransferInit();
struct directory_entry *toc_entry = &pack_file->table_of_content[file_index];
FileSeek(&pack_file->opened_file,toc_entry->offset,0);
FileRead(&pack_file->opened_file,output_buffer,toc_entry->length);
DataTransferStop();
return toc_entry->length;
}

35
src/directory_file_mngr.c Normal file
View File

@ -0,0 +1,35 @@
#include "directory_file_mngr.h"
#include "directory_file.h"
extern void* MemAlloc(u32 len, u32 flags);
extern void MemZero(void* ptr, u32 len);
extern struct directory *DIRECTORY_FILES_EXTRACTED;
extern char* DIRECTORY_FILE_TABLE[6];
void DirectoryFileMngr_ExtractAllDirectoryFiles(void) {
u32 total_size = sizeof(struct directory[6]);
DIRECTORY_FILES_EXTRACTED = MemAlloc(total_size, 0);
MemZero(DIRECTORY_FILES_EXTRACTED, total_size);
for (s16 i = 0; i < 6; i++) {
DirectoryFile_ExtractDirectoryFile(&DIRECTORY_FILES_EXTRACTED[i], DIRECTORY_FILE_TABLE[i]);
};
}
u32 DirectoryFileMngr_GetDirectoryFileSize(enum directory_id pack_id, u32 file_index) {
struct directory* pack_file = &DIRECTORY_FILES_EXTRACTED[pack_id];
return DirectoryFile_GetDirectoryFileSize(pack_file, file_index);
}
u32 DirectoryFileMngr_LoadDirectoryFile(enum directory_id pack_id, u32 file_index, void* output_buffer) {
return DirectoryFile_LoadDirectoryFile(&DIRECTORY_FILES_EXTRACTED[pack_id], output_buffer, file_index);
}
void DirectoryFileMngr_OpenDirectoryFile(enum directory_id pack_id, u32 file_index, struct directory_open_result *output, u32 malloc_flags) {
u32 entry_length = DirectoryFile_GetDirectoryFileSize(&DIRECTORY_FILES_EXTRACTED[pack_id], file_index);
output->length = entry_length;
void * data_dest = MemAlloc(output->length, malloc_flags);
output->data = data_dest;
DirectoryFile_LoadDirectoryFile(&DIRECTORY_FILES_EXTRACTED[pack_id], output->data, file_index);
return;
}

View File

@ -1,72 +0,0 @@
#include "main_pack.h"
extern void DataTransferInit(void);
extern void DataTransferStop(void);
extern void FileSeek(struct file_stream* file, int offset, int whence);
extern u32 FileRead(struct file_stream* file, void* buf, u32 size);
extern void FileInitVeneer(struct file_stream* file);
extern char STRING_FILE_DIRECTORY_INIT;
extern void Debug_Print0(const char* fmt, ...);
extern void FileOpen(struct file_stream* file, const char* filepath);
extern void* MemAlloc(u32 len, u32 flags);
extern void MemZero(void* ptr, u32 len);
extern struct pack_file_opened *PACK_FILES_OPENED;
extern char* PACK_FILE_PATHS_TABLE[6];
void OpenAllPackFiles(void) {
u32 total_size = sizeof(struct pack_file_opened[6]);
PACK_FILES_OPENED = MemAlloc(total_size, 0);
MemZero(PACK_FILES_OPENED, total_size);
for (s16 i = 0; i < 6; i++) {
OpenPackFile(&PACK_FILES_OPENED[i], PACK_FILE_PATHS_TABLE[i]);
};
}
u32 GetFileLengthInPackWithPackNb(enum pack_file_id pack_id, u32 file_index) {
struct pack_file_opened* pack_file = &PACK_FILES_OPENED[pack_id];
return GetFileLengthInPack(pack_file, file_index);
}
u32 LoadFileInPackWithPackId(enum pack_file_id pack_id, u32 file_index, void* output_buffer) {
return LoadFileInPack(&PACK_FILES_OPENED[pack_id], output_buffer, file_index);
}
void AllocAndLoadFileInPack(enum pack_file_id pack_id, u32 file_index, struct pack_alloc_and_load_result *output, u32 malloc_flags) {
u32 entry_length = GetFileLengthInPack(&PACK_FILES_OPENED[pack_id], file_index);
output->length = entry_length;
void * data_dest = MemAlloc(output->length, malloc_flags);
output->data = data_dest;
LoadFileInPack(&PACK_FILES_OPENED[pack_id], output->data, file_index);
return;
}
void OpenPackFile(struct pack_file_opened *pack_file, char *file_path) {
DataTransferInit();
FileInitVeneer(&pack_file->opened_file);
FileOpen(&pack_file->opened_file,file_path);
FileRead(&pack_file->opened_file,&pack_file->zero,8);
FileSeek(&pack_file->opened_file,8,0);
u32 toc_total_size = pack_file->nb_entry_table_of_content * sizeof(struct pack_file_table_of_content);
struct pack_file_table_of_content *toc_alloc = (struct pack_file_table_of_content *) MemAlloc(toc_total_size, 0);
pack_file->table_of_content = toc_alloc;
FileRead(&pack_file->opened_file,pack_file->table_of_content,toc_total_size);
Debug_Print0(&STRING_FILE_DIRECTORY_INIT,pack_file->zero,
pack_file->nb_entry_table_of_content,toc_total_size,file_path);
DataTransferStop();
return;
}
u32 GetFileLengthInPack(struct pack_file_opened* pack_file, u32 file_index) {
struct pack_file_table_of_content* element = &pack_file->table_of_content[file_index];
return element->length;
}
u32 LoadFileInPack(struct pack_file_opened *pack_file,void *output_buffer,u32 file_index) {
DataTransferInit();
struct pack_file_table_of_content *toc_entry = &pack_file->table_of_content[file_index];
FileSeek(&pack_file->opened_file,toc_entry->offset,0);
FileRead(&pack_file->opened_file,output_buffer,toc_entry->length);
DataTransferStop();
return toc_entry->length;
}