Post AyZlKgPLT84VhP6bB2 by cadey@pony.social
 (DIR) More posts by cadey@pony.social
 (DIR) Post #AyZhajFsFcYbLX4TKa by foone@digipres.club
       2025-09-25T19:51:40Z
       
       0 likes, 0 repeats
       
       one of my projects is stuck at the fun stage where all that's left is a bunch of multithreading code in Cthat'll be fun and not at all error-prone
       
 (DIR) Post #AyZiPPXZJDdGyHVy88 by foone@digipres.club
       2025-09-25T19:59:57Z
       
       0 likes, 0 repeats
       
       oh yeah and bidirectional keyboard IPC. can't forget that one
       
 (DIR) Post #AyZiPQx83fflLqTtbs by foone@digipres.club
       2025-09-25T20:00:05Z
       
       0 likes, 0 repeats
       
       I better order the mutexes in bulk
       
 (DIR) Post #AyZiclWStIjUudMmMi by foone@digipres.club
       2025-09-25T20:03:16Z
       
       0 likes, 0 repeats
       
       TIL there's a brand of bathroom door lock called MUTEX which I guess makes sense. You definitely want to hold the bathroom mutex while using the toilet! sadly they are only for men and women, leaving us enbies unable to pee yet again
       
 (DIR) Post #AyZimp7uLXrKzAfyim by silvermoon82@wandering.shop
       2025-09-25T20:05:02Z
       
       0 likes, 0 repeats
       
       @foone And this is why we enbies have to pee in hallway corners.
       
 (DIR) Post #AyZiv7MuPJGhsXeDSq by foone@digipres.club
       2025-09-25T20:06:31Z
       
       0 likes, 0 repeats
       
       @gloriouscow my grandpappy told me to never do that unless they're paying me
       
 (DIR) Post #AyZizIlJzHgoNG3ryS by foone@digipres.club
       2025-09-25T20:06:45Z
       
       0 likes, 0 repeats
       
       @ben introducing MANDOOR, the first doorknob only for men!
       
 (DIR) Post #AyZj3FGyu1zki6kbCK by philip@mastodon.mallegolhansen.com
       2025-09-25T20:07:07Z
       
       0 likes, 0 repeats
       
       @foone Since it’s men OR women only, I’m not even sure you’re allowed to install it on a multi-gender bathroom. Can’t use it at home I guess.
       
 (DIR) Post #AyZjIDWJhXfBcP3wwK by foone@digipres.club
       2025-09-25T20:10:46Z
       
       0 likes, 0 repeats
       
       @philip they really should make it men xor women, since it's clearly single-occupancy
       
 (DIR) Post #AyZjMfSHmWQvPpIcyW by mgleadow@mastodon.green
       2025-09-25T20:10:41Z
       
       0 likes, 0 repeats
       
       @philip @foone it's not Men XOR Women though...
       
 (DIR) Post #AyZjMgJoZVFe5qLNPU by foone@digipres.club
       2025-09-25T20:11:00Z
       
       0 likes, 0 repeats
       
       @mgleadow @philip wow I posted that exact same joke at the same time
       
 (DIR) Post #AyZjnCRRlGBzFaYgYC by foone@digipres.club
       2025-09-25T20:16:16Z
       
       0 likes, 0 repeats
       
       this project is on the front of my queue because I did the juggling-lab rickroll and now everyone on tumblr is like "you should do doom next!" and I keep having to say I AM WORKING ON IT
       
 (DIR) Post #AyZjz1A5WeqJk14flA by foone@digipres.club
       2025-09-25T20:18:24Z
       
       0 likes, 0 repeats
       
       @gloriouscow I'm modifying existing code! I don't get to pick the language.
       
 (DIR) Post #AyZkf98IHPPccqK7bE by foone@digipres.club
       2025-09-25T20:26:02Z
       
       0 likes, 0 repeats
       
       @gloriouscow that's alright, I'm diabetic.and my crab needs are covered my Cool Crab Pride Flag
       
 (DIR) Post #AyZktYceJ5IZjaOTOS by foone@digipres.club
       2025-09-25T20:28:38Z
       
       0 likes, 0 repeats
       
       @attoparsec everyone is a philosopher when shitting
       
 (DIR) Post #AyZl8On58wI9aMLnNo by foone@digipres.club
       2025-09-25T20:31:03Z
       
       0 likes, 0 repeats
       
       @psf oh god, are they multithreading gender now? I had enough trouble with it when it was single-threaded!
       
 (DIR) Post #AyZlCY8wJRTrkZYNdI by foone@digipres.club
       2025-09-25T20:32:02Z
       
       0 likes, 0 repeats
       
       okay so I have a main client that needs to talk to N servers, bidirectionally. The servers provide frames of video, and accept keyboard input.
       
 (DIR) Post #AyZlGrzITP0aSH6SoK by foone@digipres.club
       2025-09-25T20:32:25Z
       
       0 likes, 0 repeats
       
       (this is all local)
       
 (DIR) Post #AyZlKgPLT84VhP6bB2 by cadey@pony.social
       2025-09-25T20:32:55Z
       
       0 likes, 0 repeats
       
       @foone foone what are you doing
       
 (DIR) Post #AyZlNyU0ip16cwrCls by foone@digipres.club
       2025-09-25T20:33:31Z
       
       0 likes, 0 repeats
       
       so my current plan is:a shared memory buffer per server + a mutex. the buffer is sized to be:1. keyboard buffer (like 16 bytes?)2. screen buffer (320x200x24)
       
 (DIR) Post #AyZlRxvAkkVU2iSsts by GezThePez@mastodon.scot
       2025-09-25T20:34:06Z
       
       0 likes, 0 repeats
       
       @foone Berkley sockets
       
 (DIR) Post #AyZlWWtWfGLLfYs47k by foone@digipres.club
       2025-09-25T20:34:27Z
       
       0 likes, 0 repeats
       
       the way the keyboard buffer works is a little weird, it's a list of keys currently held down. I'm not planning to have the server ever change it, only the client. The server only ever changes the video buffer. the mutex will be held when either the client needs to read frames, or the server needs to push frames/read keyboard buffer
       
 (DIR) Post #AyZlbnMsqNWwD1778y by foone@digipres.club
       2025-09-25T20:35:57Z
       
       0 likes, 0 repeats
       
       I think that makes sense and will work.
       
 (DIR) Post #AyZldjZRvusr0juqOG by foone@digipres.club
       2025-09-25T20:36:06Z
       
       0 likes, 0 repeats
       
       @cadey Doom Juggling
       
 (DIR) Post #AyZlhx3xiBNA0xCOga by foone@digipres.club
       2025-09-25T20:36:17Z
       
       0 likes, 0 repeats
       
       @GezThePez I'm not getting paid enough to do sockets in C
       
 (DIR) Post #AyZllj0rtHw7b7YELo by foone@digipres.club
       2025-09-25T20:37:42Z
       
       0 likes, 0 repeats
       
       so for each rendering frame on the client, it needs to lock N mutexes and copy out the frames. I might need to make that a little smarter, like it skips locked mutexes and then comes back later, or just skips updating that frame
       
 (DIR) Post #AyZllkQmcQGBzmgRNo by foone@digipres.club
       2025-09-25T20:37:55Z
       
       0 likes, 0 repeats
       
       I'm mainly trying to keep the client performant, thus the shared memory
       
 (DIR) Post #AyZlscF9SU4sd4WAOe by foone@digipres.club
       2025-09-25T20:38:40Z
       
       0 likes, 0 repeats
       
       I might have to do some nonsense with double-buffering the shared memory areas so the servers can be writing while the client is reading, but that's a whole extra step of complexity I'm not going to try implementing until after I've tried it without it
       
 (DIR) Post #AyZmJsO7XbQ8WHiC0W by foone@digipres.club
       2025-09-25T20:44:33Z
       
       0 likes, 0 repeats
       
       the servers are spawned by the client, and they're gonna create their shared memory sections at a name determined by their process ID, which the client knows
       
 (DIR) Post #AyZmaabktrtsIa3i5o by cadey@pony.social
       2025-09-25T20:47:36Z
       
       0 likes, 0 repeats
       
       @foone what
       
 (DIR) Post #AyZmf8GZhWW7qYJmEK by foone@digipres.club
       2025-09-25T20:48:26Z
       
       0 likes, 0 repeats
       
       @cadey have you seen Juggling Lab? I'm gonna have it juggle dooms
       
 (DIR) Post #AyZmnX6JFcsJBaWR3w by foone@digipres.club
       2025-09-25T20:50:03Z
       
       0 likes, 0 repeats
       
       no plan survives contact with the enemy: the way doomgeneric handles keypresses is completely different from this, ugh
       
 (DIR) Post #AyZn0K5KxEHeaDAM8u by foone@digipres.club
       2025-09-25T20:52:18Z
       
       0 likes, 0 repeats
       
       the problem is that the keyboard buffer is per-server and the client's keyboard isn't. so either I make the client more complicated, or I make the servers... easy choice. servers are in C, client is in python. complex client it is then!
       
 (DIR) Post #AyZn4pWc0GsVFb4ZtI by foone@digipres.club
       2025-09-25T20:53:03Z
       
       0 likes, 0 repeats
       
       new plan: the keyboard buffer is filled up with key up/key down events by the client, and when the servers write their frames, they also read and then blank out the keyboard buffer.
       
 (DIR) Post #AyZo7Gs1PAlMasoaPI by TomF@mastodon.gamedev.place
       2025-09-25T21:04:33Z
       
       0 likes, 0 repeats
       
       @foone Sounds like you want to swap the words "client" and "server" :-)
       
 (DIR) Post #AyZoxpSW3BnkvWwjc8 by tevruden@nonexiste.net
       2025-09-25T21:14:14Z
       
       0 likes, 0 repeats
       
       @foone this description makes me wonder what the keyboard version of telephone signaling's "revertive pulsing" would be. computer counts incrementing key codes and keyboard ACK's the correct one?
       
 (DIR) Post #AyZp9xZbhuIbZI314S by foone@digipres.club
       2025-09-25T21:16:30Z
       
       0 likes, 0 repeats
       
       initial version of the server's shared memory implementation is done, minus the keyboard nonsense. now to see if the client can see it
       
 (DIR) Post #AyZpHCifnBL4ZQk62S by foone@digipres.club
       2025-09-25T21:17:47Z
       
       0 likes, 0 repeats
       
       @TomF it makes sense in my head to call them this way, since they're serving video up to a central client that is aggregating them
       
 (DIR) Post #AyZpizAXlYoaeX1fYO by bytex64@awesome.garden
       2025-09-25T21:22:42Z
       
       0 likes, 0 repeats
       
       @foone @gloriouscow Sugar free crab cookies definitely come from a special circle of hell.
       
 (DIR) Post #AyZqG3gK0eJCCjezhI by bytex64@awesome.garden
       2025-09-25T21:28:44Z
       
       0 likes, 0 repeats
       
       @foone I think if you go as far as double buffering you may as well use a queue/channel.
       
 (DIR) Post #AyZqxZ0nOsCDpEyvY0 by foone@digipres.club
       2025-09-25T21:36:39Z
       
       0 likes, 0 repeats
       
       first synchronization error! I was kicking off doom, then immediately trying to access the mutex my doom server was creating.except the doom server doesn't create the mutex until it's gotten to the point of creating a window, meaning the mutex wasn't ready yet.
       
 (DIR) Post #AyZr14NJFW8txuBTGa by foone@digipres.club
       2025-09-25T21:36:50Z
       
       0 likes, 0 repeats
       
       @bytex64 probably
       
 (DIR) Post #AyZrSeOVRF9TUntZXU by foone@digipres.club
       2025-09-25T21:42:11Z
       
       0 likes, 0 repeats
       
       WE'VE GOT DOOMSI just had the client dump what it got into a file. the colors are all fuckt because this is probably BGRX. but it at least is working
       
 (DIR) Post #AyZs8xaaSkM9Bqil28 by foone@digipres.club
       2025-09-25T21:49:55Z
       
       0 likes, 0 repeats
       
       well that aint right
       
 (DIR) Post #AyZsVPlMOU4kwMT15E by foone@digipres.club
       2025-09-25T21:53:59Z
       
       0 likes, 0 repeats
       
       oh hey, pyglet will reorder your bitmaps using a regex! just run a regex on textures, that's fine
       
 (DIR) Post #AyZuRVMfpAbz42BRMu by foone@digipres.club
       2025-09-25T22:15:38Z
       
       0 likes, 0 repeats
       
       @hellomiakoda why do you think I carry a lockpicking kit? I can't let THE MAN tell me where I can and cannot pee!
       
 (DIR) Post #AyZuUgwHFR93pVM9iK by foone@digipres.club
       2025-09-25T22:16:06Z
       
       0 likes, 0 repeats
       
       @greg @cadey that's a doom keyboard. I'm sure I'll do that sometime, but right now the zeitgeist is juggling
       
 (DIR) Post #AyZucFfUWXODZG6sAC by foone@digipres.club
       2025-09-25T22:17:40Z
       
       0 likes, 0 repeats
       
       yeah doom is apparently giving me BGRX textures.guess what texture format pyglet doesn't support natively? ugh.
       
 (DIR) Post #AyZugpx1ZEA7FsUsvA by finitebaffle@mas.to
       2025-09-25T22:18:24Z
       
       0 likes, 0 repeats
       
       @foone that’s a fine looking bit of kit though
       
 (DIR) Post #AyZvJKEDRfdKA8tIye by tekhedd@byteheaven.net
       2025-09-25T22:25:21Z
       
       0 likes, 0 repeats
       
       @foone It's "men or women" not "man or woman." Always pee with a friend for safety.
       
 (DIR) Post #AyZwMwzLtMTLCMEOEC by foone@digipres.club
       2025-09-25T22:37:10Z
       
       0 likes, 0 repeats
       
       I'm gonna steal some Gecko code from Mozilla:https://github.com/mozilla-firefox/firefox/blob/main/gfx/2d/SwizzleSSE2.cppSwizzleChunk_SSE2 and SwizzleVector_SSE2 are some SSE2 code that'll let me turn BGRX into RGBA, which pyglet does support.
       
 (DIR) Post #AyZxsdArCGgexwHaVs by foone@digipres.club
       2025-09-25T22:54:09Z
       
       0 likes, 0 repeats
       
       this project was supposed to be C and pythonwhy am I fighting C++ templates?
       
 (DIR) Post #AyZy0rb3SSfy0sSi9Y by foone@digipres.club
       2025-09-25T22:55:41Z
       
       0 likes, 0 repeats
       
       I do like that every time I build, MSVS2022 helpfully tells me "Consider using 'GetTickCount64' instead of 'GetTickCount'. Reason: GetTickCount overflows roughly every 49 days.  Code that does not take that into account can loop indefinitely.  GetTickCount64 operates on 64 bit values and does not have that problem"
       
 (DIR) Post #AyZy5m5jLzqSO39VAm by foone@digipres.club
       2025-09-25T22:56:00Z
       
       0 likes, 0 repeats
       
       I mean, fair. I am exactly the kind of weirdo to run Doom for 49 days.but surely for nearly everyone else, this is a useless error
       
 (DIR) Post #AyZyMG5NbSoq2uqeW0 by foone@digipres.club
       2025-09-25T22:59:27Z
       
       0 likes, 0 repeats
       
       @torindarkflight it's the same underlying issue, yeah. because 32bits of milliseconds is only 49.7 days
       
 (DIR) Post #AyZydQFR4d4aUDjhuS by foone@digipres.club
       2025-09-25T23:02:28Z
       
       0 likes, 0 repeats
       
       oh, const pointers. I was giving a function a non-const pointer and it wanted a const pointer. and there's some reason that doesn't just work in c++, which I can't recall because it's been 20 years since I last read  Scott Meyers's Effective C++
       
 (DIR) Post #AyZyujufDGbqOoHHdo by piggo@piggo.space
       2025-09-25T23:01:23.481540Z
       
       0 likes, 0 repeats
       
       @foone why would it overflowing even be a problem? i was taught to not take the value literally but always take a diff. and diff across the uint top actually works just fine with wrapping arithmetic
       
 (DIR) Post #AyZyukbCf6dYWkBFwm by foone@digipres.club
       2025-09-25T23:05:43Z
       
       0 likes, 0 repeats
       
       @piggo people do use the literal value, though. or at least it's common enough to be a problem. like, one pattern I see is:int64_t expire_time = GetTickCount() + 300000; // 5 minuteswhile(GetTickCount() < expire_time){ // do some slow thing iteratively }that while will never end
       
 (DIR) Post #AyZyyEAlAHpP7HTBia by foone@digipres.club
       2025-09-25T23:06:28Z
       
       0 likes, 0 repeats
       
       @dalias I know there are, as someone who never does that, and has occasionally walked in on people who do, to both of our embarrassment!
       
 (DIR) Post #AyZzXkamcZ2Bnea3zk by piggo@piggo.space
       2025-09-25T23:07:51.444952Z
       
       0 likes, 0 repeats
       
       @foone ah, right. confusing int widths
       
 (DIR) Post #AyZzXlTNLaheWy7f5U by foone@digipres.club
       2025-09-25T23:12:49Z
       
       0 likes, 0 repeats
       
       @piggo ticks could also be used to label things like events in a message queue. if you overflow the ticks between two messages, comparing their times to see which one came in first will give the wrong answer.ie, you could type "AZ" and have "ZA" appear in your document
       
 (DIR) Post #AyZzeeColSAs1Gey3s by foone@digipres.club
       2025-09-25T23:14:01Z
       
       0 likes, 0 repeats
       
       err, const /references/.shows how long it's been since I've used C++ seriously! I've forgotten much about how references work.
       
 (DIR) Post #AyZzimuyJZbWCLHqQS by foone@digipres.club
       2025-09-25T23:14:52Z
       
       0 likes, 0 repeats
       
       I think I'm a little too low-level-brained to really "get" references. I just go "that's a pointer" and that means I've forgotten the details of how C++ specifically does their Special Pointers
       
 (DIR) Post #AyZznE5nDqezdXSryK by tekhedd@byteheaven.net
       2025-09-25T23:15:26Z
       
       0 likes, 0 repeats
       
       @foone const is "Want to know a secret? You have to promise not to tell. I can only tell you if you promise not to tell. But I also have no way to know if you broke the promise."
       
 (DIR) Post #Aya05mSECjurQ8o1bM by foone@digipres.club
       2025-09-25T23:18:56Z
       
       0 likes, 0 repeats
       
       it doesn't help that I've been away from C++ for so long that they've changed it. several times.
       
 (DIR) Post #Aya0Aenc5qSv7v8MrY by jeff@mk.magicka.org
       2025-09-25T23:20:22.545Z
       
       0 likes, 0 repeats
       
       @foone@digipres.club modern c++ is like totally poggers fam
       
 (DIR) Post #Aya0Bc6na9rv4VZ1SS by ozzelot@mstdn.social
       2025-09-25T23:20:31Z
       
       0 likes, 0 repeats
       
       @fooneMagically and annoyingly, I would say(I too am C-brained)
       
 (DIR) Post #Aya0IMdXVMQV7664WW by foone@digipres.club
       2025-09-25T23:20:47Z
       
       0 likes, 0 repeats
       
       the fact it's several times makes it more annoying to really catch up to speed, because you can't just read a quick "what's new" guide somewhere, you need to read like 5 of them in sequence
       
 (DIR) Post #Aya0INb5vw465nxdLs by foone@digipres.club
       2025-09-25T23:20:58Z
       
       0 likes, 0 repeats
       
       and I am a bear of very little brain, and large words bother me.
       
 (DIR) Post #Aya0OwOlSN2BlQK28e by foone@digipres.club
       2025-09-25T23:21:37Z
       
       0 likes, 0 repeats
       
       I need to do this for Python 3 too. I got stuck working on codebases that were stuck on Python 2 for most of the last decade, so now that I'm happily onto Python 3, I'm forgetting all kinds of neat new features I could be using
       
 (DIR) Post #Aya0P0d5j2s4t13X1c by foone@digipres.club
       2025-09-25T23:22:18Z
       
       0 likes, 0 repeats
       
       because for a long while I was only vaguely aware of the new changes in python 3, as they weren't really accessible to me. so I didn't keep that close a watch on the changelogs
       
 (DIR) Post #Aya0V9pKRW2l9IiBUm by foone@digipres.club
       2025-09-25T23:23:22Z
       
       0 likes, 0 repeats
       
       so I'm missing all kinds of stuff because I never really got to use it when it was new, since I just don't remember it exists.
       
 (DIR) Post #Aya0Yk87vOzMbtDKcK by lritter@mastodon.gamedev.place
       2025-09-25T23:23:36Z
       
       0 likes, 0 repeats
       
       @foone oh no.
       
 (DIR) Post #Aya0cPM96U59L6WEU4 by foone@digipres.club
       2025-09-25T23:24:16Z
       
       0 likes, 0 repeats
       
       the funniest part? I've procrastinated the python 2 to python 3 for SO LONG that they've deprecated and removed the "convert python 2 source to python 3 source" tool that python 3 shipped with
       
 (DIR) Post #Aya0cSrS4XuGD4BmCG by foone@digipres.club
       2025-09-25T23:24:45Z
       
       0 likes, 0 repeats
       
       so if I want to upgrade any python2 scripts I have to keep an older version of python just to do the conversion
       
 (DIR) Post #Aya0ircGwieeix8l9c by foone@digipres.club
       2025-09-25T23:25:50Z
       
       0 likes, 0 repeats
       
       being a python2 jobs for a decade and a half may have some of the blame, but the other thing is I'M A RETROCOMPUTERIST. I'm regularly coding for and on DOS or Windows 95 or whatever! how up to date do you think I am?
       
 (DIR) Post #Aya0uZANMtiUyffjSy by foone@digipres.club
       2025-09-25T23:28:13Z
       
       0 likes, 0 repeats
       
       ERROR C2129: static function blah blah blah() declared but not definedoh, c/c++, you know how much I've missed your "you need to define a function. no, like, separately from where you write the function. you have to tell the compiler there's a function, and also separately tell the compiler what that function does. oh but only if you use more than one file."
       
 (DIR) Post #Aya0zMCmz77SEA5Lxg by foone@digipres.club
       2025-09-25T23:28:30Z
       
       0 likes, 0 repeats
       
       NOT VERY MUCH. ADD ANOTHER PASS TO YOUR COMPILER.
       
 (DIR) Post #Aya1Gq2fJ17BgfgZg8 by foone@digipres.club
       2025-09-25T23:32:15Z
       
       0 likes, 0 repeats
       
       the other reason why I tend to not really keep up with language changes is that I'm often targeting dead platforms and the compilers for them do not support all those cool new features
       
 (DIR) Post #Aya1PYKOXG9hM28MHg by foone@digipres.club
       2025-09-25T23:33:46Z
       
       0 likes, 0 repeats
       
       like, oh, cool, C++23 gives me a "multidimensional subscript operator"? Neat. When's that coming to Borland Turbo C++ 3.0?
       
 (DIR) Post #Aya1wmrxUZ1G0fgFbE by yuubi@furry.engineer
       2025-09-25T23:39:41Z
       
       0 likes, 0 repeats
       
       @foone it's almost as if it's invisibly a pointer: the function arg register contains the address of the thing, but you don't write & at the call site or * at the use site.feature/footgun: you can write through it if it's not a reference to const foo the same way you'd write to a local var in the called function. (which is why i almost never make function args references to non-const, to avoid surprise writes to what looks like a regular arg at the call site). this is useful mainly to avoid copying big structures when calling a function.for local vars, they're useful for an alias if you end up having to touch several internal parts of array[thing.idx]->part.subpart or whatever, which happens too much at work.and because the pointer part is invisible (for args) or doesn't necessarily really exist (for local vars that i use mainly as a short name for a repeatedly used thing), they can't be null and you can't reassign to them. (it's called "bind" instead of "assign", i guess to reinforce that difference)
       
 (DIR) Post #Aya21qcYyFHH5qtOCG by foone@digipres.club
       2025-09-25T23:40:38Z
       
       0 likes, 0 repeats
       
       @solar I totally get it! I've said before that knowing different programming languages is about finding one that fits inside your head best. I spent the 2000s learning about 1-2 languages a year, then I learned python, and "oh wait this is what I was looking for". I've learned like 3-4 more languages in the 18 years since, because I've finally found one that works like I think.
       
 (DIR) Post #Aya29gFfPJjfFZuxyy by foone@digipres.club
       2025-09-25T23:42:08Z
       
       0 likes, 0 repeats
       
       @_r I've done that more than once, because I was developing on machine A to eventually compile for machine B. Sometimes it's easiest to iterate on a modern environment and then go back to the target one... and I didn't want to keep accidentally writing code that wouldn't work on that older compiler
       
 (DIR) Post #Aya2DaGPc27jpy7yk4 by foone@digipres.club
       2025-09-25T23:42:48Z
       
       0 likes, 0 repeats
       
       @_r I'd rather know I made that mistake now, rather than months later when I've already wrote the floppies and booted the 386 :)
       
 (DIR) Post #Aya2J2Q0MSdAbbDPcW by foone@digipres.club
       2025-09-25T23:43:50Z
       
       0 likes, 0 repeats
       
       @yuubi this code features non-const references that are modified, yeah, so it's that confusing area right around the footgun
       
 (DIR) Post #Aya2aikoDCUopVNVD6 by foone@digipres.club
       2025-09-25T23:47:00Z
       
       0 likes, 0 repeats
       
       Beautiful, it works first try. Thank you for your service, Mozilla.
       
 (DIR) Post #Aya2l3aLcI00KgPhOi by foone@digipres.club
       2025-09-25T23:48:54Z
       
       0 likes, 0 repeats
       
       Zoom. Enhance. There. That black line. What the Windows 11 fuck is that? It's not there on the actual screen I'm looking at, only in the screenshot.
       
 (DIR) Post #Aya2sB5o6QCLdxWY9w by foone@digipres.club
       2025-09-25T23:50:07Z
       
       0 likes, 0 repeats
       
       I'm using Greenshot to take these screenshots, but I'm... one patch behind? I'm on 1.3.300, the newest is 1.3.301 which came out last week (and seems to be a security fix)
       
 (DIR) Post #Aya2vOuNC1t9MPiF6W by aks@scalie.zone
       2025-09-25T23:50:27Z
       
       0 likes, 0 repeats
       
       @foone its the hole where copilot lives
       
 (DIR) Post #Aya34uhKMy1MYo99gO by foone@digipres.club
       2025-09-25T23:52:22Z
       
       0 likes, 0 repeats
       
       oh that's weird. It's not COVERING UP the 8 leftmost lines of the screen, it's shifting the whole window right by 8 pixels!
       
 (DIR) Post #Aya3841y7tOiNIItQe by foone@digipres.club
       2025-09-25T23:53:04Z
       
       0 likes, 0 repeats
       
       @ben nope. this is a non-resizable window anyway, you can't maximize it
       
 (DIR) Post #Aya3BI7CDYPovQHtLM by foone@digipres.club
       2025-09-25T23:53:22Z
       
       0 likes, 0 repeats
       
       something is very slightly broken in the deep bowels of Greenshot, I suspect
       
 (DIR) Post #Aya3EQrKAEaKufMTB2 by foone@digipres.club
       2025-09-25T23:54:05Z
       
       0 likes, 0 repeats
       
       another thing to stick on the todo I guess. or just never use alt-screenshot? because it's not there in other types of screenshots, just window screenshots
       
 (DIR) Post #Aya3JhCAqyxz1jciw4 by foone@digipres.club
       2025-09-25T23:55:13Z
       
       0 likes, 0 repeats
       
       ugh. zooming into full screen screenshots on a highdpi monitor is bad for my mental health. it's so blurry!
       
 (DIR) Post #Aya3YqdG39ZIdeW716 by foone@digipres.club
       2025-09-25T23:57:56Z
       
       0 likes, 0 repeats
       
       my psychic debugging guess? it's the little round window corners. Those little curves are about 8x8. I bet Greenshot is querying some metrics wrong, or not using the windows 11 api for them.
       
 (DIR) Post #Aya3eeFH16HxxW42c4 by foone@digipres.club
       2025-09-25T23:58:54Z
       
       0 likes, 0 repeats
       
       @gloriouscow (I have written some Rust code, and I'm open to writing more, it just doesn't solve any of my problems right now)
       
 (DIR) Post #Aya4347qRjwHAuEUEK by foone@digipres.club
       2025-09-26T00:03:18Z
       
       0 likes, 0 repeats
       
       anyway tangent over I stuck on an FPS display and I'm getting a consistent 58-59 FPS with doom running at a 15FPS rate. I was afraid I was running way worse than that. can I do better? can I hit Doom's real FPS of 35 fps?
       
 (DIR) Post #Aya47xjZdZ9infDObY by foone@digipres.club
       2025-09-26T00:04:09Z
       
       0 likes, 0 repeats
       
       With three Dooms, yes. I don't really want to push it right now, I'll figure out later what happens if I try with 30 dooms
       
 (DIR) Post #Aya4DuBdjsGVXHB0RU by foone@digipres.club
       2025-09-26T00:05:19Z
       
       0 likes, 0 repeats
       
       so now what's left is: Keyboard input.I think I'm gonna say I'm done for today, and come back to this later.although if I go check my tumblr notifications and another 10 people have replied/reblogged/tagged "someone should do Doom next!", I might get annoyed into coming back
       
 (DIR) Post #Aya4Wfsl9An6fnIMcK by hecklefish@infosec.exchange
       2025-09-26T00:07:08Z
       
       0 likes, 0 repeats
       
       @foone tumblr...? What year is it?
       
 (DIR) Post #Aya4WhQ7Qd4NRXuWFk by foone@digipres.club
       2025-09-26T00:08:41Z
       
       0 likes, 0 repeats
       
       @hecklefish it's been my primary social media since twitter died
       
 (DIR) Post #AyaW2HcpZBf1TF8pI8 by ppxl@social.tchncs.de
       2025-09-26T05:16:36Z
       
       0 likes, 0 repeats
       
       @foone lol I saw that too. 😅They must be young and don't know you yet (and also lazy in not reading rebonks)
       
 (DIR) Post #AyaWJRr8mXJk7k1HJg by oxi@chaos.social
       2025-09-26T05:19:58Z
       
       0 likes, 0 repeats
       
       @foone They probably read the size of the window in luding borders, but then the windows screenshot function only returns the content.
       
 (DIR) Post #AyauVOPHpVE7njDfcW by foone@digipres.club
       2025-09-26T09:50:59Z
       
       0 likes, 0 repeats
       
       @hell it's Doom! I'm not gonna rewrite all of Doom in Rust!
       
 (DIR) Post #AyavRSiDypQrwxlcwa by bloognoo@retro.pizza
       2025-09-26T10:01:25Z
       
       0 likes, 0 repeats
       
       @foone when I was a games coder for ps1 and ps2 dev having counters roll over was a pain as it would crash soak tests all over the place, and when consoles would just be left on with the telly off between plays the durations we had to stay up for we're daft. Apologies if I'm telling you stuff you already know.
       
 (DIR) Post #Aybv8EdAIzRlvtBzmq by foone@digipres.club
       2025-09-26T21:32:34Z
       
       0 likes, 0 repeats
       
       @hell kinda:https://github.com/cristicbz/rust-doomnot complete enough for what I need. plus it's a modern opengl renderer: I need software
       
 (DIR) Post #AykhvWMBXS6WABUr2m by foone@digipres.club
       2025-10-01T03:17:12Z
       
       0 likes, 0 repeats
       
       okay I've written up keyboard input. it's mostly working except RACE CONDITIONS
       
 (DIR) Post #Ayki0eF5eDNY4Gcg8O by foone@digipres.club
       2025-10-01T03:17:54Z
       
       0 likes, 0 repeats
       
       the problem, I think, is that the client is writing to the servers every time it polls for an image, while the server is only checking for keys when it renders an image
       
 (DIR) Post #AykiAfEsnTCU3SImWm by foone@digipres.club
       2025-10-01T03:19:56Z
       
       0 likes, 0 repeats
       
       so:1. the server renders a frame. the key buffer is empty2. the client detects a keypress. it adds it to the keyqueue3. the client queries for a image from the server, and it copies the key buffer over3. the client finishes a frame4. the client queries for an image from the server. since no keys were pressed this (client) frame, it empties the key buffer5. the server renders a frame. the key buffer is empty, because it missed its chance to see the key in the buffer
       
 (DIR) Post #AykiHKlRJvdka1i772 by foone@digipres.club
       2025-10-01T03:20:17Z
       
       0 likes, 0 repeats
       
       so I've got to resynchronize these somehow
       
 (DIR) Post #AykiL6GLB9nolKxa7s by foone@digipres.club
       2025-10-01T03:21:00Z
       
       0 likes, 0 repeats
       
       maybe I make the server clear the buffer when its done drawing an image, the client refuse to push a new update unless the buffer is empty (indicating the server has seen it)?
       
 (DIR) Post #Aykirvk9JHo9h5YccK by foone@digipres.club
       2025-10-01T03:27:49Z
       
       0 likes, 0 repeats
       
       argh no because one of the things it needs to send is an empty buffer, which it can't tell is empty because empty and "no keys pressed" look identical
       
 (DIR) Post #Aykizsckn7pAKutB2G by foone@digipres.club
       2025-10-01T03:29:16Z
       
       0 likes, 0 repeats
       
       okay so an empty buffer now looks like all FF instead of all zeroes.
       
 (DIR) Post #Aykketm9VxNzjdPMvI by foone@digipres.club
       2025-10-01T03:47:53Z
       
       0 likes, 0 repeats
       
       bingo! I was able to beat e1m1. made me a bit dizzy though. it's only gonna work when I run it at full strength
       
 (DIR) Post #Aykmt0rCBOP9eyco7s by foone@digipres.club
       2025-10-01T04:12:50Z
       
       0 likes, 0 repeats
       
       lets just send a "release every key you know about" message every framewhy not
       
 (DIR) Post #Aykn5AeVacGnVyUK24 by foone@digipres.club
       2025-10-01T04:15:05Z
       
       0 likes, 0 repeats
       
       oh yeah the fucker is cycling the image-indexes around. this is only confusing everything
       
 (DIR) Post #Aykn8YFyHnQ9agcgwS by foone@digipres.club
       2025-10-01T04:15:10Z
       
       0 likes, 0 repeats
       
       EVERYTHING
       
 (DIR) Post #AykoJIdenG88IAOI0O by troldann@techhub.social
       2025-10-01T04:28:43Z
       
       0 likes, 0 repeats
       
       @foone sounds like you're inventing a new category to speedrun.
       
 (DIR) Post #AykqqO1pyTDQTPbcJ6 by foone@digipres.club
       2025-10-01T04:57:10Z
       
       0 likes, 0 repeats
       
       okay now I just have to manage to play it well enough to make a video. this isn't going to be easy. I might have to fake it because I'm an expert at hacking doom, not an expert at playing doom
       
 (DIR) Post #AykquIvsrZq7pJgnGS by foone@digipres.club
       2025-10-01T04:57:22Z
       
       0 likes, 0 repeats
       
       and I'm especially not an expert at playing doom like this
       
 (DIR) Post #AykquK58aeptOJ1hKK by foone@digipres.club
       2025-10-01T04:57:28Z
       
       0 likes, 0 repeats
       
       in fairness, no one is. yet.
       
 (DIR) Post #AykrP0f2qXh48SSEMK by foone@digipres.club
       2025-10-01T05:03:26Z
       
       0 likes, 0 repeats
       
       ugh. found a bug with keyboard focus:1. Doom #1 is focused2. Press FIRE. Doom #1 gets a FIRE-pressed event. 3. Focus changes to Doom #24. Doom #1 automatically gets a FIRE-released event5. FIRE is still held down by the user, but no FIRE-pressed event is sent to DOOM #2
       
 (DIR) Post #Aykru6Xx0vbRMlxmyW by foone@digipres.club
       2025-10-01T05:09:05Z
       
       0 likes, 0 repeats
       
       I was trying real hard to not have to keep track of which keys were held down, but I guess I have to
       
 (DIR) Post #Ayks8ScfjSCZt917tg by foone@digipres.club
       2025-10-01T05:11:37Z
       
       0 likes, 0 repeats
       
       why manage one key buffer when you can manage three, and each one is in two separate programs?
       
 (DIR) Post #AykuOonXFjT3Cn1fyC by foone@digipres.club
       2025-10-01T05:37:01Z
       
       0 likes, 0 repeats
       
       okay all buffers are managed now. the game is unplayably hard but that's a me issue
       
 (DIR) Post #AykujnXD92RPMuOVeK by acsawdey@fosstodon.org
       2025-10-01T05:40:49Z
       
       0 likes, 0 repeats
       
       @foone Doom #1 and Doom #2 … this must be a really dark version of The Cat in the Hat?
       
 (DIR) Post #Aykvolj9ON2NAHufhY by foone@digipres.club
       2025-10-01T05:52:21Z
       
       0 likes, 0 repeats
       
       IT'S TIME TO DO-DO-DO-D-D-D-D-DOOM! https://digipres.club/@foone/115297347759872997
       
 (DIR) Post #AykxHNT6lSK2HPcBfc by jonathankoren@sfba.social
       2025-10-01T06:09:07Z
       
       0 likes, 0 repeats
       
       @foone