
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
- Tweets6.7K
- Following785
- Followers782
- Likes12.2K
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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β¦
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
He was a very nice open source internet weirdo
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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.
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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!
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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.
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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.
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Command & Conquer source code available on Github github.com/electronicarts/
Command & Conquer Archive Footage from Renegade and Generals youtube.com/watch?v=qN2gryZYβ¦
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Valve released the source code for Team Fortress 2 some hours ago
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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. :)
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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().
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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β¦
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Get Ready For KiCAD 9!
hackaday.com/2025/02/17/get-β¦
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Virtual VMU
Open source, self hosted cloud saves upload/download server designed for the Dreamcast Web Browser.
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
This New Handheld Aims To Bring Back The Magic Of '80s Text Adventures. timeextension.com/news/2025/β¦
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Viktor Antinov, art director of Half-Life 2, has sadly passed away at age 52.
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ retweeted
Someone Is Making New Games For The GBA's Unpopular E-Reader Add-On. timeextension.com/news/2025/β¦




























