aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO9
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v100he.cpp60
3 files changed, 65 insertions, 5 deletions
diff --git a/TODO b/TODO
index f3e7b3e1c3..61e1876b56 100644
--- a/TODO
+++ b/TODO
@@ -250,25 +250,26 @@ SCUMM
- Add rename/delete file support, to make file opcodes function correctly
- Fix nukeArrays, it is nuking wrong arrays in stopObjectCode() sometimes
* Humongous entertainment >= v7 titles:
- - Add support for palette slots (_numPalettes * 1024) in HE99+ games.(For ff5demo/freddicove)
+ - Add support for palette slots (_numPalettes * 1024) in HE99+ games.(For ff5demo/freddicove/pajama3)
- Add mask support to akos codec32, charset shouldn't be drawn under moving actors
- Add support for song sync. in HE80+ games. (Used in ff2-demo/freddi2/pajama)
- Add support for SBNG sound resources for songs (Used in ff2-demo/freddi2/pajama)
- Add support for processWizImage mode 6 (For lost/smaller)
- Add support for processWizImage mode 9 (For freddicove/bb2demo/footdemo)
- Add support for additional drawWizImage flags (cyx)
+ - Add support for drawWizComplexPolygon (For Ski Ride & Credits of pajama3)
- Add shadows support for akos codecs in HE90+ games, uses XMAP resources.
- Add arrayOps case 127 (For chase/lost/smaller/bb2demo/footdemo).
- Add support for array sorting (Used in lost/smaller).
- - Fix actor glitches in pajama2
+ - Fix actor parts disappearing in pajama2/racedemo (Requires to XMAP support?)
- Fix cursor transparency in puzzle of pajama2
- Fix sprites graphical glitches
- Fix inventory background/items disappearing in puttzoo/zoodemo/putttime/timedemo
- Add support for o90_getPolygonOverlap case9 (Used in lost/smaller)
- Add support for o90_getPolygonOverlap case10 (Used in Caramel Pit of pajama3)
- Add support for floodState (For puzzle in pajama2)
- - Add support for o80_unknownE0 (For binoculars in pajama2 and black board in freddi2)
- - Add support for various new opcodes
+ - Add support for o80_unknownE0 type1 (For binoculars in pajama2)
+ - Add support for o80_unknownE0 type2 (For black board in freddi2 and paper in spyfox)
Broken Sword 2
==============
diff --git a/scumm/intern.h b/scumm/intern.h
index c2018f315a..f6d63c4f61 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -1073,6 +1073,7 @@ protected:
void o100_dim2dimArray();
void o100_redim2dimArray();
void o100_dimArray();
+ void o100_unknownE0();
void o100_drawObject();
void o100_setSpriteGroupInfo();
void o100_resourceRoutines();
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index f9143c32e4..d3019b2f2b 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -88,7 +88,7 @@ void ScummEngine_v100he::setupOpcodes() {
/* 24 */
OPCODE(o72_drawWizImage),
OPCODE(o80_drawWizPolygon),
- OPCODE(o6_invalid),
+ OPCODE(o100_unknownE0),
OPCODE(o100_drawObject),
/* 28 */
OPCODE(o6_dup),
@@ -812,6 +812,64 @@ void ScummEngine_v100he::o100_dimArray() {
defineArray(fetchScriptWord(), data, 0, 0, 0, pop());
}
+void ScummEngine_v100he::o100_unknownE0() {
+ // wizImage related
+ int b, c, d, num, x1, y1, type = 0;
+
+ b = pop();
+ num = pop();
+ c = pop();
+ d = pop();
+ y1 = pop();
+ x1 = pop();
+
+ byte subOp = fetchScriptByte();
+
+ switch (subOp) {
+ case 1:
+ {
+ Actor *a = derefActorSafe(num, "o100_unknownE0");
+ int top_actor = a->top;
+ int bottom_actor = a->bottom;
+ a->drawToBackBuf = true;
+ a->needRedraw = true;
+ a->drawActorCostume();
+ a->drawToBackBuf = false;
+ a->needRedraw = true;
+ a->drawActorCostume();
+ a->needRedraw = false;
+
+ if (a->top > top_actor)
+ a->top = top_actor;
+ if (a->bottom < bottom_actor)
+ a->bottom = bottom_actor;
+
+ type = 2;
+ }
+ break;
+ case 20:
+ type = 1;
+ break;
+ case 40:
+ {
+ WizImage wi;
+ wi.flags = 0;
+ wi.y1 = y1;
+ wi.x1 = x1;
+ wi.resNum = num;
+ wi.state = 0;
+ displayWizImage(&wi);
+
+ type = 3;
+ }
+ break;
+ default:
+ error("o100_unknownE0: default case %d", subOp);
+ }
+
+ debug(1,"o100_unknownE0 stub: type %d (%d, num %d, %d, %d, y %d, x %d)", type, b, num, c, d, y1, x1);
+}
+
void ScummEngine_v100he::o100_drawObject() {
byte subOp = fetchScriptByte();
int state, y, x;