
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
Pinned Tweet
I am happy to announce my latest project: N-Gage SDK.
An ecosystem for developing (or porting existing) games for the Nokia N-Gage using modern tools such as Visual Studio 2019/2022 and CMake: github.com/ngagesdk
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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
Just a heads up, I'm moving to @bluesky. It's such a nice and non-toxic environment, full of great people. I'll post from time to time via @nokia_ngage, but that's it. See you there! π€
bsky.app/profile/mupf.dev
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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β¦
z8lua by @samhocevar in ANSI C. You're welcome. π€π€
github.com/ngagesdk/Pico-8/tβ¦
Here are some first impressions of my PICO-8 emulator for the Nokia N-Gage. I'm getting somewhere, but there's still a lot to do!
The more I get involved with Pico-8, the more I start to appreciate it. fillp() was surprisingly straightforward to emulate. Why? Because almost everything in Pico-8 is just that: simple by design. #NGageSDK @nokia_ngage
πΌππππππ π΅πππ£πππ’ππ π΄ββ οΈ 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. :)





















