Skip to content

Latest commit

Β 

History

710 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CE Runtime Foundation (aka CERF) - Universal Windows CE emulator
cerf.cx - read more information about the project

Discord Patreon

Warning

Beta stage. CERF is a hobby project, developed in spare time and can't be a called production-grade/exceptionally stable project. Expect bugs, crashes, and breaking changes. πŸ™ƒ

For the same reason - be careful if you are going to use CERF is a reference for hardware level behaviour. The code works but CERF is not an official chip datasheet.

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.

If you need any additional help, e.g. what to run and how to use the emulator - visit cerf.cx.

See cerf.exe command line usage at cerf.cx/articles/command-line.

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 Embedded CE 6
Display Touch
ARM
Intel SA-1110
StrongARM
PDA HP Jornada 720 jornada_720
Handheld PC 2000
Linux
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 Embedded CE 6
Display Mouse Keyboard Guest Additions PCMCIA Network
ARM
TI OMAP 3530
Cortex-A8
PDA OMAP 3530 EVM omap_3530_evm
Windows Embedded Compact 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 Embedded CE 6
Windows Mobile 5
Windows Mobile 6
Windows Mobile 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 board is on the supported list. The articles show how to boot your own dump.

The board is not on the supported list. A new board is a code contribution. It needs C++ for the memory map of the board, for each peripheral that the drivers use, and for the quirks of the SoC. The code must agree with datasheets, BSP sources and reverse engineering, at the quality level of the current tree. A new board is not a change to a configuration file - that's not that simple.

Important

CERF does not accept ROM submissions or requests for new boards. If you want a new board - your only choice is to build a support yourself and send a contribution.

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

or dry run:

setup.cmd -Check

It will

  • point git at tracked hooks
  • report missing prerequisite

Build the entire proejct with a helper script:

powershell -ExecutionPolicy Bypass -File build.ps1

The script will:

  • wait for a parallel build (Claude Code-special feature for parallel agents work)
  • build the launcher (and will install CPython into a repo directory, if needed)
  • build the emulator itself (and will pick appropriate SDK/toolchain from your installations)
  • build all the bundled Windows CE apps (at ce_apps/)

Building the CE-side binaries (optional)

ce_apps/ holds the Windows CE binaries that CERF ships, and the Guest Additions 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 from another CERF release or just dont use them at all.

To build ce_apps/, install eMbedded Visual C++ 4.0 (a free Microsoft download from the Microsoft archive). CERF includes a script that will unpack the installation (you dont want and probably can't install ancient tools) and will place the build tools / SDK into appropriate directories. See docs/ce_apps_setup.md.

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

Website

This repositroy includes cerf.cx source code at docs/website.

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
βœ… Philips Velo 1: 16 MB DRAM Miniature Card permanently fitted - 20 MB total for the guest
βœ… Device Emulator: keyboard no longer drops or repeats keys while typing
βœ… Device Emulator: sound no longer stutters
βœ… Device Emulator: Windows Mobile 2003 SE no longer freezes

πŸ’Ώ Emulator
πŸ†• Build number shown in the window title and the About box
πŸ†• Configurable display colour depth for Guest Additions and Device Emulator
πŸ†• Bundled CompactFlash cards can be auto-inserted at launch
βœ… ARM JIT and JIT core full rewrite. ARM JIT/peripherals optimizations. Expect new issues.

πŸš€ Launcher
πŸ†• Copyright removal dialog listing each bundle repository's abuse contact, reachable from the Download ROMs window and the download confirmation
πŸ†• GitHub issues window (Bugs&Requests)
πŸ†• Update channel setting: disable updates, stable releases, or unstable CI builds
βœ… Installed devices are listed and launchable immediately at startup instead of waiting for the bundle catalog on a slow or absent connection
βœ… Toolbar buttons that no longer fit a narrow window move into a chevron menu instead of being cut off
βœ… The update check now understands build numbers in release tags

✨ Guest Additions
βœ… Crash when drawing off-screen (GiNi)
βœ… Default colour depth is now 24bpp instead of 32bpp - fixes Device Emulator Windows Mobile 6.5 shell rendering
βœ… Colour corruption in 16bpp mode - alpha-blended elements rendered green/cyan
βœ… Gradients on Windows CE 4 - the taskbar and application backgrounds render again
βœ… Mouse and keyboard no longer stop working for the whole session when input arrives early during boot

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 or read Notes block when you use a launcher.

Claude Development Environment

The environment includes several contraversional things you need to know before using it.

  • Full project documentation is injected into a system prompt - this eats tokens
  • The environment kills global clangd.exe and own claude.exe instances if they leak memory
  • Thinking is set to high; bypass permissions mode is set
  • Several own/3rd-party skills included
  • Powerful hooks triggering when agent might do something bad to the codebase

The environment gives you the /start-board-implementation skill. Run the skill and agent will start the new board bring-up on its own. You need experience - the skill won't do all the work instead of you. (Tho honestly speaking, there have been cases where Claude alone brought a board to a bootable state)

Run the environment:

run_claude.cmd

License

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


CERF was started as WCECL in 2019.

Copyright (c) 2019-2026 Yaroslav Kibysh

About

Universal Windows CE Emulator - CE Runtime Foundation

Topics

Resources

Stars

79 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages