int __cdecl ILoad_2() { int v0; // eax int v1; // eax unsigned short v2; // dx int result; // eax v0 = *(unsigned char *)tbuff << 24; tbuff = (char *)tbuff + 1; v1 = (*(unsigned char *)tbuff << 16) | v0; _LOBYTE(v2) = 0; tbuff = (char *)tbuff + 1; _HIBYTE(v2) = *(_BYTE *)tbuff; tbuff = (char *)tbuff + 1; result = *(unsigned char *)tbuff | v2 | v1; tbuff = (char *)tbuff + 1; return result; }
void __cdecl CheckTriggers() { int *v0; // edi int v1; // esi int v2; // ecx int v3; // eax int v4; // edx signed int v5; // edx int v6; // eax char v7; // al int v8; // ecx int v9; // [esp-4h] [ebp-20h] int x; // [esp+Ch] [ebp-10h] int y; // [esp+10h] [ebp-Ch] int v12; // [esp+14h] [ebp-8h] int error_id; // [esp+1Bh] [ebp-1h] if ( plr[myplr]._pmode ) return; v12 = 0; if ( trigflag[4] <= 0 ) return; v0 = &trigs[0]._tmsg; while ( 1 ) { v1 = myplr; v2 = plr[myplr].WorldX; if ( v2 != *(v0 - 2) ) goto LABEL_34; v3 = plr[v1].WorldY; if ( v3 != *(v0 - 1) ) goto LABEL_34; v4 = *v0; if ( *v0 == WM_DIABNEXTLVL ) { if ( pcurs >= CURSOR_FIRSTITEM && DropItemBeforeTrig() ) return; v6 = currlevel + 1; goto LABEL_32; } if ( *v0 == 1027 ) { if ( pcurs >= CURSOR_FIRSTITEM && DropItemBeforeTrig() ) return; v6 = currlevel - 1; LABEL_32: v9 = v6; goto LABEL_33; } if ( *v0 != 1028 ) break; StartNewLvl(myplr, v4, ReturnLvl); LABEL_34: ++v12; v0 += 4; if ( v12 >= trigflag[4] ) return; } if ( *v0 != 1031 ) { if ( *v0 == 1032 ) { TWarpFrom = currlevel; StartNewLvl(myplr, v4, 0); } else { TermMsg("Unknown trigger msg"); } goto LABEL_34; } if ( gbMaxPlayers == 1 ) goto LABEL_46; v5 = 0; if ( v0[1] == 5 && plr[v1]._pLevel < 8 ) { v5 = 1; x = plr[myplr].WorldX; _LOBYTE(y) = v3 + 1; _LOBYTE(error_id) = 40; } if ( v0[1] == 9 && plr[v1]._pLevel < 13 ) { v5 = 1; _LOBYTE(x) = v2 + 1; y = plr[v1].WorldY; _LOBYTE(error_id) = 41; } if ( v0[1] == 13 && plr[v1]._pLevel < 17 ) { x = plr[myplr].WorldX; v5 = 1; _LOBYTE(y) = v3 + 1; _LOBYTE(error_id) = 42; } if ( !v5 ) { LABEL_46: v9 = v0[1]; LABEL_33: StartNewLvl(myplr, *v0, v9); goto LABEL_34; } v7 = plr[myplr]._pClass; switch ( v7 ) { case UI_WARRIOR: v8 = PS_WARR43; goto LABEL_42; case UI_ROGUE: v8 = PS_ROGUE43; goto LABEL_42; case UI_SORCERER: v8 = PS_MAGE43; LABEL_42: PlaySFX(v8); break; } _LOBYTE(v2) = error_id; InitDiabloMsg(v2); NetSendCmdLoc(1u, 1u, x, y); }
static void u12hw_SetupPreviewCondition( U12_Device *dev ) { int i, c; u_long channel; SANE_Byte rb[100]; DBG( _DBG_INFO, "u12_SetupPreviewCondition()\n" ); u12hw_SetGeneralRegister( dev ); u12io_RegisterToScanner( dev, REG_RESETMTSC ); _DODELAY(250); /* ------- Set the max. read fifo to Asic ------- */ memset( dev->scanStates, 0, _SCANSTATE_BYTES ); if( dev->DataInf.xyAppDpi.x >= 38 ) { /* 38 <= x <= 75 */ for(i = 0; i < _SCANSTATE_BYTES; i++ ) dev->scanStates[i] = 0xad; } else if( dev->DataInf.xyAppDpi.x >= 19 ) { /* 19 <= x <= 30(37) */ u_short *pState = (u_short*)dev->scanStates; for( i = 0; i < (_SCANSTATE_BYTES / 2); i++ ) pState[i] = 0x89ac; } else { /* 16 <= x <= 18 */ u_long *pState = (u_long*)dev->scanStates; for(i = 0; i < (_SCANSTATE_BYTES / 4); i++) pState[i] = 0x888889ac; } dev->regs.RD_BufFullSize = dev->DataInf.dwAppPixelsPerLine * ((dev->DataInf.xyPhyDpi.y * dev->max_y + 299) / 300) + 1; if( dev->regs.RD_BufFullSize > _SIZE_BLUEFIFO ) dev->regs.RD_BufFullSize = _SIZE_BLUEFIFO - dev->DataInf.dwAppPixelsPerLine - 1; dev->scan.dwMaxReadFifo = dev->scan.dwMinReadFifo = dev->DataInf.dwAppPixelsPerLine *2 ; if( dev->scan.dwMinReadFifo < 1024) dev->scan.dwMinReadFifo = dev->scan.dwMaxReadFifo = 1024; dev->scan.dwMaxReadFifo += (dev->DataInf.dwAsicBytesPerPlane / 2); if( dev->DataInf.wPhyDataType > COLOR_256GRAY ) dev->scan.bFifoSelect = REG_BFIFOOFFSET; else dev->scan.bFifoSelect = REG_GFIFOOFFSET; channel = _BLUE_FULLSIZE << 16; dev->regs.RD_BufFullSize = _SIZE_BLUEFIFO; dev->regs.RD_LineControl = _LOBYTE(dev->shade.wExposure); dev->regs.RD_ExtLineControl = _HIBYTE(dev->shade.wExposure); dev->regs.RD_XStepTime = _LOBYTE(dev->shade.wXStep); dev->regs.RD_ExtXStepTime = _HIBYTE(dev->shade.wXStep); dev->regs.RD_Motor0Control = _FORWARD_MOTOR; dev->regs.RD_StepControl = _MOTOR0_SCANSTATE | _MOTOR_FREERUN; dev->regs.RD_ModeControl = _ModeScan; if( dev->DataInf.wPhyDataType == COLOR_BW ) { dev->regs.RD_ScanControl = _SCAN_BITMODE; } else if( dev->DataInf.wPhyDataType <= COLOR_TRUE24 ) dev->regs.RD_ScanControl = _SCAN_BYTEMODE; else { dev->regs.RD_ScanControl = _SCAN_12BITMODE; } dev->regs.RD_ScanControl |= _SCAN_1ST_AVERAGE; u12hw_SelectLampSource( dev ); dev->regs.RD_MotorTotalSteps = (dev->DataInf.crImage.cy * 4) + (dev->f0_8_16 ? 32 : 16) + (dev->scan.bDiscardAll ? 32 : 0); DBG( _DBG_INFO, "* RD_MotorTotalSteps = 0x%04x\n", dev->regs.RD_MotorTotalSteps); dev->regs.RD_ScanControl1 = (_MTSC_ENABLE | _SCANSTOPONBUFFULL | _MFRC_RUNSCANSTATE | _MFRC_BY_XSTEP); DBG( _DBG_INFO, "* RD_ScanControl1 = 0x%02x\n", dev->regs.RD_ScanControl1); dev->regs.RD_Dpi = dev->DataInf.xyPhyDpi.x; dev->regs.RD_Origin = (u_short)(dev->adj.leftNormal*2+_DATA_ORIGIN_X); dev->regs.RD_Origin += dev->DataInf.crImage.x; if( dev->shade.intermediate & _ScanMode_AverageOut ) dev->regs.RD_Origin >>= 1; if( dev->DataInf.wPhyDataType == COLOR_BW ) dev->regs.RD_Pixels = dev->DataInf.dwAsicBytesPerPlane; else dev->regs.RD_Pixels = dev->DataInf.dwAppPixelsPerLine; /* ------- Wait for scan state stop ------- */ u12io_DataToRegister( dev, REG_MODECONTROL, _ModeIdle ); u12io_DownloadScanStates( dev ); c = 0; _SET_REG( rb, c, REG_LINECONTROL, dev->regs.RD_LineControl ); _SET_REG( rb, c, REG_EXTENDEDLINECONTROL, dev->regs.RD_ExtLineControl); _SET_REG( rb, c, REG_XSTEPTIME, dev->regs.RD_XStepTime ); _SET_REG( rb, c, REG_EXTENDEDXSTEP, dev->regs.RD_ExtXStepTime ); _SET_REG( rb, c, REG_MOTORDRVTYPE, dev->regs.RD_MotorDriverType ); _SET_REG( rb, c, REG_STEPCONTROL, dev->regs.RD_StepControl ); _SET_REG( rb, c, REG_MOTOR0CONTROL, dev->regs.RD_Motor0Control ); _SET_REG( rb, c, REG_MODELCONTROL, dev->regs.RD_ModelControl ); _SET_REG( rb, c, REG_DPILO, (_LOBYTE(dev->regs.RD_Dpi))); _SET_REG( rb, c, REG_DPIHI, (_HIBYTE(dev->regs.RD_Dpi))); _SET_REG( rb, c, REG_SCANPOSLO, (_LOBYTE(dev->regs.RD_Origin))); _SET_REG( rb, c, REG_SCANPOSHI,(_HIBYTE(dev->regs.RD_Origin))); _SET_REG( rb, c, REG_WIDTHPIXELLO,(_LOBYTE(dev->regs.RD_Pixels))); _SET_REG( rb, c, REG_WIDTHPIXELHI,(_HIBYTE(dev->regs.RD_Pixels))); _SET_REG( rb, c, REG_THRESHOLDLO, (_LOBYTE(dev->regs.RD_ThresholdControl))); _SET_REG( rb, c, REG_THRESHOLDHI, (_HIBYTE(dev->regs.RD_ThresholdControl))); _SET_REG( rb, c, REG_MOTORTOTALSTEP0, (_LOBYTE(dev->regs.RD_MotorTotalSteps))); _SET_REG( rb, c, REG_MOTORTOTALSTEP1, (_HIBYTE(dev->regs.RD_MotorTotalSteps))); _SET_REG( rb, c, REG_SCANCONTROL, dev->regs.RD_ScanControl); u12io_DataToRegs( dev, rb, c ); _DODELAY(100); u12io_RegisterToScanner( dev, REG_INITDATAFIFO ); }