ScummDebugger::ScummDebugger(ScummEngine *s) : GUI::Debugger() { _vm = s; // Register variables registerVar("scumm_speed", &_vm->_fastMode); registerVar("scumm_room", &_vm->_currentRoom); registerVar("scumm_roomresource", &_vm->_roomResource); registerVar("scumm_vars", &_vm->_scummVars, _vm->_numVariables); // Register commands registerCmd("continue", WRAP_METHOD(ScummDebugger, cmdExit)); registerCmd("restart", WRAP_METHOD(ScummDebugger, Cmd_Restart)); registerCmd("actor", WRAP_METHOD(ScummDebugger, Cmd_Actor)); registerCmd("actors", WRAP_METHOD(ScummDebugger, Cmd_PrintActor)); registerCmd("box", WRAP_METHOD(ScummDebugger, Cmd_PrintBox)); registerCmd("matrix", WRAP_METHOD(ScummDebugger, Cmd_PrintBoxMatrix)); registerCmd("camera", WRAP_METHOD(ScummDebugger, Cmd_Camera)); registerCmd("room", WRAP_METHOD(ScummDebugger, Cmd_Room)); registerCmd("objects", WRAP_METHOD(ScummDebugger, Cmd_PrintObjects)); registerCmd("object", WRAP_METHOD(ScummDebugger, Cmd_Object)); registerCmd("script", WRAP_METHOD(ScummDebugger, Cmd_Script)); registerCmd("scr", WRAP_METHOD(ScummDebugger, Cmd_Script)); registerCmd("scripts", WRAP_METHOD(ScummDebugger, Cmd_PrintScript)); registerCmd("importres", WRAP_METHOD(ScummDebugger, Cmd_ImportRes)); if (_vm->_game.id == GID_LOOM) registerCmd("drafts", WRAP_METHOD(ScummDebugger, Cmd_PrintDraft)); if (_vm->_game.id == GID_MONKEY && _vm->_game.platform == Common::kPlatformSegaCD) registerCmd("passcode", WRAP_METHOD(ScummDebugger, Cmd_Passcode)); registerCmd("loadgame", WRAP_METHOD(ScummDebugger, Cmd_LoadGame)); registerCmd("savegame", WRAP_METHOD(ScummDebugger, Cmd_SaveGame)); registerCmd("debug", WRAP_METHOD(ScummDebugger, Cmd_Debug)); registerCmd("show", WRAP_METHOD(ScummDebugger, Cmd_Show)); registerCmd("hide", WRAP_METHOD(ScummDebugger, Cmd_Hide)); registerCmd("imuse", WRAP_METHOD(ScummDebugger, Cmd_IMuse)); registerCmd("resetcursors", WRAP_METHOD(ScummDebugger, Cmd_ResetCursors)); }
MystConsole::MystConsole(MohawkEngine_Myst *vm) : GUI::Debugger(), _vm(vm) { registerCmd("changeCard", WRAP_METHOD(MystConsole, Cmd_ChangeCard)); registerCmd("curCard", WRAP_METHOD(MystConsole, Cmd_CurCard)); registerCmd("var", WRAP_METHOD(MystConsole, Cmd_Var)); registerCmd("curStack", WRAP_METHOD(MystConsole, Cmd_CurStack)); registerCmd("changeStack", WRAP_METHOD(MystConsole, Cmd_ChangeStack)); registerCmd("drawImage", WRAP_METHOD(MystConsole, Cmd_DrawImage)); registerCmd("drawRect", WRAP_METHOD(MystConsole, Cmd_DrawRect)); registerCmd("setResourceEnable", WRAP_METHOD(MystConsole, Cmd_SetResourceEnable)); registerCmd("playSound", WRAP_METHOD(MystConsole, Cmd_PlaySound)); registerCmd("stopSound", WRAP_METHOD(MystConsole, Cmd_StopSound)); registerCmd("playMovie", WRAP_METHOD(MystConsole, Cmd_PlayMovie)); registerCmd("disableInitOpcodes", WRAP_METHOD(MystConsole, Cmd_DisableInitOpcodes)); registerCmd("cache", WRAP_METHOD(MystConsole, Cmd_Cache)); registerCmd("resources", WRAP_METHOD(MystConsole, Cmd_Resources)); registerCmd("quickTest", WRAP_METHOD(MystConsole, Cmd_QuickTest)); registerVar("show_resource_rects", &_vm->_showResourceRects); }
RivenConsole::RivenConsole(MohawkEngine_Riven *vm) : GUI::Debugger(), _vm(vm) { registerCmd("changeCard", WRAP_METHOD(RivenConsole, Cmd_ChangeCard)); registerCmd("curCard", WRAP_METHOD(RivenConsole, Cmd_CurCard)); registerCmd("dumpCard", WRAP_METHOD(RivenConsole, Cmd_DumpCard)); registerCmd("var", WRAP_METHOD(RivenConsole, Cmd_Var)); registerCmd("playSound", WRAP_METHOD(RivenConsole, Cmd_PlaySound)); registerCmd("playSLST", WRAP_METHOD(RivenConsole, Cmd_PlaySLST)); registerCmd("stopSound", WRAP_METHOD(RivenConsole, Cmd_StopSound)); registerCmd("curStack", WRAP_METHOD(RivenConsole, Cmd_CurStack)); registerCmd("dumpStack", WRAP_METHOD(RivenConsole, Cmd_DumpStack)); registerCmd("changeStack", WRAP_METHOD(RivenConsole, Cmd_ChangeStack)); registerCmd("hotspots", WRAP_METHOD(RivenConsole, Cmd_Hotspots)); registerCmd("zipMode", WRAP_METHOD(RivenConsole, Cmd_ZipMode)); registerCmd("dumpScript", WRAP_METHOD(RivenConsole, Cmd_DumpScript)); registerCmd("listZipCards", WRAP_METHOD(RivenConsole, Cmd_ListZipCards)); registerCmd("getRMAP", WRAP_METHOD(RivenConsole, Cmd_GetRMAP)); registerCmd("combos", WRAP_METHOD(RivenConsole, Cmd_Combos)); registerCmd("sliderState", WRAP_METHOD(RivenConsole, Cmd_SliderState)); registerVar("show_hotspots", &_vm->_showHotspots); }
int C_THISCLASS::render(char visdata[2][2][576], int isBeat, int *framebuffer, int *fbout, int w, int h) { //pow(sin(d),dpos)*1.7 if (need_recompile) { int err=0; int x; EnterCriticalSection(&rcs); if (!var_b || g_reset_vars_on_recompile) { clearVars(); var_x = registerVar("x"); var_y = registerVar("y"); var_w = registerVar("w"); var_h = registerVar("h"); var_b = registerVar("b"); var_alpha = registerVar("alpha"); inited=0; } need_recompile=0; for (x = 0; x < 3; x ++) { freeCode(codehandle[x]); codehandle[x]=compileCode(effect_exp[x].get()); } LeaveCriticalSection(&rcs); } *var_w=w; *var_h=h; *var_b=isBeat?1.0:0.0; if (isBeat&0x80000000) return 0; if (codehandle[0] && (!inited || m_lasth != h || m_lastw != w)) { m_lastw=w; m_lasth=h; *var_x=0; *var_y=0; *var_alpha=0.5; executeCode(codehandle[0],visdata); inited=1; } executeCode(codehandle[1],visdata); if (isBeat) executeCode(codehandle[2],visdata); int doblend=blend; int ialpha=127; if (doblend) { ialpha=(int)(*var_alpha*255.0); if (ialpha <= 0) return 0; if (ialpha >= 255) doblend=0; } int *inptr=framebuffer; int *blendptr=framebuffer; int *outptr=fbout; int xa=(int)*var_x; int ya=(int)*var_y; // var_x, var_y at this point tell us how to shift, and blend also tell us what to do. if (!subpixel) { int endy=h+ya; int endx=w+xa; int x,y; if (endx > w) endx=w; if (endy > h) endy=h; if (ya < 0) inptr += -ya*w; if (ya > h) ya=h; if (xa > w) xa=w; for (y = 0; y < ya; y ++) { x=w; if (!doblend) while (x--) *outptr++ = 0; else while (x--) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } for (; y < endy; y ++) { int *ip=inptr; if (xa < 0) inptr += -xa; if (!doblend) { for (x = 0; x < xa; x ++) *outptr++=0; for (; x < endx; x ++) *outptr++=*inptr++; for (; x < w; x ++) *outptr++=0; } else { for (x = 0; x < xa; x ++) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); for (; x < endx; x ++) *outptr++ = BLEND_ADJ(*inptr++,*blendptr++,ialpha); for (; x < w; x ++) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } inptr=ip+w; } for (; y < h; y ++) { x=w; if (!doblend) while (x--) *outptr++ = 0; else while (x--) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } } else // bilinear filtering version { int xpart,ypart; { double vx=*var_x; double vy=*var_y; xpart=(int) ((vx - (int)vx)*255.0); if (xpart < 0) xpart=-xpart; else { xa++; xpart=255-xpart; } if (xpart < 0) xpart=0; if (xpart > 255) xpart=255; ypart=(int) ((vy - (int)vy)*255.0); if (ypart < 0) ypart=-ypart; else { ya++; ypart=255-ypart; } if (ypart < 0) ypart=0; if (ypart > 255) ypart=255; } int x,y; if (ya < 1-h) ya=1-h; if (xa < 1-w) xa=1-w; if (ya > h-1) ya=h-1; if (xa > w-1) xa=w-1; if (ya < 0) inptr += -ya*w; int endy=h-1+ya; int endx=w-1+xa; if (endx > w-1) endx=w-1; if (endy > h-1) endy=h-1; if (endx < 0) endx=0; if (endy < 0) endy=0; for (y = 0; y < ya; y ++) { x=w; if (!doblend) while (x--) *outptr++ = 0; else while (x--) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } for (; y < endy; y ++) { int *ip=inptr; if (xa < 0) inptr += -xa; if (!doblend) { for (x = 0; x < xa; x ++) *outptr++=0; for (; x < endx; x ++) *outptr++=BLEND4((unsigned int *)inptr++,w,xpart,ypart); for (; x < w; x ++) *outptr++=0; } else { for (x = 0; x < xa; x ++) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); for (; x < endx; x ++) *outptr++ = BLEND_ADJ(BLEND4((unsigned int *)inptr++,w,xpart,ypart),*blendptr++,ialpha); for (; x < w; x ++) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } inptr=ip+w; } for (; y < h; y ++) { x=w; if (!doblend) while (x--) *outptr++ = 0; else while (x--) *outptr++ = BLEND_ADJ(0,*blendptr++,ialpha); } } #ifndef NO_MMX __asm emms; #endif return 1; }
reShader::reShader() { program = 0; registerVar(new reShaderVar("viewMatrix", viewMatrix)); registerVar(new reShaderVar("projMatrix", projMatrix)); registerVar(new reShaderVar("worldMatrix", worldMatrix)); registerVar(new reShaderVar("diffuseTexture", diffuseTexture, reShaderVar::sampler)); registerVar(new reShaderVar("diffuseColor", diffuseColor)); registerVar(new reShaderVar("cellSize", cellSize)); registerVar(new reShaderVar("boneMatrices", boneMatrices)); registerVar(new reShaderVar("lightMatrices", lightMatrices)); registerVar(new reShaderVar("lightMatrix", lightMatrix)); registerVar(new reShaderVar("lightViewMatrix", lightViewMatrix)); registerVar(new reShaderVar("lightProjMatrix", lightProjMatrix)); registerVar(new reShaderVar("biasMatrix", biasMatrix)); registerVar(new reShaderVar("splatTextures", splatTextures, reShaderVar::sampler, 4)); registerVar(new reShaderVar("shadowMap", shadowMap, reShaderVar::sampler)); registerVar(new reShaderVar("lightNearDistance", lightNearDistance)); registerVar(new reShaderVar("lightFarDistance", lightFarDistance)); registerVar(new reShaderVar("nearDistance", nearDistance)); registerVar(new reShaderVar("farDistance", farDistance)); registerVar(new reShaderVar("position", position, reShaderVar::attribute)); registerVar(new reShaderVar("normal", normal, reShaderVar::attribute)); registerVar(new reShaderVar("uv)", uv, reShaderVar::attribute)); registerVar(new reShaderVar("boneWeights", boneWeights, reShaderVar::attribute)); registerVar(new reShaderVar("boneIds", boneIds, reShaderVar::attribute)); }