|
Learn
| Upgrade Your Skills |
|
|
Bare Metal Space Invaders
|
|
|
Imagesource: https://blog.fponzi.me/
|
|
|
Every new version of Space Invaders is still worth a look in 2023. 45 years after its initial release by Taito, the game has seen so many reincarnations that it's safe to say there's hardly any CPU instruction set that hasn't been bent at least once to implement this game. But what do most of these versions – with a few exceptions – have in common? At least one abstraction layer called an operating system between them and the raw, bare metal. There's nothing inherently wrong with that. Still, Federico Ponzi, tweeting as @federico_ponzi, set out to create his own version on a Raspberry Pi, not just in Rust, but also without relying on an operating system, kernel, or standard library. Game on! The result is his bare metal variant, which can also be compiled for the desktop, and offers a lot of learning potential. Avoiding dynamic memory allocation, double buffering, timing, UART control – all topics that need to be implemented at a low level. But Federico succeeded, and those interested in a journey to Rust land will find not only engaging content in his wonderful article but potentially a lot of inspiration as well.
|
|
|
Imagesource: https://www.jiristepanovsky.cz/
|
|
|
The list of homebrew CPUs is long. Veeeery long. Not only since the likes of Ben Eater, but enthusiasts of automated, electricity-based computing machines have also tried their hand at their own implementations. A fascinating 16-bit contender from the Homebrew CPU Ring recently made its debut, emerging from the modern labs (or perhaps the basement) of Jiri Stepanovsky. You can find more about him here. Jiri's goal was to build a Turing-complete 16-bit CPU with the fewest possible ICs, crafting everything down to the ALU himself. What's unique about his build is that the ALU is only 1 bit wide, meaning the necessary 16-bit operations must be executed serially. The use of serial RAM greatly aids this endeavor, making the implementation all the more intriguing! Once assembled, you have access to 128kB of RAM and a whopping 768kB of Flash, and the whole thing can be clocked at around 10MHz. Due to the serialization, the 52 instructions do take quite a few cycles to complete, but it's sufficient for running Bad Apple at 10fps and just about anything else you can imagine. It's a fantastic project for anyone looking to upgrade from 8-bit to 16-bit but isn't daunted by the 1-bit downgrade of the ALU.
|
|
|
Imagesource: Adrian's Digital Basement
|
|
|
Does it sound reasonable to you to replace the mainboard of a nearly 20-year-old CRT? No? Then one of the recent topics from Adrian Black aka @craig1black might not be up your alley. However, if you're intrigued, there's a unique piece of craftsmanship awaiting. At the end of this project, an old Magnavox/Philips TV not only receives a new Chinese mainboard but, as a pleasant side effect, can handle NTSC, PAL, and SECAM signals. It might sound odd at first, but it's genuinely a worthwhile endeavor if you're into vintage computers or gaming consoles and want to display those colorful pixels as the developers intended. And since 2-decades-old CRTs, while abundant on platforms like eBay, are still … well two decades old, it makes sense to give such a device a rejuvenating overhaul to prepare it for the next 20 years. Interesting to watch.
|
|
|
Imagesource: https://pexels.com/
|
|
|
The versatility of Common Lisp, suitable not just for many things but virtually everything, is showcased in a delightful project. While it's already 7 years old, it recently made its way to the HN front page. Potential-Disco is an NES emulator written in Common Lisp. And if you immediately associate Lisp with pure functional programming, you'd be mistaken. Side effects, object orientation, and a host of imperative constructs ensure that the language isn't purely functional. This makes projects like the one by Samantha Doran, tweeting as @doran_samantha, much more feasible. But this isn't just for enthusiasts looking to breathe digital life back into their ROM collection on their PCs. It's especially intriguing for any Lisp fan to delve into the neatly organized source code. There's a wealth of knowledge to be gained, and for those who've always wanted to dive into Lisp, this repository serves as a fantastic learning resource after an initial introduction to the language. Happy Coding.
|
|
|
Imagesource: https://unsplash.com/
|
|
|
Statistically, game consoles are becoming increasingly interesting in the fall. This also applies to emulators. And since there was still a lack of a Gameboy project in 2023, it was finally time in September. So, how about a Gameboy with superpowers? 🦸♂️ Thanks to the efforts of Rodrigo Batista de Moraes, whose work can be found on github here, we get precisely that – and completely free of charge! While there's no shortage of Gameboy emulators out there, akin to the proverbial sand on the beach, we haven't come across one with a JIT compiler before. What exactly does that mean? Just-In-Time compilation is a technique where the emulator translates the code into machine code in real-time, allowing it to be executed directly by the host. The result? A turbo-boost for nostalgia! Moreover, GameRoy not only boasts an impressive GUI (complete with a debugger and disassembler) but has also made its way to Android! Another notable feature is a clever method for handling interrupts. And while other emulators often have to choose between performance or precision, GameRoy has found a way to achieve both. How? By estimating when the next interrupt will occur. Retro innovation at its finest. Numbers: GameRoy can emulate Tobu Tobu Girl (who doesn't know it?) over 100 times faster than the original system! I'd love to see the gamer who can keep up with that... 😜
|
|
|
Imagesource: https://www.markround.com/
|
|
|
Is the Amiga your daily driver, and you can't imagine working with any other system? If so, the following might not be news to you. However, if you happen to own an oldish 500, 600, 1000, or any of the other marvelous machines of the family, and you have both the passion and time to delve into modern development methodologies for the Amiga, then Mark Dastmalchi-Round has just the thing for you. You can find more about him here. In his latest article, Mark delves deep into Amiga system programming. He touches upon the 68k models and also discusses the PowerPC variants, AmigaDOS, AmiNet, and more. Additionally, he explores modern development tools like VSCode, Docker, and cloud-native tools that offer flexibility, especially when paired with advanced emulation. It's quality content that we definitely want more of, and a delightful read for all fans of the beloved girlfriend. ❤️
|
|
|