示例#1
0
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;
}
示例#2
0
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);
}
示例#3
0
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 );
}