LittleFM - an alternative file manager for LSDj
November 21st, 2016Before using LittleFM, please read the description below to understand how i works and what it is and what it isn’t. (Better spend that extra time than do a mistake and lose data because you didn’t realize how LFM works…)
Description
LittleFM is an alternative file manager for LSDj that lets you store 8 “projects” (savs) in flash memory. These can be saved and loaded just like you would save or load a sav file from/to your computer. It runs on the Gameboy, as a patch to a LSDj and shows a menu on startup.
In the long run, it’s also supposed to become a full drop-in replacement for LSDj’s own file manager, allowing you to load, save and delete files within a sav. To this end, LittleFM is not yet feature complete. LittleFM can only load files, not save or delete them. However, the load function is much faster, slightly more glitch resistant if you lose power when loading a file, and warns you when you’re trying to load a file that is corrupted. (Rather than loading forever or crashing as LSDj’s manager might do.)
Installation
LittleFM comes with its own patcher, called ShitStrapOn. Originally, I created this program to add a bootstrap for starting Shitwave, which is the source of the name. ShitStrapOn requires Java and asks for a clean LSDj ROM and returns a patched ROM, ready to be written to a flash cartridge.
If you have Java installed, starting the application should be as simple double clicking the file. Should you need to execute it manually from the command line, you should be able to run it with something like java -jar ShitStrapOn.jar
Backing up
If you’ve stored songs in flash and want to back them up to your computer, make sure to choose 2048 kB as the ROM size in the transfer program, or your song data won’t be backed up. On drag’n'derp, this should be handled automatically, and the file on the faked USB memory should appear as 2048 kB instead of 1024 kB after running LittleFM for the first time.
Clicking erase in the transfer program will (obviously) erase any files saved in flash. Think before you click!
Compatibility: Sav backup to flash
LittleFM can use generic flashcarts based on the following flash chips: AM29F016, AM29F032b. This includes flash cartridges sold under names as Bleepbloop, Smartboy and Fighter Cart. It is also compatible with drag’n'derp.
Backing up data to flash memory does not work on any EMS cartridge. This is a hardware limitation of those cartridges.
Compatibility: multi-ROM
While the program running on the Gameboy cannot access the flash chip on EMS carts, it has a hardware feature to allow multi ROM support. As a proof of concept, LittleFM 0.5.1 has integrated support for this EMS multi ROM capability. As this is a proof of concept, it does not come with a special patcher, it does not check that ROMs are correctly aligned and it doesn’t handle save data at all. However, to show that I paid attention at least slightly to detail, it does not show repeated entries when used in an emulator, and also gives you an error message if the switching failed, unlike most similar menus.
You have to prepare a ROM yourself, by first patching an LSDj ROM with LittleFM as usual, then concatenating whatever ROMs you want at the end, respecting the alignment of course.
copy /b lsdj-4_7_0-lfm.gb + rom1.gb + rom2.gb out.gb cat lsdj-4_7_0-lfm.gb rom1.gb rom2.gb > out.gb
Then burn out.gb as the only ROM onto your EMS cartridge, USB or non-USB. Press start to bring up the EMS multi ROM menu.
Since it doesn’t do save management or anything fancy it’s kind of pointless except maybe for musicians who want noise maker ROMs alongside LSDj on a cart. A future version will be able to store save data in a (compressed) LSDj-like file system, and also come as a standalone menu replacement without LSDj. But that’s for the future.
Looking elsewhere, you have the newly developed menu by MottZilla which I haven’t tried but I’m sure it’s decent. (Discuss on NESDev.)
Link cable support
The link feature is a hardware feature, and any attempt to use it with any emulator is likely to end in missed bytes and tears. In my experience so far, it works perfectly both between a DMG and a DMG, and a GBC and a DMG. A GBC can send data about twice as fast DMG. (Well, it can transmit much faster than that, actually, but the *2 mode is what I’ve found to be safe for these transfers.)
LittleFM will show a progress bar as the transfer progresses. If all is well, both sides will move their progress bar in synch, and will both show OK on their respective side. If a transfer is stalled, it is safe to turn off the Gameboy, as long as no data is currently being actively transmitted or received.
You can use the Nanoloop MIDI adapter with, sort of. Sending data from the PC usually works ok-ish. However, make sure that the receving Gameboy shows ok at the end of the transfer, and that songs load correctly when the transfer is finished. Receiving data from the Gameboy to the PC can work but is extremely touchy. You may lose bytes in transit, with or without an error message. Be extremely wary of corruption, and make sure the received file is 131072 bytes big. Not a single byte less or more! Remember, unlike LSDj’s own file manager, LFM will give you an error on almost every kind of corruption, so use it to detect errors early.
Download/version history
Latest version
LittleFM 0.5.2 - Fixes a bug where some files would incorrectly fail to load with the message “no blockjump”.
Older versions
LittleFM 0.5.1 - Provisional support for EMS multi ROM support.
LittleFM 0.5 - First version with ShitStrapOn for patching the ROM. Drag’n'derp support. Sav trading over link cable. SRAM integrity checks to detect first time use and non-working RAM.
LittleFM 0.4 - The first public version. Buggy. Came as an IPS patch that only worked with LSDj 4.0.5.
Tip jar
If you found LittleFM to be useful, please consider making a small donation to encourage future updates.
November 21st, 2016 at 5:46 am
[...] Click here to come to LittleFM’s main page! [...]
November 21st, 2016 at 5:46 am
[...] Download LittleFM. [...]
November 21st, 2016 at 5:51 am
[...] Info and first public version here. [...]
November 21st, 2016 at 5:52 am
[...] Download [...]
November 21st, 2016 at 5:53 am
[...] Download [...]
November 21st, 2016 at 5:54 am
[...] Get it here. [...]