WHY DO ROMDISK SWAP?
when I started adding things to the rom disk, I didn't realize that my 10mb+ .elf file would be problematic (ie : not load) on the dreamcast. also,
it's been mentionned in other topic that loading the romdisk and not multiple files would be faster. I also think that it could be a neat way to handle/manage your memory altogether.
HOW-TO
1 - organize the content or your romdisk in folders
Code: Select all
/level1
/level2
/level3
Code: Select all
romdisk.img:
$(KOS_GENROMFS) -f romdisk.img -d path/to/romdisk -v # <- this is the usual romdisk command, you can still keep this
$(KOS_GENROMFS) -f romdisk_name.img -d path/to/romdisk_folder -v # <- this is your new romdisk, replace the romdisk_name and romdisk_folder with what you want.
$(KOS_GENROMFS) -f level1.img -d path/to/level -v # <- if I'm using the exemple from earlier, I could make a "level1" romdisk this way
gzip -f -9 romdisk_name.img # <-make sure you add all your new romdisk names here
Code: Select all
#include <kos.h>
#include <zlib/zlib.h>
// Thanks BlackAura ;)
int mount_romdisk(char *filename, char *mountpoint)
{
void *buffer;
int length = zlib_getlength(filename);
// Check failure
if(length == 0)
return 0;
// Open file
gzFile file = gzopen(filename, "rb");
if(!file)
return 0;
// Allocate memory, read file
buffer = malloc(length);
gzread(file, buffer, length);
gzclose(file);
// Mount
fs_romdisk_mount(mountpoint, buffer, 1);
return 1;
}
you can now unload the romdisk using :
Code: Select all
fs_romdisk_unmount(mountpoint);
in order to use these new romdisk, you need to enable /pc redirection in your dc-tool, update your dc-tool command to use -c
Code: Select all
dc-tool-ip -t dreamcast -c /path/to/project -x program_name.elf
Code: Select all
mount_romdisk("/pc/romdisk_name.img.gz", "/rom");
PLEASE LET ME KNOW IF SOMETHING IS WRONG/ NOT OPTIMIZED! (also, thanks Quzar for the help on IRC)