Skip to content

gweslab/cerf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

455 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CE Runtime Foundation v6.7 pre-alpha

cerf.cx

cerf.cx - read more about the project


A universal Windows CE emulator: a virtual hardware platform that boots real CE and Windows Mobile ROMs on modern Windows.

Discord Patreon

Downloads

Download the WIP build (6.7) from artifacts build to use all the latest features, or go to the latest release.

Run launcher.exe: pick a device, and it downloads the ROM bundle and boots it. Running cerf.exe --device=... directly, its command line and its logs are covered in the articles.

Supported boards

SoC Board / OS Features
MIPS
NEC VR4121
MIPS III
PDA Casio Toricomail casio_toricomail
Windows CE 2.12
Display Touch Keyboard
ARM
Intel XScale PXA255
ARMv5TE
PDA Falcon 4220 falcon_4220
Windows CE .NET
Display Touch Suspend / Resume Guest Additions Sound PCMCIA Network Battery
PDA NEC MobilePro 900 nec_mobilepro_900
Handheld PC 2000
Windows CE .NET
Display Touch Keyboard Guest Additions Sound PCMCIA Network
ARM
Freescale i.MX51
Cortex-A8
PDA Ford SYNC 2 ford_sync_2
Windows CE 6
Display Touch
ARM
Intel SA-1110
StrongARM
PDA HP Jornada 720 jornada_720
Handheld PC 2000
Display Touch Keyboard Suspend / Resume Guest Additions Sound PCMCIA Network Battery
PDA iPAQ H3100/H3600/H3700 ipaq_gen1
Pocket PC 2000
Pocket PC 2002
Display Touch Suspend / Resume Guest Additions Sound Microphone PCMCIA Network
PDA Siemens SIMpad SL4 simpad_sl4
Handheld PC 2000
Windows CE .NET
Display Touch Guest Additions Sound PCMCIA Network Battery
PDA SmartBook G138 smartbook_g138
Windows CE .NET
Display Touch Keyboard Suspend / Resume Guest Additions PCMCIA Network
ARM
Intel SA-1100
StrongARM
PDA HP Jornada 820 jornada_820
Handheld PC 3.0 Professional
Display Mouse Keyboard Suspend / Resume Guest Additions Sound PCMCIA Network Battery
ARM
ARM720T
ARMv4T
PDA Microsoft Windows CE Hardware Reference Platform odo
Windows CE 2.11
Windows CE 3
Display Touch Keyboard Guest Additions Sound
MIPS
NEC VR4102
MIPS III
PDA NEC MobilePro 700 nec_mobilepro_700
Windows CE 2.0
Display Touch Keyboard Suspend / Resume Guest Additions PCMCIA Network Serial Port
MIPS
NEC VR5500
MIPS IV
PDA NEC Rockhopper SG2_VR5500 nec_rockhopper
Windows CE 6
Display Mouse Keyboard Guest Additions PCMCIA Network
ARM
TI OMAP 3530
Cortex-A8
PDA OMAP 3530 EVM omap_3530_evm
Windows CE 7
Display Touch Guest Additions Sound
MIPS
Philips PR31700
MIPS I
PDA Philips Nino 300 philips_nino_300
Palm-size PC
Display Touch Keyboard Suspend / Resume Guest Additions Sound PCMCIA Battery Serial Port
PDA Sharp Mobilon HC-4100 sharp_mobilon_hc4100
Windows CE 2.0
Display Touch Keyboard Guest Additions Sound PCMCIA Network Battery Serial Port
MIPS
Philips PR31500
MIPS I
PDA Philips Velo 1 philips_velo_1
Windows CE 1.0
Display Touch Keyboard Suspend / Resume Sound PCMCIA Network Battery Serial Port
ARM
Samsung S3C2410
ARM920T
PDA Siemens P177 siemens_p177
Windows CE 5
Display Touch Guest Additions
PDA Device Emulator devemu
Windows CE 6
Windows Mobile 5
Windows Mobile 6
WM 2003 SE
Windows CE 5
Display Touch Keyboard Suspend / Resume Guest Additions Sound PCMCIA Network Battery
ARM
Freescale i.MX31L
ARM1136
PDA Zune 30 zune_30
Windows CE 5
Display Keyboard Guest Additions Sound

Running your own ROM

A ROM boots only if that exact board is implemented in CERF - a matching SoC is not enough. Dropping in your own dump of an already-supported board is covered in the articles.

Bringing up a board CERF does not support is emulator development: the board's memory map, every peripheral its drivers touch, the SoC quirks - all of it implemented in C++, grounded in datasheets, BSP sources and RE, at the quality bar CERF already ships. It is not a config tweak, and not something to hand to an AI and expect magic.

Important

CERF does not accept ROM submissions / board implementation requests. The devices worth doing are done, and so are several that cost months of work and that essentially nobody needs. Bringing up one more board to arrive at one more Windows CE desktop is a very large amount of work for an outcome that already exists. Further submissions will be declined, unless they are genuinely interesting or in demand and I want to do the work.

Building

Requires Visual Studio 2026 with the C++ desktop development workload.

Note

First build on a fresh machine takes 1+ hour. vcpkg compiles dependencies from source before CERF starts linking. This happens once per machine - subsequent builds reuse the cached vcpkg_installed/ tree and finish in a few minutes. Do not interrupt the first build.

Set up the clone (once per machine):

setup.cmd

This initialises submodules, points git at the repo's tracked hooks (core.hooksPath = .githooks - git does not clone hook config, so hooks are inert in a fresh clone until this runs), and reports any missing prerequisite (Python launcher, vcpkg MSBuild integration). Re-run it any time; it is idempotent. setup.cmd -Check reports status without changing anything.

Build via the helper script:

powershell -ExecutionPolicy Bypass -File build.ps1

Or invoke msbuild directly:

msbuild cerf.sln /p:Configuration=Release /p:Platform=Win32

Building the CE-side binaries (optional)

ce_apps/ holds the Windows CE binaries CERF ships, including the Guest Additions display driver. Building them needs a CE toolchain and SDK, which are not required for cerf.exe itself - if you are working on the emulator core, boards, SoCs, the JIT or the host UI, ignore this and use the prebuilt binaries.

To build them, install eMbedded Visual C++ 4.0 (a free, officially archived Microsoft download) and run one script. Full instructions: docs/ce_apps_setup.md.

setup.cmd -Check reports whether the CE toolchain is present.

The website is built from docs/website/ - python tools/build_site.py --serve runs it locally with live reload.

Changelog

Version Release Date Changes
v6.7 TBA

πŸ“± Devices
βœ… Sharp Mobilon HC-4100: fixed suspend crash

πŸ’Ώ Emulator
πŸ†• Discord Rich Presence - shows the current device and OS in your Discord profile
βœ… Fixed framebuffer not relatching on suspend/resume
βœ… Fixed 100% CPU usage and UI deadlocks on Windows XP on non-framebuffer tabs

πŸš€ Launcher
πŸ†• UI refresh

πŸ’Ύ CE Apps
βœ… CerfDemo: UI and performance improvements

✨ Guest Additions
πŸ†• High refresh rate support: the guest video mode and host window scanout follow the host monitor's refresh rate
πŸ†• --screen-refresh-rate flag to set the refresh rate manually
βœ… Input devices now run at the proper priority, staying responsive under heavy guest CPU load

v6.6 18 Jul 2026

πŸ“± Devices
βœ… Fixed Device Emulator crash booting Windows Mobile 5.2 ROMs

πŸ’Ώ Emulator
βœ… Device names with spaces and absolute rom.* paths in cerf.json are now supported

πŸš€ Launcher
πŸ†• New-device wizard: create a device profile from your local ROM dump
πŸ†• Rename a device from its right-click menu

v6.5 17 Jul 2026

πŸ“± Devices
πŸ†• Sharp Mobilon HC-4100 support (Handheld PC, Windows CE 2.0)
πŸ†• Casio Toricomail support

πŸ’Ώ Emulator
βœ… Fixed Integer scale 2x/3x not resizing the window under "Match guest size"
βœ… Fixed moving the window releasing the "Match guest size" lock (now only a resize does)

πŸš€ Launcher
πŸ†• Added downloads count sort

πŸ’Ύ CE Apps
βœ… Fixed bundled CE2 apps (ROM dumper and others) crashing on launch - their coredll imports were bound by version-specific ordinal instead of by name

✨ Guest Additions
βœ… Display driver unified onto a single mips1 build across MIPS devices

v6.4 15 Jul 2026

πŸ“± Devices
βœ… Fixed NEC MP700 touch

v6.3 15 Jul 2026

πŸ“± Devices
βœ… Fixed a crash when PC Card was re-inserted too fast in DevEmu boards

πŸ’Ώ Emulator
βœ… UI updates
βœ… Dev only: SDK/Build tools reorganization

πŸš€ Launcher
πŸ†• Added multiple bundle repositories configuration

✨ Guest Additions
βœ… Fixed IMGFS ROMs regression introduced in v6.0
βœ… Software rendering is fully removed and replaced with hardware rendering. Microsoft dependencies dropped.
βœ… Fixed incorrect hardware communication approach for display and shared storage. Now rendering and shared storage is stable.

v6.2 12 Jul 2026

πŸ’Ώ Emulator
πŸ†• cerf.exe now runs on Windows XP and newer - one binary, XP through 11
βœ… Fixed a crash on startup on every Windows older than 10 1809 (dark-mode init)

πŸš€ Launcher
πŸ†• launcher_vista.exe: the launcher for Windows Vista and newer

Previous versions - see the full changelog.

Known Issues

See launcher's boards details database for per-board issues.

Claude Development Environment

Caution

DO NOT USE CERF CODEBASE AS REFERENCE FOR SoCs, BOARDS, PERIPHERALS - AI WRITTEN CODE CAN'T BE TRUSTED!

Built with Claude via Claude Code. Not production-grade.


CERF ships a Claude Code-based development environment for working on the emulator - including bringing up brand-new boards from their ROMs. Launch it from the repo root with:

run_claude.cmd

It runs Claude Code with a custom system prompt that injects the entire project documentation (CLAUDE.md plus every agent_docs/ reference page) into every agent, so each session starts fully briefed on the project's rules, architecture, and subsystems - no "please read the docs first" needed.

The environment provides the /start-board-implementation skill: drop your ROM into bundled/devices/ (or just point the agent at it) and run the skill. The agent identifies the board and SoC straight from the ROM, checks what CERF already supports, estimates the effort, and - on your go-ahead - starts the bring-up with a cross-session tracking document. So you can literally drop in your ROM and start the procedure of bringing it up.

Warning

The dev environment runs Claude in skip-permissions mode - it can execute anything on your machine without prompting. It also force-kills its own Claude instance, and any clangd.exe, that leaks memory past a threshold. The first launch shows a one-time explanation; press Enter to acknowledge it.

License

MIT. Third-party components and studied references are listed in THIRD_PARTY_NOTICES.md.

About

Universal Windows CE Emulator - CE Runtime Foundation

Topics

Resources

License

Stars

64 stars

Watchers

3 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors