Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <kos.h>
- #include <png/png.h>
- class Player
- {
- public:
- pvr_ptr_t Sprite;
- int x;
- int y;
- int z;
- maple_device_t *dev1, *dev2;
- cont_state_t* state;
- cont_state_t* state2;
- maple_device_t* myPuru;
- purupuru_effect_t effect;
- bool hasRumbled;
- //width and height is the
- //entire sprite sheet's width and height
- int width;
- int height;
- Player()
- {
- x = y = 32;
- z = 1;
- width = 64;
- height = 64;
- Sprite = pvr_mem_malloc(width*height*2);
- png_to_texture("/rd/sprite.png", Sprite, PNG_FULL_ALPHA);
- dev1 = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
- dev2 = maple_enum_type(1, MAPLE_FUNC_CONTROLLER);
- /*myPuru = maple_enum_type(0, MAPLE_FUNC_PURUPURU);
- effect.duration = 5;
- effect.effect2 = PURUPURU_EFFECT2_PULSE;
- effect.effect1 = PURUPURU_EFFECT1_PULSE;
- effect.special = PURUPURU_SPECIAL_PULSE;
- hasRumbled = false;*/
- }
- void TakeInput()
- {
- state = (cont_state_t *) maple_dev_status(dev1);
- state2 = (cont_state_t *) maple_dev_status(dev2);
- //cont_state_t* prevState;
- if(state->buttons & CONT_DPAD_UP)
- y-=5;
- if(state->buttons & CONT_DPAD_DOWN)
- y+=5;
- if(state->buttons & CONT_DPAD_LEFT)
- x-=5;
- if(state->buttons & CONT_DPAD_RIGHT)
- x+=5;
- if(state->buttons & CONT_Y)
- y-=5;
- if(state->buttons & CONT_A)
- y+=5;
- if(state->buttons & CONT_X)
- x-=5;
- /*if(state->ltrig && !hasRumbled)
- {
- purupuru_rumble(myPuru, &effect);
- hasRumbled = true;
- }
- if(state->rtrig)
- {
- hasRumbled = false;
- }
- if(state->joyy < -10)
- y-=5;
- if(state->joyy > 10)
- y+=5;
- if(state->joyx > 10)
- x+=5;
- if(state->joyx < -10)
- x-=5;
- prevState = state;*/
- }
- void PrepScene()
- {
- pvr_poly_cxt_t cxt;
- pvr_poly_hdr_t hdr;
- pvr_vertex_t vert;
- pvr_poly_cxt_txr(&cxt, PVR_LIST_PT_POLY, PVR_TXRFMT_ARGB4444, height, width, Sprite, PVR_FILTER_BILINEAR);
- pvr_poly_compile(&hdr, &cxt);
- pvr_prim(&hdr, sizeof(hdr));
- vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f);
- vert.oargb = 1;
- vert.flags = PVR_CMD_VERTEX;
- vert.x = x;
- vert.y = y;
- vert.z = 1;
- vert.u = 0.0;
- vert.v = 0.0;
- pvr_prim(&vert, sizeof(vert));
- vert.x = x+width;
- vert.y = y;
- vert.z = 1;
- vert.u = 1.0;
- vert.v = 0.0;
- pvr_prim(&vert, sizeof(vert));
- vert.x = x;
- vert.y = y+height;
- vert.z = 1;
- vert.u = 0.0;
- vert.v = 1.0;
- pvr_prim(&vert, sizeof(vert));
- vert.x = x+width;
- vert.y = y+height;
- vert.z = 1;
- vert.u = 1.0;
- vert.v = 1.0;
- vert.flags = PVR_CMD_VERTEX_EOL;
- pvr_prim(&vert, sizeof(vert));
- }
- void DrawScene()
- {
- //vid_border_color(255, 0, 0); //idle time
- pvr_wait_ready();
- //vid_border_color(0, 255, 0);//gpu time
- pvr_scene_begin();
- pvr_list_begin(PVR_LIST_PT_POLY);
- PrepScene();
- pvr_list_finish();
- // pvr_list_begin(PVR_LIST_TR_POLY);
- // pvr_list_finish();
- //vid_border_color(0, 0, 255);//processor time
- pvr_scene_finish();
- }
- }; //End of class
- /* romdisk */
- //name the uint8 to whatever your romdisk folder is named
- extern uint8 romdisk[];
- KOS_INIT_ROMDISK(romdisk);
- int main(int argc, char* argv[])
- {
- //vid_set_mode(DM_640x480, PM_RGB565);
- pvr_init_defaults();
- Player* Asian = new Player();
- int done = 0;
- while(!done)
- {
- Asian->TakeInput();
- //Tyler->PrepScene();
- Asian->DrawScene();
- MAPLE_FOREACH_BEGIN(MAPLE_FUNC_CONTROLLER, cont_state_t, st)
- if (st->buttons & CONT_START)
- done = 1;
- MAPLE_FOREACH_END()
- }
- delete Asian;
- Asian = NULL;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement