Private
Public Access
7-post thread, 6 images. SPC project intro: 'like a Pico8, but turns
the Steam Deck into an actual console for exclusive GPU assembly
projects. The way consoles had been done before silly portability
became the only focus.' GPU-accessible KEY + GAMEPAD input; no
functions, no API, fixed VA address + data format. Steam Deck +
3 generations of PlayStation HID brought up; Xbox controllers aren't
HIDs so skipping for now. Hot plug via epoll, every-second open
attempt; {product, vendor} not unique enough (aliasing), use packet
size too. Up to 4 device outputs collected for GPU; Steam Deck
controls always last for docking. Audio deferred, networking skipped
for v1. 2000 lines of C, no includes. Next: GPU-side assembler +
data editor (binary at first).
128 lines
4.8 KiB
JSON
128 lines
4.8 KiB
JSON
{
|
|
"root_post_id": "1687257354490818561",
|
|
"posts": [
|
|
{
|
|
"post_id": "1687250591813079041",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "SPC: Left off with KEY and GAMEPAD input GPU-accessable. NOP design, no functions, no API, just a fixed VA address and data format to read, dead easy.",
|
|
"timestamp": "2023-08-03 23:54:23",
|
|
"media_urls": [
|
|
"https://pbs.twimg.com/media/F2pRdu9WgAABCLE?format=jpg&name=orig",
|
|
"https://pbs.twimg.com/media/F2pReKsXoAAPvow?format=jpg&name=orig"
|
|
],
|
|
"reply_to_id": null,
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 1,
|
|
"repost_count": 0,
|
|
"like_count": 3,
|
|
"view_count": 1397
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687251721032978432",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "Wrote some console data dumping to aid in bringing up HID parsers for Deck and three generations of PlayStation controllers. Apparently XBox controllers aren't HIDs so not sure how one is supposed to access those.",
|
|
"timestamp": "2023-08-03 23:58:52",
|
|
"media_urls": [
|
|
"https://pbs.twimg.com/media/F2pSfIHXcAMI-IQ?format=jpg&name=orig",
|
|
"https://pbs.twimg.com/media/F2pSfzAWcAMo6t7?format=jpg&name=orig"
|
|
],
|
|
"reply_to_id": "1687250591813079041",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 1,
|
|
"repost_count": 0,
|
|
"like_count": 1,
|
|
"view_count": 197
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687252813468852225",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "Supporting hot plug was a bit of a mess, just trying to open devices every second. Adding open devices to an epoll. {Product, vendor} isn't enough to ID a device, too much aliasing, so I use packet size as well.",
|
|
"timestamp": "2023-08-04 00:03:13",
|
|
"media_urls": [
|
|
"https://pbs.twimg.com/media/F2pTfekWYAAAwSi?format=jpg&name=orig"
|
|
],
|
|
"reply_to_id": "1687251721032978432",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 1,
|
|
"repost_count": 0,
|
|
"like_count": 2,
|
|
"view_count": 197
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687253442643755008",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "Open devices with matching packet size get set in a bit array, and I collect up to 4 of those device outputs to sent to the GPU. Special logic to always place Steam Deck controls last to make docking work well.",
|
|
"timestamp": "2023-08-04 00:05:43",
|
|
"media_urls": [
|
|
"https://pbs.twimg.com/media/F2pUEG0XwAEwYvP?format=jpg&name=orig"
|
|
],
|
|
"reply_to_id": "1687252813468852225",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 2,
|
|
"repost_count": 0,
|
|
"like_count": 0,
|
|
"view_count": 237
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687254511239221249",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "I'll have to tackle audio at some point, but I'm skipping networking for version 1. But otherwise SPC is good to move on to the next step, which is to build out the GPU side assembler & data editor. Which will be written in binary at first.",
|
|
"timestamp": "2023-08-04 00:09:57",
|
|
"media_urls": [],
|
|
"reply_to_id": "1687253442643755008",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 1,
|
|
"repost_count": 0,
|
|
"like_count": 0,
|
|
"view_count": 211
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687255546372493313",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "Project is roughly 2000 lines of C at this point. With no includes. Anyone have any suggestions for hosting let me know. Source will be released.",
|
|
"timestamp": "2023-08-04 00:14:04",
|
|
"media_urls": [],
|
|
"reply_to_id": "1687254511239221249",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 2,
|
|
"repost_count": 0,
|
|
"like_count": 2,
|
|
"view_count": 402
|
|
}
|
|
},
|
|
{
|
|
"post_id": "1687257354490818561",
|
|
"author": "NOTimothyLottes",
|
|
"handle": "NOTimothyLottes",
|
|
"text": "For anyone tuning in now, SPC is kind of like a Pico8, but instead of being a portable fantasy console, SPC turns the Steam Deck into an actual console for exclusive GPU assembly projects. The way consoles had been done before silly portability became the only focus.",
|
|
"timestamp": "2023-08-04 00:21:15",
|
|
"media_urls": [],
|
|
"reply_to_id": "1687255546372493313",
|
|
"quote_of_id": null,
|
|
"metrics": {
|
|
"reply_count": 0,
|
|
"repost_count": 0,
|
|
"like_count": 5,
|
|
"view_count": 415
|
|
}
|
|
}
|
|
],
|
|
"source_url": "https://x.com/NOTimothyLottes/status/1687257354490818561"
|
|
} |