Strange program freeze [RESOLVED] July 12, 2012 05:27PM | Registered: 13 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: 13 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: 13 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: 14 years ago Posts: 98 |
Re: Strange program freeze [RESOLVED] July 13, 2012 05:05AM | Registered: 13 years ago Posts: 363 |
Re: Strange program freeze [RESOLVED] July 14, 2012 05:05PM | Registered: 14 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: 13 years ago Posts: 363 |