protected override Statement RoomOps()
{
var subOp = ReadByte();
var exp = new MethodInvocation("RoomOps");
switch (subOp)
{
case 0x52: // SO_ROOM_PALETTE Set room palette
{
var d = Pop();
var c = Pop();
var b = Pop();
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetPalette")).AddArguments(d, a, b, c);
}
break;
case 0x57: // SO_ROOM_FADE Fade room
{
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "FadeRoom")).AddArguments(a);
}
break;
case 0x58: // SO_ROOM_RGB_INTENSITY Set room color intensity
{
var e = Pop();
var d = Pop();
var c = Pop();
var b = Pop();
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "DarkenPalette")).AddArguments(a, b, c, d, e);
}
break;
case 0x59: // SO_ROOM_TRANSFORM Transform room
{
var d = Pop();
var c = Pop();
var b = Pop();
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "RoomTransform")).AddArguments(a, b, c, d);
}
break;
case 0x5C: // SO_ROOM_NEW_PALETTE New palette
{
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetCurrentPalette")).AddArguments(a);
}
break;
case 0x5D: // SO_ROOM_SAVE_GAME Save game
{
exp = new MethodInvocation(new MemberAccess(exp, "SaveGame"));
}
break;
case 0x5E: // SO_ROOM_LOAD_GAME Load game
{
var saveSound = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "LoadGame")).AddArgument(saveSound);
}
break;
case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
{
var e = Pop();
var d = Pop();
var c = Pop();
var b = Pop();
var a = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "DesaturatePalette")).AddArguments(a, b, c, d, e);
}
break;
default:
throw new NotSupportedException(string.Format("RoomOps: default case {0:X2}", subOp));
}
return exp.ToStatement();
}