diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/console.cpp | 4 | ||||
-rw-r--r-- | engines/sci/console.h | 2 | ||||
-rw-r--r-- | engines/sci/engine/scriptdebug.cpp | 59 |
3 files changed, 29 insertions, 36 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 038cb09da9..6cce0fcedd 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -83,7 +83,7 @@ Console::Console(SciEngine *vm) : GUI::Debugger() { DCmd_Register("selectors", WRAP_METHOD(Console, cmdSelectors)); DCmd_Register("kernelnames", WRAP_METHOD(Console, cmdKernelNames)); DCmd_Register("suffixes", WRAP_METHOD(Console, cmdSuffixes)); - DCmd_Register("words", WRAP_METHOD(Console, cmdWords)); + DCmd_Register("kernelwords", WRAP_METHOD(Console, cmdKernelWords)); DCmd_Register("man", WRAP_METHOD(Console, cmdMan)); } @@ -173,7 +173,7 @@ bool Console::cmdSuffixes(int argc, const char **argv) { return true; } -bool Console::cmdWords(int argc, const char **argv) { +bool Console::cmdKernelWords(int argc, const char **argv) { WordMap words; vocab_get_words(_vm->getResMgr(), words); diff --git a/engines/sci/console.h b/engines/sci/console.h index e1890ac4c2..ef1f10cbd3 100644 --- a/engines/sci/console.h +++ b/engines/sci/console.h @@ -47,7 +47,7 @@ private: bool cmdSelectors(int argc, const char **argv); bool cmdKernelNames(int argc, const char **argv); bool cmdSuffixes(int argc, const char **argv); - bool cmdWords(int argc, const char **argv); + bool cmdKernelWords(int argc, const char **argv); bool cmdMan(int argc, const char **argv); private: diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 1584d2b2ac..3a23c26324 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -201,42 +201,48 @@ static void midi_hexdump(byte *data, int size, int notational_offset) { // Speci } } -#define SONGDATA(x) data[offset + (x)] -#define CHECK_FOR_END_ABSOLUTE(off) if ((off) >= size) return; +int c_sfx_01_header_dump(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) { + Resource *song = s->resmgr->findResource(kResourceTypeSound, cmdParams[0].val, 0); -static void sci01_song_header_dump(byte *data, int size) { - int offset = 0; - int smallest_start = 10000; + if (!song) { + sciprintf("Doesn't exist\n"); + return 1; + } + + uint32 offset = 0; sciprintf("SCI01 song track mappings:\n"); - if (*data == 0xf0) // SCI1 priority spec + if (*song->data == 0xf0) // SCI1 priority spec offset = 8; - CHECK_FOR_END_ABSOLUTE(0); - while (SONGDATA(0) != 0xff) { - byte device_id = data[offset]; + if (song->size <= 0) + return 1; + + while (song->data[offset] != 0xff) { + byte device_id = song->data[offset]; sciprintf("* Device %02x:\n", device_id); offset++; - CHECK_FOR_END_ABSOLUTE(offset + 1); - while (SONGDATA(0) != 0xff) { + + if (offset + 1 >= song->size) + return 1; + + while (song->data[offset] != 0xff) { int track_offset; int end; byte header1, header2; - CHECK_FOR_END_ABSOLUTE(offset + 7); + if (offset + 7 >= song->size) + return 1; offset += 2; - track_offset = READ_LE_UINT16(data + offset); - header1 = data[track_offset]; - header2 = data[track_offset+1]; + track_offset = READ_LE_UINT16(song->data + offset); + header1 = song->data[track_offset]; + header2 = song->data[track_offset+1]; track_offset += 2; - if (track_offset < smallest_start) - smallest_start = track_offset; - - end = READ_LE_UINT16(data + offset + 2); + end = READ_LE_UINT16(song->data + offset + 2); sciprintf(" - %04x -- %04x", track_offset, track_offset + end); if (track_offset == 0xfe) @@ -248,19 +254,6 @@ static void sci01_song_header_dump(byte *data, int size) { } offset++; } -} -#undef CHECK_FOR_END_ABSOLUTE -#undef SONGDATA - -int c_sfx_01_header(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) { - Resource *song = s->resmgr->findResource(kResourceTypeSound, cmdParams[0].val, 0); - - if (!song) { - sciprintf("Doesn't exist\n"); - return 1; - } - - sci01_song_header_dump(song->data, song->size); return 0; } @@ -3153,7 +3146,7 @@ void script_debug(EngineState *s, reg_t *pc, StackPtr *sp, StackPtr *pp, reg_t * "Tests whether a given sound resource\n" " is a PCM sample, and displays infor-\n" " mation on it if it is.\n\n"); - con_hook_command(c_sfx_01_header, "sfx-01-header", "i", + con_hook_command(c_sfx_01_header_dump, "sfx-01-header", "i", "Dumps the header of an SCI01 song\n\n" "SEE ALSO\n\n" " sfx-01-track.1\n\n"); |