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=113App 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)

Enjoy!
PS. I hope someone submits patterns to me. ;*)
Try thse patterns"
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);
}
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);
}
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);
}