[NDS] Bilou School Rush

Discussion of development of software for any "obsolete" computer or video game system. See the WSdev wiki and ObscureDev wiki for more information on certain platforms.
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

[NDS] Bilou School Rush

Post by PypeBros »

This is the game I've been working on the last 5 years, using my DS game tools.
Image

It's a speed-oriented platformer featuring 4 main levels and one, long, secret level to close them all.

Have fun if you play it (DS linker or desmume 0.9.11+ recommended)
The engine is open source (LGPL), by the way.
Image - may the source be with you.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: [NDS] Bilou School Rush

Post by tepples »

Do you foresee any significant issues that would block a port to Game Boy Advance?
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

Re: [NDS] Bilou School Rush

Post by PypeBros »

tepples wrote:Do you foresee any significant issues that would block a port to Game Boy Advance?
Well, I really haven't designed the pixel art to use 16-color palettes. It might still fit on a GBA, but when I checked for a SNES or a Genesis port, it was disappointing. I don't know how well the soundtrack would survive, either: my brother used quite much of the 16 tracks the NDS offers.

And the final thing is that I used C++ for the code base. I haven't heard much about succesful C++ coding on the GBA.
Image - may the source be with you.
Rahsennor
Posts: 479
Joined: Thu Aug 20, 2015 3:09 am

Re: [NDS] Bilou School Rush

Post by Rahsennor »

Don't have anything to play it on ATM, but it looks pretty slick.
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: [NDS] Bilou School Rush

Post by Banshaku »

Look nice!
93143
Posts: 1717
Joined: Fri Jul 04, 2014 9:31 pm

Re: [NDS] Bilou School Rush

Post by 93143 »

PypeBros wrote:when I checked for a SNES or a Genesis port, it was disappointing.
What were the main bottlenecks? I haven't played the game, but I don't see anything that looks too challenging in that GIF.

But yeah, C++ probably isn't going to go well on the SNES (I'm not even sure the tools exist for anything beyond plain C, and they aren't good even for that). You'd have to convert performance-sensitive code to assembly. Which isn't incredibly hard on such a simple processor, but it might be more effort than you're willing to put in considering the game already works on a newer system three times as many people bought...
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: [NDS] Bilou School Rush

Post by tepples »

PypeBros wrote:Well, I really haven't designed the pixel art to use 16-color palettes.
Then it might take someone with pixel art skills to color-reduce it to 4bpp so that the playfield background tiles can fit into 32K (1,024 4bpp tiles), the parallax background tiles into 16K (512 4bpp tiles), and the sprites into 32K (1,024 4bpp tiles). It shouldn't be that hard, as I discovered in 2002 that there's more than enough DMA bandwidth to stream sprite cels from ROM or from a decompression buffer in EWRAM to VRAM.
PypeBros wrote:I don't know how well the soundtrack would survive, either: my brother used quite much of the 16 tracks the NDS offers.
GBA has software mixing: more channels just mean more CPU time. Or there are tech demos that decompress streamed audio in real time as if it were a PlayStation game.
PypeBros wrote:And the final thing is that I used C++ for the code base. I haven't heard much about succesful C++ coding on the GBA.
It really depends on which parts of the C++ language a particular code base uses. One often associates the GBA with the C language, but C in practice is also a subset of C++.* There are parts of C++ you can use without runtime cost, and there are parts you need to avoid if you're on anything smaller than a PC or smartphone <cough>iostream</cough>.

The big reason I asked about GBA is that there are countries where, due to technicalities of copyright law, GBA homebrew is legal but DS homebrew is not.


* Or more rigorously: The common subset of C and C++ purposely resembles C so closely that it's practical to write polyglot programs that mean the same thing in C and C++ by using C idioms as is.
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

Re: [NDS] Bilou School Rush

Post by PypeBros »

The big reason I asked about GBA is that there are countries where, due to technicalities of copyright law, GBA homebrew is legal but DS homebrew is not.
Ah ? I didn't knew about that. Then yes, it would make perfect sense. So far the game is essentially using little 3D, almost none of the advanced background effects (unlike the tools) and only A+B+L+R for the input (Y and X mirroring A and B), so a port could be envisioned.
tepples wrote:
PypeBros wrote:Well, I really haven't designed the pixel art to use 16-color palettes.
Then it might take someone with pixel art skills to color-reduce it to 4bpp so that the playfield background tiles can fit into 32K (1,024 4bpp tiles), the parallax background tiles into 16K (512 4bpp tiles), and the sprites into 32K (1,024 4bpp tiles). It shouldn't be that hard, as I discovered in 2002 that there's more than enough DMA bandwidth to stream sprite cels from ROM or from a decompression buffer in EWRAM to VRAM.
It should be manageable with 16x16 palettes for sprites and 16x16 palettes for backgrounds, indeed. The tiles count could work too, although only 512 tiles could mean some "advanced" backgrounds (in the secret level) would have to be dropped (that's ok). After checks, the thing that blocked me was that Mega-drive (which had my focus in the previous "demake" study) has only 4 palettes for both sprites and backgrounds and that was ... wel... not so appealing.
GBA has software mixing: more channels just mean more CPU time. Or there are tech demos that decompress streamed audio in real time as if it were a PlayStation game.
so that will all depend on how much CPU time I can save on the game logic. So far it is partly interpreted, partly running compiled code. On the GBA, there would be no stylus and no wifi to edit the game logic live, so it is perfectly ok to convert the interpreted part into compiled part as well.
It really depends on which parts of the C++ language a particular code base uses. One often associates the GBA with the C language, but C in practice is also a subset of C++. There are parts of C++ you can use without runtime cost, and there are parts you need to avoid.
A large part of the engine likely only use the 'no runtime cost' subset of C++. That is the code that runs once the level is loaded. The level and state machine scripts parsing, on the other hand, relies on vectors, lists and even key-to-value maps that C++ offers. But I've detailed the plans for that part above already.

I don't think I've been using iostream in this project. Mostly good old iprintf /siscanf.

So if it was the game-of-my-life, I'd definitely consider a GBA port right now. But it is just a subset of that game. Right now, porting School Rush to GBA is competing against doing a game in the Castle Zone and one in the Desert Zone, and then one in the Lost Temple Zone on the NDS... I cannot tell yet what will win.

Of course, if some seasoned GBA developer is willing to port the engine, I'd be more than happy to teamwork so that the game itself gets ported as well ;)
Last edited by PypeBros on Mon Dec 03, 2018 10:02 am, edited 1 time in total.
Image - may the source be with you.
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

Re: [NDS] Bilou School Rush

Post by PypeBros »

Rahsennor wrote:Don't have anything to play it on ATM, but it looks pretty slick.
May I suggest desmume emulator?
Image - may the source be with you.
Shonumi
Posts: 342
Joined: Sun Jan 26, 2014 9:31 am

Re: [NDS] Bilou School Rush

Post by Shonumi »

Looks pretty good! It's nice to see polished homebrew for the NDS. Feels like the heyday for that was mid 2000s/early2010s, so it's great to see people still making things for the handheld.

Mostly just wanted to say thanks for your efforts. I'm in the process of improving the NDS core of my emulator, and any sort of ROM I can use for testing is appreciated, especially interesting games. Despite the somewhat "meh" state of NDS emulation in GBE+, School Rush manages to run without crashing. Very impressive work you've done here, keep it up.
Last edited by Shonumi on Mon Dec 03, 2018 6:04 pm, edited 1 time in total.
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: [NDS] Bilou School Rush

Post by Banshaku »

The interest may have waned but like retro console, it should have a surge someday when people rediscover them ;) Now if I could find a way to test some code without a flashcart (it mostly died by now), I could try it again someday but I didn't touch since 2008 so I have no idea what changed in the nds scene since.

I remember using the ff4 tileset and make a quick map, just for fun and some snow falling (always liked to do that under dos) but this is as far as I went :lol:
User avatar
PypeBros
Posts: 34
Joined: Sat Nov 10, 2018 7:35 am

Re: [NDS] Bilou School Rush

Post by PypeBros »

Banshaku wrote: I could try it again someday but I didn't touch since 2008 so I have no idea what changed in the nds scene since.

I remember using the ff4 tileset and make a quick map, just for fun and some snow falling (always liked to do that under dos) but this is as far as I went :lol:
we can hardly call it "a scene" anymore, although there have been some other people doing NDS homebrew games too over the year.

What I find nice about it is that (like any other console), it will never completely die: the hardware was fixed and so you can have emulators for it. Running MS-DOS games nowadays is still much more complicated than running NDS games, esp. if the developer had funny hardware, or was using CD-ROM, or hadn't foreseen MHz speed increase, etc. I don't even want to think about emulating early Win95 games like Lion King (although I might discover it isn't as hard as I think).
I'm in the process of improving the NDS core of my emulator, and any sort of ROM I can use for testing is appreciated, especially interesting games. Despite the somewhat "meh" state of NDS emulation in GBE+, School Rush manages to run without crashing. Very impressive work you've done here, keep it up.
Nice ^_^. One thing I had in mind to ease the porting towards other platforms was to merge the C++ logic of the code with an NDS emulator. We'd still have emulated sound & graphics, but the CPU wouldn't need emulation because there would be native code instead. Is that something GBE+ would make possible / easier than hacking desmume source code ?
Image - may the source be with you.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: [NDS] Bilou School Rush

Post by calima »

Banshaku wrote:Now if I could find a way to test some code without a flashcart (it mostly died by now), I could try it again someday but I didn't touch since 2008 so I have no idea what changed in the nds scene since.
I think the wifi demo functionality can be used, but only for small apps since they load to RAM.
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: [NDS] Bilou School Rush

Post by Banshaku »

@calima

Ha yes, I think I even asked a question about it ^^;;; For now what I do would be just pure testing so I guess that could be more than enough. I should get another flash cart someday but I would prefer one for either famicom/gameboy first since this is the one that I'm the most active at the moment (gameboy, maybe soon, I'm curious).
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: [NDS] Bilou School Rush

Post by calima »

You're just a bit too late, krikzz's black friday sale was 1.5 weeks ago.
Post Reply