예제 #1
0
파일: Rar20Crypto.cpp 프로젝트: bks/qz7
void CData::CryptBlock(Byte *buf, bool encrypt)
{
  Byte inBuf[16];
  UInt32 A, B, C, D, T, TA, TB;

  A = GetUInt32FromMemLE(buf + 0) ^ Keys[0];
  B = GetUInt32FromMemLE(buf + 4) ^ Keys[1];
  C = GetUInt32FromMemLE(buf + 8) ^ Keys[2];
  D = GetUInt32FromMemLE(buf + 12) ^ Keys[3];

  if (!encrypt)
    memcpy(inBuf, buf, sizeof(inBuf));
  
  for(int i = 0; i < kNumRounds; i++)
  {
    UInt32 key = Keys[(encrypt ? i : (kNumRounds - 1 - i)) & 3];
    T = ((C + rol(D, 11)) ^ key);
    TA = A ^ SubstLong(T);
    T = ((D ^ rol(C, 17)) + key);
    TB = B ^ SubstLong(T);
    A = C;
    B = D;
    C = TA;
    D = TB;
  }

  WriteUInt32ToMemLE(C ^ Keys[0], buf + 0);
  WriteUInt32ToMemLE(D ^ Keys[1], buf + 4);
  WriteUInt32ToMemLE(A ^ Keys[2], buf + 8);
  WriteUInt32ToMemLE(B ^ Keys[3], buf + 12);

  UpdateKeys(encrypt ? buf : inBuf);
}
예제 #2
0
void CData::CryptBlock(Byte *buf, bool encrypt)
{
  Byte inBuf[16];
  UInt32 A, B, C, D, T, TA, TB;

  A = GetUi32(buf +  0) ^ Keys[0];
  B = GetUi32(buf +  4) ^ Keys[1];
  C = GetUi32(buf +  8) ^ Keys[2];
  D = GetUi32(buf + 12) ^ Keys[3];

  if (!encrypt)
    memcpy(inBuf, buf, sizeof(inBuf));
  
  for (int i = 0; i < kNumRounds; i++)
  {
    UInt32 key = Keys[(encrypt ? i : (kNumRounds - 1 - i)) & 3];
    T = ((C + rotlFixed(D, 11)) ^ key);
    TA = A ^ SubstLong(T);
    T = ((D ^ rotlFixed(C, 17)) + key);
    TB = B ^ SubstLong(T);
    A = C;
    B = D;
    C = TA;
    D = TB;
  }

  SetUi32(buf +  0, C ^ Keys[0]);
  SetUi32(buf +  4, D ^ Keys[1]);
  SetUi32(buf +  8, A ^ Keys[2]);
  SetUi32(buf + 12, B ^ Keys[3]);

  UpdateKeys(encrypt ? buf : inBuf);
}
예제 #3
0
파일: Input.cpp 프로젝트: ravencgg/EnGen
void Input::BeginFrame()
{
	mouse_loc_updated_this_frame = false;

	UpdateKeys();
	UpdateMouse();
}
예제 #4
0
int MainMenu()
{
	clear(screen);

	const char *strings[] = {"PLAY", "OPTIONS", "QUIT"};
	int colorSel = 0xFFFF00;
	int colorNot = 0xFFFFFF;

	int i;
	int y;
	int sel = 0;

	while(true)
	{
		for(i = 0, y = screen->h / 4; i < 3; i++, y += screen->h / 4)
		{
			textout_centre_ex(screen, font, strings[i], 320, y, (i == sel) ? colorSel : colorNot, 0);
		}
		UpdateKeys();
		if(upKey == KeyDown) sel = (sel + 2) % 3;
		if(downKey == KeyDown) sel = (sel + 1) % 3;

		if((aKey == KeyDown) || (sKey == KeyDown) || (xKey == KeyDown) || (cKey == KeyDown)) return sel;
	}
}
예제 #5
0
        void Window::Update()
        {
            m_eventHandler->m_mouseEvent.mouse_button_pressed = false;
            m_eventHandler->m_mouseEvent.mouse_button_released = false;
            m_eventHandler->m_mouseEvent.mouse_wheel_scrolled = false;
            m_eventHandler->m_keyEvent.key_pressed = false;
            m_eventHandler->m_keyEvent.key_released = false;

            sf::Event event;
            while (m_window->pollEvent(event)) {
                if (event.type == sf::Event::Closed)
                    m_open = false;
                if (event.type == sf::Event::Resized) {
                    m_eventHandler->m_windowSizeState.width = event.size.width;
                    m_eventHandler->m_windowSizeState.height = event.size.height;
                    m_eventHandler->m_windowSizeState.aspectRatio = float(event.size.width) / float(event.size.height);

                    glViewport(0, 0, m_eventHandler->m_windowSizeState.width, m_eventHandler->m_windowSizeState.height);
                }

                if (event.type == sf::Event::GainedFocus) {
                }

                if (event.type == sf::Event::LostFocus) {
                }

                if (event.type == sf::Event::MouseButtonPressed) {
                    m_eventHandler->m_mouseEvent.mouse_button_pressed = true;
                }

                if (event.type == sf::Event::MouseButtonReleased) {
                    m_eventHandler->m_mouseEvent.mouse_button_released = true;
                }

                if (event.type == sf::Event::MouseWheelScrolled) {
                    if (event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel) {
                        m_eventHandler->m_mouseEvent.mouse_wheel_scrolled = true;                        
                    }
                    m_eventHandler->m_mouseState.mouse_scroll_delta = event.mouseWheelScroll.delta;
                }

                if (event.type == sf::Event::KeyPressed) {
                    m_eventHandler->m_keyEvent.key_pressed = true;
                }

                if (event.type == sf::Event::KeyReleased) {
                    m_eventHandler->m_keyEvent.key_released = true;                    
                }
            }

            if (m_window->hasFocus()) {
                UpdateKeys();
                UpdateMouse();
            }

            m_window->display();
        }
예제 #6
0
STDMETHODIMP_(UInt32) CDecoder::Filter(Byte *data, UInt32 size)
{
  for (UInt32 i = 0; i < size; i++)
  {
    Byte c = (Byte)(data[i] ^ DecryptByteSpec());
    UpdateKeys(c);
    data[i] = c;
  }
  return size;
}
예제 #7
0
STDMETHODIMP_(UInt32) CEncoder::Filter(Byte *data, UInt32 size)
{
  for (UInt32 i = 0; i < size; i++)
  {
    Byte b = data[i];
    data[i] = (Byte)(b ^ DecryptByteSpec());;
    UpdateKeys(b);
  }
  return size;
}
예제 #8
0
void Loop()
{
	while(!OpQuit() && _sys_judge_event(NULL) >= 0)
	{
		if(!Handler()->FullSpeed())
			WaitTimer();
		UpdateSound();
		UpdateKeys();
		Handler()->OnLoop();
		UpdateVideo();
	}
}
예제 #9
0
void Controller::Run()
{
	//Main Loop
	m_timer.startTimer();    // Start timer to calculate how long it takes to render this frame

	while (!glfwWindowShouldClose(currentView->getWindow()) && !IsKeyPressed(VK_ESCAPE))
	{
		//get the elapsed time
		m_dElapsedTime = m_timer.getElapsedTime();
		m_dAccumulatedTime_thread1 += m_dElapsedTime;
		m_dAccumulatedTime_thread2 += m_dElapsedTime;

		/* fps */
		fps = (float)(1.f / m_dElapsedTime);

		/* twin threaded approach */
		if(m_dAccumulatedTime_thread1 > 0.01)	//update: update fps is _dAccumulatedTime_thread1 > fps
		{
			/* Init new model etc... */
			SwitchModels();

			/* controls */
			UpdateMouse();
			UpdateKeys();

			/** model update **/
			currentModel->Update(m_dElapsedTime, myKeys);

			m_dAccumulatedTime_thread1 = 0.0;
		}
		if(m_dAccumulatedTime_thread2 > 0.003)	//render: render fps is _dAccumulatedTime_thread1 > fps
		{
			/** View update(rendering) **/
			currentView->Render(fps);	//or switch to pause screen

			m_dAccumulatedTime_thread2 = 0.0;
		}

		//Swap buffers
		glfwSwapBuffers(currentView->getWindow());
		//Get and organize events, like keyboard and mouse input, window resizing, etc...
		glfwPollEvents();

		m_timer.waitUntil(frameTime);       // Frame rate limiter. Limits each frame to a specified time in ms.   

	} //Check if the ESC key had been pressed or if the window had been closed
}
예제 #10
0
bool CPad::GetControlState ( const char* szControl, bool& bState )
{
    for ( int i = 0 ; *g_gtaControls [ i ].szControl != '\0' ; i++ )
    {
        const SGTAControl* temp = &g_gtaControls [ i ];
        if ( stricmp ( temp->szControl, szControl ) == 0 )
        {
            if ( !m_bUpdatedKeys )
            {
                UpdateKeys ();
                m_bUpdatedKeys = true;
            }
            bState = m_ControlStates [ i ].bState;

            return true;
        }
    }

    return false;
}
예제 #11
0
Byte CCipher::EncryptByte(Byte b)
{
  Byte c = (Byte)(b ^ DecryptByteSpec());
  UpdateKeys(b);
  return c;
}
예제 #12
0
void keyboard_handler(int keycode, int press)
{
	UpdateKeys(keycode, press);

	if (RSJ) {
#if 0	
		if (press == 0) {
			int i;
			
			for (i = 0; i < CheatCount; i++) {
				char *key = XKeysymToString(keycode);
				if (key == NULL)
					break;
				if (strlen(key) != 1)
					break;
				if (CheatCodes[i].code[CheatIndex] == toupper(key[0])) {
					CheatIndex++;
					if (CheatCodes[i].code[CheatIndex] == 0) {
						PlaySound(SND_BONUS);
						switch (i) {
						case 0:
						case 4:
							GiveKey(0);
							GiveKey(1);
							gamestate.godmode = TRUE;
							break;
						case 1:
							gamestate.godmode^=TRUE;
							break;
						case 2:
							gamestate.machinegun = TRUE;
							gamestate.chaingun = TRUE;
							gamestate.flamethrower = TRUE;
							gamestate.missile = TRUE;
							GiveAmmo(gamestate.maxammo);
							GiveGas(99);
							GiveMissile(99);
							break;
						case 3:
							gamestate.maxammo = 999;
							GiveAmmo(999);
							break;
						case 5:
							GiveKey(0);
							GiveKey(1);
							break;
						case 6:
							playstate=EX_WARPED;
							nextmap = gamestate.mapon+1;
							if (MapListPtr->MaxMap<=nextmap) 
								nextmap = 0;
							break;
						case 7:
							ShowPush ^= TRUE;
							break;
						}
						CheatIndex = 0;
					}
					break;
				} 
			}	
			if (i == CheatCount) 
				CheatIndex = 0;
		}
#endif
				
		joystick1 = 0;

#if 0		
		if (press == 0) {
			switch(keycode) {
			case XK_1:
				gamestate.pendingweapon = WP_KNIFE;
				break;
			case XK_2:
				if (gamestate.ammo) {
					gamestate.pendingweapon = WP_PISTOL;
				}	
				break;
			case XK_3:
				if (gamestate.ammo && gamestate.machinegun) {
					gamestate.pendingweapon = WP_MACHINEGUN;
				}
				break;
			case XK_4:
				if (gamestate.ammo && gamestate.chaingun) {
					gamestate.pendingweapon = WP_CHAINGUN;
				}
				break;
			case XK_5:
				if (gamestate.gas && gamestate.flamethrower) {
					gamestate.pendingweapon = WP_FLAMETHROWER;
				}
				break;
			case XK_6:
				if (gamestate.missiles && gamestate.missile) {
					gamestate.pendingweapon = WP_MISSILE;
				}
				break;
			case XK_period:
			case XK_slash:
				joystick1 = JOYPAD_START;
				break;
			case XK_Escape:
				Quit(NULL); /* fast way out */
			}
		}
#endif		
		if (keys[SC_CURSORUPLEFT])
			joystick1 |= (JOYPAD_UP|JOYPAD_LFT);
		if (keys[SC_CURSORUP])
			joystick1 |= JOYPAD_UP;
		if (keys[SC_CURSORUPRIGHT])
			joystick1 |= (JOYPAD_UP|JOYPAD_RGT);
		if (keys[SC_CURSORRIGHT])
			joystick1 |= JOYPAD_RGT;
		if (keys[SC_CURSORDOWNRIGHT])
			joystick1 |= (JOYPAD_DN|JOYPAD_RGT);
		if (keys[SC_CURSORDOWN])
			joystick1 |= JOYPAD_DN;
		if (keys[SC_CURSORDOWNLEFT])
			joystick1 |= (JOYPAD_DN|JOYPAD_LFT);
		if (keys[SC_CURSORLEFT])
			joystick1 |= JOYPAD_LFT;	
		
		if (keys[SC_CURSORBLOCKLEFT]) 
			joystick1 |= JOYPAD_LFT;
		if (keys[SC_CURSORBLOCKRIGHT])
			joystick1 |= JOYPAD_RGT;
		if (keys[SC_CURSORBLOCKUP])
			joystick1 |= JOYPAD_UP;
		if (keys[SC_CURSORBLOCKDOWN])
			joystick1 |= JOYPAD_DN;
		
		if (keys[SC_KEYPADENTER])
			joystick1 |= JOYPAD_A;	
		if (keys[SC_ENTER])
			joystick1 |= JOYPAD_A;
		if (keys[SC_SPACE])
			joystick1 |= JOYPAD_A;
		
		if (keys[SC_LEFTALT]) 
			joystick1 |= JOYPAD_TR;
		if (keys[SC_RIGHTALT])
			joystick1 |= JOYPAD_TR;
			
		if (keys[SC_LEFTCONTROL])
			joystick1 |= JOYPAD_B;
		if (keys[SC_RIGHTCONTROL])
			joystick1 |= JOYPAD_B;
		
		if (keys[SC_LEFTSHIFT])
			joystick1 |= (JOYPAD_X|JOYPAD_Y);
		if (keys[SC_RIGHTSHIFT])
			joystick1 |= (JOYPAD_X|JOYPAD_Y);
	}
	
	if ((joystick1 & (JOYPAD_LFT|JOYPAD_RGT)) == (JOYPAD_LFT|JOYPAD_RGT))
		joystick1 &= ~(JOYPAD_LFT|JOYPAD_RGT);
	if ((joystick1 & (JOYPAD_UP|JOYPAD_DN)) == (JOYPAD_UP|JOYPAD_DN))
		joystick1 &= ~(JOYPAD_UP|JOYPAD_DN);
		
	if (joystick1 & JOYPAD_TR) {
		if (joystick1 & JOYPAD_LFT) {
			joystick1 = (joystick1 & ~(JOYPAD_TR|JOYPAD_LFT)) | JOYPAD_TL;
		} else if (joystick1 & JOYPAD_RGT) {
			joystick1 = joystick1 & ~JOYPAD_RGT;
		} else {
			joystick1 &= ~JOYPAD_TR;
		}
	}
							
}
예제 #13
0
파일: ZipCrypto.cpp 프로젝트: bks/qz7
Byte CCipher::DecryptByte(Byte encryptedByte)
{
  Byte c = (Byte)(encryptedByte ^ DecryptByteSpec());
  UpdateKeys(c);
  return c;
}