123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include <tice.h>
- #include <graphx.h>
- #include <keypadc.h>
- #include <debug.h>
- #include <compression.h>
- #include "gfx/main_gfx.h"
- #include "lib/vector.h"
- #include "lib/sprite.h"
- #include "lib/object.h"
- float scale = 3.0;
- int frameskip = 10;
- void log(char* msg){
- dbg_sprintf(dbgout, "[TBP] %s\n", msg);
- }
- int main(void){
- kb_key_t arrows;
- int max_width = LCD_WIDTH;
- int max_height = LCD_HEIGHT;
- int frame = 0;
- size_t i;
- Object* object;
- Object* player = new_Object(0, 0);
- Vector* objects = new_Vector(1, sizeof(Object), &free_Object);
- Vector* sprites = new_Vector(22, sizeof(Sprite), &free_Sprite);
- sprites->consume(sprites, new_Sprite(bm1_width, bm1_height, bm1_compressed));
- sprites->consume(sprites, new_Sprite(bm2_width, bm2_height, bm2_compressed));
- sprites->consume(sprites, new_Sprite(bm3_width, bm3_height, bm3_compressed));
- sprites->consume(sprites, new_Sprite(bm4_width, bm4_height, bm4_compressed));
- sprites->consume(sprites, new_Sprite(bm5_width, bm5_height, bm5_compressed));
- sprites->consume(sprites, new_Sprite(bm6_width, bm6_height, bm6_compressed));
- sprites->consume(sprites, new_Sprite(bm7_width, bm7_height, bm7_compressed));
- sprites->consume(sprites, new_Sprite(bm8_width, bm8_height, bm8_compressed));
- sprites->consume(sprites, new_Sprite(bm9_width, bm9_height, bm9_compressed));
- sprites->consume(sprites, new_Sprite(bm10_width, bm10_height, bm10_compressed));
- sprites->consume(sprites, new_Sprite(bm11_width, bm11_height, bm11_compressed));
- sprites->consume(sprites, new_Sprite(bm12_width, bm12_height, bm12_compressed));
- sprites->consume(sprites, new_Sprite(bm13_width, bm13_height, bm13_compressed));
- sprites->consume(sprites, new_Sprite(bm14_width, bm14_height, bm14_compressed));
- sprites->consume(sprites, new_Sprite(bm15_width, bm15_height, bm15_compressed));
- sprites->consume(sprites, new_Sprite(bm16_width, bm16_height, bm16_compressed));
- sprites->consume(sprites, new_Sprite(bm17_width, bm17_height, bm17_compressed));
- sprites->consume(sprites, new_Sprite(bm18_width, bm18_height, bm18_compressed));
- sprites->consume(sprites, new_Sprite(bm19_width, bm19_height, bm19_compressed));
- sprites->consume(sprites, new_Sprite(bm20_width, bm20_height, bm20_compressed));
- sprites->consume(sprites, new_Sprite(bm21_width, bm21_height, bm21_compressed));
- sprites->consume(sprites, new_Sprite(bm22_width, bm22_height, bm22_compressed));
- if(!objects->push(objects, player)){
- log("Unable to add player to stack");
- free_Vector(objects);
- free_Object(player);
- return 1;
- }
- free_Object(player);
- player = objects->get(objects, 0);
- player->sprite = sprites->get(sprites, 0);
- log("Get max sizes");
- max_width -= player->sprite->data->width * scale;
- max_height -= player->sprite->data->height * scale;
- log("Set scale");
- player->scale.x = scale;
- player->scale.y = scale;
- log("Start graphics");
- gfx_Begin();
- gfx_SetPalette(main_palette, sizeof_main_palette, 0);
- gfx_SetDrawBuffer();
- log("Main loop");
- do{
- player->sprite = sprites->get(sprites, 0);
- kb_Scan();
- arrows = kb_Data[7];
- if(arrows & kb_Down){
- if(player->y < max_height){
- player->y++;
- if(frame > 2){
- player->sprite = sprites->get(sprites, 2);
- }else{
- player->sprite = sprites->get(sprites, 4);
- }
- }
- }else if(arrows & kb_Up){
- if(player->y > 0){
- player->y--;
- if(frame > 2){
- player->sprite = sprites->get(sprites, 18);
- }else{
- player->sprite = sprites->get(sprites, 20);
- }
- }
- }
- if(arrows & kb_Right){
- if(player->x < max_width){
- player->x++;
- if(frame > 2){
- player->sprite = sprites->get(sprites, 10);
- }else{
- player->sprite = sprites->get(sprites, 12);
- }
- }
- }else if(arrows & kb_Left){
- if(player->x > 0){
- player->x--;
- if(frame > 2){
- player->sprite = sprites->get(sprites, 6);
- }else{
- player->sprite = sprites->get(sprites, 8);
- }
- }
- }
- gfx_FillScreen(0);
- for(i = 0; i < objects->count(objects); i++){
- object = objects->get(objects, i);
- object->draw(object);
- }
- gfx_BlitBuffer();
- frame++;
- if(frame > frameskip){
- frame = 0;
- }
- }while (! (kb_Data[6] & kb_Clear));
- log("Freeing sprites stack");
- free_Vector(sprites);
- player->sprite = NULL;
- log("Freeing objects stack");
- free_Vector(objects);
- log("End graphics");
- gfx_End();
- log("Done");
- return 0;
- }
|