moa
pixels
moa | pixels | |
---|---|---|
5 | 33 | |
49 | 1,688 | |
- | - | |
8.1 | 4.9 | |
19 days ago | about 2 months ago | |
Rust | Rust | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
moa
-
Structuring NES emulator components in Rust
The code is here if you're interested: https://github.com/transistorfet/moa System is the top level component and devices.rs has the traits that System uses to interact with the components. The machines directory has the system definitions that build a specific machine to emulate.
-
Emulating the Sega Genesis - Part III
A few months ago, I wrote a 68000 emulator in Rust named Moa. My original goal was to emulate a simple computer I had previously built. After only a few weeks, I had that software up and running in the emulator, and my attention turned to what other platforms with 68000s I could try emulating. My thoughts quickly turned to the Sega Genesis and without thinking about it too much, I dove right in. What started as an unserious half-thought of "wouldn't that be cool" turned into a few months of fighting documentation, game programming hacks, and my sanity with some side quests along the way, all in the name of finding and squashing bugs in the 68k emulator I had already written.
-
Emulating the Sega Genesis - Part II
There's not much to it. Only one window can be created at the moment, and input is not yet supported. The threaded option is also not shown here. Before long, the code grew more complicated, and now includes parsing of command line arguments with the clap crate. To see the latest version, check out the Genesis machine-specific binary and the MiniFB host impl and main loop
-
Making a 68000 Emulator in Rust
Since the 68000 has a reasonably orthogonal instruction set, we can break down the opcode word into sub-components, and build up instructions by separately interpreting those sub-components, rather than having a match arm for each of the 65536 combinations. There is a really helpful chart by GoldenCrystal which shows the full breakdown of opcodes for the 68000. We can look at the first 4 bits of the instruction word to separate it into 16 broad categories of instruction, and then further break it down from there. The full code can be seen here
pixels
-
A minimal working Rust / SDL2 / WASM browser game
https://github.com/parasyte/pixels
That gives you a simple software framebuffer, and it builds as a native app or for the web.
-
How do rust gui frameworks avoid rerendering?
On a more recent machine, that same (well, more primitive) app with pixels or softbuffer struggled beyond acceptable. But was definitely poorly written.
-
Announcing lavagna v2, a collaborative blackboard made with bevy and WebRTC
I’ve ported the application from being based on pixels crate to the powerful bevy game engine
-
placing pixels
Well, it depends on how you use it; writing to an image buffer isn't much less efficient than writing to any normal buffer (in fact, although displaying your scene to a window efficiently is important, your main bottleneck will be the actual ray tracing loop). You may want to read this article for a practical example of using an ImageBuffer to create and draw a texture with Piston. Other window backends you could use, apart from pixels which was already mentioned in another comment, include minifb and Mini GL, though I haven't personally used them.
-
Considerations for Power Draw with egui
You can use wgpu instead of opengl as in the pixels example: https://github.com/parasyte/pixels/tree/main/examples/minimal-fltk
-
Is Macroquad suitable for making games like Wolfenstein RPG?
It might be possible but with a raycaster you probably want to be able to easily set all pixels and create your own small engine. Something like the pixels crate should fit your purpose: https://github.com/parasyte/pixels
-
I love rust, I have a pet peeve with the community
The reality is that I have used unsafe that is also unsound out of convenience because fixing it is a papercut too many. And this tends to be common! I know enough to spot unsoundness in other projects (sometimes even early). But not enough to be confident in my own abilities to write sound unsafe code. Why? Because it's really flipping hard, that's why!
-
[WGPU][GLFW][HELP]
Also, if you just want to get-things-done, then https://github.com/parasyte/pixels might be a bit better, to avoid reinventing the wheel.
-
How to prevent performance drops affecting my Game Boy emulator when running on M1/M2 Macs?
However, I recently got a new M2 Macbook Air and started noticing some super weird behavior. While playing Pokemon Silver with an unlocked framerate, I'd notice that the game would slow down to below 60FPS, even on a release build. After printing a little debugging info I found the culprit in the rendering logic which was handled by the MiniFB crate. At first I thought switching to a GPU renderer (such as https://github.com/parasyte/pixels) would help, and it... kinda did?
-
Simple way to draw a pixel at coordinates
pixels uses wgpu and runs fine.
What are some alternatives?
Nuked-MD-FPGA - Mega Drive/Genesis core written in Verilog
macroquad - Cross-platform game engine in Rust.
m100LE - A Wordle-like game for the vintage Tandy (Radio Shack) Model 100
bevy - A refreshingly simple data-driven game engine built in Rust
CLK - A latency-hating emulator of: the Acorn Electron and Archimedes, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 and Amiga, MSX 1/2, Oric 1/Atmos, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum.
rust-sfml - SFML bindings for Rust
martypc - An IBM PC/XT emulator written in Rust.
miniquad - Cross platform rendering in Rust
Nuked-MD - Cycle accurate Mega Drive emulator
ggez - Rust library to create a Good Game Easily
piston - A modular game engine written in Rust
rust_minifb - Cross platfrom window and framebuffer crate for Rust