From 44763fcce90a9ccfb40d1430e015b45546f08569 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Sat, 11 Feb 2006 00:44:04 +0000 Subject: Add support for Spanish version of balloon svn-id: r20484 --- scumm/intern_he.h | 1 + scumm/script.cpp | 16 ++++++++++++++++ scumm/script_v100he.cpp | 2 +- scumm/script_v72he.cpp | 10 +--------- scumm/script_v8.cpp | 12 ++---------- scumm/script_v80he.cpp | 7 ++++++- scumm/script_v90he.cpp | 2 +- scumm/scumm-md5.h | 3 ++- scumm/scumm.h | 2 ++ tools/scumm-md5.txt | 1 + 10 files changed, 33 insertions(+), 23 deletions(-) diff --git a/scumm/intern_he.h b/scumm/intern_he.h index 1bd8e5afa2..1011d1b31f 100644 --- a/scumm/intern_he.h +++ b/scumm/intern_he.h @@ -370,6 +370,7 @@ protected: void o80_stringToInt(); void o80_getSoundVar(); void o80_localizeArrayToRoom(); + void o80_sourceDebug(); void o80_readConfigFile(); void o80_writeConfigFile(); void o80_cursorCommand(); diff --git a/scumm/script.cpp b/scumm/script.cpp index f2562fef52..a3dee09d69 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -495,6 +495,22 @@ int ScummEngine::fetchScriptWordSigned() { return (int16)fetchScriptWord(); } +uint ScummEngine::fetchScriptDWord() { + int a; + if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) { + uint32 oldoffs = _scriptPointer - _scriptOrgPointer; + getScriptBaseAddress(); + _scriptPointer = _scriptOrgPointer + oldoffs; + } + a = READ_LE_UINT32(_scriptPointer); + _scriptPointer += 4; + return a; +} + +int ScummEngine::fetchScriptDWordSigned() { + return (int32)fetchScriptDWord(); +} + int ScummEngine::readVar(uint var) { int a; diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index 091f2d55cc..9b1a3e8183 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -190,7 +190,7 @@ void ScummEngine_v100he::setupOpcodes() { OPCODE(o6_delaySeconds), OPCODE(o100_startSound), /* 78 */ - OPCODE(o6_invalid), + OPCODE(o80_sourceDebug), OPCODE(o100_setSpriteInfo), OPCODE(o6_stampObject), OPCODE(o72_startObject), diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp index 8b335bf425..3501a88d41 100644 --- a/scumm/script_v72he.cpp +++ b/scumm/script_v72he.cpp @@ -766,15 +766,7 @@ int ScummEngine_v72he::findObject(int x, int y, int num, int *args) { } void ScummEngine_v72he::o72_pushDWord() { - int a; - if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) { - uint32 oldoffs = _scriptPointer - _scriptOrgPointer; - getScriptBaseAddress(); - _scriptPointer = _scriptOrgPointer + oldoffs; - } - a = READ_LE_UINT32(_scriptPointer); - _scriptPointer += 4; - push(a); + push(fetchScriptDWordSigned()); } void ScummEngine_v72he::o72_getScriptString() { diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index 72e5890b11..3ac41d51b6 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -377,19 +377,11 @@ const char *ScummEngine_v8::getOpcodeDesc(byte i) { // In V8, the word size is 4 byte, not 2 bytes as in V6/V7 games uint ScummEngine_v8::fetchScriptWord() { - int a; - if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) { - uint32 oldoffs = _scriptPointer - _scriptOrgPointer; - getScriptBaseAddress(); - _scriptPointer = _scriptOrgPointer + oldoffs; - } - a = READ_LE_UINT32(_scriptPointer); - _scriptPointer += 4; - return a; + return fetchScriptDWord(); } int ScummEngine_v8::fetchScriptWordSigned() { - return (int32)fetchScriptWord(); + return (int32)fetchScriptDWordSigned(); } int ScummEngine_v8::readVar(uint var) { diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp index 46fa09962a..a810332c94 100644 --- a/scumm/script_v80he.cpp +++ b/scumm/script_v80he.cpp @@ -138,7 +138,7 @@ void ScummEngine_v80he::setupOpcodes() { OPCODE(o80_localizeArrayToRoom), OPCODE(o6_wordArrayIndexedWrite), /* 4C */ - OPCODE(o6_invalid), + OPCODE(o80_sourceDebug), OPCODE(o80_readConfigFile), OPCODE(o80_writeConfigFile), OPCODE(o6_wordVarInc), @@ -439,6 +439,11 @@ void ScummEngine_v80he::o80_localizeArrayToRoom() { localizeArray(slot, 0xFF); } +void ScummEngine_v80he::o80_sourceDebug() { + fetchScriptDWord(); + fetchScriptDWord(); +} + void ScummEngine_v80he::o80_readConfigFile() { byte option[128], section[128], filename[256]; ArrayHeader *ah; diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index e4a41c6f56..6708d072a2 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -136,7 +136,7 @@ void ScummEngine_v90he::setupOpcodes() { OPCODE(o80_localizeArrayToRoom), OPCODE(o6_wordArrayIndexedWrite), /* 4C */ - OPCODE(o6_invalid), + OPCODE(o80_sourceDebug), OPCODE(o80_readConfigFile), OPCODE(o80_writeConfigFile), OPCODE(o6_wordVarInc), diff --git a/scumm/scumm-md5.h b/scumm/scumm-md5.h index 9948a2ab27..f442f38ba3 100644 --- a/scumm/scumm-md5.h +++ b/scumm/scumm-md5.h @@ -1,5 +1,5 @@ /* - This file was generated by the md5table tool on Sat Jan 21 12:36:17 2006 + This file was generated by the md5table tool on Sat Feb 11 00:38:53 2006 DO NOT EDIT MANUALLY! */ @@ -80,6 +80,7 @@ static const MD5Table md5table[] = { { "2108d83dcf09f8adb4bc524669c8cf51", "PuttTime", Common::EN_USA, Common::kPlatformUnknown }, { "21a6592322f92550f144f68a8a4e685e", "dig", Common::FR_FRA, Common::kPlatformMacintosh }, { "21abe302e1b1e2b66d6f5c12e241ebfd", "freddicove", Common::RU_RUS, Common::kPlatformWindows }, + { "2232b0b9411575b1f9961713ebc9de61", "balloon", Common::ES_ESP, Common::kPlatformWindows }, { "225e18566e810c634bf7de63e7568e3e", "mustard", Common::EN_USA, Common::kPlatformUnknown }, { "22c9eb04455440131ffc157aeb8d40a8", "fbear", Common::EN_USA, Common::kPlatformWindows }, { "22d07d6c386c9c25aca5dac2a0c0d94b", "maniac", Common::SE_SWE, Common::kPlatformNES }, diff --git a/scumm/scumm.h b/scumm/scumm.h index 92c0ea54ad..d2ba99a355 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -677,6 +677,8 @@ protected: byte fetchScriptByte(); virtual uint fetchScriptWord(); virtual int fetchScriptWordSigned(); + uint fetchScriptDWord(); + int fetchScriptDWordSigned(); void ignoreScriptWord() { fetchScriptWord(); } void ignoreScriptByte() { fetchScriptByte(); } virtual void getResultPos(); diff --git a/tools/scumm-md5.txt b/tools/scumm-md5.txt index 7cbd0a4e4f..eb2ec3a13b 100644 --- a/tools/scumm-md5.txt +++ b/tools/scumm-md5.txt @@ -565,6 +565,7 @@ Putt-Putt and Pep's Balloon-O-Rama CD All en 8e3241ddd6c8dadf64305e8740d45e13 balloon Kirben CD Windows en d7b247c26bf1f01f8f7daf142be84de3 balloon iziku CD Windows ru 145bd3373574feb668cc2eea2ec6cf86 balloon sev + CD Windows es 2232b0b9411575b1f9961713ebc9de61 balloon exiltd Putt-Putt and Pep's Dog on a Stick CD All en eae95b2b3546d8ba86ae1d397c383253 dog Kirben -- cgit v1.2.3