[DS(i)/3DS] TWiLight Menu++ - GUI for DS(i) games, and DS(i) Menu replacement (2024)

I got ZXDS (a homebrew Nintendo DS ZX Spectrum emulator) to work using TwilightMenu++ on a New 2DS XL with Luma CFW and I decided I'd share how I accomplished it, plus how I made a working disk image on Linux without resorting to RAMDisk recommended on the first page (which doesn't work on a Linux system). Since it works on a New 2DS XL, hopefully it'll also work on other console models, such as New 3DS XL and 2DS/3DS (though I have no way of testing it personally). Maybe this'll be useful to someone.

So, when you attempt to just start ZXDS using TwilightMenu++, you normally get a black screen saying "ZXDS is loading", and that's it, it hangs. The reason it hangs is because it expects certain files to be present on the root of a flash card (as in a "cartridge slot card", not microSD). Thankfully, TwilightMenu++ offers functionality that allows this kind of homebrew to run using an image file which represents the contents of the said flash card. Thus, the first thing we need to do is make an image file which ZXDS will work with.

If you're on Windows, you can follow the instructions in the first post of this thread under "Create a RAM Disk". Name the RAM disk ZXDS.img. Be sure to copy some tapes and/or snapshots to work with inside the image file as well (you can make a "tapes" folder inside for this purpose, for example).

If you're on Linux (or maybe Mac, or some form of BSD - hopefully there are similar tools), you can use the standard *nix tools to make the image. Use the following terminal commands to make the image on Linux and work with it:

1. The first command will make a 28MB empty image file (not sure why 28MB, but the first post recommends this size for 3DS, so I decided to stick with it, I didn't experiment with any other values):
dd if=/dev/zero of=ZXDS.img bs=1M count=28

2. The second command will format the image file to use a FAT file system as needed:
mkfs.msdos ZXDS.img

3. The third command can be used to mount the image file (in this case, we're mounting under /mnt, but you can specify any mount location). Note that this command requires superuser privileges, so you may need to prefix it with sudo or use su or some other form of superuser privilege granting tools available to you:
mount -o loop ZXDS.img /mnt

(this kind of mount will require superuser privileges to copy files to the image; if you want to be able to use your ordinary user to do that, you may need to add the uid/gid options - check the man page for mount for details)

Now, once you mounted the image, copy the contents of the ZXDS folder in the ZXDS archive (*not* the folder itself, but the contents) to the root of the image file. So, you should have "cache", "data", "save", etc. in the root of your image.

At this point, feel free to also copy some ZX Spectrum tapes, snapshots, etc. (e.g. .tap, .tzx, .z80, etc.) into the image file as well (you can make a separate folder, e.g. "tapes", for this purpose).

You can now unmount the image file, e.g.: umount /mnt (with superuser privileges).

Now that your image file is ready, it's time to put everything in place. Put the .nds file (ZXDS.nds) in the usual location where you place your Nintendo DS ROMs on the microSD card (personally I'm using the /ROMs/NDS folder, but this location may vary). Now, in that NDS ROM folder, create another folder (unless it's already there) called "ramdisks" and put the image file, ZXDS.img, inside. So, your folder structure should be something like this:

<nds_rom_location>/ZXDS.nds
<nds_rom_location>/ramdisks/ZXDS.img

Now we need to configure the ROM options in TwilightMenu++ to correctly work with our setup. Insert your microSD card into your 3DS/2DS/etc. and boot the device up. Start TwilightMenu++ and find ZXDS in the list of ROMs (but don't start it yet!). Instead of starting it, press Y to access the options for the ROM. Make sure you set the following:

Do NOT enable Direct Boot (turn it off if it's enabled for some reason).
Set RAM Disk to 0.
Set the "Run in" option to "DS Mode" (as in "Run in DS Mode")

Now, close the options (with the B key) and start ZXDS (with the A key).
If everything was set up and done correctly, you should see a white screen for a few seconds, followed by a quick "ZXDS is loading" screen, and then ZXDS should fire up.

At this point, ZXDS should be fully operational and you should be able to access all the files inside the image file, including all the tapes and snapshots you put there. If you see the No DLDI Device Found error when trying to load a tape or a snapshot, make sure that Direct Boot is disabled in the ROM options.

UPDATE: You might run into an issue when you try to load a tape or a snapshot and it randomly either works or hangs the emulator, forcing you to shut down and restart TwilightMenu. It looks like this is caused by the length of the file names used on the image - it's best to use short 8.3 names for the tapes/snapshots under the old DOS FAT16 convention, so far I don't have a single lockup if all the file names are concise and are within the 8.3 limits (e.g. DANDARE.TZX instead of Dan Dare Released By Whatever Company [perfect tape].tzx). I'll keep you posted if I figure out some more information about this. I tried formatting the image as FAT32 but it told me that there are not enough clusters for it, and the image ended up being unusable (nothing ever loaded from it).

Enjoy! [DS(i)/3DS] TWiLight Menu++ - GUI for DS(i) games, and DS(i) Menu replacement (1) Hope this will be useful for someone.

[DS(i)/3DS] TWiLight Menu++ - GUI for DS(i) games, and DS(i) Menu replacement (2024)
Top Articles
Latest Posts
Article information

Author: Errol Quitzon

Last Updated:

Views: 5608

Rating: 4.9 / 5 (79 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Errol Quitzon

Birthday: 1993-04-02

Address: 70604 Haley Lane, Port Weldonside, TN 99233-0942

Phone: +9665282866296

Job: Product Retail Agent

Hobby: Computer programming, Horseback riding, Hooping, Dance, Ice skating, Backpacking, Rafting

Introduction: My name is Errol Quitzon, I am a fair, cute, fancy, clean, attractive, sparkling, kind person who loves writing and wants to share my knowledge and understanding with you.