Fix dup_n, billboard in circdemo works now.

svn-id: r17024
This commit is contained in:
Travis Howell 2005-03-07 06:06:22 +00:00
parent 1e07216b85
commit 26da9cc393
3 changed files with 12 additions and 10 deletions

View File

@ -1013,7 +1013,7 @@ public:
protected:
/* HE version 90 script opcodes */
void o90_dup();
void o90_dup_n();
void o90_min();
void o90_max();
void o90_sin();

View File

@ -92,7 +92,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o100_drawObject),
/* 28 */
OPCODE(o6_dup),
OPCODE(o90_dup),
OPCODE(o90_dup_n),
OPCODE(o6_endCutscene),
OPCODE(o6_stopObjectCode),
/* 2C */

View File

@ -53,7 +53,7 @@ void ScummEngine_v90he::setupOpcodes() {
/* 08 */
OPCODE(o6_invalid),
OPCODE(o6_invalid),
OPCODE(o90_dup),
OPCODE(o90_dup_n),
OPCODE(o6_wordArrayIndexedRead),
/* 0C */
OPCODE(o6_dup),
@ -374,14 +374,16 @@ const char *ScummEngine_v90he::getOpcodeDesc(byte i) {
return _opcodesV90he[i].desc;
}
void ScummEngine_v90he::o90_dup() {
int a, num;
void ScummEngine_v90he::o90_dup_n() {
int num;
int args[16];
num = fetchScriptWord();
for (int i = 0; i < num; i++) {
a = pop();
push(a);
push(a);
push(fetchScriptWord());
num = getStackList(args, ARRAYSIZE(args));
for (int i = 0; i < 2; i++) {
for (int j = 0; j < num; j++)
push(args[j]);
}
}