惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
G
Google Developers Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
量子位
月光博客
月光博客
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
TaoSecurity Blog
TaoSecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cisco Blogs
Project Zero
Project Zero
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Scott Helme
Scott Helme
S
Securelist
有赞技术团队
有赞技术团队
T
Threat Research - Cisco Blogs
N
News | PayPal Newsroom
博客园 - 聂微东
小众软件
小众软件
S
SegmentFault 最新的问题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy & Cybersecurity Law Blog
博客园 - Franky
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Spread Privacy
Spread Privacy
A
Arctic Wolf
S
Security @ Cisco Blogs
The Hacker News
The Hacker News
腾讯CDC
博客园 - 【当耐特】
T
Troy Hunt's Blog
NISL@THU
NISL@THU
爱范儿
爱范儿

Hacker News

Introducing Claude Opus 4.7 Qwen Studio The Future of Everything is Lies, I Guess: Where Do We Go From Here? GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Unexpected €54k billing spike in 13 hours: Firebase browser key without API restrictions used for Gemini requests Retrofitting JIT Compilers into C Interpreters IPv6 – Google The Accursèd Alphabetical Clock Cybersecurity Looks Like Proof of Work Now Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent When moving fast, talking is the first thing to break Too much Discussion of the XOR swap trick – Heather Cafe Introduction to Spherical Harmonics for Graphics Programmers The Grand Line Building a Z-Machine in the worst possible language High-Level Rust: Getting 80% of the Benefits with 20% of the Pain GitHub - duguyue100/midnight-captain: Inspired by Midnight Commander, tailored to my taste. How to build a `git diff` driver · Jamie Tanna | Software Engineer Center for Responsible, Decentralized Intelligence at Berkeley The Local Universe’s Expansion Rate Is Clearer Than Ever, but Still Doesn’t Add Up - A new synthesis of astronomical measurements confirms a persistent mismatch that could point to physics beyond current models The air throughout our homes is infused with microplastics. But there are things you can do to breathe less of them The disturbing white paper Red Hat is trying to erase from the internet – OSnews The Future of Everything is Lies, I Guess: Annoyances ‘Abhorrent’: the inside story of the Polymarket gamblers betting millions on war Productive procrastination — Max van IJsselmuiden maps, territory and LMs 447 Terabytes per Square Centimetre at Zero Retention Energy: Non-Volatile Memory at the Atomic Scale on Fluorographane Show HN: Pardonned.com – A searchable database of US Pardons 20 Years on AWS and Never Not My Job The Seasons are Wrong Artemis II crew splashes down near San Diego after historic moon mission We gave an AI a 3 year retail lease in SF and asked it to make a profit | Andon Labs How a dancer with ALS used brainwaves to perform live On filing the corners off my MacBooks Installing every* Firefox extension OpenClaw’s memory is unreliable, and you don’t know when it will break Steve Blank Nowhere Is Safe Chimpanzees in Uganda locked in vicious 'civil war', say researchers watgo - a WebAssembly Toolkit for Go linux/Documentation/process/coding-assistants.rst at master · torvalds/linux GitHub - callumlocke/json-formatter: Makes JSON easy to read. Founding Product Engineer at Bild AI | Y Combinator A compelling title that is cryptic enough to get you to take action on it GitHub - Keychron/Keychron-Keyboards-Hardware-Design: Industrial design files for Keychron keyboards and mice. 100+ models with CAD assets in STEP, DXF, DWG, and PDF. Source-available, with commercial use allowed for original compatible accessories within the license terms. [ANNOUNCE] WireGuardNT v0.11 and WireGuard for Windows v0.6 Released 1D-Chess Helium Is Hard to Replace Cooperative Vectors Introduction | Evolve Keeping a Postgres queue healthy — PlanetScale Our response to the Axios developer tool compromise Do Americans read print books, e-books or audiobooks more? The Zettelkasten Method in Obsidian: A Practical Setup Guide Artemis II Is Competency Porn and We Are Starving For It WeakC4 Flight Viz — Cockpit View A Mexican surveillance giant you’ve never heard of is now watching the U.S. border Surelock: Deadlock-Free Mutexes for Rust RISC-V 101 – what is it and what does it mean for Canonical? | Ubuntu The Problem That Built an Industry How Much Linear Memory Access Is Enough? | Solidean Investigating Split Locks on x86-64 Simplest hash functions Sybilproof reputation mechanisms (2005) [pdf] What is a property? How Complex is my Code? Static code analysis in Kotlin — tools overview Toffoli gates are all you need PGLite evangelism dcmake: a new CMake debugger UI Clojure on Fennel part one: Persistent Data Structures Fragments: April 2 Python Release Python install manager 26.1 The Life and Death of the Book Review - Liberties Introducing Database Traffic Control — PlanetScale Bitcoin miners are losing $19,000 on every BTC produced as difficulty drops 7.8% God sleeps in the minerals Building slogbox Apple Silicon and Virtual Machines: Beating the 2 VM Limit Who was “Not Even Wrong” first? Pokemon Evolution Vs Darwinian Evolution The APL Programming Language Source Code
GitHub - ThroatyMumbo/WinCE64: Windows CE 2.11 for N64!
2026-05-16 · via Hacker News

Windows CE 2.11 on the Nintendo 64

Stock Microsoft Windows CE 2.11 running on a real Nintendo 64. A custom HAL drops the unmodified nk.lib kernel onto VR4300, brings up the CE 2.11 GWES desktop and shell, mounts the EverDrive-64 X7's SD card under \SDCard, treats the N64 controller as a mouse, plays sound through the N64 AI hardware via the standard CE wave stack, and runs third-party CE 2.11 EXEs straight off the SD card.

This is a hobby reverse-engineering project: there is no official CE 2.11 port to N64 from Microsoft. Everything below the unmodified nk.lib (HAL, OAL, display driver, FSD, kbd/mouse PDD, wave PDD, RDP-accelerated GDI fill, ed64-X7 driver) is part of this repo.

Featured in https://www.youtube.com/watch?v=eGS9su_inBY

Status

Boots fully on real N64 + EverDrive-64 X7. Working:

  • Desktop, taskbar, file browser; window drag, close-X, modal dialogs
  • N64 controller drives a visible cursor; A = left click, B = right click
  • \SDCard\* mounted via FatFS over X7 cartridge SD
  • Wave audio through sndPlaySoundW / waveOutOpen → N64 AI
  • Third-party CE 2.11 EXEs launchable from the SD card (e.g. BeziersCE)
  • RDP-accelerated 3D demo (cube3d.exe) rasterising flat-shaded triangles directly through the RDP

Architecture

Architecture

The unmodified nk.lib is the trunk: it owns PSL dispatch, scheduling and TLB. Around it the standard CE 2.11 user-mode modules (coredll.dll, gwes.exe, filesys.exe, device.exe, shell.exe) load unchanged from the ROM image. The custom pieces are:

  • HAL / OAL (bsp/hal/) — boot, exception vectors, MIPS startup, timer, USB debug, two LE-mode RDRAM partial-word quirk workarounds.
  • Display driver (bsp/drivers/display/) — VI framebuffer + RDP fill acceleration + a software cursor compositor that fills the gap CE 2.11's split CURSOR.LIB / MCURSOR.LIB leaves on non-overlay hardware.
  • Mouse / keyboard PDD (bsp/drivers/kbdmouse/) — SI Joybus poll, decodes both the N64 controller and the official N64 mouse.
  • SD filesystem (bsp/drivers/sdfsd/) — FatFS-backed FSD that registers under \SDCard. Replaces libdragon's libcart with a PI-DMA-based EverDrive-X7 driver (edx_x7.c) to dodge a real-HW cart-bus read-after-write quirk that's invisible in emulation.
  • Wave PDD (bsp/drivers/wavedev/) — polling-mode AI driver that layers under the stock waveapi.dll. Polling instead of interrupts because MI_INTR_MASK_AI stalls the SysAD bus on real HW.
  • commctrl.dll (bsp/drivers/commctrl/) — a tiny DllMain that CE 2.11's commctrl.lib forgot to ship, so spinner controls (the msctls_updown32 class) actually register.
  • Shell (bsp/shell/) — Win9x-style desktop, taskbar, file browser.
  • RDP 3D library (bsp/lib/rdp3d/) — minimal triangle rasteriser for user EXEs; used by bsp/apps/cube3d/.

For the long debugging history (cache quirks, TLB walks, GWES bring-up, CE-side wave stack idiosyncrasies, etc.) see the source-level comments in each driver.

You will need

This repo deliberately does not ship anything Microsoft- or Nintendo-proprietary. You have to provide the external trees yourself and place them next to this directory (or symlink them in):

Path What Where
wince211_sdk/ Microsoft Windows CE 2.11 Platform Builder / Embedded Toolkit Long out of print, but can be found online.
libdragon/ N64 homebrew toolchain (mips64-elf-gcc, n64.mk) + FatFS sources https://github.com/DragonMinded/libdragon — clone and run its install script so $N64_INST points at the toolchain.
EverDrive-64 X7 Cart for actual hardware deployment https://krikzz.com. Plus a copy of the official EverDrive firmware on the SD card.

Tooling on the host side:

  • Wine — the SDK's CLMIPS.EXE / LINK.EXE / RC.EXE / ROMIMAGE.EXE all run under Wine. Tested on Linux.
  • Python 3 with Pillow
  • mips64-elf-gcc from libdragon's toolchain (for the bootloader ROM).
  • libftdi1 if you want to upload over USB to a real X7 — required to build diag/ed64_upload.

Building

After placing wince211_sdk/ and libdragon/ next to this directory:

bash bsp/build.sh

This compiles the HAL + every driver DLL, runs LINK.EXE and ROMIMAGE.EXE under Wine to produce bsp/build/nk.bin (the stock CE ROM image), then chains into bootloader/Makefile to wrap it in a libdragon IPL3 trampoline. Output: bootloader/n64ce.z64 (≈3.5 MB, loadable directly by an X7).

A typical clean build runs in ~30s on modern hardware; the dominant cost is Wine cold-start, which the build script amortises by keeping a single wineserver alive for the whole run.

Running

On real N64 + EverDrive-64 X7

Build the USB uploader once:

cd diag && make ed64_upload

Then upload + boot:

diag/ed64_upload bootloader/n64ce.z64       # write + boot
diag/ed64_upload --listen bootloader/n64ce.z64   # also stream USB debug

--listen keeps the FTDI handle open after the upload so no debug output is dropped.

Emulation

Earlier development used Ares with a small local patch for the LE-mode RDRAM partial-word quirk. However that gradually led to this turning into a "let's improve Ares" project rather than just testing on real hardware. Getting this to work on Ares is a deeper rabbit hole that I'm not interested in tackling. Have not tested in any other emulators.

Repository layout

bsp/             N64 BSP: HAL, OAL, drivers, shell, apps, ROM image
  hal/             Custom HAL on top of stock nk.lib
  drivers/         Display, kbd/mouse, sdfsd (FatFS), wavedev, commctrl
  lib/rdp3d/       Triangle rasteriser used by user apps
  apps/            cube3d, paint, notez (linked into the ROM)
  shell/           Desktop, taskbar, file browser, icons
  build.sh         The whole build
  ce.bib           ROMIMAGE build-info file (memory map + module list)

bootloader/      libdragon IPL3 trampoline that loads nk.bin from cart
diag/            Bare-metal diagnostic ROMs (LE-mode quirk tests,
                 audio test, USB uploader, ed64 reboot)
docs/            Architecture diagram, HW debugging notes, N64 quirks

(external, not in this repo)
libdragon/         → clone of DragonMinded/libdragon
wince211_sdk/      → CE 2.11 SDK from the MS Embedded Toolkit
ed64-x-pub/        → krikzz/ed64-x-pub (reference; not built against)

FAQ

Why?

Great question! I got the idea from the IBM Workpad Z50, which uses a very similar MIPS CPU as the N64 (VR4121 vs. the N64's VR4300). There's really no practical reason to run Windows on your N64, so this was more of a programming challenge.

Where do I get the prebuilt ROM?

You can't — there isn't one, and I won't be publishing one. Build it yourself with bash bsp/build.sh. The resulting n64ce.z64 links in Microsoft's CE 2.11 binaries (nk.exe, coredll.dll, gwes.exe, filesys.exe, ddi.dll's MGDI / GPE libs, etc.) from the SDK's static libraries; shipping a finished ROM would mean redistributing those, which I have no license to do. My own source files in this repo are MIT — the output of the build is not, and never will be.

Can I just buy a copy of the SDK?

No, not for ~20 years. The Microsoft Windows CE 2.11 Platform Builder (shipped inside the Microsoft Embedded Toolkit for Visual C++ 6.0) was last sold in the very early 2000s and quietly retired around 2004–2005. Microsoft never re-released it, open-sourced it, or replaced it on their download site. The EULA it originally shipped under was a per-developer development license: you could build embedded software with it and ship the resulting binaries inside an embedded device, but you couldn't redistribute the SDK itself or its static libraries on their own. Archived ISOs of the toolkit circulate online; tracking one down is left as an exercise.

Will it run in an emulator?

Maybe? See the "Running → Emulation" note above. Real HW is the testbed; I'm not maintaining an emulator path.

Can I run my own CE 2.11 MIPS EXEs?

Yes. Drop them on the SD card and launch from the file browser. BeziersCE is confirmed working end-to-end, including its commctrl spinner dialog. Apps that need hardware CE doesn't expose on the N64 (network stack, real keyboard, GAPI, etc.) will fail.

Why do the icons look weird?

Two reasons:

  • The CE 2.11 SDK doesn't include any icons (other than some stray EXE icons)
  • I can't add the classic Win9x icons to this repo for legal reasons

You can easily swap the ugly icons under bsp/shell/icons with some more authentic ones and it should work just fine.

How much of this is custom?

A lot. The CE 2.11 SDK / Platform Builder gives you the kernel (nk.lib), coredll.dll, gwes.exe, filesys.exe, device.exe, common controls, MGDI / GPE display abstractions, and the Win32 API surface. What it does not ship is the desktop shell — no Explorer, no taskbar, no Start menu, no Desktop window, no file browser. OEMs were expected to build their own shell on top of the plain GWES window-manager API. Microsoft did sell H/PC Pro devices with a pre-built shell on them, but a reference shell source didn't appear in Platform Builder until CE 3.0+ (the IESAMPLE / EXPLORER samples). For 2.11 you're on your own.

So bsp/shell/ — the Win9x-style desktop, taskbar with clock + Start button, file browser that walks \SDCard\ via FindFirstFileW, modal dialogs with working commctrl spinners — is all original code written against the standard CE 2.11 GWES API. Likewise for everything below GWES: CE 2.11 ships the interfaces and expects the OEM to write the device-specific driver underneath, so the HAL/OAL, display driver, kbd/mouse PDD, SD FSD, wave PDD, RDP-fill code, ed64-X7 cartridge driver, and the commctrl DllMain are all custom for the N64 target.

License

MIT, see LICENSE. The MIT scope is only the source files in this repository. The Microsoft Windows CE 2.11 SDK / Platform Builder binaries (which the build links against) carry their own license; you must source them legitimately.