The last four weeks have been extremely busy - more so than when I was working full-time for a company. When they "let me go" (yes, said with a pinch of sarcasm), I finally had the time to focus on this project and make real progress.

Since the previous post a lot has happened. The biggest change is adding shader support - primarily retro CRT / tube-style shaders. Everything already works, and below I included screenshots showing the effects and the shader parameter configurator. The shader UI layout still needs polishing, which you can see in the configuration panel.

New shaders

I also implemented a JSON-backed settings system for daveemu plus per-shader user profiles. This lets users save and switch between favorite configurations quickly.

The project is intentionally using OpenGL only - fewer complications than supporting two (or heaven forbid three, like Vulkan) APIs. The emulator's core logic lives in the emulator, not the renderer, so OpenGL is sufficient and lets me deliver features faster. I tested using GLSL files from the libretro collection (thanks: libretro GLSL shaders).

Shader configurator

The main menu also grew: you can now dynamically change FPS, pause the machine, and restart. Ultimately I want to create a VM file format similar to .vbox (they use XML there) so you can create many machines and use pre-configured templates (e.g. DOS 3.3 with a set amount of RAM/VRAM).

I had to split parts of the project into shared libraries because the linker (regardless of toolchain: GCC/MINGW/MSVC/CLANG) was having trouble with LTO. Currently I use static libraries for critical hot paths to improve performance; non-critical code is harder to separate under LTO, so I'm also moving toward DLL/.so builds where appropriate.

Another major feature I've been working on is host↔guest file sharing with MS-DOS. This is a larger topic, but the initial version is functional: drop files into a configured host folder and they appear in the guest on D: without restarting. On DOS 3.3 I ran into FAT table refresh issues, so it can take a few seconds before DOS notices new files. That needs polishing, but it's promising.

Finally - today I uploaded my first video to YouTube: https://www.youtube.com/watch?v=cnKZEu5xGZo

We're getting closer to a public 0.1.0 alpha release.

See you next time!

Previous Post Next Post