diff options
author | D G Turner | 2012-07-05 09:23:59 +0100 |
---|---|---|
committer | D G Turner | 2012-07-05 09:23:59 +0100 |
commit | 15198688fe97f3bc7e1d528645b5d1f2d85baff7 (patch) | |
tree | e8f5c5bffc70e24876f319ff9c6c2e4b160a3ae0 /devtools/create_teenagent/create_teenagent.cpp | |
parent | 73e152db57633adbd1edcd743a6c33d696f2c696 (diff) | |
download | scummvm-rg350-15198688fe97f3bc7e1d528645b5d1f2d85baff7.tar.gz scummvm-rg350-15198688fe97f3bc7e1d528645b5d1f2d85baff7.tar.bz2 scummvm-rg350-15198688fe97f3bc7e1d528645b5d1f2d85baff7.zip |
DEVTOOLS: Migrate create_teenagent to static data tables.
This simplifies the tool code and removes the need to have a specific
executable version as an input file for this tool.
Diffstat (limited to 'devtools/create_teenagent/create_teenagent.cpp')
-rw-r--r-- | devtools/create_teenagent/create_teenagent.cpp | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/devtools/create_teenagent/create_teenagent.cpp b/devtools/create_teenagent/create_teenagent.cpp index 230fcf6b5f..2af98cea41 100644 --- a/devtools/create_teenagent/create_teenagent.cpp +++ b/devtools/create_teenagent/create_teenagent.cpp @@ -33,58 +33,32 @@ #include <stdlib.h> #include <assert.h> #include "util.h" +#include "static_tables.h" -static void print_hex(FILE * f, const uint8 * data, size_t len) { - for (size_t i = 0; i < len; ++i) { - fprintf(f, "%02x", data[i]); - } -} - -static void extract(FILE * fout, FILE *fin, size_t pos, size_t size, const char *what) { - char buf[0x10000]; - assert(size < sizeof(buf)); - - if (fseek(fin, pos, SEEK_SET) != 0) { - perror(what); - exit(1); - } - - if (fread(buf, size, 1, fin) != 1) { - perror(what); - exit(1); - } +int main(int argc, char *argv[]) { + const char *dat_name = "teenagent.dat"; - if (fwrite(buf, size, 1, fout) != 1) { - perror(what); + FILE *fout = fopen(dat_name, "wb"); + if (fout == NULL) { + perror("opening output file"); exit(1); } -} -int main(int argc, char *argv[]) { - if (argc < 2) { - fprintf(stderr, "usage: %s: Teenagnt.exe (unpacked one)\n", argv[0]); + if (fwrite(cseg, CSEG_SIZE, 1, fout) != 1) { + perror("Writing code segment"); exit(1); } - const char * fname = argv[1]; - FILE *fin = fopen(fname, "rb"); - if (fin == NULL) { - perror("opening input file"); + if (fwrite(dseg, DSEG_SIZE, 1, fout) != 1) { + perror("Writing data segment"); exit(1); } - const char * dat_name = "teenagent.dat"; - FILE *fout = fopen(dat_name, "wb"); - if (fout == NULL) { - perror("opening output file"); + if (fwrite(eseg, ESEG_SIZE, 1, fout) != 1) { + perror("Writing second data segment"); exit(1); } - //0x0200, 0xb5b0, 0x1c890 - extract(fout, fin, 0x00200, 0xb3b0, "extracting code segment"); - extract(fout, fin, 0x0b5b0, 0xe790, "extracting data segment"); - extract(fout, fin, 0x1c890, 0x8be2, "extracting second data segment"); - fclose(fin); fclose(fout); fprintf(stderr, "please run \"gzip -n %s\"\n", dat_name); |