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 > Space Impakto DS

#173894 - relminator - Fri May 07, 2010 2:03 am

Well, it has been almost a month since I started DS coding(Most of the time coding half-blind because I don't know the hardware that much.)

This is an old-skool SHMUP type of game.

So far this is only a basic engine.

* sprites are in 2d (system can handle Vram and Ram based tiles in realtime)
* 3d Background (the mode7-like floor and ceiling is using the 3d hardware)
* Procedural 3d models (based on the supershape formula by Paul bourke)
* Enemy entities uses fixed-point catmull-rom splines.

Todo:
* Use orthographic projection(if available) to render the enemy entities and use the 2d core exclusively for bullets.
* Learn more about the DS hadware.

Download(with source):

http://rel.betterwebber.com/junk.php?id=101


screens:

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



BTW, anyone know of how to enable fog and blending?

Thanks!

link to the supershape formula:

http://local.wasp.uwa.edu.au/~pbourke/geometry/supershape/
_________________
http://rel.betterwebber.com

#173895 - ritz - Fri May 07, 2010 2:39 am

Good job, looks great! Very promising.

#173898 - Cid2Mizard - Fri May 07, 2010 7:10 am

Good Tech demo, thanks :).
_________________
www.nintendomax.com 100% Hack 0% Warez

#173910 - nogginthenog - Fri May 07, 2010 9:26 pm

Nice! Very R-Type like.

p.s. source doesn't seem to have a Makefile

#173918 - relminator - Sat May 08, 2010 3:45 am

nogginthenog wrote:
Nice! Very R-Type like.

p.s. source doesn't seem to have a Makefile


Sorry, I was having connection probs when I uploaded it so it didn't have a makefile and data.

I've uploaded a new one complete with data and makefile so that you could compile the source.

New download(binaries, source, makefile and data):

http://rel.betterwebber.com/junk.php?id=101


Ritz: Coming from you, that means a lot. BTW, thanks for the gbaTek link. It helped me a lot last night coding my 3d to 2d sprite engine. And how do you enable 3d "fog"?

Update:
* I've been able to get the 3d core to so some 2d rendering. Which means almost unlimited sprites for me (bye bye 128 sprite limit.)

Simple demo and source here:

http://rel.betterwebber.com/junk.php?id=103

Screen:
[Images not permitted - Click here to view it]
_________________
http://rel.betterwebber.com

#173990 - relminator - Tue May 11, 2010 3:48 am

Did the bullet-hell test last night and guess what? 512 particles and still no slowdowns! Woot!!

Screenfull of particles (512 max and uses the 3d core to render 2d sprites):

[Images not permitted - Click here to view it]


Download with source:

http://rel.betterwebber.com/junk.php?id=104

BTW, what's a good(free and small) image editor that I could use to make textures with alpha?
_________________
http://rel.betterwebber.com

#174129 - dheart88 - Wed May 19, 2010 2:31 pm

very good demonstration.. thx 4 the source..

I thought it was 2D sprite, that's why I wondered how to render 512 sprites... It's a good idea to use 3D engine to break 2D sprite limit..

Try gimp??

#174256 - relminator - Wed May 26, 2010 3:43 am

Thanks dude! I'll try gimp.

Update:

* Migrated the rendering engine to use the 3d core.
* Optimized the rendering a bit using GFX_VERTEX_XY instead of GFX_VERTEX_16. (depth is managed manually)
* Sprite rotation and clean stretch implemented
* Coded and BASIC(Freebasic) UV coord auto generator for my sprite images for ease of loading.

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

Download:
http://rel.betterwebber.com/junk.php?id=101

As usual, source is included.
_________________
http://rel.betterwebber.com

#174311 - Jinroh - Fri May 28, 2010 5:43 pm

Looks great man.

And additionally I've been recommending your 3D tutorials to n00bs for years who ask me "How do I do a software 3D engine." so you really help me from having to explain a ton of stuff. ^_^

The game is really rad, I wish I could play it on my DS but it just broke a few days ago from a blue ball of electricty. ^_^;
_________________
The lone Wolf howls, driven by pride he presses on. Knowing not where he goes, but only where he wants to be.
~Me~

#174316 - headspin - Sat May 29, 2010 3:58 am

Great stuff! I really regret not using the 3D engine for Warhawk DS as we could have done so much more graphically that way.
_________________
Warhawk DS | Manic Miner: The Lost Levels | The Detective Game

#174329 - relminator - Sun May 30, 2010 3:46 am

Jinroh: Sad to hear your DS got the zap. I would buy a new one (DS are cheap where they get manufactured right?). Thanks for pointing out my 3d tuts to other people. It really makes my day when I get random emails of thanks because of those.

Headspin: Warhawk DS is made purely in ASM? Wow!!! Playing it right now. Got to stage 3 already.

Tool update:

Texture atlas generator(makes memory usage lower):
Based on this: http://www.blackpawn.com/texts/lightmaps/default.html

DL
http://rel.betterwebber.com/junk.php?id=106

Screen:
[Images not permitted - Click here to view it]
_________________
http://rel.betterwebber.com

#174340 - headspin - Mon May 31, 2010 2:54 pm

relminator wrote:
Headspin: Warhawk DS is made purely in ASM? Wow!!! Playing it right now. Got to stage 3 already.


Yes we were crazy enough to write it in pure ARM ASM!

PS I didn't realise until now it was you who was looking into the texture packing alg. Glad you got it sorted!
_________________
Warhawk DS | Manic Miner: The Lost Levels | The Detective Game

#174341 - Jinroh - Mon May 31, 2010 3:55 pm

relminator wrote:
Jinroh: Sad to hear your DS got the zap. I would buy a new one (DS are cheap where they get manufactured right?). Thanks for pointing out my 3d tuts to other people. It really makes my day when I get random emails of thanks because of those.


Glad I can help to make your day sometimes. ^_^

Since I would want to update from my DSLite to a DSi I would still have to spend much money, around ~$200 USD is about the average price. T_T

Your tool is cool though. ^_^ Very efficient use of the map.
_________________
The lone Wolf howls, driven by pride he presses on. Knowing not where he goes, but only where he wants to be.
~Me~

#174373 - relminator - Sat Jun 05, 2010 11:48 am

Update:

version 0.3 up:

DL:

http://rel.betterwebber.com/junk.php?id=101

*New

1. Enemy handler
2. Explosions
3. Collision detection


Now comes the boring part:

Porting(and converting to .12 Fixed-point) the code here:

http://rel.betterwebber.com/junk.php?id=92

Argh!!!!
_________________
http://rel.betterwebber.com

#174390 - Jinroh - Mon Jun 07, 2010 7:30 am

Good luck man. ^_^ I'll try out the new binary a little later.
_________________
The lone Wolf howls, driven by pride he presses on. Knowing not where he goes, but only where he wants to be.
~Me~

#174409 - relminator - Tue Jun 08, 2010 2:02 pm

Jinroh wrote:
Good luck man. ^_^ I'll try out the new binary a little later.


Nice to see you have a new DSi! woot!!!
_________________
http://rel.betterwebber.com

#174717 - relminator - Sat Jul 10, 2010 5:01 am

Bullet Hell Engine Done!

I was a little busy with life for the past month since my dad "went under the knife".

But I coded like crazy for the past 3 days (ave. of 4 hours a day) and I recoded my bullet hell engine from scratch.

Bullet Rel Download (with source)...

http://rel.betterwebber.com/junk.php?id=107

screen:

[Images not permitted - Click here to view it]

features:

1. All Fixed-point engine
2. Data driven interface
3. Less memory usage
4. Easier to use than the PC version
5. Patterns are easy to make

BTW, you might want to lessen the "num_turrets" var to 1 just to see all the patterns so far. Those are the only ones I made this morning. LOL
_________________
http://rel.betterwebber.com

#174779 - relminator - Mon Jul 19, 2010 4:51 am

Ver 0.04beta up...

What's new?

Code:
v 0.4b  (07/18/10)
   Integrated bullet Rel
   Added sound effects and BG music (via MaxMod)
   Bucket based memory model
   Data driven engine
   Ditched the options
   More enemies


Download:
http://rel.betterwebber.com/junk.php?id=101


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


Bugs:
1. I needed to lower the BGM volume in order to hear SFX's. Anyone knows why?


I need help finding bugs. Thanks!!!


Todo:
1. Ship to enemy collision via SAT.
Linky: http://rel.betterwebber.com/junk.php?id=109

2. Tool to make patterns easier.

EDIT:

Sorry about the enemy placement/sequence. I just randomized them to see the actual angine with sound.
_________________
http://rel.betterwebber.com

#174834 - relminator - Fri Jul 23, 2010 7:38 am

Update Ver 0.05b:

What's new?

Code:

glFonts
oamFonts
Encapsulated maxmod for a better sound module
Return to homebrew menu
Decreased all the enemy's HP
Better BGM and SFX
Pause and return to menu


Download:
http://rel.betterwebber.com/junk.php?id=101


screens:
[Images not permitted - Click here to view it]
[Images not permitted - Click here to view it]
_________________
http://rel.betterwebber.com

#174912 - relminator - Mon Aug 02, 2010 10:00 am

Yay!!! Bullet Pattern making is easy and fun now!


If anyone's interested in making bullet patterns...

Tool update:

Bullet Rel Designer

Download:

http://rel.betterwebber.com/junk.php?id=113

App type: A visual bullet pattern designer I made for my DS game Space Impakto DS


Features:

* Very Fun since you could design patterns even while drinking coffee.
* Saves patterns in C/c++ code directly useable by my SHMUP engine.
Saves are *.cpp files where the nds file resides
* Can do almost any pattern I have seen (except for tohou "square"
patterns)
* Can listen to different moozic while making a pattern.
* Source included

Limitations:
* Cannot load patterns (yet)
* cumbersome controls (Limited DS buttons)


[Images not permitted - Click here to view it]



Enjoy!


PS. I hope someone submits patterns to me. ;*)

Try thse patterns"

Code:

void barrage_SMART_ROBOT_ARMS_5X(Cturret &turret, int active_time, int delay, s32 angle, const Cglsprite *sprites)
{

   Tturret_params tp; 

   tp.active_time         = 10600;
   tp.active              = 1;
   tp.smart               = 1;
   tp.x_radius            = 0;
   tp.y_radius            = 0;
   tp.angle               = 16384;
   tp.min_angle           = 0;
   tp.max_angle           = 32767;
   tp.angle_speed         = 0;
   tp.angle_dir           = 1;
   tp.spread_angle        = 3584;
   tp.bullets_per_shot    = 5;
   tp.rotation_type       = 2;
   tp.spawn_delay         = 0;
   tp.max_spawn_delay     = 49;
   tp.wavemode            = (E_WAVE_MODE) 2;
   tp.wave_counter        = 0;
   tp.max_wave            = 4;
   tp.max_wave_delay      = 4;
   tp.bp.speed            = 1784;
   tp.bp.speed_delta      = 5600;
   tp.bp.offset           = 4096;
   tp.bp.gx               = 0;
   tp.bp.gy               = 0;
   tp.bp.delay            = 9;
   tp.bp.energy           = 1;
   tp.bp.state            = (E_BULLET_TYPE) 2;
   tp.bp.smart            = 1;
   tp.bp.start_frame      = 73;
   tp.bp.num_frames       = 3;
   tp.bp.anim_delay       = 3;
   tp.bp.death_ID         = 0;

   tp.bp.width           = sprites[tp.bp.start_frame].width;
   tp.bp.height          = sprites[tp.bp.start_frame].height;

   turret.parameters.push_back(tp);

}



Code:

void barrage_5WAY_23WAVE_DIRECT(Cturret &turret, int active_time, int delay, s32 angle, const Cglsprite *sprites)
{

   Tturret_params tp; 

   tp.active_time         = 10600;
   tp.active              = 1;
   tp.smart               = 0;
   tp.x_radius            = 10;
   tp.y_radius            = 9;
   tp.angle               = 16384;
   tp.min_angle           = 0;
   tp.max_angle           = 32767;
   tp.angle_speed         = 0;
   tp.angle_dir           = 1;
   tp.spread_angle        = 2304;
   tp.bullets_per_shot    = 5;
   tp.rotation_type       = 2;
   tp.spawn_delay         = 0;
   tp.max_spawn_delay     = 24;
   tp.wavemode            = (E_WAVE_MODE) 3;
   tp.wave_counter        = 0;
   tp.max_wave            = 23;
   tp.max_wave_delay      = 4;
   tp.bp.speed            = 184;
   tp.bp.speed_delta      = 120;
   tp.bp.offset           = 4096;
   tp.bp.gx               = 0;
   tp.bp.gy               = 0;
   tp.bp.delay            = -1;
   tp.bp.energy           = 1;
   tp.bp.state            = (E_BULLET_TYPE) 2;
   tp.bp.smart            = 0;
   tp.bp.start_frame      = 99;
   tp.bp.num_frames       = 3;
   tp.bp.anim_delay       = 3;
   tp.bp.death_ID         = 0;

   tp.bp.width           = sprites[tp.bp.start_frame].width;
   tp.bp.height          = sprites[tp.bp.start_frame].height;

   turret.parameters.push_back(tp);

}



Code:

void barrage_WAS0AG_6WAY_3SHOT(Cturret &turret, int active_time, int delay, s32 angle, const Cglsprite *sprites)
{

   Tturret_params tp; 

   tp.active_time         = 10000;
   tp.active              = 1;
   tp.smart               = 0;
   tp.x_radius            = -14;
   tp.y_radius            = -13;
   tp.angle               = 0;
   tp.min_angle           = 0;
   tp.max_angle           = 32768;
   tp.angle_speed         = 2048;
   tp.angle_dir           = 1;
   tp.spread_angle        = 5632;
   tp.bullets_per_shot    = 18;
   tp.rotation_type       = 2;
   tp.spawn_delay         = 0;
   tp.max_spawn_delay     = 30;
   tp.wavemode            = (E_WAVE_MODE) 3;
   tp.wave_counter        = 0;
   tp.max_wave            = 0;
   tp.max_wave_delay      = 3;
   tp.bp.speed            = 384;
   tp.bp.speed_delta      = 0;
   tp.bp.offset           = 4096;
   tp.bp.gx               = 0;
   tp.bp.gy               = 0;
   tp.bp.delay            = -1;
   tp.bp.energy           = 1;
   tp.bp.state            = (E_BULLET_TYPE) 2;
   tp.bp.smart            = 0;
   tp.bp.start_frame      = 96;
   tp.bp.num_frames       = 3;
   tp.bp.anim_delay       = 3;
   tp.bp.death_ID         = 0;

   tp.bp.width           = sprites[tp.bp.start_frame].width;
   tp.bp.height          = sprites[tp.bp.start_frame].height;

   turret.parameters.push_back(tp);

}


_________________
http://rel.betterwebber.com