private void HandleInputs() { IntPtr state = SDL.SDL_GetKeyboardState(out var size); InputRegister.Keys keys = InputRegister.Keys.None; unsafe { byte *data = (byte *)state; if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_DOWN] != 0) { keys |= InputRegister.Keys.Down; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_UP] != 0) { keys |= InputRegister.Keys.Up; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_LEFT] != 0) { keys |= InputRegister.Keys.Left; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_RIGHT] != 0) { keys |= InputRegister.Keys.Right; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_A] != 0) { keys |= InputRegister.Keys.Start; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_S] != 0) { keys |= InputRegister.Keys.Select; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_Z] != 0) { keys |= InputRegister.Keys.B; } if (data[(int)SDL.SDL_Scancode.SDL_SCANCODE_X] != 0) { keys |= InputRegister.Keys.A; } } cpu.HandleInput(keys); }
public void HandleInput(InputRegister.Keys keys) { memory.UpdateInputRegister(keys); }