gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS homebrew announcements > FeOS, the DS operating system

#176947 - fincs - Wed Nov 02, 2011 11:04 pm

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.

Here are some screenshots:

[Images not permitted - Click here to view it]
[Images not permitted - Click here to view it]

Enjoy, and have fun hacking!


Last edited by fincs on Sat Feb 11, 2012 11:02 pm; edited 2 times in total

#177053 - hacker013 - Fri Dec 02, 2011 6:56 pm

For me is it a long time ago here, but i'm very happy to see this, i will look in it soon, the start of a real nds os has maybe begun :3
_________________
Website / Blog

Let the nds be with you.

#177070 - hacker013 - Mon Dec 05, 2011 5:24 pm

The makefile doesn't work because it can't find gcc (I don't get the bug =S the devkitPRO examples work :$)
_________________
Website / Blog

Let the nds be with you.

#177072 - fincs - Mon Dec 05, 2011 10:50 pm

It's in the README:
Code:
You need the following in order to build FeOS:
(...)
A working C compiler for the host (Windows users: use MinGW)

It's needed in order to build fxe2tool.

#177077 - hacker013 - Tue Dec 06, 2011 8:01 am

I have >< I use MinGW for my ENIGMA programs and it works perfectly.

Also your cmdprompt gives that error when I try to compile it =S so what could it be then ?
_________________
Website / Blog

Let the nds be with you.

#177078 - fincs - Tue Dec 06, 2011 11:11 am

It might be that you have not added the MinGW binary folder (C:\MinGW\bin usually) to your PATH env var.
Oh, and it may not be instantly clear in the README file, but you have to set the FEOSSDK env var to your FeOS/sdk folder (in Unix-style):
README.md wrote:
Before building, you must set the FEOSSDK environment variable to point to the /sdk directory (if on Windows, you must use Unix-style paths, like /c/Users/.../gitrepos/FeOS/sdk


One last thing: compile with "make install". That will create a 'FeOS' folder whose contents are ready to be copied to the root of your flashcard, for testing.

#177080 - hacker013 - Tue Dec 06, 2011 6:13 pm

I did what you said and it is still giving the same errors =S

I've add my MinGW/bin path to my path env var and reinstalled without msys so that it wouldn't conflict with devkitpro msys.

EDIT:

I've got it to compile :3 Will do some tests tomorrow and will try to port over some applications like tuna-vids, so it will get some software :3 If this will get up and running, it will defeat moonshell & dslinux :3
_________________
Website / Blog

Let the nds be with you.

#177088 - fincs - Thu Dec 08, 2011 5:00 pm

Glad you got it to compile.

You might want to join #FeOS @ irc.blitzed.org, there we discuss everything FeOS and provide FeOS dev'ving support.

#177089 - Dwedit - Thu Dec 08, 2011 7:26 pm

I'm just wondering how you plan on having programs share resources, and what states a program can be running in. We'd love to see at least two programs running at the same time, maybe one for each screen. Or for background programs (minimized music players), no screens.

A program might want to request a video engine. It might not need everything Engine A provides, but you might be running another program that's already using Engine B. So you might have a function that requests Engine A or Engine B. If you request Engine B, you could get Engine A back, if B is already in use. The program would need to be written to support either engine, depending on what it gets back.

Then there's a situation where you would want to minimize a program, and deny that program the ability to write to the screen. To do that, a program would need to call a function "Am I minimized or not?", and intentionally not do any video writes during the time it's minimized.

Then there's VRAM sharing. The VRAM situation on the NDS is already tricky enough as it is, but if you will be running two programs at the same time (one on each screen), you would need a way to request VRAM. Then the program can work with whatever it receives after requesting it.

Then if the program is minimized, it should stop trying to write to VRAM. Then when it is restored, it will need to assume that VRAM must be reconstructed. It might even be given a different VRAM page to work with.

Then you have other resources to share, like Wifi, Sound, Filesystem Access, etc. That might be tricky to do.
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."

#177090 - fincs - Thu Dec 08, 2011 9:03 pm

Dwedit wrote:
I'm just wondering how you plan on having programs share resources, and what states a program can be running in. We'd love to see at least two programs running at the same time, maybe one for each screen. Or for background programs (minimized music players), no screens.

FeOS supports two modes: console mode (using libnds' keyboard and console facilities) and direct mode (which allows direct HW access). It is up to you what you do in direct mode.
In order to allow multiple direct mode apps, frameworks which manage all video-related stuff will have to be written. For example, I plan on having a system for having apps init the video HW to their liking. Somebody could also write a windowing system, and so on.

Dwedit wrote:
Then you have other resources to share, like Wifi, Sound, Filesystem Access, etc. That might be tricky to do.

Wifi is already implemented (using a port of dswifi to FeOS named feoswifi). Filesystem access is done through fopen() and friends (I just expose the newlib functions).

As for sound, you'll have to make your own ARM7 sound driver (that you'll load with FeOS_LoadARM7()). I do plan though on having a common basic audio interface (things like PlaySound(), PlayPSG(), etc; similar to libnds' "simple sound engine") that you'll be able to implement and have other apps use.

#177091 - ant512 - Thu Dec 08, 2011 9:28 pm

fincs wrote:
Somebody could also write a windowing system, and so on.


*cough*Woopsi*cough*

#177092 - fincs - Thu Dec 08, 2011 10:15 pm

ant512 wrote:
*cough*Woopsi*cough*

That's exactly what I was thinking about :D
Feel free to port it to FeOS. As stated earlier, there's a FeOS IRC channel you can join in order to get help/advice.

#177241 - fincs - Fri Feb 10, 2012 9:00 pm

Updates:
  • dswifi and libnds' videoGL API have been ported to FeOS.
  • A new cooperative multitasking library called MultiFeOS has been added.
  • FeOS now has a website and forums.

#177405 - hacker013 - Wed May 30, 2012 8:37 pm

I got it working, so I go to your forum, I get this message:

Quote:
You have been permanently banned from this board.

Please contact the Board Administrator for more information.

Reason given for ban: SPAM

A ban has been issued on your IP address.


Never have been before on your forum :S
_________________
Website / Blog

Let the nds be with you.

#177406 - fincs - Wed May 30, 2012 9:39 pm

@hacker013: there's sometimes SPAM accounts on the forums, and it seems that I banned your IP somehow. Which is it? (PM me if necessary)

#177410 - hacker013 - Thu May 31, 2012 12:12 pm

May I ask why I need a normal C compiler for this, because wouldn't it be logic if that also just use the devkitPro compiler :S ?

Btw, check your inbox ^^.
_________________
Website / Blog

Let the nds be with you.

#177431 - fincs - Sat Jun 02, 2012 10:37 am

A C compiler for the host is needed in order to build some development tools, namely fxe2tool and fartool.

#177432 - hacker013 - Sun Jun 03, 2012 4:42 pm

Can't you add them already compiled ?
_________________
Website / Blog

Let the nds be with you.

#177434 - fincs - Sun Jun 03, 2012 4:54 pm

No, I won't provide binary blobs, since not everybody uses Windows (and it's bad practice to include them in Git repositories). In a unspecified future, I will provide precompiled packages of the FeOS SDK, but everything is still considerably experimental and it lacks both a GUI and some sort of end-user package support, so that's not happening for now.