Giter Club home page Giter Club logo

uxnds's Introduction

uxnds

Quick and simple port of the uxn virtual machine to the NDS and 3DS consoles.

You can download the latest version and source code here.

Usage

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

On start, a keyboard is presented on the bottom screen, and the uxn display - on the top screen. Use the L or R buttons to swap them - in this configuration, mouse input is approximated via touchscreen.

You can use the system button in the lower-left corner to reset the uxn virtual machine.

Installation

Two ports are provided: the 3DS port (compatible with 3DS consoles) and the NDS port (compatible with DS, DSi and 3DS consoles).

3DS port

There is one binary provided: uxnds.3dsx.

To compile uxnds for 3DS, you may use:

  • the latest devkitARM toolchain from the devkitPro organization to compile. After installing, simply run make -f Makefile.3ds.

NDS port

When using a real DS, DSi or 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.

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.

To compile uxnds for NDS, you may use:

  • the BlocksDS toolchain - run make -f Makefile.blocksds;
  • the latest devkitARM toolchain from the devkitPro organization to compile. After installing, simply run make -f Makefile.nds.

uxnds's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

uxnds's Issues

resetting fails on new 3ds

START+SELECT, A just results in "Error Load: Failed"

running under TWilight Menu++

most other things seem to work

reset fails on nds

I just installed uxnds037 onto a 2022 R4 card.

I copied the following files to the root directory of the card:

  • uxn/
  • uxnds_debug.nds
  • uxnds.nds
  • uxnds_profile.nds

When launching any of the uxnds programs I see the uxn launcher and can load and run uxn roms (such as catclock, calc, etc.). However, when I reset (start+select followed by A) I get an error:

Resetting...
Error Load: Failed

I get this no matter which of the 3 uxn programs I run. I'm using the default launcher for this card (it shows up on the main DS screen as "deep labyrinth"). I'd rather not overwrite the launcher (I'm not very experienced with DS hacking) but am willing to do so to help test if you think that nds-hb-menu would fix the issue.

Makefile fails due to missing asset gfx_keyboard.h in arm9

Using DevKitProPacman in either macos (and getting pacman installed on macos is a whole thing that is not accurately described in the wiki but that's an issue for devkit) or Windows 10 to Makefile.nds results in the following fatal error:
C:/Users/Wouldn'tYouLikeToKnow/Documents/GitHub/uxnds/arm9/source/nds_keyboard.c:8:10: fatal error: gfx_keyboard.h:
No such file or directory
8 | #include "gfx_keyboard.h"
| ^~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [/opt/devkitpro/devkitARM/base_rules:39: nds_keyboard.o] Error 1
make[1]: *** [Makefile:124: build] Error 2
make[1]: Leaving directory '/home/Wouldn'tYouLikeToKnow/Documents/GitHub/uxnds/arm9'
make: *** [Makefile.nds:35: checkarm9] Error 2

Make will not complete.

Consider changing the force-reset button combination

23:02 <zzo38> Might it be better to not use START+SELECT for restart, and instead using buttons L, R, X, Y, since START and SELECT buttons are used by the program running in the VM? Or maybe should be one of those combination with others for whatever options you intend to be implemented. (Also, I think it is common for the L and R buttons on a Nintendo DS to break, so I don't know if there is a condieration for that)

"Empty Folder" on NDS (uxnds filesystem bug?)

I have booted up with hbmenu, put launcher.rom as uxn/boot.rom on my sdcard in a DSONE clone flash cart.

I get a nice debug display that keeps updating on one screen and the character logo + "0/0" and "Empty Folder" on the other screen. I placed many .rom files in uxn/ on the sdcard.

I tried moving the rom files to uxn/uxn/ and also the root, /, out of curiosity but that didn't change the behavior.

I tried booting the uxnds_debug directly instead of with hbmenu, same behavior.

I copied piano.rom from uxn build to uxn/boot.rom and that starts and works, makes noise etc ๐Ÿ‘

Seems like this might be a bug in uxnds file system implementation? Since the roms basically work just can't see the rom files in uxn/

I think this is where the message comes from:
https://git.sr.ht/~rabbits/uxn/tree/main/item/projects/software/launcher.tal#L307

Uxnds 3DS crashes on startup on Old Nintendo 3DS [Fix]

Usually, when homebrew is installed in the 3ds, it goes to the /3ds folder, which is the one that the homebrew launcher has assigned by default, but when trying to start it from there, the screen stays black and the bottom screen shows an error message, then if you do not press start to return to homebrew launcher the console crashes and creates an error code, and then it turns off.

  • My solution was to take the executable "uxnds.3dsx" to the root of the sd card and paste it next to the "unx" rom folder in this way when executed it goes directly to the launcher as expected and from a very uneducated opinion it seems that everything works as it should from that point on.

boot failed

The 3ds build fails to boot when the uxn directory is relative (not /uxn).
It seems to look for boot.rom (in uxn subdirectory or in /uxn) or launcher.rom (only /uxn), which fails in the default installation.

No longer runs launcher.rom on DSi

Crashes with Halted: Working-stack underflow#0038, at 0x05c3 when loading launcher.rom on DSi hardware

launcher.rom on uxnds 0.3.4: launcher.rom on 0.3.4
launcher.rom on uxnds 0.3.5: launcher.rom on 0.3.5

Uxn stack opcodes order changed

This change was added to help with the drop/roll/pick microcode implementation and as to follow the machineforth order:

image

The only thing that changes is the order of the opcodes, the uxngba port uses a very similar uxn.c file to yours, I'm not sure if it's just a matter of copy/pasting it.

This is possibly the last change to the uxn core, ever.

Some roms only show part of the program on screen

(I am using a dsi xl with twilightmenu++ and unlaunch)

first program that does this is BOOT.rom
IMG_20231123_232948
second program that does this is turye.rom
IMG_20231123_233140
asma.rom doesn't work at all
IMG_20231123_233523
the next rom is left.rom
IMG_20231123_233704
the next rom is nasu.rom
IMG_20231123_233846

Uxn core to make use of extraneous 3 opcodes

The new uxn specs is making use of the 3 free opcodes (0x20, 0x40 and 0x60), see refs to basically addsrelative immediate jumps.

case 0x20: /* JCI */ POP8(b) if(!b) { pc += 2; break; }
case 0x40: /* JMI */ PEEK16(a, pc) pc += a + 2; break;
case 0x60: /* JSI */ PUSH16(u->rst, pc + 2) PEEK16(a, pc) pc += a + 2; break;

See example implementation. There aren't many roms that make use of this yet, it'll roll out slowly during the next few months. But left.rom does use the new opcodes, so if anything shows up then it's a good sign.

D-pad/Joystick double-triggers input

In the boot rom I am unable to select some options because a press of the d-pad (or movement on joystick) moves two spaces in the list, one on button down and one on button up. Same problem in orca.

Just tested and it's the same for the NDS or 3DS versions. (I'm running both on a N3DSXL if that matters)

right clic support

It seems there is no right-clic support.
Some uxn apps require this :)

NDS lite graphics not working well with 0.3.5 version

Using latest 0.3.5 release with DS One loader (not sure about this exactly, which version and such).

Previously graphics were working mostly, just file select was broken I think.

With this version the graphics seems mostly blank with just a few pixels drawn.

On start I get Halted: Working-stack underflow#0030, at 0x053b and not much more can be done.

This is using uxnds_debug.nds.

If I use the uxnds.nds I get a bit more of the screen drawn and see some changes when tapping on the touchscreen device.

I did reload the uxn roms from https://rabbits.srht.site/uxn/uxn-essentials-mac64.zip just now and that didn't seem to change things, thought maybe there was some API change or something causing the stack problem.

Testing uxnds on iphone Delta

I installed Delta from the altsore to get a nintendo DS emulator running on my non jailbroken iphone. I'm trying to test uxnds and after running the uxnds_debug I get Error FAT init: Failed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.