Dad, gearhead, video game historian, software/retro dev, hacking culture cultivator and a nerd at heart. About in this order. @ertesx @nokia_ngage

Ludwigsburg, Deutschland
Joined September 2013
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
🚨 BREAKING: Nokia N-Gage support has officially been merged into SDL3. Yes, the N-Gage! Meanwhile, Dreamcast devs still arguing over VMU font rendering. Snake > Sonic? πŸπŸ“± > πŸŒ€πŸ’Ώ #SDL3 #NGage #RetroDev #DreamcastCopium github.com/libsdl-org/SDL/co…
8
49
2
214
13,782
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
He was a very nice open source internet weirdo
1
5
155
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
This is a VoxelSpace renderer running on a 1MB, 8MHz, 16-color Atari ST. Lots of optimization went into this project written mostly in C and inline m68k assembly. Most recently, use of the CRT was reduced, making the executable only 13430 bytes small, freeing almost 200KB of RAM.
25
100
4
858
54,325
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Holy SHIT, I just figured out a way to directly HW accelerate Renderware's "decorated" Matrix type and eliminated the need for constant matrix format conversions in our Sega Dreamcast port of Grand Theft Auto 3! In the top-left is my modified version of the main RW matrix structure. It encoded a 4x3 matrix within the layout of a 4x4 matrix, where 3 elements of the final column were just left as uninitialized padding while the top element was used to encode metadata "flags" within the matrix. These flags were quite useful in that they encoded whether the matrices were in certain forms, allowing for various optimizations such as skipping transforms against an identity matrix or taking a fast path for an inverse... While this Frankenstein matrix format was fine with linear algebra routines being implemented in vanilla C, which can easily skip the padding and flags, it presented a real goddamn problem with HW accelerating the math via SIMD instructions. Now suddenly an intermediate conversion was necessary to go from the "decorated" matrix format to the "raw" matrix format, before it could be crammed into SIMD instructions... which was less than ideal. So... I came up with a crazy-ass idea that would allow me to DIRECTLY use the decorated matrices with the DC's SH4 CPU SIMD instructions... Since the SH4 instruction, FTRV (which can do a whole 4D vector transformed by a 4x4 matrix), is just an approximation, it turns out that at least a few of the least significant bits within the elements of the vector and matrix operands are simply ignored... which means... WE CAN SCOOT THE GODDAMN FLAGS TO THE END OF A FLOAT ELEMENT AND PASS THEM TO OUR SIMD INSTRUCTIONS WITH THEM GETTING SAFELY IGNORED! So now, as you can see on the right, we can replace the slow-ass C software routines with fast SH4-accelerated intrinsics which use the FTRV instruction, by simply changing the padding to proper identity matrix values plus abusing the 3 least significant bits of element [0][3] to store our flags! So now RW matrices are basically native DC 4x4 SIMD types... and we got some pretty handsome gainz (plus a few FPS in high FPS areas) to show for it!
35
89
6
994
40,505
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
This is Dreamcast!πŸ’ͺ I haven't had much time for Spiral Engine lately, but its development continues, and it can do things like this, shadows on animated objects. 😁 #dreamcast #gamedev #retrocomputing
11
20
145
5,382
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
SDL 3.2.6 is out! github.com/libsdl-org/SDL/re… So a small detail in this release is mjpeg camera support. This turned out to be an interesting feature.
5
19
151
5,717
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Today's Grand Theft Auto 3 micro optimization for the Sega Dreamcast... speeding up vertex transformation by approximating perspective division. On the DC's SH4 CPU, a single-precision FDIV instruction takes a whole 13-14 cycles to execute. Ain't nobody got time for that shit, so we can abuse the builtin floating-point reciprocal square root approximation instruction (FSRRA) and a couple multiplications to perform a much faster, approximate division with an unsigned result ("MATH_Very_Fast_Invert()"). It turns out that for our PowerVR GPU, which requires clipping all polygons intersecting the camera's near Z plane, we never even need a negative result with a perspective divide, so this is an immediate win. You can see us using the "MATH_Very_Fast_Invert()" macro directly for the vertex submission routines on the right. For other scenarios where we'd like to be slightly better than a real FDIV, where we only need an approximate result, but we MUST preserve the sign of the value we're inverting, "MATH_Fast_Invert()" takes exactly as many cycles as an FDIV in isolation; however, other instructions can be get scheduled in with the routine when it gets inlined for better superscalar dual-dispatch utilization, plus the resulting value is able to be accessed by a later instruction in the pipeline earlier with this routine than with a full FDIV.
12
81
2
825
32,529
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Command & Conquer source code available on Github github.com/electronicarts/ Command & Conquer Archive Footage from Renegade and Generals youtube.com/watch?v=qN2gryZY…
36
412
66
2,655
191,785
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
After struggling through the maths API, I'm finally getting started with the graphics API. However, PRs are still very much welcome and encouraged. So if you want to make a small contribution towards #Pico8 emulation on the Nokia N-Gage, I won't stop you. πŸ™ƒ #NGageSDK #RetroDev
3
3
1
20
1,314
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Valve released the source code for Team Fortress 2 some hours ago
11
35
10
603
33,892
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
This is the Nintendo Dataship 1200. An extremely rare Famicom with a built in network system. It's so rare, I bet you have never heard of it. Let's reverse engineer it together. Follow along for however long it takes, and I will show you how to preserve this stuff forever. :)
20
133
8
966
31,761
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Been working on a ridiculously micro-optimized, HW accelerated, memcpy()-like routine to be used with our OpenGL driver on the Sega Dreamcast for quickly copying vertices and texture data around. On the left we have the main routine, fast_af_memcpy(), which will use the "Store Queues" on the DC's SH4 CPU to very quickly blast 32-byte (or cache-line sized) chunks of data around. If the source pointer is not 8-byte aligned, the slower (but still fast AF) path is taken, which simply repeatedly fills the SQs with the source data using 32-bit MOVs before flushing them to the destination address in an unrolled loop (with cache prefetches) written in C. If the source pointer IS 8-byte aligned, an SH4 assembly routine, sq_fast_cpy() is called, which swaps the DC's FPU to 64-bit double-precision load/store mode, filling and flushing the SQs with half as many MOV instructions, before swapping it back to single-precision upon completion. Finally, any remaining bytes that do not lie on block boundary are simply copied over using the standard memcpy().
24
39
4
794
53,033
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
I had the honor of getting to fly to Brussels to speak in the GCC Devroom at FOSDEM 2025 on behalf of the Sega Dreamcast homebrew community, talking about all of the amazing things we've done with the platform over this last year, powered by the latest and greatest version of the GCC toolchain! If you're interested in taking a casual stroll through C++20 timezone databases, C++26 concepts/constraints, low-level compiler optimizations, SH4 Assembly, OpenGL graphics with Ada, and much more, featuring Super Mario 64, Sonic Mania, Doom 64, and Grand Theft Auto 3, all running on the Sega Dreamcast... my talk is now live! fosdem.org/2025/schedule/eve…
13
38
2
249
8,911
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
I receive enormous amount of sponsorship inquiries every day from Western companies. My recent entertainment is to tell them that I'm in Russia and under the sanctions they can only pay me in crypto. It's really funny to watch them panic trying to get out of the awkward situation
31
25
1
1,501
70,948
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Get Ready For KiCAD 9! hackaday.com/2025/02/17/get-…
5
55
7
243
16,052
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Virtual VMU Open source, self hosted cloud saves upload/download server designed for the Dreamcast Web Browser.
17
95
2
458
18,130
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
This New Handheld Aims To Bring Back The Magic Of '80s Text Adventures. timeextension.com/news/2025/…
9
16
4
95
6,512
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Viktor Antinov, art director of Half-Life 2, has sadly passed away at age 52.
685
6,152
845
79,100
2,857,359
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Someone Is Making New Games For The GBA's Unpopular E-Reader Add-On. timeextension.com/news/2025/…
1
3
18
1,537
π™Όπš’πšŒπš‘πšŠπšŽπš• π™΅πš’πšπš£πš–πšŠπš’πšŽπš› πŸ΄β€β˜ οΈ retweeted
Ever saw a Nintendo Switch Development kit? it's more then double it's thicc-ness of a regular Switch! It also has a build-in HDMI, Network, and " Wii-Controller" - ports !
34
295
23
4,102
152,252