{"id":13770415,"url":"https://github.com/randrew/uxn32","last_synced_at":"2026-03-16T23:32:17.036Z","repository":{"id":40002216,"uuid":"447338612","full_name":"randrew/uxn32","owner":"randrew","description":"Uxn emulator for Windows and Wine","archived":false,"fork":false,"pushed_at":"2023-11-19T21:13:01.000Z","size":347,"stargazers_count":171,"open_issues_count":5,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-17T06:40:21.378Z","etag":null,"topics":["c","uxn","win32","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/randrew.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-01-12T19:04:30.000Z","updated_at":"2024-10-06T21:41:52.000Z","dependencies_parsed_at":"2023-02-17T01:00:56.041Z","dependency_job_id":"863968bd-fd92-4d6c-bafe-0f1140b0b249","html_url":"https://github.com/randrew/uxn32","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randrew%2Fuxn32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randrew%2Fuxn32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randrew%2Fuxn32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randrew%2Fuxn32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/randrew","download_url":"https://codeload.github.com/randrew/uxn32/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514352,"owners_count":21920327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","uxn","win32","windows"],"created_at":"2024-08-03T17:00:37.203Z","updated_at":"2025-12-27T23:41:00.951Z","avatar_url":"https://github.com/randrew.png","language":"C","funding_links":[],"categories":["Emulators","C"],"sub_categories":["Desktop"],"readme":"Uxn32 - Uxn Emulator for Windows and Wine\n=========================================\n\n![](https://raw.githubusercontent.com/wiki/randrew/uxn32/uxn32-banner.png)\n\nUxn32 is a graphical emulator for the [Uxn](https://100r.co/site/uxn.html) virtual machine.\n\n| **[⬇️📦Download the latest Uxn32 Essentials Pack](https://github.com/randrew/uxn32/releases/latest/download/uxn32-essentials.zip)** |\n| ---\n| Uxn32.exe plus a collection of pre-built ROMs ready to play. |\n\nFeatures\n--------\n\n* Compatible with: Windows NT4, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11, and Wine. Works on both 32-bit and 64-bit systems.\n* Specifically built to also work with Wine on Linux and other OSs.\n* Small and simple - single .exe, no installer, no dependencies.\n* Sandboxed file system access for Uxn program ROMs.\n* Debugger with stepping, disassembly viewing and editing, memory view, and stack viewing and editing.\n* Uxn programs receive events at full speed and repaint immediately. Got a 240hz display? Now your Uxn drawing program can make use of it.\n* Pre-emptive execution, so it won't freeze up if the Uxn program goes into an infinite loop or takes a long time to process something.\n* Compiles with: Visual C++ 6.0 (VC6 1998) and all versions up through Visual Studio 2022, Clang, clang-cl, GCC via Winelib, MinGW Clang, MinGW GCC, and Pelles C.\n\n![](https://raw.githubusercontent.com/wiki/randrew/uxn32/uxn32-1.2-screenshot.gif)\n\nUse\n---\n\nDownload the pre-built [Uxn32 Essentials Pack - a bundle of Uxn32.exe and a collection of ROMs](https://github.com/randrew/uxn32/releases/latest/download/uxn32-essentials.zip). Unzip into a new directory and run Uxn32.exe.\n\nShortcuts \u0026 Controls\n--------------------\n\n    F1  Toggle 1x and 2x zoom        F5  Show debugger\n    F2  Clone window \u0026 state         F7  Step debugger by 100 instructions\n    F3  Show/hide console            F8  Step debugger by 1 instruction\n    F4  Reset and reload ROM file    F9  Resume or pause emulation\n\nGamepad Keyboard Mapping\n------------------------\n\n    Control Key -\u003e Gamepad 'A'\n        Alt Key -\u003e Gamepad 'B'\n      Shift Key -\u003e Gamepad 'Select'\n       Home Key -\u003e Gamepad 'Start'\n\n![](https://raw.githubusercontent.com/wiki/randrew/uxn32/uxn32-1.4-screenshot.gif)\n\nBuilding\n--------\n\n### Windows\n\nFor VC6 and other old Microsoft IDEs and compilers, just open uxn32.dsp and hit build.\n\nFor later Visual Studio versions and MinGW, there is a CMakeLists.txt file to use with CMake. It's been tested to work with multiple different combinations of IDEs and toolchains, such as: CLion + MSVC, CLion + MinGW Clang, Qt Creator + MSVC, Qt Creator + MinGW Clang, Visual Studio Code with C/C++ extensions, standalone with Ninja or NMake and MSVC, and more.\n\nVC6 is the easiest way to produce a `.exe` that works with old Windows versions and which doesn't require bundling `.dll` files or statically linking to large C runtimes.\n\n### Linux \u0026 Other UNIX\n\nThe easiest way to develop Uxn32 from within Linux is to use Winelib. This lets you use regular GCC or clang, and doesn't require installing MinGW. The output `.exe` will be `ELF` (Linux format) instead of `PE` (Windows format) so you can't copy it to a Windows system, but it will work great with Wine on Linux.\n\nMake sure you have Wine installed, and also either gcc or clang installed, then do something like:\n\n```sh\nwinemaker --wine32 uxn32.dsp\nmake\n```\n\nThen run it with `wine Uxn32.exe`. You can use gdb to debug it with `winedbg Uxn32.exe`. You might want to tweak the compiler flags in the generated Makefile to change optimization and debug symbol generation settings.\n\n\u003csub\u003e(Actually, if you use clang as your compiler with `winegcc`, and you have `lld` installed, you can manually invoke `winegcc` while adding the flags `-b i386-pc-windows-msvc -Wl,/safeseh:no` and then it *will* output a `PE` executable that will run on Windows. But it will probably only run on Windows 7 and later, because it links with `ucrtbase.dll`.)\u003c/sub\u003e\n\nIf you want to use MinGW on a Linux host to produce an executable for Windows, you can do a similar invocation by hand, or try using CMake.\n\n### Other\n\nBuilding with some other system or by hand is easy. There's only one resource file, `uxn32.rc`, and three source files, `uxn32.c`, `uxn_lz.c`, and `uxn_core.c`. You don't need any special compiler flags or preprocessor definitions. But you will need to link these libraries: `user32.lib gdi32.lib shell32.lib shlwapi.lib comdlg32.lib comctl32.lib winmm.lib`\n\nUxn32 TODO\n----------\n\n- [x] ~~Add drag'n'drop ROM loading.~~\n- [x] ~~Add pixel doubling/scaling.~~\n- [x] ~~Audio output.~~\n- [ ] Volume control.\n- [x] ~~Add console output.~~\n- [x] ~~Add console input.~~\n- [x] ~~Add File, View, etc. menus.~~\n- [x] ~~Add toggle to show/hide menu bar.~~\n- [ ] Add preferences.\n- [x] ~~Add a graphical debugger.~~\n- [x] ~~Add \"About\" dialog box. (Currently sitting unused in the resources file.)~~\n- [ ] Add a preference to set filesystem sandbox directory, and to restrict read and write operations. (Filesystem sandboxing is currently based on the current working directory.)\n- [ ] Fix mixing of too many synonmous types (DWORD, ULONG, Uint32, etc.) in places where just 1 would do.\n- [ ] Fix missing and inconsistent 'static' on functions.\n- [x] ~~Fix not redrawing the empty area around the Uxn virtual screen in the window client area when dirtied due to external reasons (like dragging a window over it in a non-composited Windows desktop.)~~\n- [ ] Use a better timing and display sync method. (Might require special casing for composited Windows desktops.)\n- [x] ~~Test and fix C89 issues with GCC in MinGW, if any. (Tested and works in VC6, MSVC 2019, clang-cl, MinGW-w64 Clang, but not yet tested in GCC.)~~\n- [ ] Reorganize some Device stuff.\n- [ ] Add a resource usage and performance indicator panel. (See how much % Uxn virtual CPU time is being used, time spent on file access, etc.)\n\n![](https://raw.githubusercontent.com/wiki/randrew/uxn32/uxn32-1.3-screenshot.gif)\n\nLicense\n-------\n\nISC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frandrew%2Fuxn32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frandrew%2Fuxn32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frandrew%2Fuxn32/lists"}