aboutsummaryrefslogtreecommitdiff
path: root/devtools/create_teenagent/create_teenagent.cpp
diff options
context:
space:
mode:
authorD G Turner2012-07-05 09:23:59 +0100
committerD G Turner2012-07-05 09:23:59 +0100
commit15198688fe97f3bc7e1d528645b5d1f2d85baff7 (patch)
treee8f5c5bffc70e24876f319ff9c6c2e4b160a3ae0 /devtools/create_teenagent/create_teenagent.cpp
parent73e152db57633adbd1edcd743a6c33d696f2c696 (diff)
downloadscummvm-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.cpp50
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);