r/EmuDev 1d ago

I built an open-source PocketStation emulator. It boots a real game, plays audio, and saves without corrupting itself.

11 Upvotes

Does anyone remember the Sony PocketStation? It's a tiny 1999 PS1 memory-card-with-a-screen peripheral that was only really found in Japan that ran its own tiny downloadable apps off an ARM7TDMI CPU. As far as I can tell there hasn't been a working open-source emulator for it before and so I built one.

The nearest thing I could find out in the wild was a in progress rust implementation. This one is in C because I want it to be usable for patching holes in other projects - libretro being the first of many.

I've tested it with a .mcr ps1 memcard save that has chocoboworld and it seems to run and save correctly without crashing. I could use some help testing - the emulator comes with a pretty good crash log to so if it does go sideways I should be able to fix it.

You can find the repo here https://github.com/mentalfoundry/pokketstation


r/EmuDev 1d ago

Video [sound warning] been trying these days on emulating an Atari 2600 and uhh... thats a start

Enable HLS to view with audio, or disable this notification

8 Upvotes

i gotta say, this is really fun idk why i didnt try getting into emulator dev before


r/EmuDev 1d ago

I built 3 emulators: DOS,Amiga and AppleIIgs

0 Upvotes

Hello all, I used ai and the work of many other people to make three emulators for ios/iPadOS, I truly just made it for myself but figured people here might enjoy it - it’s my first attempt to publish anything public on GitHub.

treat it as 1.0, probably no major reason to not make it on the App Store once one or two obvious items are removed at some point

A DOS emulator heavily influenced by idos - you should buy it immediately [https://apps.apple.com/us/app/idos-3/id1580768213\](https://apps.apple.com/us/app/idos-3/id1580768213)

his source iDOS 3 - and his code as a basis for some of the work: [https://github.com/litchie/dospad/commit/2e329c69913a1e3e58a9e12a089d079469521749\](https://github.com/litchie/dospad/commit/2e329c69913a1e3e58a9e12a089d079469521749)

For all 3 I didn’t like the input options in emulators like scummVM, and obviously I have not seen a really functional Apple \]\[ or amiga emulator (except for maybe retroarch)

In every implementation I found the lack of Support for the native IOS keyboard annoying - the ish app

[https://apps.apple.com/us/app/ish-shell/id1436902243\](https://apps.apple.com/us/app/ish-shell/id1436902243)

iSH Shell - figured this out years ago by simply adding another row of keys not present on the native keyboard.

All 3 emulators also added customizable portrait and landscape mode keyboards so you can pre-add commands relevant to specific games, I also added a direct touch / drag mouse mode as well.

Other features include save states, importing from iCloud etc.

some things will be buggy - I'll see if I can fix it - buy me a coffee kind of thing.

Apple IIgs:

[https://github.com/burnermcburnface33/AppleIIGS\](https://github.com/burnermcburnface33/AppleIIGS)

Amiga:

[https://github.com/burnermcburnface33/AmigaEmu\](https://github.com/burnermcburnface33/AmigaEmu)

DOS:

[https://github.com/burnermcburnface33/dospad\](https://github.com/burnermcburnface33/dospad)


r/EmuDev 2d ago

[Concept] a Nintendo Super-console capable of running all games in their library

2 Upvotes

Hello, I am one autistic nerd who likes retro video games and I've recently been learning some incredibly basic low-level computer hardware engineering and some software engineering. This has --despite my lack of skill with anything other than casual use of a computer-- inspired me to design a concept of a multipurpose console capable of playing any and all games from nintendo's historical and modern gaming libraries, from the NES all the way to the Switch 2. I wanted to share my idea here just to get it out of my head and maybe pass the madness onto someone else who can actually bring it to life (unlikely).

The computational core of the system is a mix of ARM CPUs (I was primarily inspired by the idea of taking a switch 2 and just adding to it until it could play all nintendo games); an 8-core modern CPU to run switch and switch 2 games and to act as the hypervisor for the retro console programs; a 4-core ARM Cortex-A32 to act as a co-processor for security, decryption, and running GBA/(3)DS games natively; and a large FPGA fabric to act either as retro hardware directly, just the most critical custom chips (the reality coprocessor, the various audio DSPs, etc...), and/or as high speed hardware based translation for GPU functions.
the main console unit itself would be a very unique look, about three or four switch 2's in size. Its top screen (has capacitive touch and 3D parallax barrier) is mounted with a swivel hinge to allow for easy single-screen or dual-screen gameplay while still allowing the system to be closed properly to protect the screens. The bottom screen (resistive touch) is contained on its own removable unit (the controllers attach to this unit rather than directly to the main console) to replicate the experience of the WiiU gamepad.
Both screens have sets of IR LEDs around them to replicate the New3DS eye tracking hardware, but also to allow for screen-space tracking for emulating the function of CRT-based light guns via an IR camera in the controller and some software running on the hypervisor. The top screen will also have a UVA photoresistor mounted on its top edge for Boktai purposes.
The main console will only have a handful of legacy hardware ports [GB(A), (3)DS, Switch(2), and a disc drive for GCN/Wii(U)] but the dock for playing on the TV has modular attachments for allowing the attachment of any one system's assortment of controllers, link and expansion ports, cartridge ports, and expansion disc drives (FDS and 64DD).

More importantly than any of the hardware though is of course is the software! For the more complex retro systems it will involve the hypervisor running a complex "Tiered-caching Interpreter-guided background JIT compiler with a double-buffered frame-ahead speculation pipeline" (gosh that's a mouthful) that also flits back during the start of the VBLANK routine to modify the upcoming frame's code depending on if any controller buttons are currently being pressed. the hypervisor will also keep track of which parts of the code are potentially polymorphic or remain static and store that in a little companion file so the JIT compilation on bootup of a retro game takes less and less time the longer you play.

If you have any feedback to give me on this concept, please feel free to leave a comment! I'd love to talk about this with people who actually understand more than the average layperson.


r/EmuDev 2d ago

my gba emulator "owlblock"

Thumbnail
gallery
30 Upvotes

been making this gba emulator since last of mars
https://github.com/sonphoenix/OwlBlock/tree/master


r/EmuDev 2d ago

60fps NES emulation on ESP32-WROOM-32 (No PSRAM)

Enable HLS to view with audio, or disable this notification

50 Upvotes

r/EmuDev 2d ago

Turning the NES into a thermometer using the PPU's $2002 open-bus decay

0 Upvotes

I created an NES thermometer.

Reference: https://erspicu.github.io/AprVisual/s1a/aprnes-thermometer-tool.html

The custom version of *aprnes* included there is an implementation designed to verify the "Open Bus" analog-style rapid simulation; it accepts temperature parameters, allowing the test ROM to measure the temperature via the Open Bus.

Temperature readings may vary across different emulators.

If you have a vintage NES console that exhibits the full characteristics of the Open Bus, you might want to give it a try.


r/EmuDev 3d ago

NES + Game Boy / Game Boy Color emulator in C++17 — nestest 8991/8991, blargg cpu_instrs & sprite_hit passing, dmg-acid2 / cgb-acid2 matching

4 Upvotes

I've been working on a combined NES + GB/GBC emulator in C++17 with SDL2. One executable, picks the core from the ROM extension.

Current state:

  • NES: 6502 with stable unofficial opcodes, per-instruction cycle counting — matches the nestest log on all 8,991 lines including CYC. Dot-based PPU with loopy registers and secondary OAM evaluation; all 11 blargg sprite_hit tests pass (including the timing ones). APU has pulse/triangle/noise with the NesDev mixer; frame pacing is driven by the SDL audio queue level, which turned out to be a nice way to get 60.0988 FPS for free. Mappers 0/1/4.
  • GB/GBC: full SM83 set — blargg cpu_instrs 11/11 and instr_timing pass. Scanline PPU matches dmg-acid2 and cgb-acid2 pixel-for-pixel. CGB support includes palettes, VRAM/WRAM banking, double-speed and HDMA. MBC 0/1/3/5 with battery saves.

Known gaps (so you don't have to find them yourselves): NES DMC channel is a stub, sub-instruction APU timing tests (clock_jitter etc.) fail since the CPU is instruction-stepped, MMC3 IRQ is scanline-based rather than A12-based, no MBC3 RTC yet, GB mode 3 length is a fixed approximation, no link cable.

One thing I'd recommend to anyone starting out: build the headless test harness first. Mine can dump frames to BMP, audio to WAV, and print the GB serial output / NES nametable as text — being able to run blargg ROMs in CI-style loops instead of eyeballing a window made every component 10x easier to verify.

Source (MIT): https://github.com/Berkya97/retro-emu

Happy to answer questions, and very open to feedback on the architecture.


r/EmuDev 4d ago

New ngpc emulator

Thumbnail
4 Upvotes

r/EmuDev 4d ago

Video I Build Ultimate ESP32 NES Emulator: 60 FPS & Perfect Audio! (Full DIY Build)

Thumbnail
youtu.be
10 Upvotes

r/EmuDev 4d ago

Open-sourced the Rust emu core behind EloFight.com

Thumbnail
0 Upvotes

r/EmuDev 4d ago

DualityDS — a Qt6 melonDS frontend built because I wanted actual dual-screen feel

4 Upvotes

https://reddit.com/link/1uzgt1e/video/13d5es5ssvdh1/player

I'm not a particularly technical person — no CS background, picked up dev skills specifically to build this. Wanted to play Pokémon Platinum, but every DS emulator I tried either crammed both screens into one small window or made the "two screens" thing feel like an afterthought. I wanted the actual dual-screen feeling — split across two monitors, like having a real DS in front of you but on a PC — and a simple enough UI/UX that I wasn't fighting settings menus to get there.

Couldn't find that, so I built it. It's a melonDS fork under the hood for the actual emulation — full credit there — what I built on top is the frontend:

  • True dual-screen split across two physical monitors, not a single crammed window
  • A Wii-style cover carousel for game selection (QGraphicsScene + QPropertyAnimation), built to be simple enough that I wasn't relearning a new UI every time I opened it

Started as an Electron + EmulatorJS build, scrapped it once I hit real limits with WASM performance and controller mapping across two windows — moved to Qt6/C++ instead.

v0.1.2 is up now — portable zip + Windows installer, GPL-3, full source on GitHub: https://github.com/Wz-ozk/DualityDS

I built this mainly to solve my own problem, so I'd genuinely love to hear if this dual-screen approach or the UI simplicity is something other people have been missing too — or if I'm missing some existing tool that already does this well.


r/EmuDev 5d ago

Video Atari ST emulator running diag cartridge

9 Upvotes

r/EmuDev 6d ago

I've built a CHIP-8 emulator

6 Upvotes

I've been trying to study more about hardware instead of focusing only on software. Last year, I even started making a rough CPU design in a digital logic simulator, but I never finished it and ended up taking a break from studying because I didn't have much free time.

Recently, I got interested again in understanding how software interacts with hardware, and while researching ways to learn more about it, I found that building emulators is a good approach. CHIP-8 seemed like a great starting point since it's simple enough to understand while still teaching important concepts.

Over the last week, I've been working on a CHIP-8 emulator in C. I tried to avoid copying existing implementations or relying on AI-generated code, and instead built it based on the documentation and my own understanding. I had some frustrating moments with silent bugs, but eventually got everything working.

So far, the emulator seems to be running well: graphics, sound, and ROM execution are working with the tests I've done.

I'd really appreciate some feedback from people with experience in emulation, low-level programming, or CHIP-8. If you notice any mistakes or have suggestions for improvements, I'd love to hear them!

For anyone interested, the source code is here: https://github.com/lucaaszsx/chip8


r/EmuDev 8d ago

CHIP-8 Emulator

Thumbnail
github.com
5 Upvotes

r/EmuDev 8d ago

Video (PS1) SymphonyRecomp Progress Update!

Thumbnail
youtube.com
8 Upvotes

r/EmuDev 8d ago

Gameboy emulator I wrote with python, pygame

Enable HLS to view with audio, or disable this notification

38 Upvotes

Hello everyone, I was working on gameboy emulation for a while and wanted to share this project I have been working on solo for a couple of months. The source is unpolished imo: https://github.com/atifcodesalot/hazelnut-gb-emu but if you are interested, check it out. The emulation is unoptimized and has a couple of bottlenecks. Also it is not dot or machine cycle accurate, but I have had tons of fun with it, both developing and playing. It supports MBC3 and MBC1. Contributions are welcome! Enjoy!


r/EmuDev 8d ago

A few weeks ago I started playing with a Z80 library. Turned into a Sega Master System Emulator.

Thumbnail
github.com
8 Upvotes

r/EmuDev 8d ago

HC-77B Emulator now with 8K BASIC available on ROM!

Enable HLS to view with audio, or disable this notification

18 Upvotes

r/EmuDev 9d ago

GB CSS-DOS: An entire Intel 8086 PC in pure CSS. Runs MS-DOS 4.0, Windows 1.01 and compatible software.

Thumbnail css-dos.ahmedamer.co.uk
30 Upvotes

This project includes a computational CSS JIT compiler, which I don't think has ever been attempted.


r/EmuDev 9d ago

Nokia DCT3 (3310/3410/5210) emulator — MAD2 ARM + TI C54x DSP, native and running in the browser

13 Upvotes

Emulating the DCT3 generation of Nokia phones — the MAD2 chipset that powered the 3310, 3410, 5210 and friends. As far as I know nobody’s done a full-boot emulator for these before, so most of it had to be worked out from firmware disassembly and old scene documentation from the 2000s modding community (NokiX era — I was part of that scene as a teenager (screen name spaceimpact33), which is where the domain knowledge comes from).
There are two tracks to this: what’s live in the browser today, and hardware-in-the-loop work that currently only runs in a native harness.

In the browser (what you can try now):
ARM7TDMI core borrowed from mGBA, wrapped with the MAD2 memory map and peripherals. One catch: mGBA’s core is little-endian (GBA), while the MAD2 runs the ARM in big-endian mode — so the core needed byte-order handling throughout the memory interface to run Nokia firmware

The DSP is HLE’d. MAD2 pairs the ARM MCU with a TI C54x DSP, and firmware won’t boot without it responding correctly. The HLE is good enough to get real firmware through boot and into normal operation, though I wouldn’t claim it’s faithful beyond what firmware actually exercises

The SIM interface is emulated at the UART level — MAD2 talks to the SIM over its hardware UART, and the emulator presents as a real SIM, characterised by capturing the exchanges from an actual card

Compiles to WASM, works on mobile

Currently booting: 3310, 3410 (with J2ME), 8210, 8250, 8850/8855, 5210, 5110, 6110. The 6210/3210/7110 don’t boot yet.

Native harness only (not in the browser yet):
True C54x co-emulation using the DSP ROM4 mask ROM, which has been dumped from a 5110 (ROM6 hasn’t been dumped — hence the HLE path above). ROM4 boots with the DSP genuinely alive: keypress tones are produced by the DSP’s oscillators driving PCM output, not faked. The open problem is timing — the DSP ran at roughly 4x the ARM core clock, and getting the co-emulation timing right is impacting tone sound quality.
Dumping ROM v6 is proving difficult, TI and Nokia protected the lower mask rom from reading.

An ESP32-based SIM bridge that pipes SIM comms from the emulator to a physical SIM card, so firmware can talk to a real card

A DSP bridge (WIP) that lets the emulator drive the real DSP in a real phone — commands go over MBUS to a custom MADos build running on the handset. It works, but as you’d imagine over 9600 baud, it’s glacially slow

Honest disclosure: a lot of the implementation was AI-assisted. It’s a passion project with zero commercial value and I don’t have unlimited hours, so I used the tools that let me actually finish it. The reverse engineering and architecture calls are where the real work was.

Live: https://retro-phone.com

Source: https://github.com/djr-747/nokia-dct3-emulator


r/EmuDev 9d ago

gpSP GBA emulator with JIT for CASIO fx-CG50/CG100 graphing calculators

Post image
17 Upvotes

r/EmuDev 10d ago

Cross-platform NES emulator in odin

8 Upvotes

I made a cross-platform NES emulator in Odin.

It currently runs on Windows, Linux, Android, and even in the terminal using Unicode half-block characters (its quit broken right now bad pref). Web support is next.

Would love some feedback on the code.

Repo: https://github.com/MouhamedBourouba/NesEmulator


r/EmuDev 10d ago

NES I Added Composite Video Output to My NES Emulator Running on an ESP32 Microcontroller

Enable HLS to view with audio, or disable this notification

87 Upvotes

A while back I posted about Anemoia-ESP32, my NES emulator running on the ESP32. Since then I've kept adding to it, and the latest addition is composite video output, generated directly from the ESP32, allowing you to play NES games on CRTs. Performance is a solid stable native 60FPS with frame skip.

Composite output was based on esp_8_bit, which I adapted and integrated into the emulator.

Github Repository: https://github.com/Shim06/Anemoia-ESP32


r/EmuDev 11d ago

GB Random pixels when trying to run Tetris

Enable HLS to view with audio, or disable this notification

8 Upvotes

I am working on a gameboy emulator, I have got the cpu and ppu done to the point it can load the nintendo logo, but when I try to run the tetris rom it starts showing garbage data.

I am not exactly sure what I am missing, I have also tried asking llms but that did not help.

Here is the source code for it: https://github.com/Yogesh9000/GameBoy/tree/feat/ppu

PS: this is not the best code, I am new to programming and emulation, so please don't roast me. constructive feedback are wlcm tho.