static int cbfs_add_stage(int argc, char **argv) { char *romname = argv[1]; char *cmd = argv[2]; void *rom = loadrom(romname); if (rom == NULL) { printf("Could not load ROM image '%s'.\n", romname); return 1; } if (argc < 5) { printf("not enough arguments to '%s'.\n", cmd); return 1; } char *filename = argv[3]; char *cbfsname = argv[4]; uint32_t filesize = 0; void *filedata = loadfile(filename, &filesize, 0, SEEK_SET); if (filedata == NULL) { printf("Could not load file '%s'.\n", filename); return 1; } uint32_t base = 0; void *cbfsfile = NULL; comp_algo algo = CBFS_COMPRESS_NONE; if (argc > 5) { if (argv[5][0] == 'l') algo = CBFS_COMPRESS_LZMA; } if (argc > 6) { base = strtoul(argv[6], NULL, 0); } unsigned char *stage; filesize = parse_elf_to_stage(filedata, &stage, algo, &base); cbfsfile = create_cbfs_file(cbfsname, stage, &filesize, CBFS_COMPONENT_STAGE, &base); if (add_file_to_cbfs(cbfsfile, filesize, base)) return 1; if (writerom(romname, rom, romsize)) return 1; return 0; }
static int cbfs_add(int argc, char **argv) { char *romname = argv[1]; char *cmd = argv[2]; void *rom = loadrom(romname); if (rom == NULL) { printf("Could not load ROM image '%s'.\n", romname); return 1; } if (argc < 5) { printf("not enough arguments to '%s'.\n", cmd); return 1; } char *filename = argv[3]; char *cbfsname = argv[4]; uint32_t filesize = 0; void *filedata = loadfile(filename, &filesize, 0, SEEK_SET); if (filedata == NULL) { printf("Could not load file '%s'.\n", filename); return 1; } uint32_t base = 0; void *cbfsfile = NULL; if (argc < 6) { printf("not enough arguments to 'add'.\n"); return 1; } uint32_t type; if (intfiletype(argv[5]) != ((uint64_t) - 1)) type = intfiletype(argv[5]); else type = strtoul(argv[5], NULL, 0); if (argc > 6) { base = strtoul(argv[6], NULL, 0); } cbfsfile = create_cbfs_file(cbfsname, filedata, &filesize, type, &base); if (add_file_to_cbfs(cbfsfile, filesize, base)) return 1; if (writerom(romname, rom, romsize)) return 1; return 0; }
void TailsAdvData::exportToFile(LoadedROM& rom, const std::string& filename) { // Create writable ROM to export data to WritableROM writerom(rom, FreeSpaceListing( TailsAdvFreeSpace::freeSpace, TailsAdvFreeSpace::numFreeSpacePairs)); // If ROM expansion enabled, double size if (romExpanded_) { writerom.doubleROMSize(); } // Write data to ROM exportToROM(writerom); // Write ROM to file writerom.writeToFile(filename); }