nepx/halfix
Freex86 PC emulator that runs both natively and in the browser, via WebAssembly
About nepx/halfix
Halfix is a portable x86 PC emulator written in C99 that runs both natively and in the browser via WebAssembly. It emulates a full x86-32 system with FPU, MMX, SSE, SSE2, and PAE support, configurable RAM from 1 MB to 3584 MB, and a variety of devices including Intel 8259 PIC, 8254 PIT, 8237 DMA, 8042 PS/2 controller, i440FX chipset, generic VGA with Bochs VBE extensions, IDE controller (hard drive and CD-ROM), floppy drive controller, and a dummy PC speaker. It is designed to run legacy operating systems and is compatible with a wide range of software, including all versions of DOS, most versions of Windows (excluding Windows 8), OS/2 Warp, ReactOS, several Linux distributions, and more. The emulator can also be used for testing and developing operating systems, running old programs safely, simulating other x86-based systems, and benchmarking web browser performance. Building requires node.js, a C99 compiler, zlib, and Emscripten for browser targets. The project is open-source and hosted on GitHub.
Key Features
Pros & Cons
- Portable and written in standard C99
- Runs directly in a web browser without installation via WebAssembly
- Supports a very broad range of legacy operating systems
- Highly configurable hardware emulation (RAM, devices)
- Open-source and completely free to use
- No sound emulation beyond a dummy PC speaker
- i440FX chipset emulation not fully working yet
- Self-virtualization is extremely slow
- Floppy drive controller is incomplete
- Cannot run Windows 8
- Requires compilation and dependencies (node.js, zlib, Emscripten) for building