|
Strange program freeze [RESOLVED] July 12, 2012 05:27PM | Registered: 15 years ago Posts: 363 |
for(i=0; i<enemy_list_max; i++) {
enemy_add( get_random_world_vector(), randint(2)+1 );
}
int world_size=18000, hits=0;
int randint(int rmax) { //generate a random number
return (rand() % rmax + 1);
}
guVector get_random_world_vector(){
guVector new_pos={ randint(world_size)-(world_size*0.5f), 0, randint(world_size)-(world_size*0.5f) };
return new_pos;
}|
Re: Strange program freeze July 12, 2012 10:04PM | Registered: 15 years ago Posts: 363 |
void enemy_add(guVector pos, int type ){
int free_slot=enemy_list_max;
int i;
for(i=0; i<enemy_list_max; i++) {
if(!enemy_list.active) {
free_slot=i;
break;
}
}
if(free_slot==enemy_list_max) return; //stage full
enemy_list[free_slot].pos=pos;
guVector new_rot={ 0, randint(360),0 };
enemy_list[free_slot].rotation=new_rot;
enemy_rand(free_slot);
enemy_list[free_slot].active=true;
enemy_list[free_slot].colliding=false;
enemy_list[free_slot].colliding=false;
enemy_list[free_slot].type=type;
enemy_list[free_slot].health=100;
switch(enemy_list[free_slot].type){
case EN_SAUCER: enemy_list[free_slot].size=500; enemy_list[free_slot].speed=20; enemy_list[free_slot].health=100; break;
case EN_SCOUT: enemy_list[free_slot].size=100; enemy_list[free_slot].speed=default_forward-5; enemy_list[free_slot].health=5; break;
default: enemy_list[free_slot].size=500; break;
}
//enemy_animate( i );
}
|
Re: Strange program freeze July 13, 2012 02:25AM | Registered: 15 years ago Posts: 363 |
#define LISTSTRUCT_MAX 120
typedef struct {
int list[LISTSTRUCT_MAX];
int list_current;
int list_max;
} ListStruct;
//-----------------------------------------------------------
#define COLL_BOUNDS 80
//-----------------------------------------------------------
typedef struct {
int x_list[COLL_BOUNDS]; //stores coord keys
int y_list[COLL_BOUNDS];
int z_list[COLL_BOUNDS];
int item_list[COLL_BOUNDS][COLL_BOUNDS][COLL_BOUNDS]; //stores 3d keys
int item_current; //3d key counter
int coordinate_current; //coord key counter
} CollisionRegionStruct;
//-----------------------------------------------------------
#define COLL_GROUP_MAX 200
#define COLL_KEY_REGION_MAX 1000
#define COLL_LIST_MAX 10
typedef struct {
int item_current;
ListStruct group_list[COLL_GROUP_MAX];
int key_region[COLL_KEY_REGION_MAX];
int key_counter;
} CollisionStruct;
//-----------------------------------------------------------
CollisionRegionStruct collision_region;
CollisionStruct collision_list[COLL_LIST_MAX];
//-----------------------------------------------------------|
Re: Strange program freeze [RESOLVED] July 13, 2012 04:26AM | Registered: 16 years ago Posts: 98 |
|
Re: Strange program freeze [RESOLVED] July 13, 2012 05:05AM | Registered: 15 years ago Posts: 363 |
|
Re: Strange program freeze [RESOLVED] July 14, 2012 05:05PM | Registered: 16 years ago Posts: 14 |
#include <ogc/lwp.h>
#include <ogc/lwp_heap.h>
#include <ogc/lwp_threadq.h>
static void *memStart = NULL;
static void *memEnd = NULL;
static heap_cntrl memHeap;
void initMem()
{
u32 level, size;
_CPU_ISR_Disable(level);
memStart = SYS_GetArena2Lo();
memEnd = SYS_GetArena2Hi();
size = memEnd - memStart;
SYS_SetArena2Lo(memStart+size);
_CPU_ISR_Restore(level);
memset(memStart, 0, size);
size = __lwp_heap_init(&memHeap, memStart, size, PPC_CACHE_ALIGNMENT);
};
void * allocMem(size_t size)
{
void *newmem;
heap_iblock info;
newmem = __lwp_heap_allocate(&memHeap, size);//memalign(32, size);
__lwp_heap_getinfo(&memHeap, &info);
printf("tot %d free %d\n", info.free_size + info.used_size, info.free_size);
return newmem;
}
void releaseMem(void * ptr, size_t size)
{
if (!__lwp_heap_free(&memHeap, ptr)) {
printf("Error freeing data.");
}
}|
Re: Strange program freeze [RESOLVED] July 15, 2012 03:53AM | Registered: 15 years ago Posts: 363 |