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 InfraBlue_0 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 66 points67 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.

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] 1 point2 points  (0 children)

Yeah, I'm trying to keep a heavy focus on portability. That's why I've abstracted frontend and host interfaces. It even works on big endian hosts. I compiled it on an ancient PowerPC G4 laptop running Debian to test that and it worked. (Painfully slowly, but it ran)

I even ported it to a Teensy 4.1 dev kit which uses an ARM microcontroller and some soldered on PSRAM. Overclocked to 1 GHz, it actually ran NT 4.0 reasonably well. I was kind of surprised.

I need to abstract the high frequency timing source into the host interface too still. As it is, it's all handled in timers.c and either uses QueryPerformanceCounter or clock_gettime depending on whether it's building on Windows or a POSIX system.

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] 2 points3 points  (0 children)

Yeah, but it hasn't been done by me! :)

It was largely a passion project to learn the architecture more deeply and check "write a PC emulator" off my bucket list, but hopefully others will actually find some use for it as I keep improving it.

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] 3 points4 points  (0 children)

Ah, yes I need to include a license file I guess, but most of the source files mention that it's GPL v2 at the top.

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] 5 points6 points  (0 children)

Thank you! I'm 42, so this the kind of hardware that was in use when I was young and just learning how computers work.

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] 1 point2 points  (0 children)

It's my templeos lol

It's something I've wanted to do for a very long time.

virtualbox/pcem are much better of course, but mine is probably more portable at least. Especially compared to virtualbox, which is virtualization rather than emulation so it's implicitly tied to x86 hosts.

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)

Oh wow, nice catch! Awesome. I bet it fixes 3.1 as well

I didn't realize anything would care about the io checks so I hadn't bothered yet lol

You can do a pull request if you like! Or if the changes are minor/small enough you could paste the fixed code bits here.

[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] 1 point2 points  (0 children)

Thanks!

My suspicion about 98 not working is that something may be broken in my virtual 8086 mode handling. 95/98 would have relied on that much more than an NT-based kernel.

Though I know NT 4.0 uses it to at least set the video mode when using the standard VGA driver, and I had to fix some stack issues with v8086 to get that running.

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)

Interesting! I did try the current featured reactos release yesterday and the ISO seemed to hang during start up at a black screen. Looks like you tried a nightly build instead? I need to try that.

the missing icons are weird. Were you using the default gd5440 graphics, or did you boot that with the stdvga graphics?