Files
spice2x.github.io/src/spice2x/games/silentscope/projector.h
T
bicarus 4009bb8a84 sc: bone eater preliminary support (#895)
## 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
2026-08-28 03:04:43 -07:00

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);
};
}