void initEditor(void) { lcdMainOnBottom(); videoSetMode(MODE_5_3D); videoSetModeSub(MODE_5_2D | DISPLAY_BG3_ACTIVE); vramSetPrimaryBanks(VRAM_A_TEXTURE,VRAM_B_TEXTURE,VRAM_C_SUB_BG,VRAM_D_TEXTURE); glInit(); glEnable(GL_TEXTURE_2D); // glEnable(GL_ANTIALIAS); glEnable(GL_BLEND); glEnable(GL_OUTLINE); glClearPolyID(63); glClearDepth(0x7FFF); glViewport(0,0,255,191); initVramBanks(1); initTextures(); initRoomEdition(); NOGBA("START mem free : %dko (%do)",getMemFree()/1024,getMemFree()); fadeIn(); }
void killGame(void) { fadeOut(); NOGBA("KILLING IT"); freePlayer(); freeEnergyBalls(); freeBigButtons(); freeCubes(); freeDoors(); freeElevators(); freeEmancipation(); freePlatforms(); freeTimedButtons(); freeTurrets(); freeWallDoors(); freeSludge(); freeRoom(&gameRoom); freePortals(); freeState(NULL); freeSound(); freePause(); resetAllPI(); NOGBA("END mem free : %dko (%do)",getMemFree()/1024,getMemFree()); }
void initMenu(void) { lcdMainOnTop(); videoSetMode(MODE_5_3D); videoSetModeSub(MODE_5_2D); vramSetPrimaryBanks(VRAM_A_TEXTURE,VRAM_B_TEXTURE,VRAM_C_SUB_BG,VRAM_D_TEXTURE); initD3D(); glInit(); glEnable(GL_TEXTURE_2D); glEnable(GL_ANTIALIAS); glEnable(GL_BLEND); glEnable(GL_OUTLINE); glClearPolyID(63); glClearDepth(0x7FFF); glViewport(0,0,255,191); initVramBanks(2); initTextures(); initMenuScene(); initMenuButtons(); //TEMP glLight(0, RGB15(31,31,31), cosLerp(4096), 0, sinLerp(4096)); glMaterialf(GL_AMBIENT, RGB15(8,8,8)); glMaterialf(GL_DIFFUSE, RGB15(24,24,24)); glMaterialf(GL_SPECULAR, RGB15(0,0,0)); glMaterialf(GL_EMISSION, RGB15(0,0,0)); glSetToonTableRange(0, 15, RGB15(8,8,8)); //TEMP? glSetToonTableRange(16, 31, RGB15(24,24,24)); //TEMP? applyCameraState(&menuCamera,&cameraStates[4]); tempState=cameraStates[4]; testTransition=startCameraTransition(&cameraStates[1],&cameraStates[4],64); setupMenuPage(startMenuPage, startMenuPageLength); logoMain=createTexture("logo.pcx", "menu"); logoRotate=createTexture("rotate_logo.pcx", "menu"); logoAlpha=31; glSetOutlineColor(0,RGB15(0,0,0)); //TEMP? glSetOutlineColor(1,RGB15(0,0,0)); //TEMP? glSetOutlineColor(7,RGB15(0,0,0)); //TEMP? NOGBA("END mem free : %dko (%do)",getMemFree()/1024,getMemFree()); fadeIn(); }
void ds_global_breakpoint(char *where, int X) { char error[255]; char memused[100]; sprintf(memused,"U: %d / F: %d ", getMemUsed(), getMemFree()); sprintf(error,"<Breakpoint> \n %s \n %s",where,memused); // Prepare JSOB //PA_Reset3DSprites2Banks(); //PA_3DProcess(); ds_global_fillScreen(0,ds_global_getScreen1(),PA_RGB(0,0,16)); ds_global_fillScreen(1,ds_global_getScreen0(),PA_RGB(0,0,16)); // Fill JSOB PA_SmartText16bBuf_DS(ds_global_getScreen(0), 80, 48, // base 255 - 32, 191, // max " -- Breakpoint!!!\n /\n MMMM\n MMMMMM\n MMMMMMM\n MDMM===M\n MDM=X=X\n MDM====M\n MDMM===M\n MNNM-MM\n MNM-M\n MM--M", PA_RGB(31,31,31), 1, 1, 255); // Features PA_CenterSmartText16bBuf_DS(ds_global_getScreen(1), 0, 0, // base 255, 64, // max "KSDS Breakpoint",PA_RGB(31,31,31), 3, 1); // Features PA_CenterSmartText16bBuf_DS(ds_global_getScreen(1), 0, 0, // base 255, 191, // max error,PA_RGB(31,31,31), 2, 1); // Features if (X) { PA_CenterSmartText16bBuf_DS(ds_global_getScreen(1), 0, 191 - 32, // base 255, 191, // max "Please press X...",PA_RGB(31,31,31), 1, 1); // Features } else { PA_CenterSmartText16bBuf_DS(ds_global_getScreen(1), 0, 191 - 32, // base 255, 191, // max "Please press Y...",PA_RGB(31,31,31), 1, 1); // Features } // Show JSOB ds_global_paintScreen(1,ds_global_getScreen1(),0,0); ds_global_paintScreen(0,ds_global_getScreen0(),0,0); // Wait... PA_DisableSpecialFx(0); PA_DisableSpecialFx(1); if (X) { while (!Pad.Newpress.X) { PA_WaitForVBL(); } } else { while (!Pad.Newpress.Y) { PA_WaitForVBL(); } } }
void initTurrets(void) { int i; for(i=0;i<NUMTURRETS;i++) { turrets[i].used=false; turrets[i].OBB=NULL; } loadMd2Model("models/turret.md2","turret.pcx",&turretModel); NOGBA("turret1 mem free : %dko (%do)",getMemFree()/1024,getMemFree()); // generateModelDisplayLists(&turretModel, true, 1); generateModelDisplayLists(&turretModel, false, 1); NOGBA("turret2 mem free : %dko (%do)",getMemFree()/1024,getMemFree()); turretShotTexture=createTexture("turret_shot.pcx", "textures"); turretFireSFX=createSFX("turret_fire.raw", SoundFormat_16Bit); turretDeploySFX=createSFX("turret_deploy.raw", SoundFormat_16Bit); turretRetractSFX=createSFX("turret_retract.raw", SoundFormat_16Bit); }
void gameFrame(void) { int lala; switch(currentBuffer) { case false: #ifdef DEBUG_GAME iprintf("\x1b[0;0H"); iprintf("%d FPS \n", FPS); iprintf("%d (debug) \n", debugVal); iprintf("%d (free ram) \n", getMemFree()/1024); iprintf("%p (portal) \n", portal1.displayList); iprintf("%p (portal) \n", portal2.displayList); #endif cpuEndSlice(); postProcess1(); // iprintf("postproc : %d \n",cpuEndSlice()); render1(); // if(keysDown()&KEY_SELECT)testStepByStep^=1; //TEMP #ifdef DEBUG_GAME iprintf("full : %d (%d) \n",cpuEndTiming(),testStepByStep); #endif swiWaitForVBlank(); cpuStartTiming(0); prevTiming=0; if(previousPortal)dmaCopy(VRAM_C, previousPortal->viewPoint, 256*192*2); setRegCapture(true, 0, 15, 2, 0, 3, 1, 0); frmCNT++; break; case true: // cpuStartTiming(0); postProcess2(); // iprintf("frm 2 : %d \n",cpuGetTiming()); render2(); listenPI9(); updateOBBs(); // iprintf("frm 2 : %d \n",cpuEndTiming()); #ifdef DEBUG_GAME iprintf("fake frame : %d \n",cpuEndTiming()); #endif swiWaitForVBlank(); cpuStartTiming(0); prevTiming=0; dmaCopy(VRAM_C, mainScreen, 256*192*2); setRegCapture(true, 0, 15, 2, 0, 3, 1, 0); break; } // if(testStepByStep){int i=0;while(!(keysUp()&KEY_TOUCH)){scanKeys();listenPI9();swiWaitForVBlank();}NOGBA("WAITED");scanKeys();scanKeys();if(keysHeld()&KEY_SELECT)testStepByStep=false;} // else if(keysDown()&KEY_SELECT)testStepByStep=true; currentBuffer^=1; }
void initGame(void) { lcdMainOnTop(); int oldv=getMemFree(); NOGBA("mem free : %dko (%do)",getMemFree()/1024,getMemFree()); NOGBA("initializing..."); videoSetMode(MODE_5_3D | DISPLAY_BG3_ACTIVE); videoSetModeSub(MODE_5_2D | DISPLAY_BG3_ACTIVE); glInit(); vramSetPrimaryBanks(VRAM_A_TEXTURE,VRAM_B_TEXTURE,VRAM_C_LCD,VRAM_D_MAIN_BG_0x06000000); vramSetBankH(VRAM_H_SUB_BG); vramSetBankI(VRAM_I_SUB_BG_0x06208000); glEnable(GL_TEXTURE_2D); // glEnable(GL_ANTIALIAS); glDisable(GL_ANTIALIAS); glEnable(GL_BLEND); glEnable(GL_OUTLINE); glSetOutlineColor(0,RGB15(0,0,0)); //TEMP? glSetOutlineColor(1,RGB15(0,0,0)); //TEMP? glSetOutlineColor(7,RGB15(31,0,0)); //TEMP? glSetToonTableRange(0, 15, RGB15(8,8,8)); //TEMP? glSetToonTableRange(16, 31, RGB15(24,24,24)); //TEMP? glClearColor(31,31,0,31); glClearPolyID(63); glClearDepth(0x7FFF); glViewport(0,0,255,191); // initVramBanks(1); initVramBanks(2); initTextures(); initSound(); initCamera(NULL); initPlayer(NULL); initLights(); initParticles(); initMaterials(); loadMaterialSlices("slices.ini"); loadMaterials("materials.ini"); loadControlConfiguration("config.ini"); initElevators(); initWallDoors(); initTurrets(); initBigButtons(); initTimedButtons(); initEnergyBalls(); initPlatforms(); initCubes(); initEmancipation(); initDoors(); initSludge(); initPause(); initText(); NOGBA("lalala"); getPlayer()->currentRoom=&gameRoom; currentBuffer=false; getVramStatus(); fadeIn(); mainBG=bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0, 0); bgSetPriority(mainBG, 0); REG_BG0CNT=BG_PRIORITY(3); #ifdef DEBUG_GAME consoleInit(&bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 16, 0, false, true); consoleSelect(&bottomScreen); #endif // glSetToonTableRange(0, 14, RGB15(16,16,16)); // glSetToonTableRange(15, 31, RGB15(26,26,26)); initPortals(); //PHYSICS initPI9(); strcpy(&mapFilePath[strlen(mapFilePath)-3], "map"); newReadMap(mapFilePath, NULL, 255); transferRectangles(&gameRoom); makeGrid(); generateRoomGrid(&gameRoom); gameRoom.displayList=generateRoomDisplayList(&gameRoom, vect(0,0,0), vect(0,0,0), false); getVramStatus(); startPI(); NOGBA("START mem free : %dko (%do)",getMemFree()/1024,getMemFree()); NOGBA("vs mem free : %dko (%do)",oldv/1024,oldv); levelInfoCounter=60; }
void Server::spawn(char *cmdline, void *p, ...) { Client *client = reinterpret_cast<Client *>(p); if (client->m_spawned) { printf("Spawn not valid -- allready spawned\n"); return; } if (m_loadgame) { m_paused = false; } else { edict_t *ent = client->m_edict; memset(&ent->v, 0, m_progs->m_programs.entityfields * 4); ent->v.colormap = m_progs->NUM_FOR_EDICT(ent); ent->v.team = (client->m_colors & 15) + 1; ent->v.netname = client->m_name - m_progs->m_strings; // copy spawn parms out of the client_t for (int i = 0; i< NUM_SPAWN_PARMS; i++) (&m_progs->m_global_struct->parm1)[i] = client->m_spawn_parms[i]; // call the spawn function m_progs->m_global_struct->time = m_time; m_progs->m_global_struct->self = m_progs->edict_to_prog(ent); m_progs->program_execute(m_progs->m_global_struct->ClientConnect); if ((sys.seconds() - client->m_netconnection->m_connecttime) <= m_time) printf("%s entered the game\n", client->m_name); m_progs->program_execute(m_progs->m_global_struct->PutClientInServer); } NetBuffer *msg = &client->m_msg; msg->clear(); // send time of update msg->write_byte(svc_time); msg->write_float(m_time); for (int i = 0; i<m_maxclients; i++) { Client *client2 = &m_clients[i]; msg->write_byte(svc_updatename); msg->write_byte(i); msg->write_string(client2->m_name); msg->write_byte(svc_updatefrags); msg->write_byte(i); msg->write_short(client2->m_old_frags); msg->write_byte(svc_updatecolors); msg->write_byte(i); msg->write_byte(client2->m_colors); } // send all current light styles for (int i = 0; i<MAX_LIGHTSTYLES; i++) { msg->write_byte(svc_lightstyle); msg->write_byte((char)i); msg->write_string(m_progs->m_lightstyles[i]); } // // send some stats // msg->write_byte(svc_updatestat); msg->write_byte(STAT_TOTALSECRETS); msg->write_long((int)m_progs->m_global_struct->total_secrets); msg->write_byte(svc_updatestat); msg->write_byte(STAT_TOTALMONSTERS); msg->write_long((int)m_progs->m_global_struct->total_monsters); msg->write_byte(svc_updatestat); msg->write_byte(STAT_SECRETS); msg->write_long((int)m_progs->m_global_struct->found_secrets); msg->write_byte(svc_updatestat); msg->write_byte(STAT_MONSTERS); msg->write_long((int)m_progs->m_global_struct->killed_monsters); // // send a fixangle // Never send a roll angle, because savegames can catch the server // in a state where it is expecting the client to correct the angle // and it won't happen if the game was just loaded, so you wind up // with a permanent head tilt edict_t *ent = m_progs->EDICT_NUM(1 + (client - m_clients)); msg->write_byte(svc_setangle); for (int i = 0; i < 2; i++) { msg->write_angle(ent->v.angles[i]); } msg->write_angle(0); write_client_data_to_message(ent, msg); //SV_WriteClientdataToMessage(sv_player, &host_client->message); msg->write_byte(svc_signonnum); msg->write_byte(3); client->m_sendsignon = true; host.printf("pool : %d used: %d free: %d\n", pool.size(), pool.used(), pool.size() - pool.used()); host.printf("linear: %d used: %d free: %d\n", linear.size(), linear.used(), linear.size() - linear.used()); host.printf("LINEAR free: %dKB\n", (int)linearSpaceFree() / 1024); host.printf("REGULAR free: %dKB\n", (int)getMemFree() / 1024); host.printf("vbo_cb : %d\n", vbo_cb); host.printf("vbo_tx : %d\n", vbo_tx); host.printf("vbo_ls : %d\n", vbo_ls); host.printf("mdl_cb : %d\n", mdl_cb); host.printf("mdl_tx : %d\n", mdl_tx); }
size_t DS_FreeMem(void) { return getMemFree(); }
void ds_global_errorHalt(char *where) { char error[255]; char memused[100]; sprintf(memused,"U: %d / F: %d ", getMemUsed(), getMemFree()); // Write Error String switch (ds_global_error) { case DS_C_ERR_: sprintf(error,"[E00] Unknown Error \n %s \n %s",where,memused); break; case DS_C_ERR_NOTILESET: sprintf(error,"[E01] Tileset not found \n %s \n %s",where,memused); break; case DS_C_ERR_NOMAPBIN: sprintf(error,"[E02] File Map.bin not found \n %s \n %s",where,memused); break; case DS_C_ERR_NOMEMORY: sprintf(error,"[E03] Not enough memory \n %s \n %s",where,memused); break; case DS_C_ERR_NOMOREOBJECTS: sprintf(error,"[E04] This room has too many objects \n %s \n %s",where,memused); break; case DS_C_ERR_NOWORLDINI: sprintf(error,"[E05] No World.ini \n %s \n %s",where,memused); break; case DS_C_ERR_NOSAVEINI: sprintf(error,"[E06] No Savegame.ini \n %s \n %s",where,memused); break; case DS_C_ERR_ZIPFAST: sprintf(error,"[E07] Incompatible Map.bin (idx)\n %s \n %s",where,memused); break; case DS_C_ERR_NOHDD: sprintf(error,"[E08] Not enough disk space \n %s \n %s",where,memused); break; case DS_C_ERR_NOFOUND: sprintf(error,"[E09] Not Found \n %s \n %s",where,memused); break; case DS_C_ERR_BIGIMA: sprintf(error,"[E10] Image too big\nSorry, you can't play this story\n%s \n %s",where,memused); break; } // Prepare JSOD PA_Reset3DSprites2Banks(); PA_3DProcess(); ds_global_fillScreen(1,ds_global_getScreen1(),PA_RGB(16,0,0)); ds_global_fillScreen(0,ds_global_getScreen0(),PA_RGB(16,0,0)); // Fill JSOD PA_SmartText16bBuf_DS(ds_global_getScreen(1), 80, 48, // base 255 - 32, 191, // max " -- Ouch! Sorry!!!\n /\n MMMM\n MMMMMM\n MMMMMMM\n MDMM===M\n MDM=X=X\n MDM====M\n MDMM===M\n MNNM-MM\n MNM-M\n MM--M", PA_RGB(31,31,31), 1, 1, 255); // Features PA_CenterSmartText16bBuf_DS(ds_global_getScreen(0), 0, 0, // base 255, 64, // max "KSDS Internal Error",PA_RGB(31,31,31), 3, 1); // Features PA_CenterSmartText16bBuf_DS(ds_global_getScreen(0), 0, 0, // base 255, 191, // max error,PA_RGB(31,31,31), 2, 1); // Features PA_CenterSmartText16bBuf_DS(ds_global_getScreen(0), 0, 191 - 32, // base 255, 191, // max "Please reboot your DS",PA_RGB(31,31,31), 1, 1); // Features // Show JSOD ds_global_paintScreen(1,ds_global_getScreen1(),0,0); ds_global_paintScreen(0,ds_global_getScreen0(),0,0); // End... PA_DisableSpecialFx(0); PA_DisableSpecialFx(1); while(1) { PA_WaitForVBL(); } }
int ds_global_safeguardMem(int minmem) { return (getMemFree() < minmem); }