Uxn32 Changelog

What's new in Uxn32 2.2

Nov 2, 2023
  • This is another small release which adds support for the new sprite flipping feature. The bundled ROMs are unchanged.

New in Uxn32 2.1 (Jul 2, 2023)

  • This is a small release which adds support for the new clearing command on the screen device. The bundled ROMs are unchanged from the previous version.
  • It also adds support for the extended (virtual) memory "stasher" device, allowing Uxn ROMs to access more than 64kb of RAM.
  • The Uxn32 code now contains some preprocessor directives that let you make a custom build for your Uxn game in "singular" mode, where your game ROM is baked into the .exe and the menu bar is hidden by default.
  • There are also some internal code changes, including off-by-default support for some features, like version tagged ROM files and compressed+checksummed ROM files, which ended up not being used by the Uxn ecosystem. These features will probably be removed again later to reduce code size.

New in Uxn32 2.0 (Jan 22, 2023)

  • Buckle up for the list of changes and improvements since 1.8:
  • Added support for command line arguments.
  • The first argument will be the name of the ROM file for the emulator to open. Any further arguments will be passed to the Uxn program in the ROM file for it to process.
  • Example: Uxn32.exe my_cool_rom.rom some_arg_to_pass "And this string also gets passed to the ROM program"
  • If you reload the ROM file -- for example, by pressing F4 -- the command line arguments will be resent to the ROM program.
  • Added support for command line options.
  • Before the name of the ROM file, you can specify an option like /hidemenu (or, alternatively, -hidemenu). More on that later.
  • Made the virtual console much faster. Like 200x faster.
  • Added a momentary highlight blink effect in the status bar of Beetbug when some actions occur.
  • This makes it easier to tell when the machine state changes from Paused to Running and that sort of thing. It will also blink-highlight the fault message area if a fault occurs.
  • Disabled the ability to delete directories with the Uxn file device.
  • Uxn's file device isn't specified to be able to create directories, and there was also no mention of deleting them. Uxn32 used to let you delete directories, but since there's no way to create them, it seems like more of a liability and an unnecessary way to make a mistake. So, now you can't.
  • Disabled the file device's ability to read or write files with the extensions .dll, .exe, and .com.
  • These are executable file formats on Windows. It's not possible for running executables to edit themselves, but it's possible that if the user ran a ROM in Uxn32 with the sandbox set to a directory where other .exe files are, a malicious Uxn ROM program could have messed around with stuff.
  • Now, they can't.
  • No, you can't fool it by using upper case letters for the file extension.
  • Added setting of window title name via System port 0x4 and 0x5, following new changes to the Varvara document.
  • If a ROM program requests quit and Beetbug isn't open, the emulator window will close.
  • This makes it more seamless if you aren't debugging or developing.
  • Actually, the emulator will still stay open if the console is open. This way, if you run a program that prints some stuff to the console and then immediately quits, you can still read the stuff in the console without it closing in your face.
  • Added .rom.sym symbol loading and displaying in Beetbug.
  • If there's a file with the .rom.sym extension that has the same name as the ROM file that's loaded, Beetbug will load it and display the symbolic names of the addresses in the disassembly view.
  • The .rom.sym file will be reloaded whenever the main .rom file is reloaded: the "Open File" dialog, dragging & dropping a ROM file, and pressing F4 to reload the file.
  • Replaced the Uxn CPU emulator core with a shiny new one.
  • It's about 40% faster. And it implements the new call instructions from the newest version of the Uxn design document.
  • And it's fully backwards compatible.
  • To go with that, the mnemonics for the new Uxn CPU instructions have been added to Beetbug.
  • Added support for the system device fault handler from the new changes to the Varvara design document.
  • Added the ability to hide and show the menu bar.
  • Choose it from the menu with View -> Show Menu Bar, or toggle it with F10.
  • Or, launch Uxn32.exe with the menu bar already hidden by passing /hidemenu as an option from the command line.
  • Added filtering out of the .. entry when using the file device to list the files in a directory.
  • You couldn't do anything with it, anyway.
  • When trying to load a ROM file but it couldn't be found, Uxn32 used to show a black screen. Now, it will show a cute animation with a confused animal wondering why you are having trouble with your files.

New in Uxn32 1.9 Preview 6 (Jan 14, 2023)

  • Added support for command line arguments. (New in Preview 1)
  • Made the virtual console much faster. (New in Preview 2)
  • Added a highlighting effect in the status bar of Beetbug when some actions occur. (New in Preview 3)
  • Disabled the ability to delete directories. (New in Preview 3)
  • Added setting of window title name via System port 0x4 and 0x5. (New in Preview 3)
  • If a ROM program requests quit and Beetbug isn't open, the emulator window will close. (New in Preview 3)
  • Added .rom.sym symbol loading and displaying in Beetbug. (New in Preview 3)
  • Added re-sending of command line arguments when reloading a ROM file. (New in Preview 4)
  • New emulator core with new call instructions. (New in Preview 5)
  • Added support for the system device fault handler. (New in Preview 5)
  • Fixed bug added in Preview 3: Beetbug mnemonic entry index being wrong when pressing return to initiate edit (some Win32 flaw)
  • Added support for the new mnemonics to Beetbug. (New in Preview 6)

New in Uxn32 1.9 Preview 3 (Jan 12, 2023)

  • Added setting of window title name via System port 0x4 and 0x5. (New in Preview 3)
  • If a ROM program requests quit and Beetbug isn't open, the emulator window will close. (New in Preview 3)
  • Added .rom.sym symbol loading and displaying in Beetbug. (New in Preview 3)

New in Uxn32 1.9 Preview 2 (Dec 31, 2022)

  • Made the virtual console much faster. (New in Preview 2)

New in Uxn32 1.9 Preview 1 (Dec 30, 2022)

  • Now with support for command line arguments!

New in Uxn32 1.8 (Dec 27, 2022)

  • Updated the bundled ROMs to freshly baked versions.
  • Uxn32 windows will now have a minimum size, so that you can't accidentally resize a window too small and cut off some of the virtual screen area.
  • The virtual screen in Uxn32 windows will now scale to 3x and beyond, if the window is large enough.
  • Toggling zoom with F1 will still only cycle between window sizes to match 1x and 2x, though.
  • Fixed the PC (program counter) being set to 0 in a duplicated window.
  • This was noticeable if you duplicated a window while the program was frozen mid-execution with Beetbug. And now it's fixed.
  • Fixed Beetbug swapping the mnemonics for OVR and DUP opcodes.
  • Oops. This mistake was added back when the opcode values were shuffled earlier in 2022.
  • Added special-casing to Beetbug so that instruction 0x00 displays as BRK, and LITk displays as the less-noisy (but equivalent) LIT.
  • You can also enter these mnemonics as input in the Beetbug memory editor.
  • Changed 16-bit PEEKs and POKEs operating at address 0xFFFF to not wrap the higher byte back down to address 0x0000.
  • Instead, there's now a secret padding byte after 0xFFFF that will absorb the extra byte. Shhh, don't tell anyone.
  • This was done to match the behavior of uxnsdl.
  • Added handling of the .System/state (0x0F port)
  • When a Uxn program writes a byte to it, Beetbug will open and say that the program requested exit.
  • Because it's not normal for Windows GUI programs that are emulating some other system to vanish without the user closing it, I chose this behavior instead.
  • This might be a bad idea, so it might be changed in the future.

New in Uxn32 1.7 (Jun 11, 2022)

  • Update the bundled ROMs to freshly baked versions.
  • Fixed mousewheel events being dropped when the mouse is in the bottom right quadrant of the screen, and also in multi-monitor desktops.
  • Fixed a bug where a 16-bit read or write instruction to address 0xFFFF would have the second byte read or write 1 byte of additional memory at nonexistent address 0x10000 instead of wrapping and operating at address 0x0000.

New in Uxn32 1.6 (Apr 26, 2022)

  • Shuffle the CPU opcode values around to match the shuffling that the main uxnemu project did.
  • This means that Uxn32 1.6 and onwards (and uxnemu) is incompatible with older ROMs, and newer ROMs are incompatible with older versions of Uxn32 (and uxnemu.)
  • Mismatched ROMs will fault and cause Beetbug to open. The Uxn ROM format doesn't have any version tagging, so there's no way to detect this when opening the ROM.
  • The ROMs bundled with this release of Uxn32 are already updated to work correctly.
  • If you made any of your own ROMs, you will need to recompile them with the newer assembler (included in Uxn32.) You probably won't need to make any source code changes.
  • Sorry about that. This decision was made by the uxnemu project (mailing list email here), and Uxn32 has to change to match it, otherwise they will be incompatible going forward.
  • Add second 'File' virtual device. (This matches a change in the main uxnemu project.)
  • Like the change above with the CPU opcodes values, this also implies a breaking change, though to a lesser degree. Some ROMs may have continued to work without being recompiled, and some may not.
  • Like above, it's unlikely you will need to make any source code changes to your uxntal files.
  • Fortunately, both of these breaking changes happened in the same release.
  • Change to automatically balance the stack with 0xFF when breaking into Beetbug after a division-by-zero fault.

New in Uxn32 1.5 (Mar 18, 2022)

  • Added new Screen device "auto" byte sprite feature.
  • See: Varvara docs for Screen Device
  • Added Del key (code 127) as one of the key chars passed into Uxn programs.
  • Fixed Wine-specific off-by-1 scroll position bug in Beetbug list widgets.
  • Updated ROMs to a freshly harvested pack.

New in Uxn32 1.4 (Feb 17, 2022)

  • Added Beetbug, the Uxn32 debugger.
  • View main memory as decoded instructions.
  • Edit instructions in place.
  • View memory and device memory as hex bytes.
  • View the work and return stacks.
  • Push, pop, and edit work and return stacks.
  • Step 1 instruction (F8) or 100 instructions (F7)
  • Status bar indicates current run mode, type of the last vector that was run, program counter, total instructions executed during the last vector, and fault code message.
  • Pause and resume execution.
  • Jump to address in hex view.
  • Secret experimental feature: hold shift to jump in the instruction view instead.
  • Even more secret feature: shift+control to jump the program counter as well.
  • Fixed large files (> 4gb) possibly showing the wrong file size instead of '????' from stat results from *he file device.
  • Fixed possible read out of bounds in the audio device sample playback.
  • Reported this flaw to original uxnemu project.
  • Improved repainting in non-content areas of emulator window in non-composited Windows desktops.
  • Tweaked program icon.

New in Uxn32 1.3 (Feb 10, 2022)

  • Added console input and output.
  • Fixed keyboard input !, @, #, etc. characters not working.
  • The Windows mouse cursor now appears if the Uxn program doesn't use the mouse, instead of the Windows mouse cursor always being hidden.
  • Fixed a Uxn32 window that was duplicated while paused not being paused in the newly created duplicate.
  • On non-composited Windows systems, fixed non-content border areas not being repainted properly when another window is dragged in front of a Uxn32 window where the window size is larger than the Uxn screen content size.
  • Added Sigrid Solveig Haflinudottir to the about box credits for the original SDL2 version of the Uxn emulator.
  • Updated ROM pack to freshly harvested ROMs.