int main (int argc, char *argv[]){ char buf[256]; #ifdef GRAPHICS gs_init(WIDTH, HEIGHT); #endif sw_init(); sw_start(); RoadMap(); sw_stop(); sw_timeString(buf); printf("Time taken: %s\n",buf); #ifdef GRAPHICS gs_exit(); #else printf("CRC is %x\n",crc); #endif return 0; }
int main(int argc, char* argv[]) { char* input = NULL; char* output = NULL; if(argc == 6) { input = argv[1]; output = argv[2]; SPU_THREADS = atoi(argv[3]); PPEid = atoi(argv[4]); file = argv[5]; } else if (argc == 4) { PPEid = 0; file = NULL; input = argv[1]; output = argv[2]; SPU_THREADS = atoi(argv[3]); } else if (argc == 5) { PPEid = 0; file = NULL; input = argv[1]; output = argv[2]; SPU_THREADS = atoi(argv[3]); } else { printf("Wrong number of arguments %i\n", argc); return -1; } pthread_t* threads; struct IMAGE_FORMAT result; unsigned char* energy; unsigned char* cmap; unsigned char* scale; int scale_size = 9; char timer_buffer[256]; int y, x; size_t i; WIDTH = 576; HEIGTH = 708; threads = dsmcbe_simpleInitialize(PPEid, file, SPU_THREADS); unsigned int* speIDs = dsmcbe_create(SPEID + PPEid, 4); *speIDs = PPEid * SPU_THREADS; dsmcbe_release(speIDs); if (PPEid == 0) { //printf("Starting loading images!\n"); loadImageNormal(); //loadImageSmall(); //printf("Finished loading images!\n"); //for(i = 0; i < ROUNDS; i++) //{ //struct POINTS* points = create(RESULT + i, sizeof(struct POINTS) * SHOTS_SPU); //memset(points, 0, sizeof(struct POINTS) * SHOTS_SPU); //release(points); //} energy = dsmcbe_create(ENERGY+PPEid, (sizeof(unsigned char) * (HEIGTH * WIDTH))); memset(energy, 0, sizeof(unsigned char) * (HEIGTH * WIDTH)); cmap = (unsigned char*)malloc(sizeof(unsigned char)*(9*3)); cmap[0] = 0; cmap[1] = 0; cmap[2] = 85; cmap[3] = 0; cmap[4] = 0; cmap[5] = 170; cmap[6] = 0; cmap[7] = 0; cmap[8] = 255; cmap[9] = 0; cmap[10] = 85; cmap[11] = 0; cmap[12] = 0; cmap[13] = 170; cmap[14] = 0; cmap[15] = 0; cmap[16] = 255; cmap[17] = 0; cmap[18] = 85; cmap[19] = 0; cmap[20] = 0; cmap[21] = 170; cmap[22] = 0; cmap[23] = 0; cmap[24] = 255; cmap[25] = 0; cmap[26] = 0; scale = (unsigned char*)malloc(sizeof(unsigned char)*9); scale[0] = 10; scale[1] = 20; scale[2] = 30; scale[3] = 40; scale[4] = 50; scale[5] = 60; scale[6] = 70; scale[7] = 80; scale[8] = 90; srand(1); //Start timer! sw_init(); sw_start(); printf("Timer started\n"); printf("Start firering canon #1\n"); canon(0, SHOTS, SHOTS_SPU, 85, 75, 1.0, 0.8, energy); printf("Stopped firering canon #1\n"); printf("Start firering canon #2\n"); canon(1, SHOTS, SHOTS_SPU, 10, 230, 1.0, 0.0, energy); printf("Stopped firering canon #2\n"); printf("Start firering canon #3\n"); canon(2, SHOTS, SHOTS_SPU, 550, 230, -1.0, 0.0, energy); printf("Stopped firering canon #3\n"); printf("Start firering canon #4\n"); canon(3, SHOTS, SHOTS_SPU, 475, 90, -1.0, 0.75, energy); printf("Stopped firering canon #4\n"); printf("Start firering canon #5\n"); canon(4, SHOTS, SHOTS_SPU, 280, 0, 0.0, 1.0, energy); printf("Stopped firering canon #5\n"); // Stop timer! sw_stop(); sw_timeString(timer_buffer); printf("Time used: %s\n", timer_buffer); readimage_rgb(input, malloc, &result); unsigned long size; //printf("Starting harvest\n"); for(i=1; i<MAX(dsmcbe_MachineCount(), 1); i++) { //printf("START - FINISHJOB %i\n", FINISHJOB+i); dsmcbe_release(dsmcbe_acquire(FINISHJOB+i, &size, ACQUIRE_MODE_READ)); //printf("END - FINISHJOB %i\n", FINISHJOB+i); //printf("START - ENERGY %i\n", ENERGY+i); unsigned char* temp = dsmcbe_acquire(ENERGY+i,&size, ACQUIRE_MODE_READ); for(y=0; y<HEIGTH; y++) { for(x=0; x<WIDTH; x++) { energy[MAPOFFSET(x,y)] = temp[MAPOFFSET(x,y)]; } } dsmcbe_release(temp); //printf("END - ENERGY %i\n", ENERGY+i); } //printf("Harvest done\n"); // Save energy map to image for(y=0; y<HEIGTH; y++) { for(x=0; x<WIDTH; x++) { if(energy[MAPOFFSET(x,y)] > 0) { int offset = 3 * fpos(scale, scale_size, energy[MAPOFFSET(x,y)]); result.image[MAPOFFSET(x,y)].r = cmap[offset]; result.image[MAPOFFSET(x,y)].g = cmap[offset+1]; result.image[MAPOFFSET(x,y)].b = cmap[offset+2]; } } } //printf("Done\n"); dsmcbe_release(energy); writeimage_rgb(output, &result); free(cmap); free(scale); free(result.image); } if (PPEid != 0) { energy = dsmcbe_create(ENERGY+PPEid, sizeof(unsigned char) * (708 * 576)); memset(energy, 0, sizeof(unsigned char) * (708 * 576)); collectResults(0, SHOTS, SHOTS_SPU, energy); collectResults(1, SHOTS, SHOTS_SPU, energy); collectResults(2, SHOTS, SHOTS_SPU, energy); collectResults(3, SHOTS, SHOTS_SPU, energy); collectResults(4, SHOTS, SHOTS_SPU, energy); dsmcbe_release(energy); //printf("CREATING - FINISHJOB %i\n", FINISHJOB+PPEid); dsmcbe_release(dsmcbe_create(FINISHJOB+PPEid, sizeof(unsigned int))); //printf("CREATED\n"); for(i = 0; i < SPU_THREADS; i++) pthread_join(threads[i], NULL); } printf("Going to sleep before we die\n"); //sleep(10); return 0; }
int main(int argc, char *argv[]) { int dx; int dy; int x; int y; int tmpcmd = 0; int cmd = 0; int ret; struct sw_world *world = NULL; /* TODO: remove this player (world already has one) */ struct sw_obj *player = NULL; ret = sw_start(); if (ret != 0) { sw_logerr("failed to initialize sandworld %d", ret); return ret; } world = sw_world_genstart(); player = sw_obj_gen(SW_OBJ_PLAYER); sw_world_placeobjhome(world, player); sw_rucksack_additem(&player->rucksack, sw_item_genamount(SW_ITEM_DIRT, 2)); do { switch (cmd) { case SW_CMD_UP: case SW_CMD_UP2: /* Fallthrough. */ case SW_CMD_DOWN: case SW_CMD_DOWN2: /* Fallthrough. */ case SW_CMD_LEFT: case SW_CMD_LEFT2: /* Fallthrough. */ case SW_CMD_RIGHT: case SW_CMD_RIGHT2: sw_getdelta(cmd, &dx, &dy); sw_world_moveobjby(world, player->x, player->y, dx, dy); break; case SW_CMD_SELF: sw_obj_showstats(player); break; case SW_CMD_RUCKSACK: sw_rsui_show(world, &player->rucksack); break; case SW_CMD_ACTION: case SW_CMD_ACTION2: tmpcmd = sw_ui_getdir("Interact with?"); if (tmpcmd != SW_CMD_NONE) { sw_getdelta(tmpcmd, &dx, &dy); sw_world_interactobj(world, player->x, player->y, player->x + dx, player->y + dy); } break; case SW_CMD_ATTACK: tmpcmd = sw_ui_getdir("Attack what?"); if (tmpcmd != SW_CMD_NONE) { sw_getdelta(tmpcmd, &dx, &dy); sw_world_attackobj(world, player->x, player->y, player->x + dx, player->y + dy); } break; case SW_CMD_SWAP: break; case SW_CMD_INFO: tmpcmd = sw_ui_getdir("Info on?"); if (tmpcmd != SW_CMD_NONE) { sw_getdelta(tmpcmd, &dx, &dy); x = player->x + dx; y = player->y + dy; if (sw_world_inbounds(world, x, y) && SW_OBJP(world, x, y)) sw_obj_showstats(SW_OBJP(world, x, y)); } break; case SW_CMD_SKILL: break; case SW_CMD_TOOL: tmpcmd = sw_ui_getdir("Use tool on what?"); if (tmpcmd != SW_CMD_NONE) { sw_getdelta(tmpcmd, &dx, &dy); sw_world_toolobj(world, player->x, player->y, player->x + dx, player->y + dy); } break; case SW_CMD_CREATE: sw_rsui_create(world, &player->rucksack); break; case SW_CMD_HELP: sw_displayhelp(); break; case SW_CMD_QUIT: case SW_CMD_QUIT2: if (sw_ui_confirm("Are you sure? (y/n)")) goto exit; break; default: break; } sw_world_updateobjs(world); sw_world_draw(world, 0, 0); sw_ui_draw(); cmd = sw_getcmd(); } while (1); exit: sw_stop(); sw_world_freeallobj(world); sw_world_free(world); return 0; }