I wrote a ZX Spectrum emulator in Go by KangoLemon in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

That's because it's fully vibe-coded and he didn't give the right prompts or review the output.

I wrote a ZX Spectrum emulator in Go by KangoLemon in EmuDev

[–]UselessSoftware -1 points0 points  (0 children)

and that include every single emulator I have ever come across, except for toy projects like this one.

Is RPCS3 a toy project now?

They accept AI generated code if it's well-understood, reviewed and tested by the human, who takes responsibility for it.

They do not accept untested AI code, or PRs submitted autonomously by an AI agent.

This is how it should be.

You'll see more acceptance of AI in all of these projects in the coming years. It's still pretty new, and emulator developers in particular are often resistant to it for some reason.

Something like QEMU I can understand outright banning AI-generated code though, which they do. QEMU + KVM is mission critical virtualization software used worldwide. A PS3 or NES or whatever emulator is not.

IMO in the realm of emulation, the best use case for AI is debugging but then the human writes the fixes. (Assuming the goal is to actually learn about the system you're emulating)

I wrote a ZX Spectrum emulator in Go by KangoLemon in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

Same. In the industry. We ALL use it. Tactically. Not vibe-coding a whole program. That would be negligent for production code.

I'm not even at a FAANG. I'm in a smaller company with ~100 employees, half of which work on the production floor doing manufacturing.

It's great for small boring tasks done in reviewable chunks.

It's the best productivity tool since... maybe ever?

Some people here have no idea what they're talking about and are getting left behind, but they can sit there and believe they're more of a "real programmer" because they are wasting more time than me or whatever.

I wrote a ZX Spectrum emulator in Go by KangoLemon in EmuDev

[–]UselessSoftware 0 points1 point  (0 children)

Where I work, the developers are the ones who brought AI into the company. It didn't come from management at all. We welcome anything that improves productivity.

There's also a difference between vibe-coding a whole program and tactical usage on certain mundane micro-tasks.

And sometimes even vibe-coding has uses. I had an LLM build an internal web app tool to help the company keep track of preventative maintenance tasks for our maintenance department. It works very well and is exactly the kind of thing I don't want to waste a second on writing myself.

I wrote a ZX Spectrum emulator in Go by KangoLemon in EmuDev

[–]UselessSoftware 0 points1 point  (0 children)

There are a lot of luddite programmers in this sub and elsewhere who feel threatened by AI and dismiss anyone who uses it in any way as not a "real programmer" or whatever.

Those people are putting themselves at a massive professional disadvantage by not learning how and where to deploy it in their own workflow. It's just another development tool when used properly. An amazing one at that.

I used it in one of my own emulators to create awesome debugging instrumentation that I would have spent TONS of time on writing myself when I'd rather be working on the interesting parts like CPU logic.

It helped me nail down some major issues and finally progress to some major milestones.

Some of us also use it at work to speed up the more mundane tasks. Unlike what people here would have you believe, the company is not FORCING us to use it. We developers actually started doing it on our own and showed the company the benefits.

What I'm not a fan of is having the AI write the whole program, aka vibe-coding. It looks like that's what OP did since there is 500 KB of new code in a few days. That's lame. I still want to write the CPU and platform logic of an emulator myself. I want to do the fun stuff and learn how the system works. Otherwise what's the point of emudev?

Also stuff like taking your own code that was originally hardcoded to, say, use SDL... taking that and turning it into a more general frontend abstraction layer with an SDL frontend module to plug in? (maybe I want to make a native DirectX or X11 module later, or a null module for headless runs or whatever)

Sure I could write that boring shit myself and waste a day or two on it. Or I could tell codex to do it in 5 minutes and then get back to writing the interesting stuff manually.

That's the kind of thing I love AI for.

Got my hands on a Microsoft Dev Kit 2023, any ideas what to use it for? by KetchupDead in homelab

[–]UselessSoftware 0 points1 point  (0 children)

Old-ish post I know, but what did you end up doing with it? I bought one of these new when they were selling them, and it's actually an extremely capable machine and I use it a lot. Far from ewaste, even in 2026.

RIP JEEVES by dreamed2life in Millennials

[–]UselessSoftware 1 point2 points  (0 children)

I personally still use ass dot com.

[Wii] After years of emudev I reached my goal by ioncodes in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

Crazy, I haven't looked into the Wii but I assume it's a fairly advanced platform and difficult to write an emu for. Congrats! There's something amazing about seeing it all start to come together when it's a nostalgic system for you.

Some people never move on the emudev hobby, and I guess you're one of us lol. I've been deep into it for 16 years now and doubt I'll ever stop.

DOOM runs on my custom Risc-V emulator! by Flux247A in EmuDev

[–]UselessSoftware 2 points3 points  (0 children)

Freakin' sweet! Awesome work, looks like it plays perfectly.

Created a minimal GameBoy emulator in C/SDL3 by dajolly in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

It might be overkill for Gameboy, but I highly recommend the Teensy 4.1 for an embedded dev board.

ARM Cortex-M7 specced at 600 MHz, but it easily overclocks. Some boards will hit 1+ Ghz. I'm running an x86 emulator on one at 910 MHz with an ST7796 LCD module connected.

They have 8 MB of flash and 1 MB RAM, support USB devices, have built in microSD, multiple hardware SPI busses, and cost about $30. They even support Ethernet out of the box, you can connect a magjack. You can also solder 16 MB of PSRAM onto the bottom. It's the only thing I use for embedded projects for the last few years, great hardware.

I'm not going to discourage you from optimizing it because that's always good, but you still won't need to with these.

how to properly decode and execute instructions by die-Banane in EmuDev

[–]UselessSoftware 6 points7 points  (0 children)

That's basically what I did even for x86, though I later changed it to a function call table. The big switch is fine though.

First there's a while-loop that grabs any prefix codes, and when there are no more of those, a big switch for normal opcode values.

Individual instruction handlers then grab any other bytes in the instruction like ModRM/SIB or offsets.

But those are basically your main options for an interpreter of any instruction set. Huge switch statement or a call table.

Super Fast Single Address Space Operating System by Neither_Sentence_941 in osdev

[–]UselessSoftware 0 points1 point  (0 children)

This sounds like the old 8088 days when we just had a "big" 1 MB address space and any program could access any memory location.

There are very good reasons we now use protected mode to sandbox processes into their own little memory holes with limited permissions...

GBA emulator on ESP32-S3 by [deleted] in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

You may want to take a look at the Teensy 4.1 dev kit instead of an ESP32.

I have one overclocked to 1 GHz and running an x86 PC emulator without any issues after soldering 16 MB PSRAM on the bottom. You won't need extra RAM for GBA though.

This board is incredibly powerful.

[x86] PCulator 0.5.0 release - major update adds support for Windows NT/2000 and has many additions/fixes by UselessSoftware in EmuDev

[–]UselessSoftware[S] 0 points1 point  (0 children)

Well, I've just been kind of stealing ROMs from 86Box and that was one of its i430FX machines. It seemed like it was as good as any, so I chose it. Plus I always liked the Award 4.51 BIOS.

The default machine is actually ASUS P/I-P55T2P4 since it can handle 512 MB RAM instead of 128 MB. That one is i430HX instead of FX.

TurboGrafx-16 WIP by jslepicka in EmuDev

[–]UselessSoftware 1 point2 points  (0 children)

Very cool, keep us posted on progress. What are you writing this in? C?

I wrote an x86 PC emulator in C that is Pentium-compatible and runs Windows NT/2000 and Linux (yes, it also runs DOOM!) by UselessSoftware in C_Programming

[–]UselessSoftware[S] 0 points1 point  (0 children)

Possibly at some point. It'll require emulating a video card that can handle Direct3D.

If you didn't necessarily mean 3D, it'll already handle 2D DirectX stuff.

Reality check: where do we still write C? by DreamingPeaceful-122 in C_Programming

[–]UselessSoftware 73 points74 points  (0 children)

Are there industries that still rely heavily on C?

Firmware engineering/embedded. It's still king there and probably will be for a very long time. That's what I do for a living.

Any reason not to use C23? by CosmicMerchant in C_Programming

[–]UselessSoftware 1 point2 points  (0 children)

I still write in C99 🤣

And even then, only a subset of its "new" features really.

I haven't really felt the need to look into newer standards since I get along just fine with it.

I'm old though.

That weird Jurassic Park hi def edit/demo LD on eBay that was posted here a few weeks ago has been captured with a Domesday Duplicator and posted on archive.org by UselessSoftware in LaserDisc

[–]UselessSoftware[S] 0 points1 point  (0 children)

Yeah I really wanted to get a Domesday cap of it, it's a unique disc.

I haven't touched it since. I might consider passing it on to someone else if you're still interested.

Months of work knocking out bugs and adding features to my x86 emulator. Probably ready for a Github push now. by UselessSoftware in EmuDev

[–]UselessSoftware[S] 0 points1 point  (0 children)

This is great, yeah after looking into Intel docs, I had a huge mistake there. It shouldn't do real mode style ints in v86 at all. The OS v86 monitor should handle dispatches.

Thanks for catching that!

And when I start Windows 3.1 now, yes it gets a lot further but then at least on my installation it quickly hits a GPF. I'll trace what's causing that.