Erika

@rrika9.bsky.social

GPU compiler dev, reverse engineer, mostly in Glasgow

OpenCAGE is now live on Steam! If you ever wanted to mod Alien: Isolation, this is your moment. The tools support full custom levels, animations, sounds, missions, modes, models, textures, and more - along with a ton of new debugging and live-edit features! Let's rock! 👽

Here are four landing pages for CAD kernels: three from the past six months, and one that's been in development for 27 years. Can you tell which is which?

A very polished website with the title "A CAD kernel for everyone who makes things"A very polished website with the title 'Technology and services for 3D software'A very polished website with the caption 'Unified 3D mechanical and electronics CAD'A very polished website with the caption 'Open-source parametric CAD. Built in Rust.'

Okay so I thiiiink you can maybe use FFTs for this? I took this source image and scaled different ways and used ImageMagick to get the magnitudes of the FFT. I think the innermost black square tells you something about the size and orientation of the pixel grid...

A low resolution black and white pixel image of some black squiggles and dots on a white background.A grid of grainy grey tiles surrounded by fuzzy black lines. We seem to see five rows and columns of tiles: the outermost rows and columns are cut off and we see about 1 unit of them. The 2nd and 4th rows and columns are two units wide each. The middle row and column are 4 units wide each. At the centre is a white dot.A fuzzier and zoomed in view of a grey grid. The central tile barely fits on the screen, and the black lines are much less distinct.A similar grid rotated 30 degrees clockwise. Only the centermost black square is easily distinguished. There's also verticale and horizontal grey streaks through the middle of the image.

I am now aware of three efforts to do patches for/reimplementations of DXHR using AI, two of which based on my work. future is arriving fast, and I’m starting to think how I can focus my efforts on the parts that can’t be produced at the press of a button

Erika@rrika9.bsky.social · 2y ago

as you may have seen on Twitter, I'm researching the Deus Ex: Human Revolution engine. I started around 2014 but the first progress I showed publicly was these two screenshots of DXHR maps loaded into blender in 2020

Is there such a thing as a tool for extracting mangled pixel art from screenshots, potentially through one or more layers of scaling, colour-space transformation and compression?

[2024 Sep 13] inventory system is getting there [2024 Sep 14] integrating a sugiyama layouter (like graphviz' dot) to show the post-processing pipeline

BildBildBildBild

“Uh oh our chair on the mocap stage was too short! What do we do? Remodel the sofa? Re animate the characters??” Environment artist: “I got you”

Bild

Happy 6 year (and 1 day) anniversary to one of the most unhinged posts I've ever made: the HTML5 accelerator card

a poster advertising some new hardware:

# Upgrade your browsing
The world’s first HTML5 accelerator card is here. Our custom chips work with Chrome and with Electron apps to give you a web experience like never before.

- One PCI Express x16 card, endless power
- Supports viewports up to 7680x4320 and refresh rates up to 240Hz
- Parallel renderer with on-die Flexbox and CSS Grid solvers
- Shielded event bubbler for smooth, noise-free mouse movements
- 8 programmable Virtual DOM chips for super-fast React apps
- Seguri-Dad® TPM cryptographically signs your web requests so you never have to complete a CAPTCHA again
- Low-voltage SVG rasteriser

a 3D render of the card highlights features of various chips:
- Predictive JSON deserialiser
- 1024-bit renderer (64 div cores, 128 span cores, 8K-ready, 256MB emoji cache)
- Virtual DOM+, 8-stage diff pipeline
- Dual garbage collectors

benchmark charts show that it significantly outdoes Firefox and Chrome on Max Discord Scrollback (text and GIFs loaded before client drops to under 60fps) and Facebook News Feed FPS (scrolling through the NIST Standard Minion Meme Collection)

if you really *must* play Fortnite on Linux, here's how to bypass Epic's EAC2 rootkit https://codon.org.uk/~mjg59/blog/p/epics-eac2-v2-seems-fairly-easily-bypassable/

Matthew Garrett: Epic's EAC2 v2 seems fairly easily bypassable

Epic just announced the upcoming version 2 of their Linux implementation of Easy Anti-Cheat. It’s based on using the Linux eBPF security module to monitor what’s happening, and then a bunch of extra infrastructure to make sure this can’t be bypassed. The core part of this is requiring secure boot be enabled (ensuring that modified kernels can’t be used), using measured boot to verify that secure boot is enabled and which keys are used (to prevent you from just signing your own modified kernel), and then doing remote attestation, a mechanism where the TPM generates a signed copy of the boot measurements and passes that off to a server which verifies it came from a real TPM, verifies that you have secure boot enabled and are using the right keys, and presumably then allows you into the game. This is all fine as long as you can prove that the measurements provided are real, and that’s actually a lot harder than you might think. First, we can simply make up our own quote signed with our own key and say that it came from a TPM. This is avoided by every TPM having an Endorsement Key (or EK) and an associated certificate, with that certificate being signed by the TPM vendor. If you have a list of all the legitimate TPM vendors and their CA keys, you can verify that the measurements came from a real TPM. Easy enough. So we need to get the measurements from a real TPM, and the one on our motherboard contains the measurements that were generated by the firmware and bootloader, and we can’t reset those at runtime without resetting the TPM, which… oh huh there’s actually nothing stopping us from doing that at runtime, as long as we have access to the hardware. Many desktop boards have the TPM on a small plugin module with a standard pinout that includes a reset pin. Simply short that to ground briefly and the TPM is back in its initial state, and userland can write whatever measurements it wants to it. Boot a modified kernel which lies to the eBPF code? As long as you replay the expected log values from a boot with secure boot on and a trusted kernel, the TPM will still happily provide a legitimate set of measurements that’ll satisfy the checker. What if the TPM is less accessible, either because it’s mounted directly to the motherboard or it’s inside the CPU or chipset? That’s going to be trickier. But here’s the thing. The quote needs to come from _a_ TPM, but not necessarily the TPM on your motherboard. TPMs these days are usually connected via the Serial Peripheral Interface, usually referred to as SPI. Microchip make a USB to SPI bridge, and there’s a Linux driver. Wire one of those up with an appropriate header and you can plug in an easily available TPM module intended for plugging into a motherboard, and now we tell the kernel to ignore the motherboard TPM and make /dev/tpmrm0 point at the USB one and program it with a set of trusted measurements and once again everything is going to look just fine (yes obviously the eBPF code can look for this, but we’re running a modified kernel so we can just lie to the eBPF code). Remote attestation on PCs just doesn’t work that well in environments where you can’t associate a specific TPM with a specific system, which is basically everywhere except enterprises. But maybe that doesn’t matter and cheaters wouldn’t be willing to spend the $20 or so it’d take to produce one of these things? That would seem somewhat surprising, but it’s not impossible. And obviously any server-side cheat detection that triggers could then block that specific TPM, meaning they’d need to go and get another TPM, and maybe that ends up being enough to discourage people from bothering. From a practical level, this may be sufficient. But at a technical level? It’s not great.

codon.org.uk

In other words, the presence of a strategic opponent pushed people to produce very strong random behavior — in many cases, indistinguishable from uniform randomness. This is surprising, and contrary to what we might expect given the persistent failures in human randomization!

Which I think people would look at and see, oh, this person put effort into it, they did a real performance, and not apply AI ethical thinking to it. But it still is head-scratchy to me because that still *would* be me doing this in lieu of hiring one or more voice actors. I crossed *a* stated line.

similar to NaN payloads they should let you stuff ~6 instruction bytes into a function pointer FExxxxxx xxxxxxx0. cpu with native support would execute it in the call opcode. else the kernel can make up a page full of repeats on access.