Add HE100 opcode difference for spyfox

Update HE issues

svn-id: r17058
This commit is contained in:
Travis Howell 2005-03-10 10:11:42 +00:00
parent f7770e3cfe
commit ab82349dd9
3 changed files with 65 additions and 5 deletions

9
TODO
View File

@ -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
==============

View File

@ -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();

View File

@ -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;