Troy Davis (@GPFTroy) profile picture
Arizona
Joined August 2014
Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)Photo by Troy Davis (@GPFTroy)
Laserdisc games on the #Dreamcast? @GPFTroy has indeed done what some might have thought impossible! Dragon's Lair (Original Arcade LaserDisc) game is now fully playable and here's a look! youtu.be/daDrlr5WiAE @falco_girgis @TheDCJunkyard @timeextension64 @IanMicheal10
4
8
29
1,196
It is with great pride that I can finally announce that my fast math, vector, and linear algebra library for the Sega Dreamcast, SH4ZAM, has now officially been added to the KallistiOS SDK within kos-ports, ready for use within any KOS-based project looking to make perf gainz! 💪 Featuring dual modern C23 and C++23-based APIs, backed by a metric shitton of inline and out-of-line SH4 assembly, SH4ZAM is meant to provide game developers with an ergonomic, high-level way to harness the full potential of the SH4's floating-point and memory performance, without requiring anyone to sell their souls or print the SH4 hardware docs out on their bedsheets (as I've already done that part for you). 🤣 What began as a series of math optimizations I was making to Rockstar's engine and Renderware's middleware layer in our Grand Theft Auto 3 and Vice City ports to improve FPS, wound up sending me on an epic quest to bring back the gainz and democratize them for the Sega Dreamcast community and homebrew scene at-large. Since then, SH4ZAM has grown exponentially more capable and has been leveraged to successfully bring the gainz to high-profile ports such as jnmartin's Mario Kart 64 and Star Fox 64 as well as many homebrew games and engines by several collaborating developers who were willing to work with me during SH4ZAM's early stages, providing invaluable feedback and previewing the gainz. I'd like to personally thank everyone who contributed to the SH4ZAM GitHub repository, for everything ranging from epic inline SH4 assembly routines to contributing bug reports, examples, and documentation improvements. We dun good work, everyone! 🔥 You can add SH4ZAM to your existing KallistiOS development environment by simply pulling down the master branch from the kos-ports GitHub repository and running the "make install" command within the "sh4zam" port directory. Further details and documentation can be found on the README for the GitHub repo: github.com/gyrovorbis/sh4zam
22
63
4
493
23,395
📣 #DreamSDK R4 is out! This is a modern, ready-to-use package for Sega #Dreamcast development on Windows. If you’re on Windows and want to start coding for your Dreamcast right away, this is for you. 📥 Download: github.com/dreamsdk/dreamsdk…
8
168
10
596
64,576
SHE'S DONE!!! Mario Kart 64 for the Sega Dreamcast is officially ready for public consumption, so here's a full 6+ minute video of gameplay, captured straight from my actual DC! Jnmartin has done it again! The footage you are watching shows every GP course in the game, including multiplayer footage as well. Yes, you can also save and load ghost files from the VMU! As this is our first release, I'm sure you will run into a minor bug here or there, especially given neither one of us could stress test 4 player very effectively using our hands and feet to drive... So be sure to open tickets for any minor issues you find... assuming you're playing on REAL HARDWARE. I can already tell you right now, emulators are having issues with this one! This was my first time getting to directly contribute to a jnmartin N64 port, and it was an absolute honor for me to be involved with his incredible work. There is nobody else who I have ever met with the cross-architecture knowledge of BOTH the Sega Dreamcast and Nintendo 64, combined with the raw grit, tenacity, and attention to detail required to pull this off and do the source material justice. Not only did I get to take my SH4ZAM library for DC math gainz out for a ride with MK64, but I also brought some new routines back from MK64 so everyone can use them! Finally, I got to be involved in laying the foundation for future jnmartin N64 ports, now that we have an optimized, accelerated audio and video back-end for various libultra functionality, including Fast3D. You can already see how much this has benefited future work based on how quickly jnmartin was able to get StarFox 64 up and running on DC... The man doesn't sleep, no. lol. I just wanted to thank everyone so much for the continued enthusiasm and support behind these ports. The support for our work and the Sega Dreamcast means the world to us! Thanks for helping to keep the dream alive! For instructions on how to build yourself a burnable CDI image or a DreamShell ISO for either your DC's SD card or IDE drive, please follow the README on the repository: github.com/jnmartin84/mk64-d…. NOTE: Windows users will need DreamSDK to build. My last-minute build fixes for DreamSDK are in this WIP branch here, which will probably be merged into the main branch tomorrow when jnmartin wakes up: github.com/jnmartin84/mk64-d…
66
345
28
1,659
63,689
Guys, I’m too exhausted AF from doing last-minute troubleshooting to post a good final trailer for the alpha version of our Mario Kart 64 port to Sega Dreamcast just yet… YES, the repository went live last night, and you can build it yourself (unless you’re a Windows DreamSDK user, then the build is screwed up, YES I KNOW SORRY SORRY GOTTA SLEEP FIRST BEFORE I CAN FIX). Anyway this right here is the best physical hardware capture I have seen that does the port justice on a real Dreamcast. What do you guys think!?!
4
12
145
5,749
Troy Davis retweeted
Time for a KallistiOS GameCube update! Besides some loose ends, the KOS kernel is ported and all the foundational stuff like threads, context switching, interrupt handling, etc. are working. A bunch of the basic KOS examples/tests now build and run for GameCube. Wrote some framebuffer and joypad code and what else should someone do then if not port Doom over? This is a capture from real hardware. Software rendered and no sound, but it's a start. We are bug squashing so we can release KallistiOS 2.2.0 stable (for Dreamcast) in the upcoming weeks and once that is complete, the process of merging the GameCube arch into KallistiOS will begin! Once that occurs, we hope to have some faster driver development to bring the GameCube arch up to speed with Dreamcast. Ultimate goal is single codebases targeting Dreamcast and GameCube together ❤️
5
14
4
92
13,901
Today we're taking a very early look at the progress being made on the Sega Dreamcast's very own port of Runescape Classic! If you weren't already aware of the work that developer, Lobotomy, has been doing, here's some footage captured from an emulator of some online play! It's still extremely early, and as with every ambitious port in the beginning, it still requires the 32MB RAM upgrade, has no audio, and runs like ass... So basically standard procedure! He's currently using our SDL2 back-end with software rendering, which explains the low framerate. Eventually it will move to HW accelerated graphics using the DC's PowerVR GPU, so the current low FPS is to be expected until that time. What IS a big deal is that even in this early stage, it's already able to connect to the online servers for cross-play and is fully playable with the mouse and keyboard! Stay tuned for future updates as Lobotomy continues his work!
14
31
3
247
11,892
Loved the new video from PCN covering the work we've been doing in the community porting titles from various consoles to the Sega Dreamcast. I will get the pleasure of joining him on a livestream for an interview on the 21st!
The #SEGA #Dreamcast is still alive and kicking. It's getting so many games ported to it, and in most cases it ends up being the definitive version of the game. Video in reply
5
26
205
8,279
Been writing SH4 assembly code for the Sega Dreamcast all day and night, hoping to bring big performance gainz to everyone in the community by providing a replacement memcpy() routine that doesn't suck for our GCC toolchains. As it turns out, the Newlib-provided memcpy() we have backing the C standard library in our SH GCC toolchains is slow AF. This impacts not only our Grand Theft Auto 3 and Vice City ports, but also Doom64, Mario Kart 64, WipeOut, and virtually every homebrew game or port that uses KallistiOS! Just have a look at the benchmark results on the left to see just how shittily it performs. The benchmarker invokes a series of memcpy() implementations over an increasingly large buffer window with compile-time configurable alignments. Each iteration initializes the source buffer with a series of randomly generated numbers and clears the destination buffer before clearing both the data and icaches for each run. During the run, the performance counters on the SH4 CPU are used to record cycle-accurate timing for each memcpy() invocation, which is then validated after the run for correctness. There are also large buffers located before and after the destination buffer, which are scanned for any stray/out-of-boundary writes after each iteration. ANYWAY, what you're seeing in the benchmark output is the performance of my custom 1, 2, 4, 8, and 32-byte aligned memcpy() variants, which are highly optimized for specific use-cases, as well as the result of "memcpy_gainz()" which is the generalized form which attempts to call into the fastest of these specialized forms. Meanwhile, "memcpy_fast()" is a routine we found on the internet many years ago from STMicroelectronics which has impressive speeds, but has an LGPL license, which prevents us from statically linking to it in closed-source commercial games. Finally, "memcpy()" is the C standard library routine that ships with our toolchains... and as you can see... It runs like absolute, total, and complete shit. Somehow, at a pathologically best-case alignment of 32-bytes with 1024-byte+ copy requests, the damn thing manages to be slower than "memcpy1()" which is a simple for loop in vanilla C that could've been written by a total newbie that just copies the source buffer to the destination buffer one byte at a time... So basically all of the bazillion things that are using memcpy() in our software in the Dreamcast community, including everything ranging from copying strings or vertices to transferring packets to and from the layers of our network stack, is all taking a massive performance hit due to us having a shitty memcpy() implementation. After I discovered this, I embarked on a quest to take my specialized memcpyN() routines and see if I could use them as the basis for a generalized memcpy() routine to leverage. This is how "memcpy_gainz()" was born. Unfortunately I was on my own for this quest, as every single resource that I found for writing optimal memcpy() routines was targeted at platforms which support unaligned memory accesses. Such platforms require a fundamentally different approach from the one taken for SuperH and other RISC processors without such support. Rather than simply falling back to unaligned memory accesses, my routine attempts to align the destination buffer to 32-byte cache line boundaries where it can call into one of the fast specialized routines depending on the relative alignment of the source buffer. Then it simply does byte-by-byte unaligned copying for any bytes before or after the cache line boundaries. At this point in time, I'm happy to say that for all alignment types I am beating even our fast_memcpy() implementation for transaction sizes larger than 32 bytes and smaller than 8KB. There's still plenty of work to do for both tiny and massive sizes, but I'm stoked to see what people do with the extra cycles once this is done!
34
71
3
689
53,949
Check out the epic work Troy has been doing with real-time FMV decoding and video playback on the Sega Dreamcast! For video, he's first decoding the source stream into a series of PNG images using ffmpeg. These images are then fed into our Dreamcast PVR texture converter tool (pvrtex), where they are converted into RGB565 format with VQ texture compression applied, before finally being compressed again with the zstd compression algorithm. For audio, ffmpeg is used to convert the input stream into a single, big-ass WAV file, after which it is converted into 4-bit mono ADPCM format using our Dreamcast audio converter tool (dcaconv) we developed for our GTA3 and VC ports. Once video and audio have been encoded, they are combined into a single ".dcmv" (Dreamcast movie) file, which can be loaded by the video player, allowing for playback within a game or app. One of the most interesting issues Troy encountered was trouble with keeping the video and audio streams synchronized when seeking around--the exact same problem that plagued our GTA3 port for quite some time. Due to inherent imprecision in the way time we typically maintain ticks on the SH4's CPU, the time that elapses on the AICA SPU will slowly drift away from it. To work around this, we've had to use the AICA's obscure timer registers directly to maintain consistent frame timing for both CPU-side video and SPU-side audio streams.
Dirk the Daring rides again — now with real-time FMV on the Dreamcast! Source video: 640×480 @ 23.97fps, scaled to 320×240, centered into a 512×256 frame. RGB565 textures VQ-compressed via pvrtex Audio: 32kHz mono ADPCM via dcaconv Zstandard compression: level 22, windowLog 15 Real-time decompression + texture upload via Dreamcast’s SH-4 & PVR DMA 🌀 All decoded live at ~23.97fps on original hardware, synced perfectly to audio 🗃️ .dcmv container holds video + audio + frame index 🔄 CDI bootable image generated gpf@GPF:~/code/dreamcast/dreamcast-fmv/playdcmv$ ls -la movie.dcmv -rw-r--r-- 1 gpf gpf 649619843 Jun 10 11:58 movie.dcmv gpf@GPF:~/code/dreamcast/dreamcast-fmv/playdcmv$ ls -la dcmv.cdi -rw-r--r-- 1 gpf gpf 743007817 Jun 11 12:28 dcmv.cdi 🔗 Code: github.com/GPF/ 💼 Open to new roles: linkedin.com/in/troyedavis #Dreamcast #Homebrew #GameDev #SDL3 #OpenSource #RetroDev #OpenToWork #FMV #JobReferral
5
24
165
6,820
One of the most ambitious engines in the Sega Dreamcast community is now leveraging the DC's 100Mbit broadband adapter for improved asset streaming, load times, and persistent storage, by communicating with a remote file server hosted on the local network!
Dreamcast voxel engine update: Worlds now save and load to disk!
12
76
2
664
16,852
“Vaping causes lung damage”? Not according to CoEHAR. Their new review of 12 studies found no significant changes in lung function—even among daily users. Time to cut through the smoke. #harmreduction clearingtheair.eu/en/post/va…
4
55
7
121
3,225
Replying to @NewYorkStateAG
What are you talking about? Not reality. Either @CDCgov is correct and youth vaping is at the lowest level in a decade, or you are right and there is a nationwide youth vaping crisis. nbcnews.com/health/health-ne…
1
8
1
38
823
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
250
8,911
Is there anything Sega Dreamcast can't do? 🔊 Dreamcast Playa Revival 2025 🔊
11
70
4
495
13,530
A brand new update of all the work @memorix101 @falco_girgis @GPFTroy and Bruce are putting into the port of Carmaggedon for the #Dreamcast youtu.be/cSm-3HnOr68 - Take a peek! #homebrew #dreamcasthomebrew #gamedevs @TheDCJunkyard @timeextension64
10
31
1,060
Is 2025 the Year of new Ports to Dreamcast? In the first #DreamPod podcast of the year, we're rounding up the most exciting homebrew ports, some crazy unreleased ports of Shenmue, as well as the latest releases from the indie and fan translation scenes. 👉buzzsprout.com/42610/episode…
1
20
4
51
11,202
DCJY brings us the full rundown of every single software submission for this year's DreamDisc '24 Sega Dreamcast game jam, including an impressive variety of games, tech demos, VMU apps, and even a custom port of the Java Virtual Machine running on the little white box of dreams... If you haven't already, get yourself some sweet new DC software and help support our developers by checking out the submissions and letting them know what you thought! itch.io/jam/dream-disc-24/en…
The Dream Disc '24 Dreamcast homebrew game jam brought us an excellent variety of new Dreamcast software - from games to VMU apps and more. We have played them all and have summarised each entry on the blog! thedreamcastjunkyard.co.uk/2…
1
14
82
5,673
The Dream Disc '24 Dreamcast homebrew game jam brought us an excellent variety of new Dreamcast software - from games to VMU apps and more. We have played them all and have summarised each entry on the blog! thedreamcastjunkyard.co.uk/2…
4
28
3
111
17,554