Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Uxnds: Difference between revisions

From GameBrew
No edit summary
m (Text replacement - "|download=https://dlhb.gamebrew.org/dshomebrew/" to "|download=https://dlhb.gamebrew.org/dshomebrew2/")
 
(25 intermediate revisions by 2 users not shown)
Line 2: Line 2:
|title=uxnds
|title=uxnds
|image=Uxnds2.png
|image=Uxnds2.png
|description=Uxn (retro-style fantasy computer) ported to DS.
|description=Emulator of a retro-style virtual machine/fantasy computer Unx.
|author=asiekierka
|author=asiekierka
|lastupdated=2021/09/27
|lastupdated=2024/07/27
|type=Computer
|type=Computer
|version=0.3.3
|version=0.5.2
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/3dshomebrews/uxnds.7z
|download=https://dlhb.gamebrew.org/dshomebrew2/uxnds.7z
|website=https://www.reddit.com/r/3dshacks/comments/nhj5xa/uxn_retrostyle_fantasy_computer_ported_to_ds
|website=https://www.reddit.com/r/3dshacks/comments/nhj5xa/uxn_retrostyle_fantasy_computer_ported_to_ds
|source=https://github.com/asiekierka/uxnds
|source=https://github.com/asiekierka/uxnds
Line 22: Line 22:
* uxnds_profile.nds - almost as fast as uxnds.nds - with debugging/profiling information, no CPU stack bounds checks.
* uxnds_profile.nds - almost as fast as uxnds.nds - with debugging/profiling information, no CPU stack bounds checks.


By default, uxnds will run /uxn/boot.rom. It also supports reading files from within /uxn.
By default, uxnds will run /uxn/boot.rom or /uxn/launcher.rom. It also supports reading files from within /uxn.


'''Note:''' When using a real DS/DSi/[[uxnds 3DS|3DS]] console, it is recommended to launch this program via nds-hb-menu - though, as it currently doesn't use argc/argv, it doesn't really change much.
'''Note:''' When using a real DS/DSi/[[uxnds 3DS|3DS]] console, it is recommended to launch this program via nds-hb-menu - though, as it currently doesn't use argc/argv, it doesn't really change much.
Line 30: Line 30:


===Resources===
===Resources===
* [https://itch.io/c/248074/uxn-roms Uxn roms] ([https://git.sr.ht/~rabbits repo]) - Uxn roms by Rekka Bellum and Devine Lu Linvega.
* [https://itch.io/c/248074/uxn-roms Uxn Roms] ([https://git.sr.ht/~rabbits repo]) - Uxn roms by Rekka Bellum and Devine Lu Linvega.
* [https://compudanzas.net/uxn_tutorial.html Unx tutorial] - Unx programming guide.
* [https://compudanzas.net/uxn_tutorial.html Unx tutorial] - Unx programming guide.


Line 42: Line 42:
<youtube>z8TieqFotXE</youtube>
<youtube>z8TieqFotXE</youtube>


==Compatbility==
==Compatibility==
Works on DS, DSi and 3DS.
Tested on iDeaS.


==Changelog==
==Changelog==
'''v0.5.2'''
*[NDS] Updated to BlocksDS 1.3.1.
'''v0.5.1'''
*[3DS] Fix crash on start.
'''v0.5.0'''
* Ported the ARM assembly CPU core from [https://git.badd10de.dev/uxngba uxngba].
** Speed benefits of +20-40% can be observed!
** Some CPU core bugs have also been fixed in the process, as tested with <code>opctest</code>.
** Relative to the core above, additional minor optimizations have been done for ARMv5/ARMv6 CPUs.
* [NDS] The debug build of uxnds will now prompt before exiting. This allows more convenient execution of CLI applications.
* [NDS] Updated to BlocksDS 1.3.0.
* Note that the new CPU core is not guaranteed to be bug-free; feel free to revert to [https://github.com/asiekierka/uxnds/releases/tag/v0.4.10 0.4.10] if you run into any issues.
'''v0.4.10'''
* [NDS] Fix drawing sprites with negative coordinates.
* [NDS] Update BlocksDS toolchain.
* Add support for <code>system/expansion</code> commands 0x00 and 0x02.
* Update <code>file</code> device implementation.
* Update bundled programs.
'''v0.4.9'''
*Actually add support for placing the "uxn" folder alongside the .3dsx/.nds file.
'''v0.4.8'''
* NDS: Update to BlocksDS 0.11.3.
* NDS: Add support for proper NitroFS filesystems; place "boot.rom" in the root of a NitroFS filesystem.
* Add support for placing the "uxn" folder alongside the .3dsx/.nds file.
'''v0.4.7'''
* [NDS] Improvements to file I/O.
* [NDS] Optimize 1-bit PPU drawing.
* [NDS] Update to BlocksDS 0.11.0.
* Implement division by zero and system device changes in the Uxn/Varvara specification.
'''v0.4.6'''
* [NDS] Improvements to file I/O and startup speed.
* [NDS] Reduce binary size by 2%.
* [NDS] Update to BlocksDS 0.9.1.
* The 3DS port is unchanged from 0.4.5.
'''v0.4.5'''
* [NDS] Lower APU sample rate and minor APU optimizations to improve sound playback stability.
* [NDS] Update to BlocksDS 0.8.1+git.
* Implement audio detunes.
* Implement full sprite flipping.
'''v0.4.4'''
* [NDS] Update to BlocksDS 0.8.
* Implement breaking screen drawing behaviour change.
'''v0.4.3'''
* [3DS] Update to libctru 2.2.2.
* [3DS] Optimize and fix bugs in the screen device implementation.
* No changes to the NDS version.
'''v0.4.2'''
* [3DS] Major screen drawing optimizations.
* [NDS] Fixed drawing vertically-flipped tiles on the bottom edge of the screen.
* [NDS] Fixed palette changes not being queued until frame change.
* Added key repeat emulation for physical button presses.
* Vertical drawing synchronization is no longer applied if a frame took longer than 1 VBlank to process.
'''v0.4.1a'''
*Add support from loading <code>"boot.rom"</code> from a relative path.
*Fix controller device implementation to more closely match uxn/Varvara.
*[NDS] Minor audio fixes.
'''v0.4.0'''
*New features:
**[3DS] Native 3DS port! Unlike the old uxn3ds, this one should have feature parity with the NDS port, in particular including a touch keyboard. As with uxn3ds, a 320x240 resolution screen is provided over 256x192, and the 3D slider can be used to observe the background and foreground layers separately.
**[NDS] New keyboard implementation - providing all keys exposed by the official Varvara implementation, as well as improving modifier support.
*Improvements/Bug fixes:
**Fix "datetime" device implementation.
**[NDS] Minor optimizations to screen "fill mode".
**Moved the "reset" button to use a touch button instead.
'''v0.3.7'''
* screen: initial implementation of "fill mode"
* toolchain: migrate to BlocksDS (~80KB smaller .nds files)
* packaging: update bundled ROMs
'''v0.3.6'''
* uxn VM updates:
** implemented JCI/JMI/JSI opcodes
* updated datetime, file and system devices to (mostly) match mainline
** now with MMU support!
* properly implemented "quit" option
* bundled the correct-for-this-release version of uxn "essentials"
* other minor improvements
'''v0.3.5'''
* uxn VM updates:
** implemented opcode table order changes
** implemented new two-device file I/O
** implemented new changes to screen I/O
* uxnds will now look for "launcher.rom" if "boot.rom" is not present
'''v0.3.4'''
* Add directory reading support. (contributed by DeltaF1)
* Add reset key combo (START+SELECT), with confirmation prompt. (with contributions from DeltaF1)
* Fix inaccurate mouse device implementation. (contributed by Hoolean)
* Minor fixes/toolchain updates.
'''v0.3.3'''
'''v0.3.3'''
* Update to match latest mainline changes.
* Update to match latest mainline changes.
Line 66: Line 156:
* GitHub - https://github.com/asiekierka/uxnds
* GitHub - https://github.com/asiekierka/uxnds
* Reddit - https://www.reddit.com/r/3dshacks/comments/nhj5xa/uxn_retrostyle_fantasy_computer_ported_to_ds
* Reddit - https://www.reddit.com/r/3dshacks/comments/nhj5xa/uxn_retrostyle_fantasy_computer_ported_to_ds
[[Category:DS homebrew emulators]]
[[Category:Homebrew computer emulators on DS]]

Latest revision as of 11:12, 16 August 2024

uxnds
Uxnds2.png
General
Authorasiekierka
TypeComputer
Version0.5.2
LicenseMIT License
Last Updated2024/07/27
Links
Download
Website
Source

unxds is a port of the Unx virtual machine to the NDS. Uxn is a portable 8-bit virtual computer inspired by forth-machines, capable of running simple tools and games programmable in its own assembly language.

This emulator allows you run to your uxn projects on the DS, also ideal for developers who want to learn how to program little 8-bit things, such as text editors, music trackers, illustration programs and games.

Installation

There are three binaries provided:

  • uxnds.nds - faster, but best used only with known-good software,
  • uxnds_debug.nds - slower, but provides debugging information, profiling information and performs CPU stack bounds checks.
  • uxnds_profile.nds - almost as fast as uxnds.nds - with debugging/profiling information, no CPU stack bounds checks.

By default, uxnds will run /uxn/boot.rom or /uxn/launcher.rom. It also supports reading files from within /uxn.

Note: When using a real DS/DSi/3DS console, it is recommended to launch this program via nds-hb-menu - though, as it currently doesn't use argc/argv, it doesn't really change much.

User guide

On start, a keyboard is presented on the bottom screen, and the uxn display is on the top screen.

Resources

Controls

L/R - Swap top and bottom screens

Touchscreen - Mouse input

Media

Noodle - Magic Brush (Devine Lu Linvega)

Compatibility

Tested on iDeaS.

Changelog

v0.5.2

  • [NDS] Updated to BlocksDS 1.3.1.

v0.5.1

  • [3DS] Fix crash on start.

v0.5.0

  • Ported the ARM assembly CPU core from uxngba.
    • Speed benefits of +20-40% can be observed!
    • Some CPU core bugs have also been fixed in the process, as tested with opctest.
    • Relative to the core above, additional minor optimizations have been done for ARMv5/ARMv6 CPUs.
  • [NDS] The debug build of uxnds will now prompt before exiting. This allows more convenient execution of CLI applications.
  • [NDS] Updated to BlocksDS 1.3.0.
  • Note that the new CPU core is not guaranteed to be bug-free; feel free to revert to 0.4.10 if you run into any issues.

v0.4.10

  • [NDS] Fix drawing sprites with negative coordinates.
  • [NDS] Update BlocksDS toolchain.
  • Add support for system/expansion commands 0x00 and 0x02.
  • Update file device implementation.
  • Update bundled programs.

v0.4.9

  • Actually add support for placing the "uxn" folder alongside the .3dsx/.nds file.

v0.4.8

  • NDS: Update to BlocksDS 0.11.3.
  • NDS: Add support for proper NitroFS filesystems; place "boot.rom" in the root of a NitroFS filesystem.
  • Add support for placing the "uxn" folder alongside the .3dsx/.nds file.

v0.4.7

  • [NDS] Improvements to file I/O.
  • [NDS] Optimize 1-bit PPU drawing.
  • [NDS] Update to BlocksDS 0.11.0.
  • Implement division by zero and system device changes in the Uxn/Varvara specification.

v0.4.6

  • [NDS] Improvements to file I/O and startup speed.
  • [NDS] Reduce binary size by 2%.
  • [NDS] Update to BlocksDS 0.9.1.
  • The 3DS port is unchanged from 0.4.5.

v0.4.5

  • [NDS] Lower APU sample rate and minor APU optimizations to improve sound playback stability.
  • [NDS] Update to BlocksDS 0.8.1+git.
  • Implement audio detunes.
  • Implement full sprite flipping.

v0.4.4

  • [NDS] Update to BlocksDS 0.8.
  • Implement breaking screen drawing behaviour change.

v0.4.3

  • [3DS] Update to libctru 2.2.2.
  • [3DS] Optimize and fix bugs in the screen device implementation.
  • No changes to the NDS version.

v0.4.2

  • [3DS] Major screen drawing optimizations.
  • [NDS] Fixed drawing vertically-flipped tiles on the bottom edge of the screen.
  • [NDS] Fixed palette changes not being queued until frame change.
  • Added key repeat emulation for physical button presses.
  • Vertical drawing synchronization is no longer applied if a frame took longer than 1 VBlank to process.

v0.4.1a

  • Add support from loading "boot.rom" from a relative path.
  • Fix controller device implementation to more closely match uxn/Varvara.
  • [NDS] Minor audio fixes.

v0.4.0

  • New features:
    • [3DS] Native 3DS port! Unlike the old uxn3ds, this one should have feature parity with the NDS port, in particular including a touch keyboard. As with uxn3ds, a 320x240 resolution screen is provided over 256x192, and the 3D slider can be used to observe the background and foreground layers separately.
    • [NDS] New keyboard implementation - providing all keys exposed by the official Varvara implementation, as well as improving modifier support.
  • Improvements/Bug fixes:
    • Fix "datetime" device implementation.
    • [NDS] Minor optimizations to screen "fill mode".
    • Moved the "reset" button to use a touch button instead.

v0.3.7

  • screen: initial implementation of "fill mode"
  • toolchain: migrate to BlocksDS (~80KB smaller .nds files)
  • packaging: update bundled ROMs

v0.3.6

  • uxn VM updates:
    • implemented JCI/JMI/JSI opcodes
  • updated datetime, file and system devices to (mostly) match mainline
    • now with MMU support!
  • properly implemented "quit" option
  • bundled the correct-for-this-release version of uxn "essentials"
  • other minor improvements

v0.3.5

  • uxn VM updates:
    • implemented opcode table order changes
    • implemented new two-device file I/O
    • implemented new changes to screen I/O
  • uxnds will now look for "launcher.rom" if "boot.rom" is not present

v0.3.4

  • Add directory reading support. (contributed by DeltaF1)
  • Add reset key combo (START+SELECT), with confirmation prompt. (with contributions from DeltaF1)
  • Fix inaccurate mouse device implementation. (contributed by Hoolean)
  • Minor fixes/toolchain updates.

v0.3.3

  • Update to match latest mainline changes.

v0.3.2

  • Update PPU logic to match latest spec changes.

v0.3.1

  • Updates to the "console" device to bring it in line with latest uxnemu (somewhat).
  • Fixed only the first APU channel working.

v0.3.0

  • Updated CPU core to be compatible with the latest uxn specification changes. (SFT2)
  • Minor performance improvements (3-5%), thanks alderwick.
  • Reduced the .nds size by ~4-25KB, depending on build.

Release notes.

External links

Advertising: