more progress on my media dashboard thing, showing upcoming movies and episodes, it also shows active streams and i also made a page to more easily manage remote access permissions

I revived this project after bouncing between a few upscalers i settled on using Vapoursynth, I'm directly feeding in the remuxed video stream from the DVD into it, deinterlacing using IVTC+QTGMC, debocking, doing some cleanup using a few spatio-temporal denoisers, upscaling using waifu2x-vulkan, some more sharpening, motion interpolation using RIFE and then everything gets piped into FFmpeg for encoding it takes about an hour per minute of input video :(

Show thread

i made my first FUSE filesystem driver (for windows, using winfspy) that allows one to browse and modify Scrapland's .packed files without manually un- and repacking :D that was a ton of fun

More stuff: managed to inject ImGUI by using d3d8to9 to proxy the game's DX8 stuff to DX9 and hooking the DirectInput8 functions to write the mouse state into ImGUI's IO struct, still breaks when the DX8 device resets or you close the window but that should be fairly easy to fix, then i need to make the overlay toggle-able and then i can start adding widgets

I ... don't know why i made this, but i did, was a fun exercise in making Gmod Lua modules in C++ and using undocumented windows APIs (this runs completely un-elevated, it just calls RtlAdjustPrivilege and NtRaiseHardError)

I Completely rewrote the parser from scratch, found out where the triangle indices are stored so now i can properly import 3d models, still need to take care of the materials because at the moment I'm manually loading the textures, but dang that feels nice to have it working properly now

Show thread

my AoC stats so far
and the repo with all my solutions (vanilla Rust, only crates I'm using are for AoC input fetching and some convenience macros)

Yesterday's Stream was semi-successful, i managed to get some Vertex Position data fron one of the model files, (it's stored as DirectX Flexible Vertex Format Data which is... tricky to parse, but @vdd game me a zip with DX8 docs which has a nifty diagram with the vertex memory layout which should make this a whole lot easier) i might roll my own parser because because using Construct seems to do more harm than good and for now i only want to parse and not reconstruct...

Building a fancy dashboard thingy for QBittorrent, Sonarr and Radarr, so i don't have to switch between 3 tabs to do things™

messing around with in , made a script to multi-ivy-gen base on a particle system applied to a mesh (each particle is a "seed" for ivygen), it also random rotates the mesh so the ivy spreads evenly and animates the growing of the ivy objects, i have no idea what to do for the material of the text tho :|

figured out some more stuff:
- the game has a built in dedicated server (????) this will make reversing the network protocol substantially easier
- it uses UDP for its networking protocol
- it has no error handling server side so you can easily crash the server (maybe you could even get remote code execution, hmmmmm)

i also hooked the send() and recv() function so now i can sniff packets without having to deal with wireshark (and i can directly pass them to a Construct parser for dissection, this should be fun!)

Show thread

i managed to import the AI-Ship-Routing data into Blender (the file format is really simple), so uh, that's cool i guess, still haven't figured out the 3D-Model format of the game but i guess i'll take a look at the multiplayer network protocol

Show thread

a bit more progress: i made a list of all the function that refer valid chunk_ids, radare2 is *really* good for that kind of semi-automatic analysis, i just hacked together a 30 line python script that searches the Scrapland binary for the chunk_id values that i got from hooking the read_chunk_data function and then used radare2 to pull out all the locations in the game's code where those are referenced (as simple as "/r `?P 0xdeadbeef`", where 0xdeadbeef is the offset inside the binary that you want to find references to)

Show thread

currently trying to figure out the file structure of the game engine data files (3d models, animations, camera data?, meshes, etc) by looking at the read() calls the game makes an figuring out how the data connects (it's much nicer than just staring at assembler code)

Show thread

More messing around with ScrapHacks, i managed to hook some stuff with ( and can now trace the loading of files from the game's .packed files, and the loading of sections from the games ... section-oriented files (as far as i can tell those are used for 3D models, organized in sections with each section having a 4 byte ASCII header to identify them) this should make figuring out the file formats a bit more bearable

Show thread

poking at ScrapHacks some more and finally managed to hook into the games python subsystem and load my DLL as a python module, hooray! time to refactor everything into python functions... yaaaaaay :|

Show thread

and while i'm on the topic of BL3, i made aurora lootealis! (or lootrora borealis)

Show thread

well, the new stuff added in yesterdays Mayhem 2.0 update is pretty ... suitable for use beyond mayhem 4, yes let's go with that

Best voice line from : "I need something from that ship, also why does it look like all your clothes are trying to kill each other?", see attached picture for the guy that line is referring to

Show older

the mastodon instance at is retiring

see the end-of-life plan for details: