mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-10-02 16:28:13 -07:00
4009bb8a84
## Link to GitHub Issue or related Pull Request, if one exists Fixes #114 ## Description of change Initial support for Silent Scope: Bone Eater, enough to be playable; doesn't include QoS work needed to make this a smoother experience. * Game detection * Fix DX11 overlay to work with non-Unity games * Implements sub monitor i/o (only really needed to get past I/O check) * Try to make the game reasonably playable with a mouse * Ignore the game's attempt to move windows, position them in a reasonable place * Fix language hook ## Testing
31 lines
902 B
C++
31 lines
902 B
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <deque>
|
|
#include <mutex>
|
|
#include <vector>
|
|
|
|
#include "hooks/devicehook.h"
|
|
|
|
namespace games::silentscope {
|
|
|
|
// The cabinet talks to its projector over COM2. Without an answer the game stops at
|
|
// I/O error 5-1560-0004 (IOCOM2, "the projector is not connected correctly").
|
|
class ProjectorHandle : public CustomHandle {
|
|
public:
|
|
bool open(LPCWSTR lpFileName) override;
|
|
int read(LPVOID lpBuffer, DWORD nNumberOfBytesToRead) override;
|
|
int write(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite) override;
|
|
size_t bytes_available() override;
|
|
bool close() override;
|
|
|
|
private:
|
|
std::mutex mutex;
|
|
std::vector<uint8_t> request;
|
|
std::deque<uint8_t> response;
|
|
|
|
void process_request(const uint8_t *packet);
|
|
void reply(uint8_t command, const std::vector<uint8_t> &data);
|
|
};
|
|
}
|