[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.1,2.2 script_v6.cpp,1.10,1.11 script_v8.cpp,2.1,2.2
Max Horn
fingolfin at users.sourceforge.net
Sun Dec 22 15:27:02 CET 2002
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,NONE,2.1 script_v8.cpp,NONE,2.1 module.mk,1.4,1.5 resource.cpp,1.31,1.32 resource_v2.cpp,1.7,1.8 resource_v3.cpp,1.4,1.5 resource_v4.cpp,1.3,1.4 saveload.cpp,1.34,1.35 script_v5.cpp,1.4,1.5 script_v6.cpp,1.9,1.10 scumm.h,1.89,1.90 scummvm.cpp,2.1,2.2 vars.cpp,1.6,1.7
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.2,2.3 script_v8.cpp,2.2,2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv16539/scumm
Modified Files:
intern.h script_v6.cpp script_v8.cpp
Log Message:
some more V8 opcode flesh
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -d -r2.1 -r2.2
--- intern.h 22 Dec 2002 21:58:15 -0000 2.1
+++ intern.h 22 Dec 2002 23:26:10 -0000 2.2
@@ -262,7 +262,7 @@
void o6_setObjectXY();
void o6_stopObjectCode();
void o6_endCutscene();
- void o6_cutScene();
+ void o6_cutscene();
void o6_stopMusic();
void o6_freezeUnfreeze();
void o6_cursorCommand();
@@ -402,6 +402,8 @@
void o8_pushNumber();
void o8_pushVariable();
+ void o8_arrayRead();
+ void o8_arrayIndexedRead();
void o8_dup();
void o8_pop();
void o8_not();
@@ -422,6 +424,15 @@
void o8_mod();
void o8_jump();
void o8_breakHere();
+ void o8_wait();
+ void o8_cutscene();
+ void o8_endCutscene();
+ void o8_cursorCommand();
+ void o8_resourceRoutines();
+ void o8_roomOps();
+ void o8_actorSet();
+ void o8_cameraStuff();
+ void o8_verbOps();
void o8_startScript();
void o8_startObject();
};
Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- script_v6.cpp 22 Dec 2002 21:58:15 -0000 1.10
+++ script_v6.cpp 22 Dec 2002 23:26:10 -0000 1.11
@@ -172,7 +172,7 @@
OPCODE(o6_stopObjectCode),
OPCODE(o6_endCutscene),
/* 68 */
- OPCODE(o6_cutScene),
+ OPCODE(o6_cutscene),
OPCODE(o6_stopMusic),
OPCODE(o6_freezeUnfreeze),
OPCODE(o6_cursorCommand),
@@ -799,7 +799,7 @@
endCutscene();
}
-void Scumm_v6::o6_cutScene()
+void Scumm_v6::o6_cutscene()
{
int16 args[16];
getStackList(args, sizeof(args) / sizeof(args[0]));
Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -d -r2.1 -r2.2
--- script_v8.cpp 22 Dec 2002 21:58:15 -0000 2.1
+++ script_v8.cpp 22 Dec 2002 23:26:10 -0000 2.2
@@ -38,9 +38,9 @@
OPCODE(o8_unknown),
OPCODE(o8_pushNumber),
OPCODE(o8_pushVariable),
- OPCODE(o8_unknown),
+ OPCODE(o8_arrayRead),
/* 04 */
- OPCODE(o8_unknown),
+ OPCODE(o8_arrayIndexedRead),
OPCODE(o8_dup),
OPCODE(o8_pop),
OPCODE(o8_not),
@@ -166,7 +166,7 @@
OPCODE(o8_breakHere),
/* 68 */
OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_wait),
OPCODE(o8_unknown),
OPCODE(o8_unknown),
/* 6C */
@@ -196,8 +196,8 @@
OPCODE(o8_unknown),
/* 80 */
OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_cutscene),
+ OPCODE(o8_endCutscene),
OPCODE(o8_unknown),
/* 84 */
OPCODE(o8_unknown),
@@ -230,7 +230,7 @@
OPCODE(o8_unknown),
OPCODE(o8_unknown),
/* 9C */
- OPCODE(o8_unknown),
+ OPCODE(o8_cursorCommand),
OPCODE(o8_unknown),
OPCODE(o8_unknown),
OPCODE(o8_unknown),
@@ -247,12 +247,12 @@
/* A8 */
OPCODE(o8_unknown),
OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_resourceRoutines),
+ OPCODE(o8_roomOps),
/* AC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actorSet),
+ OPCODE(o8_cameraStuff),
+ OPCODE(o8_verbOps),
OPCODE(o8_unknown),
/* B0 */
OPCODE(o8_unknown),
@@ -380,6 +380,33 @@
error("Invalid opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
}
+void Scumm_v8::o8_pushNumber()
+{
+ // TODO - is this correct?!?
+ push((int16)fetchScriptWord());
+}
+
+void Scumm_v8::o8_pushVariable()
+{
+ // TODO - is this correct?!?
+ push(readVar(fetchScriptWord()));
+}
+
+void Scumm_v8::o8_arrayRead()
+{
+ // TODO - is this correct?!?
+ int base = pop();
+ push(readArray(fetchScriptWord(), 0, base));
+}
+
+void Scumm_v8::o8_arrayIndexedRead()
+{
+ // TODO - is this correct?!?
+ int base = pop();
+ int idx = pop();
+ push(readArray(fetchScriptWord(), idx, base));
+}
+
void Scumm_v8::o8_dup()
{
int a = pop();
@@ -487,35 +514,223 @@
push(pop() % a);
}
+void Scumm_v8::o8_jump()
+{
+ // TODO - is this correct?!?
+ _scriptPointer += (int16)fetchScriptWord();
+}
+
void Scumm_v8::o8_breakHere()
{
// TODO
}
-void Scumm_v8::o8_pushNumber()
+void Scumm_v8::o8_wait()
{
// TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0x1E: // SO_WAIT_FOR_ACTOR Wait for actor (to finish current action?)
+ case 0x1F: // SO_WAIT_FOR_MESSAGE Wait for message
+ case 0x20: // SO_WAIT_FOR_CAMERA Wait for camera (to finish current action?)
+ case 0x21: // SO_WAIT_FOR_SENTENCE
+ case 0x22: // SO_WAIT_FOR_ANIMATION
+ case 0x23: // SO_WAIT_FOR_TURN
+ default:
+ error("o8_wait: default case %d", subOp);
+ }
}
-void Scumm_v8::o8_startObject()
+void Scumm_v8::o8_cutscene()
{
// TODO
}
-void Scumm_v8::o8_startScript()
+void Scumm_v8::o8_endCutscene()
{
// TODO
}
-void Scumm_v8::o8_pushVariable()
+void Scumm_v8::o8_cursorCommand()
{
// TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0xDC: // SO_CURSOR_ON Turn cursor on
+ case 0xDD: // SO_CURSOR_OFF Turn cursor off
+ case 0xDE: // SO_CURSOR_SOFT_ON Turn soft cursor on
+ case 0xDF: // SO_CURSOR_SOFT_OFF Turn soft cursor off
+ case 0xE0: // SO_USERPUT_ON
+ case 0xE1: // SO_USERPUT_OFF
+ case 0xE2: // SO_USERPUT_SOFT_ON
+ case 0xE3: // SO_USERPUT_SOFT_OFF
+ case 0xE4: // SO_CURSOR_IMAGE Set cursor image
+ case 0xE5: // SO_CURSOR_HOTSPOT Set cursor hotspot
+ case 0xE6: // SO_CURSOR_TRANSPARENT Set cursor transparent color
+ case 0xE7: // SO_CHARSET_SET
+ case 0xE8: // SO_CHARSET_COLOR
+ case 0xE9: // SO_CURSOR_PUT
+ default:
+ error("o8_cursorCommand: default case %d", subOp);
+ }
}
-void Scumm_v8::o8_jump()
+void Scumm_v8::o8_resourceRoutines()
{
// TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0x3C: // SO_HEAP_LOAD_CHARSET Load character set to heap
+ case 0x3D: // SO_HEAP_LOAD_COSTUME Load costume to heap
+ case 0x3E: // SO_HEAP_LOAD_OBJECT Load object to heap
+ case 0x3F: // SO_HEAP_LOAD_ROOM Load room to heap
+ case 0x40: // SO_HEAP_LOAD_SCRIPT Load script to heap
+ case 0x41: // SO_HEAP_LOAD_SOUND Load sound to heap
+ case 0x42: // SO_HEAP_LOCK_COSTUME Lock costume in heap
+ case 0x43: // SO_HEAP_LOCK_ROOM Lock room in heap
+ case 0x44: // SO_HEAP_LOCK_SCRIPT Lock script in heap
+ case 0x45: // SO_HEAP_LOCK_SOUND Lock sound in heap
+ case 0x46: // SO_HEAP_UNLOCK_COSTUME Unlock costume
+ case 0x47: // SO_HEAP_UNLOCK_ROOM Unlock room
+ case 0x48: // SO_HEAP_UNLOCK_SCRIPT Unlock script
+ case 0x49: // SO_HEAP_UNLOCK_SOUND Unlock sound
+ case 0x4A: // SO_HEAP_NUKE_COSTUME Remove costume from heap
+ case 0x4B: // SO_HEAP_NUKE_ROOM Remove room from heap
+ case 0x4C: // SO_HEAP_NUKE_SCRIPT Remove script from heap
+ case 0x4D: // SO_HEAP_NUKE_SOUND Remove sound from heap
+ default:
+ error("o8_resourceRoutines: default case %d", subOp);
+ }
}
+
+void Scumm_v8::o8_roomOps()
+{
+ // TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0x52: // SO_ROOM_PALETTE Set room palette
+// case 0x53: // SO_339
+// case 0x54: // SO_340
+ case 0x55: // SO_ROOM_INTENSITY Set room intensity
+// case 0x56: // SO_342
+ case 0x57: // SO_ROOM_FADE Fade room
+ case 0x58: // SO_ROOM_RGB_INTENSITY Set room color intensity
+ case 0x59: // SO_ROOM_TRANSFORM Transform room
+ case 0x5A: // SO_ROOM_CYCLE_SPEED Set palette cycling speed
+ case 0x5B: // SO_ROOM_COPY_PALETTE Copy palette
+ case 0x5C: // SO_ROOM_NEW_PALETTE Create new palette
+ case 0x5D: // SO_ROOM_SAVE_GAME Save game
+ case 0x5E: // SO_ROOM_LOAD_GAME Load game
+ case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
+ default:
+ error("o8_roomOps: default case %d", subOp);
+ }
+}
+
+void Scumm_v8::o8_actorSet()
+{
+ // TODO
+ byte subOp = fetchScriptByte();
+ Actor *a;
+
+ a = derefActorSafe(_curActor, "o8_actorSet");
+ if (!a)
+ return;
+
+ switch (subOp) {
+ case 0x64: // SO_ACTOR_COSTUME Set actor costume
+ case 0x65: // SO_ACTOR_STEP_DIST Set actor width of steps
+// case 0x66: // SO_358
+ case 0x67: // SO_ACTOR_ANIMATION_DEFAULT Set actor animation to default
+ case 0x68: // SO_ACTOR_ANIMATION_INIT Initialize animation
+ case 0x69: // SO_ACTOR_ANIMATION_TALK Set actor animation to talk animation
+ case 0x6A: // SO_ACTOR_ANIMATION_WALK Set actor animation to walk animation
+ case 0x6B: // SO_ACTOR_ANIMATION_STAND Set actor animation to standing animation
+ case 0x6C: // SO_ACTOR_ANIMATION_SPEED Set speed of animation
+ case 0x6D: // SO_ACTOR_DEFAULT
+ case 0x6E: // SO_ACTOR_ELEVATION
+ case 0x6F: // SO_ACTOR_PALETTE Set actor palette
+ case 0x70: // SO_ACTOR_TALK_COLOR Set actor talk color
+ case 0x71: // SO_ACTOR_NAME Set name of actor
+ case 0x72: // SO_ACTOR_WIDTH Set width of actor
+ case 0x73: // SO_ACTOR_SCALE Set scaling of actor
+ case 0x74: // SO_ACTOR_NEVER_ZCLIP ?
+ case 0x75: // SO_ACTOR_ALWAYS_ZCLIP ?
+ case 0x76: // SO_ACTOR_IGNORE_BOXES Make actor ignore boxes
+ case 0x77: // SO_ACTOR_FOLLOW_BOXES Make actor follow boxes
+ case 0x78: // SO_ACTOR_SPECIAL_DRAW
+ case 0x79: // SO_ACTOR_TEXT_OFFSET Set text offset relative to actor
+ case 0x7A: // SO_ACTOR_INIT Initialize actor
+ case 0x7B: // SO_ACTOR_VARIABLE Set actor variable
+ case 0x7C: // SO_ACTOR_IGNORE_TURNS_ON Make actor ignore turns
+ case 0x7D: // SO_ACTOR_IGNORE_TURNS_OFF Make actor follow turns
+ case 0x7E: // SO_ACTOR_NEW New actor
+ case 0x7F: // SO_ACTOR_DEPTH Set actor Z position
+ case 0x80: // SO_ACTOR_STOP
+ case 0x81: // SO_ACTOR_FACE Make actor face angle
+ case 0x82: // SO_ACTOR_TURN Turn actor
+ case 0x83: // SO_ACTOR_WALK_SCRIPT Set walk script for actor?
+ case 0x84: // SO_ACTOR_TALK_SCRIPT Set talk script for actor?
+ case 0x85: // SO_ACTOR_WALK_PAUSE
+ case 0x86: // SO_ACTOR_WALK_RESUME
+ case 0x87: // SO_ACTOR_VOLUME Set volume of actor speech
+ case 0x88: // SO_ACTOR_FREQUENCY Set frequency of actor speech
+ case 0x89: // SO_ACTOR_PAN
+ default:
+ error("o8_actorset: default case %d", subOp);
+ }
+}
+
+void Scumm_v8::o8_cameraStuff()
+{
+ // TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0x32: // SO_CAMERA_PAUSE
+ case 0x33: // SO_CAMERA_RESUME
+ default:
+ error("o8_cameraStuff: default case %d", subOp);
+ }
+}
+
+void Scumm_v8::o8_verbOps()
+{
+ // TODO
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 0x96: // SO_VERB_INIT Choose verb number for editing
+ case 0x97: // SO_VERB_NEW New verb
+ case 0x98: // SO_VERB_DELETE Delete verb
+ case 0x99: // SO_VERB_NAME Set verb name
+ case 0x9A: // SO_VERB_AT Set verb (X,Y) placement
+ case 0x9B: // SO_VERB_ON Turn verb on
+ case 0x9C: // SO_VERB_OFF Turn verb off
+ case 0x9D: // SO_VERB_COLOR Set verb color
+ case 0x9E: // SO_VERB_HICOLOR Set verb highlighted color
+// case 0x9F: // SO_415
+ case 0xA0: // SO_VERB_DIMCOLOR Set verb dimmed (disabled) color
+ case 0xA1: // SO_VERB_DIM
+ case 0xA2: // SO_VERB_KEY Set keypress to associate with verb
+ case 0xA3: // SO_VERB_IMAGE Set verb image
+ case 0xA4: // SO_VERB_NAME_STR Set verb name
+ case 0xA5: // SO_VERB_CENTER Center verb
+ case 0xA6: // SO_VERB_CHARSET Choose charset for verb
+ case 0xA7: // SO_VERB_LINE_SPACING Choose linespacing for verb
+ default:
+ error("o8_verbops: default case %d", subOp);
+ }
+}
+
+void Scumm_v8::o8_startObject()
+{
+ // TODO
+}
+
+void Scumm_v8::o8_startScript()
+{
+ // TODO
+}
+
/*
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,NONE,2.1 script_v8.cpp,NONE,2.1 module.mk,1.4,1.5 resource.cpp,1.31,1.32 resource_v2.cpp,1.7,1.8 resource_v3.cpp,1.4,1.5 resource_v4.cpp,1.3,1.4 saveload.cpp,1.34,1.35 script_v5.cpp,1.4,1.5 script_v6.cpp,1.9,1.10 scumm.h,1.89,1.90 scummvm.cpp,2.1,2.2 vars.cpp,1.6,1.7
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.2,2.3 script_v8.cpp,2.2,2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list