Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

517 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CE Runtime Foundation v6.8 pre-alpha

cerf.cx

cerf.cx - more information about the project


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

Discord Patreon

Important

Downloads are not available and builds fail. We remove third-party licensed code from the emulator core and write new code from primary documentation. Until this work is complete, there are no releases and no build artifacts. The tree does not compile.

Downloads

To use the newest features, download the WIP build (6.8) from the artifacts build. For a stable version, go to the latest release.

Run launcher.exe and select a device. The launcher downloads the ROM bundle and boots it. The articles show how to run cerf.exe --device=... directly, and describe its command line and its logs.

Supported boards

SoC Board / OS Features
MIPS
NEC VR4122
MIPS III
PDA Casio Cassiopeia EM-500 casio_cassiopeia_em500
Pocket PC 2000
Display Touch Guest Additions Sound
MIPS
NEC VR4121
MIPS III
PDA Casio Toricomail / Message-Cam / Pocket PostPet 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 CERF implements that exact board. A matching SoC is not sufficient. The articles show how to use your own dump of a board that CERF supports.

To add a board that CERF does not support is emulator development. You must write C++ code for the memory map of the board and for each peripheral that its drivers use. You must also write code for the quirks of the SoC. This code must agree with datasheets, BSP sources and reverse engineering, at the quality level that CERF has now. This work is not a change to a configuration file. An AI cannot do it for you.

Important

CERF does not accept ROM submissions or requests for new boards. The devices that are worth the work are complete. Several boards took months of work, and almost nobody needs them. One more board gives one more Windows CE desktop, and CERF already has one. New requests get a refusal, unless a board is very interesting, or many people want it, and I want to do the work.

Building

CERF requires Visual Studio 2026 with the C++ desktop development workload.

Note

The first build on a new machine takes more than one hour. vcpkg compiles the dependencies from source before CERF links. This occurs one time on each machine. Later builds use the cached vcpkg_installed/ tree and are complete in a few minutes. Do not stop the first build.

Configure the clone (one time on each machine):

setup.cmd

This script initializes the submodules. It points git at the tracked hooks of the repo (core.hooksPath = .githooks). Git does not clone the hook configuration, so the hooks do nothing in a new clone until you run this script. The script also reports each missing prerequisite (the Python launcher, the vcpkg MSBuild integration). You can run it again at any time, because it is idempotent. setup.cmd -Check reports the status and changes nothing.

Build with the helper script:

powershell -ExecutionPolicy Bypass -File build.ps1

Or run msbuild directly:

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

Building the CE-side binaries (optional)

ce_apps/ holds the Windows CE binaries that CERF ships, and the Guest Additions display driver. To build them, you need a CE toolchain and a CE SDK. cerf.exe does not need them. If you work on the emulator core, the boards, the SoCs, the JIT or the host UI, use the prebuilt binaries.

To build them, install eMbedded Visual C++ 4.0 (a free Microsoft download from the Microsoft archive). Then run one script. The full instructions are in docs/ce_apps_setup.md.

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

CERF builds the website from docs/website/. The command python tools/build_site.py --serve runs the website on your machine with live reload.

Changelog

Version Release Date Changes
v6.8 TBA

πŸ“± Devices
πŸ†• Casio Toricomail: bezel touch buttons

πŸš€ Launcher
πŸ†• Copyright removal dialog listing each bundle repository's abuse contact, reachable from the Download ROMs window and the download confirmation
βœ… Installed devices are listed and launchable immediately at startup instead of waiting for the bundle catalog on a slow or absent connection

v6.7 23 Jul 2026

πŸ“± Devices
πŸ†• Casio Cassiopeia EM-500 support (bare bones)
βœ… Sharp Mobilon HC-4100: fixed suspend crash

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

πŸš€ Launcher
πŸ†• UI refresh
βœ… Metadata-only remote updates no longer re-download the entire ROM
βœ… Fixed the command-line interface producing no output
βœ… Configuration, updates and removal are now blocked while a device is running
βœ… Single click on a device preview now launches it everywhere
βœ… Merged the two launcher builds into a single Windows Vista+ executable
❌ Removed the redundant soc_family and board_name fields from cerf.json

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

✨ Guest Additions
πŸ†• High refresh rate support - use Windows CE with 240 hz display! (Or whatever Hz you have). Yes, this should be taken LITERALLY. WinCE WILL render 240 fps on your 240 hz monitor. 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
πŸ†• Touch-calibration helper - offers to switch to the stock input device when the guest opens a calibration screen, and switches back afterwards
πŸ†• Color scheme overrides - colorize grayscale devices with a forced system color scheme
βœ… 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.

Previous versions - see the full changelog.

Known Issues

For the issues of each board, see the board database of the launcher.

Claude Development Environment

Caution

DO NOT USE THE CERF CODEBASE AS A REFERENCE FOR SoCs, BOARDS OR PERIPHERALS. AI written code might include mistakes a developer did not notice.

Built with help of Claude and Claude Code.


CERF includes a development environment that uses Claude Code. You can work on the emulator with it, and you can add new boards from their ROMs. Run it from the root of the repo:

run_claude.cmd

This environment runs Claude Code with a custom system prompt. The prompt puts the full project documentation into each agent (CLAUDE.md and each reference page in agent_docs/). Thus each session starts with the rules, the architecture and the subsystems of the project. You do not tell the agent to read the documentation first.

The environment gives you the /start-board-implementation skill. Put your ROM into bundled/devices/, or give the agent the path to it. Then run the skill. The agent identifies the board and the SoC from the ROM. It then examines what CERF supports and estimates the work. If you agree, the agent starts the work and writes a tracking document that stays between sessions.

Warning

The development environment runs Claude in skip-permissions mode. Claude can run any command on your machine, and it does not ask you first. The environment also stops its own Claude instance, and any clangd.exe, that uses more memory than a limit. At the first start, it shows an explanation one time. Press Enter to accept 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

Stars

76 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages