diff options
-rw-r--r-- | engines/parallaction/animation.cpp | 18 | ||||
-rw-r--r-- | engines/parallaction/disk.cpp | 18 | ||||
-rw-r--r-- | engines/parallaction/disk.h | 1 |
3 files changed, 22 insertions, 15 deletions
diff --git a/engines/parallaction/animation.cpp b/engines/parallaction/animation.cpp index c81a6d4d10..f7f9dac6e5 100644 --- a/engines/parallaction/animation.cpp +++ b/engines/parallaction/animation.cpp @@ -251,21 +251,9 @@ void jobEraseAnimations(void *arg_0, Job *j) { void Parallaction::loadProgram(Animation *a, char *filename) { // printf("loadProgram(%s)\n", filename); - - char vC8[PATH_LEN]; - - sprintf(vC8, "%s.script", filename); - - if (!_archive.openArchivedFile(vC8)) - errorFileNotFound(vC8); - - uint32 size = _archive.size(); - char* src = (char*)memAlloc(size+1); - - _archive.read(src, size); - src[size] = '\0'; - - _archive.closeArchivedFile(); + // the largest script in Nippon Safes is 3,668 bytes, so 4 kb is well enough + char* src = (char*)memAlloc(0x1000); + loadScript(filename, src); _numLocals = 0; diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index f42398466f..7449f7c76f 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -89,6 +89,24 @@ void loadLocation(const char *name, char* script) { } +void loadScript(const char* name, char *script) { + + char vC8[PATH_LEN]; + + sprintf(vC8, "%s.script", name); + + if (!_vm->_archive.openArchivedFile(vC8)) + errorFileNotFound(vC8); + + uint32 size = _vm->_archive.size(); + + _vm->_archive.read(script, size); + script[size] = '\0'; + + _vm->_archive.closeArchivedFile(); + +} + void loadHead(const char* name, StaticCnv* cnv) { char path[PATH_LEN]; diff --git a/engines/parallaction/disk.h b/engines/parallaction/disk.h index abe91b304b..292e8fa579 100644 --- a/engines/parallaction/disk.h +++ b/engines/parallaction/disk.h @@ -73,6 +73,7 @@ public: }; void loadLocation(const char *name, char* script); +void loadScript(const char* name, char *script); void loadTalk(const char *name, Cnv *cnv); void loadObjects(const char *name, Cnv *cnv); void loadPointer(StaticCnv* cnv); |