Page 1 of 1

FeOS, the DS operating system

Posted: Sat Apr 21, 2012 9:36 pm
by fincs
Hello fellow DS dev'rs:

I'm doing a free, open-source operating system for the Nintendo DS. This has been brewing for a few months, and is starting to get ready. Currently FeOS supports loading relocatable code (which includes support for shared libraries), basic console I/O (thanks to libnds' functions), ARM7 code loading support (!!!), a native libnds-based DS video API and cooperative multitasking (!!!). dswifi and libnds' videoGL API have also been ported to FeOS under the names FeOSWifi and FeOS3D, respectively.

As usual, it's available through GitHub. Pre-built packages (including the FeOS SDK) will be available soon.

Website - Forums

I've also currently ported Lua to FeOS (pictured below), and since there is shared library support, Lua extensions (plugins) are also supported.
NitroTracker has also been ported to FeOS, and it is fully functional (sans DSMidiWifi stuff).

Image Image

Enjoy, and have fun hacking!

Re: FeOS, the DS operating system

Posted: Thu May 10, 2012 3:41 pm
by mtheall
My favorite part is the dynamic linking.

Re: FeOS, the DS operating system

Posted: Sat May 19, 2012 8:02 pm
by lemmymet
Cool!
Mind if i use some code(with giving you credits) to make a plugin system for my file manager?
If i understand it good this can load nds binarys without stopping the launching application?

Re: FeOS, the DS operating system

Posted: Sun May 20, 2012 3:28 pm
by WinterMute
Please don't use FeOS code to make a plugin system for your file manager, rewrite your file manager as a FeOS application.

Standard NDS binaries cannot be launched without stopping the launching application.

Re: FeOS, the DS operating system

Posted: Sun May 20, 2012 3:52 pm
by mtheall
FeOS does not launch nds binaries. It loads modules.

Re: FeOS, the DS operating system

Posted: Wed May 23, 2012 8:30 pm
by fincs
@lemmymet: thank you for your interest in FeOS. It seems that you have misunderstood what FeOS does. FeOS is an operating system that provides a way to load "modules" (applications and shared libraries) thanks to the relocatable FXE2 (.fx2) format; and interact between them. When an application is loaded, the others are kept in memory and can in fact continue running in the background if that's what they are designed for. As WinterMute said, you're better off porting your file manager to FeOS in order to get the benefits of being able to have a plugin system. For example, the code would look like this:

Code: Select all

typedef void (*GetInfoType)(params go here...);
//...
instance_t hPlugin = FeOS_LoadModule("nameOfPlugin");
GetInfoType func = (GetInfoType)FeOS_FindSymbol(hPlugin, "MyInterface_GetInfo");
if (func)
{
    func(params...);
    // etc
}
If you have any further questions and/or need advice on how to use FeOS and port applications to it, don't hesitate to join #FeOS at irc.blitzed.org.