Advertisement
Guest User

Dreamcast Devvage

a guest
Oct 26th, 2010
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.63 KB | None | 0 0
  1. #include <kos.h>
  2. #include <png/png.h>
  3.  
  4.  
  5. class Player
  6. {
  7. public:
  8.     pvr_ptr_t Sprite;
  9.     int x;
  10.     int y;
  11.     int z;
  12.     maple_device_t *dev1, *dev2;
  13.     cont_state_t* state;
  14.     cont_state_t* state2;
  15.     maple_device_t* myPuru;
  16.     purupuru_effect_t effect;
  17.     bool hasRumbled;
  18.     //width and height is the
  19.     //entire sprite sheet's width and height
  20.     int width;
  21.     int height;
  22.     Player()
  23.     {
  24.        
  25.        
  26.         x = y = 32;
  27.         z = 1;
  28.         width = 64;
  29.         height = 64;
  30.         Sprite = pvr_mem_malloc(width*height*2);
  31.         png_to_texture("/rd/sprite.png", Sprite, PNG_FULL_ALPHA);
  32.         dev1 = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
  33.         dev2 = maple_enum_type(1, MAPLE_FUNC_CONTROLLER);
  34.         /*myPuru = maple_enum_type(0, MAPLE_FUNC_PURUPURU);
  35.         effect.duration = 5;
  36.         effect.effect2 = PURUPURU_EFFECT2_PULSE;
  37.         effect.effect1 = PURUPURU_EFFECT1_PULSE;
  38.         effect.special = PURUPURU_SPECIAL_PULSE;
  39.         hasRumbled = false;*/
  40.  
  41.     }
  42.     void TakeInput()
  43.     {
  44.         state = (cont_state_t *) maple_dev_status(dev1);
  45.         state2 = (cont_state_t *) maple_dev_status(dev2);
  46.         //cont_state_t* prevState;
  47.  
  48.         if(state->buttons & CONT_DPAD_UP)
  49.             y-=5;
  50.         if(state->buttons & CONT_DPAD_DOWN)
  51.             y+=5;
  52.         if(state->buttons & CONT_DPAD_LEFT)
  53.             x-=5;
  54.         if(state->buttons & CONT_DPAD_RIGHT)
  55.             x+=5;
  56.         if(state->buttons & CONT_Y)
  57.             y-=5;
  58.         if(state->buttons & CONT_A)
  59.             y+=5;
  60.         if(state->buttons & CONT_X)
  61.             x-=5;
  62.         /*if(state->ltrig && !hasRumbled)
  63.         {
  64.             purupuru_rumble(myPuru, &effect);
  65.             hasRumbled = true;
  66.         }
  67.         if(state->rtrig)
  68.         {
  69.             hasRumbled = false;
  70.         }
  71.         if(state->joyy < -10)
  72.             y-=5;
  73.         if(state->joyy > 10)
  74.             y+=5;
  75.         if(state->joyx > 10)
  76.             x+=5;
  77.         if(state->joyx < -10)
  78.             x-=5;
  79.  
  80.         prevState = state;*/
  81.  
  82.     }
  83.     void PrepScene()
  84.     {
  85.     pvr_poly_cxt_t cxt;
  86.     pvr_poly_hdr_t hdr;
  87.     pvr_vertex_t vert;
  88.  
  89.     pvr_poly_cxt_txr(&cxt, PVR_LIST_PT_POLY, PVR_TXRFMT_ARGB4444, height, width, Sprite, PVR_FILTER_BILINEAR);
  90.     pvr_poly_compile(&hdr, &cxt);
  91.     pvr_prim(&hdr, sizeof(hdr));
  92.  
  93.     vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f);    
  94.     vert.oargb = 1;
  95.     vert.flags = PVR_CMD_VERTEX;
  96.    
  97.     vert.x = x;
  98.     vert.y = y;
  99.     vert.z = 1;
  100.     vert.u = 0.0;
  101.     vert.v = 0.0;
  102.     pvr_prim(&vert, sizeof(vert));
  103.    
  104.     vert.x = x+width;
  105.     vert.y = y;
  106.     vert.z = 1;
  107.     vert.u = 1.0;
  108.     vert.v = 0.0;
  109.     pvr_prim(&vert, sizeof(vert));
  110.    
  111.     vert.x = x;
  112.     vert.y = y+height;
  113.     vert.z = 1;
  114.     vert.u = 0.0;
  115.     vert.v = 1.0;
  116.     pvr_prim(&vert, sizeof(vert));
  117.    
  118.     vert.x = x+width;
  119.     vert.y = y+height;
  120.     vert.z = 1;
  121.     vert.u = 1.0;
  122.     vert.v = 1.0;
  123.     vert.flags = PVR_CMD_VERTEX_EOL;
  124.     pvr_prim(&vert, sizeof(vert));
  125.     }
  126.     void DrawScene()
  127. {
  128.     //vid_border_color(255, 0, 0); //idle time
  129.     pvr_wait_ready();
  130.     //vid_border_color(0, 255, 0);//gpu time
  131.     pvr_scene_begin();
  132.    
  133.     pvr_list_begin(PVR_LIST_PT_POLY);
  134.         PrepScene();
  135.     pvr_list_finish();
  136.  
  137.  
  138.    // pvr_list_begin(PVR_LIST_TR_POLY);
  139.        
  140.    // pvr_list_finish();
  141.     //vid_border_color(0, 0, 255);//processor time
  142.     pvr_scene_finish();
  143.  
  144. }
  145.  
  146.  
  147.  
  148. }; //End of class
  149.  
  150. /* romdisk */
  151. //name the uint8 to whatever your romdisk folder is named
  152. extern uint8 romdisk[];
  153. KOS_INIT_ROMDISK(romdisk);
  154.  
  155.  
  156.  
  157. int main(int argc, char* argv[])
  158. {
  159.     //vid_set_mode(DM_640x480, PM_RGB565);
  160.     pvr_init_defaults();
  161.    
  162.     Player* Asian = new Player();
  163.     int done = 0;
  164.     while(!done)
  165.     {
  166.         Asian->TakeInput();
  167.         //Tyler->PrepScene();
  168.         Asian->DrawScene();
  169.         MAPLE_FOREACH_BEGIN(MAPLE_FUNC_CONTROLLER, cont_state_t, st)
  170.             if (st->buttons & CONT_START)
  171.                 done = 1;
  172.         MAPLE_FOREACH_END()
  173.     }
  174.         delete Asian;
  175.         Asian = NULL;
  176.        
  177.         return 0;
  178.  
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement