/* Does the actual shutdown stuff for a proper shutdown */ void arch_shutdown() { /* Run dtors */ arch_atexit(); arch_dtors(); dbglog(DBG_CRITICAL, "arch: shutting down kernel\n"); /* Turn off UBC breakpoints, if any */ // ubc_disable_all(); /* Do auto-shutdown... or use the "light weight" version underneath */ #if 1 arch_auto_shutdown(); #else /* Ensure that interrupts are disabled */ irq_disable(); irq_enable_exc(); /* Make sure that PVR and Maple are shut down */ pvr_shutdown(); maple_shutdown(); /* Shut down any other hardware things */ hardware_shutdown(); #endif if (__kos_init_flags & INIT_MALLOCSTATS) { malloc_stats(); } /* Shut down IRQs */ // irq_shutdown(); }
/* Note: If we are terminated, this could be called in the middle of another SDL video routine -- notably UpdateRects. */ static void AN_VideoQuit(_THIS) { #if SDL_VIDEO_OPENGL if (pvr_inited) { pvr_inited = 0; pvr_shutdown(); } #endif }
int main() { int persoChoisi; std::cout << "Starting DCSI ..." << std::endl; MenuManager mainMenu; //pvr_init_defaults(); //cdrom_init(); bool cont = true; mainMenu.Init(); mainMenu.IntroLaunch(); persoChoisi = mainMenu.MenuLaunch(); //mainMenu.Unload(); pvr_shutdown(); while (cont) { cont = myWorld::Init(persoChoisi); pvr_shutdown(); persoChoisi = (persoChoisi + 1)%3; } std::cout << "Terminating DCSI ..." << std::endl; }
void arch_auto_shutdown() { irq_disable(); timer_shutdown(); #if 0 snd_shutdown(); hardware_shutdown(); net_shutdown(); pvr_shutdown(); fs_dcload_shutdown(); fs_vmu_shutdown(); fs_iso9660_shutdown(); #endif fs_ramdisk_shutdown(); fs_romdisk_shutdown(); fs_shutdown(); thd_shutdown(); }
int main (int argc, char* argv[]) { int cable_type, quit = 0; float rot1 = 0.0, rot2 = 0.0, rot3 = 0.0; kos_img_t front_txr, back_txr, tmp_img; pvr_ptr_t texaddr; GLuint texture[8]; int blendfunc = 2; float eye_rot = 0; cable_type = vid_check_cable (); if (cable_type == CT_VGA) vid_init (DM_640x480_VGA, PM_RGB565); else vid_init (DM_640x480_PAL_IL, PM_RGB565); init_pvr (); glKosInit (); sphere = mkspheredata (3, &nstrip, &stripl); glGenTextures (8, &texture[0]); #if 1 kmg_to_img ("/rd/sky1.kmg", &front_txr); texaddr = pvr_mem_malloc (front_txr.byte_count); pvr_txr_load_kimg (&front_txr, texaddr, PVR_TXRFMT_VQ_ENABLE); kos_img_free (&front_txr, 0); glBindTexture (GL_TEXTURE_2D, texture[0]); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, front_txr.w, front_txr.h, texaddr); kmg_to_img ("/rd/sky2o.kmg", &back_txr); texaddr = pvr_mem_malloc (back_txr.byte_count); pvr_txr_load_kimg (&back_txr, texaddr, PVR_TXRFMT_VQ_ENABLE); kos_img_free (&back_txr, 0); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glBindTexture (GL_TEXTURE_2D, texture[1]); glKosTex2D (GL_ARGB4444_TWID | GL_VQ_ENABLE, back_txr.w, back_txr.h, texaddr); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glBindTexture (GL_TEXTURE_2D, texture[2]); kmg_to_img ("/rd/sky3.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); glBindTexture (GL_TEXTURE_2D, texture[3]); kmg_to_img ("/rd/sky4.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); glBindTexture (GL_TEXTURE_2D, texture[4]); kmg_to_img ("/rd/sky5.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); glBindTexture (GL_TEXTURE_2D, texture[5]); kmg_to_img ("/rd/sky6.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); glBindTexture (GL_TEXTURE_2D, texture[6]); kmg_to_img ("/rd/sky7.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); glBindTexture (GL_TEXTURE_2D, texture[7]); kmg_to_img ("/rd/sky8.kmg", &tmp_img); texaddr = pvr_mem_malloc (tmp_img.byte_count); pvr_txr_load_kimg (&tmp_img, texaddr, PVR_TXRFMT_VQ_ENABLE); glKosTex2D (GL_RGB565_TWID | GL_VQ_ENABLE, tmp_img.w, tmp_img.h, texaddr); #else png_to_img ("/rd/sky1.png", PNG_MASK_ALPHA, &front_txr); texaddr = pvr_mem_malloc (front_txr.w * front_txr.h * 2); pvr_txr_load_kimg (&front_txr, texaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free (&front_txr, 0); glBindTexture (GL_TEXTURE_2D, texture[0]); glKosTex2D (GL_ARGB1555_TWID, front_txr.w, front_txr.h, texaddr); png_to_img ("/rd/sky2o.png", PNG_MASK_ALPHA, &back_txr); texaddr = pvr_mem_malloc (back_txr.w * back_txr.h * 2); pvr_txr_load_kimg (&back_txr, texaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free (&back_txr, 0); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glBindTexture (GL_TEXTURE_2D, texture[1]); glKosTex2D (GL_ARGB1555_TWID, back_txr.w, back_txr.h, texaddr); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glBindTexture (GL_TEXTURE_2D, texture[2]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky3.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); glBindTexture (GL_TEXTURE_2D, texture[3]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky4.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); glBindTexture (GL_TEXTURE_2D, texture[4]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky5.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); glBindTexture (GL_TEXTURE_2D, texture[5]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky6.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); glBindTexture (GL_TEXTURE_2D, texture[6]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky7.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); glBindTexture (GL_TEXTURE_2D, texture[7]); texaddr = pvr_mem_malloc (TEXSIZE * TEXSIZE * 2); png_to_texture ("/rd/sky8.png", texaddr, PNG_NO_ALPHA); glKosTex2D (GL_RGB565_TWID, TEXSIZE, TEXSIZE, texaddr); #endif glEnable (GL_DEPTH_TEST); glEnable (GL_CULL_FACE); glEnable (GL_TEXTURE_2D); glShadeModel (GL_SMOOTH); glClearDepth (1.0f); glDepthFunc (GL_LEQUAL); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (60.0, /* Field of view in degrees. */ 640.0 / 480.0, /* Aspect ratio. */ 1.0, /* Z near. */ 50.0); /* Z far. */ glMatrixMode (GL_MODELVIEW); while (!quit) { MAPLE_FOREACH_BEGIN (MAPLE_FUNC_CONTROLLER, cont_state_t, st) { if (st->buttons & CONT_START) quit = 1; eye_pos[0] = st->joyx / 25.0; eye_pos[1] = st->joyy / 25.0; eye_pos[2] = 5 * sin (eye_rot); if (st->buttons & CONT_A) blendfunc = 0; else if (st->buttons & CONT_B) blendfunc = 1; else if (st->buttons & CONT_X) blendfunc = 2; } MAPLE_FOREACH_END () draw_vectors = 10; glLoadIdentity (); gluLookAt (eye_pos[0], eye_pos[1], eye_pos[2], /* Eye position. */ 0.0, 0.0, 0.0, /* Centre. */ 0.0, 1.0, 0.0); /* Up. */ glGetFloatv (GL_MODELVIEW_MATRIX, &camera[0][0]); invcamera[0][0] = camera[0][0]; invcamera[0][1] = camera[1][0]; invcamera[0][2] = camera[2][0]; invcamera[0][3] = 0.0; invcamera[1][0] = camera[0][1]; invcamera[1][1] = camera[1][1]; invcamera[1][2] = camera[2][1]; invcamera[1][3] = 0.0; invcamera[2][0] = camera[0][2]; invcamera[2][1] = camera[1][2]; invcamera[2][2] = camera[2][2]; invcamera[2][3] = 0.0; invcamera[3][0] = 0.0; invcamera[3][1] = 0.0; invcamera[3][2] = 0.0; invcamera[3][3] = 1.0; /*dbgio_printf ("inverted camera orthogonality: %f %f %f\n", (double) vec_dot (invcamera[0], invcamera[1]), (double) vec_dot (invcamera[1], invcamera[2]), (double) vec_dot (invcamera[2], invcamera[0]));*/ /*dbgio_printf ("Inverted camera matrix:\n"); for (i = 0; i < 4; i++) { dbgio_printf ("[ %f %f %f %f ]\n", (double) invcamera[0][i], (double) invcamera[1][i], (double) invcamera[2][i], (double) invcamera[3][i]); }*/ glKosBeginFrame (); /*glPushMatrix (); glTranslatef (-camera[3][0], -camera[3][1], -camera[3][2]);*/ render_cube (&texture[2]); /*glPopMatrix ();*/ glPushMatrix (); #if 1 glRotatef (rot1, 0.0, 1.0, 0.0); rot1 += 0.7; glRotatef (rot2, 1.0, 0.0, 0.0); rot2 += 0.29; #else glRotatef (rot1, 0.0, 0.0, 1.0); rot1 += 0.7; #endif if (rot1 >= 360) rot1 -= 360; if (rot2 >= 360) rot2 -= 360; eye_rot += 0.05; if (eye_rot >= 2 * M_PI) eye_rot -= 2 * M_PI; blob_phase += 0.05; if (blob_phase >= 24 * M_PI) blob_phase -= 24 * M_PI; /* Render front. */ glBindTexture (GL_TEXTURE_2D, texture[0]); glTexEnvi (GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_MODULATE); #if 1 render_blob (sphere, nstrip, stripl, 1); #else render_torus (1.0, 0.6, 1); #endif glPushMatrix (); glRotatef (rot3, 1.0, 0.0, 0.0); glTranslatef (2.9, 0.0, 0.0); render_torus (0.8, 0.5, 1); glPopMatrix (); glPushMatrix (); glRotatef (-rot3, 1.0, 0.0, 0.0); glTranslatef (-2.9, 0.0, 0.0); render_torus (0.8, 0.5, 1); glPopMatrix (); glKosFinishList (); /* Render back. */ glBindTexture (GL_TEXTURE_2D, texture[1]); glTexEnvi (GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_MODULATE); if (blendfunc == 0) glBlendFunc (GL_SRC_ALPHA, GL_ZERO); else if (blendfunc == 1) glBlendFunc (GL_ZERO, GL_ONE_MINUS_SRC_ALPHA); else glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); #if 1 //glDisable (GL_TEXTURE_2D); render_blob (sphere, nstrip, stripl, 0); //glEnable (GL_TEXTURE_2D); #else render_torus (1.0, 0.6, 0); #endif glPushMatrix (); glRotatef (rot3, 1.0, 0.0, 0.0); glTranslatef (2.9, 0.0, 0.0); render_torus (0.8, 0.5, 0); glPopMatrix (); glPushMatrix (); glRotatef (-rot3, 1.0, 0.0, 0.0); glTranslatef (-2.9, 0.0, 0.0); render_torus (0.8, 0.5, 0); glPopMatrix (); rot3 += 1; if (rot3 >= 360) rot3 -= 360; glPopMatrix (); glKosFinishFrame (); } glKosShutdown (); pvr_shutdown (); vid_shutdown (); /* Make dc-load look nicer. */ vid_init (DM_640x480_PAL_IL, PM_RGB565); return 0; }
int main (int argc, char *argv[]) { int cable_type; int quit = 0; float rot1 = 0.0, rot2 = 0.0, rot3 = 0.0; kos_img_t cubetxr; GLuint texture[2]; pvr_ptr_t texaddr; pvr_ptr_t bumpmap; /* Consider this as the vector from the object to the light, for now. */ GLfloat light_position[3] = { 0.7, 0.7, 2.0 }; vec_normalize (&light_position[0], &light_position[0]); cable_type = vid_check_cable (); printf ("KOS says M_PI is: %f\n", M_PI); if (cable_type == CT_VGA) vid_init (DM_640x480_VGA, PM_RGB565); else vid_init (DM_640x480_PAL_IL, PM_RGB565); init_pvr (); auto_orient (); png_to_img ("/rd/cube.png", PNG_NO_ALPHA, &cubetxr); texaddr = pvr_mem_malloc (cubetxr.w * cubetxr.h * 2); pvr_txr_load_kimg (&cubetxr, texaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free (&cubetxr, 0); bumpmap = load_bumpmap ("/rd/bump.raw"); vid_border_color (0, 0, 0); pvr_set_bg_color (0.0, 0.0, 0.0); glKosInit (); glEnable (GL_DEPTH_TEST); glEnable (GL_CULL_FACE); glEnable (GL_TEXTURE_2D); glShadeModel (GL_SMOOTH); glClearDepth (1.0f); glDepthFunc (GL_LEQUAL); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (45.0, /* Field of view in degrees. */ 640.0 / 480.0, /* Aspect ratio. */ 1.0, /* Z near. */ 50.0); /* Z far. */ glMatrixMode (GL_MODELVIEW); glLoadIdentity (); gluLookAt (0.0, 0.0, -4.5, /* Eye position. */ 0.0, 0.0, 0.0, /* Centre. */ 0.0, 1.0, 0.0); /* Up. */ glGenTextures (2, &texture[0]); /* Ordinary texture. */ glBindTexture (GL_TEXTURE_2D, texture[0]); glKosTex2D (GL_RGB565_TWID, cubetxr.w, cubetxr.h, texaddr); /* Bump texture. */ glBindTexture (GL_TEXTURE_2D, texture[1]); /*pvr_poly_cxt_txr (cxt, PVR_LIST_OP_POLY, PVR_TXRFMT_BUMP | PVR_TXRFMT_TWIDDLED, 128, 128, bumpmap, PVR_FILTER_BILINEAR);*/ glKosTex2D (GL_BUMP_TWID, 128, 128, bumpmap); glTexEnvi (GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_MODULATE); /* Break the nice abstraction. Tweak for bump mapping. */ /*cxt = (pvr_poly_cxt_t *) texture[1]; cxt->gen.specular = PVR_SPECULAR_ENABLE;*/ /*pvr_poly_compile (&bumphdr, cxt);*/ printf ("objmatrix at %p\n", objmatrix); while (!quit) { int faces; GLfloat transformed_normals [sizeof (face_normals) / (3 * sizeof (GLfloat))][3]; GLfloat transformed_orient [sizeof (face_orient) / (3 * sizeof (GLfloat))][3]; MAPLE_FOREACH_BEGIN (MAPLE_FUNC_CONTROLLER, cont_state_t, st) if (st->buttons & CONT_START) quit = 1; MAPLE_FOREACH_END () glKosBeginFrame (); glPushMatrix (); glRotatef (rot1, 1.0, 0.0, 0.0); glRotatef (rot2, 0.0, 1.0, 0.0); glRotatef (rot3, 0.0, 0.0, 1.0); rot1 += 0.1; rot2 += 0.2; rot3 += 0.3; /* Get the object's transformation matrix. */ glGetFloatv (GL_MODELVIEW_MATRIX, &objmatrix[0][0]); /* We care only about rotation for now. */ objmatrix[0][3] = objmatrix[1][3] = objmatrix[2][3] = 0.0; objmatrix[3][0] = objmatrix[3][1] = objmatrix[3][2] = 0.0; objmatrix[3][3] = 1.0; /*printf ("Got matrix:\n"); printf ("[ %f %f %f %f ]\n", objmatrix[0][0], objmatrix[0][1], objmatrix[0][2], objmatrix[0][3]); printf ("[ %f %f %f %f ]\n", objmatrix[1][0], objmatrix[1][1], objmatrix[1][2], objmatrix[1][3]); printf ("[ %f %f %f %f ]\n", objmatrix[2][0], objmatrix[2][1], objmatrix[2][2], objmatrix[2][3]); printf ("[ %f %f %f %f ]\n", objmatrix[3][0], objmatrix[3][1], objmatrix[3][2], objmatrix[3][3]);*/ /* Do these all in one go. */ mat_load ((matrix_t *) &objmatrix[0][0]); /* Note: mat_transform is only for 3D->2D (perspective) transformations! This won't be quite as quick, most likely. */ for (faces = 0; faces < 6; faces++) { GLfloat x = face_normals[faces][0]; GLfloat y = face_normals[faces][1]; GLfloat z = face_normals[faces][2]; GLfloat w = 1.0; mat_trans_nodiv (x, y, z, w); transformed_normals[faces][0] = x; transformed_normals[faces][1] = y; transformed_normals[faces][2] = z; x = face_orient[faces][0]; y = face_orient[faces][1]; z = face_orient[faces][2]; w = 1.0; mat_trans_nodiv (x, y, z, w); transformed_orient[faces][0] = x; transformed_orient[faces][1] = y; transformed_orient[faces][2] = z; } glKosMatrixDirty (); glDisable (GL_KOS_OFFSET_COLOR); glBindTexture (GL_TEXTURE_2D, texture[0]); glDisable (GL_TEXTURE_2D); //glBlendFunc (GL_DST_COLOR, GL_ZERO); glBlendFunc (GL_ONE, GL_ZERO); for (faces = 0; faces < 6; faces++) { int strip; glBegin (GL_TRIANGLE_STRIP); glColor4ub (colour[faces][0], colour[faces][1], colour[faces][2], colour[faces][3]); for (strip = 0; strip < 4; strip++) { glTexCoord2fv (texcoords[strip]); glVertex3fv (points[tristrips[faces][strip]]); } glEnd (); } /* Finish opaque list, start transparent list. */ glKosFinishList (); glBindTexture (GL_TEXTURE_2D, texture[1]); glEnable (GL_TEXTURE_2D); glEnable (GL_KOS_OFFSET_COLOR); glBlendFunc (GL_ZERO, GL_SRC_ALPHA); for (faces = 0; faces < 6; faces++) { int strip, over_pi, over_2pi; GLfloat s_dot_n, f[3], d[3], t, q; GLfloat d_cross_r[3], dxr_len, d_len; s_dot_n = vec_dot (&transformed_normals[faces][0], &light_position[0]); /* Elevation (T) angle: s.n = |s| |n| cos T T = acos (s.n / (|s| * |n|)) |s| and |n| are both 1. */ t = M_PI / 2 - acosf (s_dot_n); if (t < 0) t = 0; /* Rotation (Q) angle: d x r = (|d| |r| sin Q) n |d x r| / (|d| |r|) = sin Q. */ vec_scale (&f[0], &transformed_normals[faces][0], s_dot_n); vec_sub (&d[0], &light_position[0], &f[0]); vec_cross (&d_cross_r[0], &d[0], &transformed_orient[faces][0]); dxr_len = vec_length (&d_cross_r[0]); d_len = vec_length (&d[0]); q = asinf (dxr_len / d_len); over_pi = vec_dot (&d[0], &transformed_orient[faces][0]) < 0; if (over_pi) q = M_PI - q; over_2pi = vec_dot (&d_cross_r[0], &transformed_normals[faces][0]) < 0; if (over_2pi) q = 2 * M_PI - q; /*printf ("length of n: %f\n", length (&transformed_normals[faces][0])); printf ("%d: [ %f %f %f ]\n", faces, transformed_normals[faces][0], transformed_normals[faces][1], transformed_normals[faces][2]); printf ("length of r: %f\n", length (&transformed_orient[faces][0])); printf ("%d: [ %f %f %f ]\n", faces, transformed_orient[faces][0], transformed_orient[faces][1], transformed_orient[faces][2]);*/ glBegin (GL_TRIANGLE_STRIP); set_bump_direction (t, 2 * M_PI - q, 1.0); glColor4ub (255, 255, 255, 255); for (strip = 0; strip < 4; strip++) { glTexCoord2fv (texcoords[strip]); glVertex3fv (points[tristrips[faces][strip]]); } glEnd (); } /* Finish opaque polygon list, start translucent polygon list. */ /* glKosFinishList ();*/ glPopMatrix (); glKosFinishFrame (); } glKosShutdown (); pvr_shutdown (); vid_shutdown (); return 0; }
int main(int argc,char **argv){ Init(); //sndoggvorbis_start("/pc/billy.ogg",-1); Lights[0].z = 10.0; Lights[0].x = 0.0; Lights[0].y = 0.0; Lights[0].w = 1.0; Lights[0].r = 5.0; Lights[0].g = 0.0; Lights[0].b = 0.0; Lights[0].a = 1.0; Lights[0].aa = 0.0; Lights[0].ab = 0.0; Lights[0].ac = 1.0; Lights[0].dummy = 1.0; Lights[1].z = 10.0; Lights[1].x = 100.0; Lights[1].y = 100.0; Lights[1].w = 1.0; Lights[1].r = 0.0; Lights[1].g = 5.0; Lights[1].b = 0.0; Lights[1].a = 1.0; Lights[1].aa = 0.0; Lights[1].ab = 0.0; Lights[1].ac = 1.0; Lights[1].dummy = 1.0; Lights[2].z = 10.0; Lights[2].x = 400.0; Lights[2].y = 400.0; Lights[2].w = 1.0; Lights[2].r = 0.0; Lights[2].g = 0.0; Lights[2].b = 5.0; Lights[2].a = 1.0; Lights[2].aa = 0.0; Lights[2].ab = 0.0; Lights[2].ac = 1.0; Lights[2].dummy = 1.0; vid_border_color(255,0,0); Load_Texture("/rd/bumpmap.raw",&GlobalNormal); Load_Texture("/rd/text.raw",&GlobalTex); vid_border_color(0,0,255); Init_Layer(); int q = 0; int x = 0; int pushed = 0; int bumpenabled = 1; int display_fps = 0; bfont_set_encoding(BFONT_CODE_ISO8859_1); while(q == 0){ mat_identity(); vid_border_color(255,0,0); pvr_wait_ready(); vid_border_color(0,255,0); pvr_scene_begin(); pvr_list_begin(PVR_LIST_OP_POLY); Draw_Layer(); pvr_list_finish(); pvr_list_begin(PVR_LIST_TR_POLY); if(bumpenabled) Draw_Layer_Bump(); pvr_list_finish(); pvr_scene_finish(); vid_border_color(0,0,255); MAPLE_FOREACH_BEGIN(MAPLE_FUNC_CONTROLLER, cont_state_t, st); if(st->buttons & CONT_START) q = 1; if(st->joyx > 32){ Lights[x].x += 4.0f; } if(st->joyx < -32){ Lights[x].x -= 4.0f; } if(st->joyy < -32){ Lights[x].y -= 4.0f; } if(st->joyy > 32){ Lights[x].y += 4.0f; } if(st->buttons & CONT_DPAD_LEFT){ Lights[x].x -= 4.0f; } if(st->buttons & CONT_DPAD_RIGHT){ Lights[x].x += 4.0f; } if(st->buttons & CONT_DPAD_UP){ Lights[x].y -= 4; } if(st->buttons & CONT_DPAD_DOWN){ Lights[x].y += 4; } if(st->buttons & CONT_A && pushed == 0){ pushed = 1; x++; if(x == LIGHTS){ x = 0; } } if(st->buttons & CONT_Y && pushed == 0){ LIGHTS--; pushed = 1; if(LIGHTS < 0){ LIGHTS = MAX_LIGHTS; } } if(st->buttons & CONT_B && pushed == 0){ display_fps ^= 0x01; pushed = 1; } if(st->buttons & CONT_X && pushed == 0){ bumpenabled ^= 0x01; pushed = 1; } if(!(st->buttons & CONT_A) && !(st->buttons & CONT_B) && !(st->buttons & CONT_X) && !(st->buttons & CONT_Y)){ pushed = 0; } MAPLE_FOREACH_END(); running_stats(); sprintf(buf,"FPS:%f",avgfps); if(display_fps){ //printf("%s\n",buf); bfont_draw_str(vram_s + (640*24),640,1,buf); } } DeleteTexture(&GlobalNormal); DeleteTexture(&GlobalTex); //sndoggvorbis_stop(); //sndoggvorbis_shutdown(); pvr_shutdown(); return 0; }
int main(int argc,char** argv){ pvr_vertex_t v; Texture spr; pvr_poly_cxt_t p_cxt; pvr_poly_hdr_t p_hdr; Init(); Load_VQTexture("/rd/billy.kmg",&spr); sndoggvorbis_start("/rd/billy.ogg",-1); int q = 0; while(q == 0){ vid_border_color(255,0,0); pvr_wait_ready(); vid_border_color(0,255,0); pvr_scene_begin(); pvr_list_begin(PVR_LIST_OP_POLY); pvr_list_finish(); pvr_list_begin(PVR_LIST_TR_POLY); pvr_poly_cxt_txr(&p_cxt,PVR_LIST_TR_POLY,spr.fmt,spr.w,spr.h,spr.txt,PVR_FILTER_BILINEAR); pvr_poly_compile(&p_hdr,&p_cxt); pvr_prim(&p_hdr,sizeof(p_hdr)); // submit header v.x = 0.0; v.y = 0.0; v.z = 1.0; v.u = 0.0; v.v = 0.0; v.argb = 0xffffffff; v.oargb = 0; v.flags = PVR_CMD_VERTEX; pvr_prim(&v,sizeof(v)); v.x = 640.0; v.y = 0.0; v.u = 1.0; v.v = 0.0; pvr_prim(&v,sizeof(v)); v.x = 0.0; v.y = 480.0; v.u = 0.0; v.v = 1.0; pvr_prim(&v,sizeof(v)); v.x = 640.0; v.y = 480.0; v.u = 1.0; v.v = 1.0; v.flags = PVR_CMD_VERTEX_EOL; pvr_prim(&v,sizeof(v)); pvr_list_finish(); pvr_scene_finish(); vid_border_color(0,0,255); MAPLE_FOREACH_BEGIN(MAPLE_FUNC_CONTROLLER, cont_state_t, st); if(st->buttons & CONT_START) q = 1; MAPLE_FOREACH_END(); } DeleteTexture(&spr); sndoggvorbis_stop(); pvr_shutdown(); sndoggvorbis_shutdown(); return 0; }
SDL_Surface *AN_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags) { int disp_mode,pixel_mode,pitch; Uint32 Rmask, Gmask, Bmask; if (width==320 && height==240) disp_mode=DM_320x240; else if (width==640 && height==480) disp_mode=DM_640x480; else if (width==800 && height==600) disp_mode=DM_800x608; else { SDL_SetError("Couldn't find requested mode in list"); return(NULL); } switch(bpp) { case 15: pixel_mode = PM_RGB555; pitch = width*2; /* 5-5-5 */ Rmask = 0x00007c00; Gmask = 0x000003e0; Bmask = 0x0000001f; break; case 16: pixel_mode = PM_RGB565; pitch = width*2; /* 5-6-5 */ Rmask = 0x0000f800; Gmask = 0x000007e0; Bmask = 0x0000001f; break; case 24: bpp = 32; case 32: pixel_mode = PM_RGB888; pitch = width*4; Rmask = 0x00ff0000; Gmask = 0x0000ff00; Bmask = 0x000000ff; #if SDL_VIDEO_OPENGL if (!(flags & SDL_OPENGL)) #endif break; default: SDL_SetError("Couldn't find requested mode in list"); return(NULL); } // if ( bpp != current->format->BitsPerPixel ) { if ( ! SDL_ReallocFormat(current, bpp, Rmask, Gmask, Bmask, 0) ) { return(NULL); } // } /* Set up the new mode framebuffer */ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE); current->w = width; current->h = height; current->pitch = pitch; #if SDL_VIDEO_OPENGL if (pvr_inited) { pvr_inited = 0; pvr_shutdown(); } #endif printf("Android set mode %s,%s uimplemeneted\n", __FILE__, __FUNCTION__); //vid_set_mode(disp_mode,pixel_mode); // TODO: SDL_SetError("Android video not unimplemented"); return NULL; current->pixels = NULL; //vram_s; #if SDL_VIDEO_OPENGL if (flags & SDL_OPENGL) { this->gl_config.driver_loaded = 1; current->flags = SDL_FULLSCREEN | SDL_OPENGL; current->pixels = NULL; pvr_inited = 1; pvr_init(¶ms); glKosInit(); glKosBeginFrame(); } else #endif if (flags | SDL_DOUBLEBUF) { current->flags |= SDL_DOUBLEBUF; current->pixels = (void*)((int)current->pixels | 0x400000); } /* We're done */ return(current); }