Browse Source

More attempts to get llvm working

Nathaniel van Diepen 3 years ago
parent
commit
3732a18e34
7 changed files with 29 additions and 34 deletions
  1. 1 1
      makefile
  2. 8 1
      src/lib/object.c
  3. 2 1
      src/lib/object.h
  4. 6 2
      src/lib/scene.c
  5. 5 23
      src/main.c
  6. 6 5
      src/main.h
  7. 1 1
      src/objects/player.c

+ 1 - 1
makefile

@@ -27,5 +27,5 @@ bin/clibs.8xg:
 		 https://github.com/CE-Programming/libraries/releases/download/v8.8/clibs.8xg \
 		 -O bin/clibs.8xg
 
-emulator: bin/clibs.8xg
+emulator: debug bin/clibs.8xg
 	CEmu -a bin/clibs.8xg -s bin/${NAME}.8xp --launch ${NAME}

+ 8 - 1
src/lib/object.c

@@ -34,17 +34,24 @@ void Object_draw(Object* self){
     }
 }
 
-void Object_load(Object* self){}
+void Object_load(Object* self){
+    Object_log("Loading object");
+}
 
 void free_Object(Object* self){
     Object_log("Freeing object");
     free_Sprite(self->sprite);
+    if(self->data != NULL && self->data_size > 0){
+        free(self->data);
+    }
     free(self);
 }
 
 Object* new_Object(int x, int y){
     Object* self = (Object*)malloc(sizeof(Object));
     Object_log("Creating object");
+    self->data_size = 0;
+    self->data = NULL;
     self->id = id_counter++;
     self->x = x;
     self->y = y;

+ 2 - 1
src/lib/object.h

@@ -17,7 +17,8 @@ struct Object {
     int y;
     Scale scale;
     Sprite* sprite;
-    struct Scene* scene;
+    void* data;
+    size_t data_size;
 
     int (*height)(Object*);
     int (*width)(Object*);

+ 6 - 2
src/lib/scene.c

@@ -46,12 +46,12 @@ void Scene_draw(Scene* self){
 }
 
 void Scene_load(Scene* self){
+    Scene_log("Loading scene");
     int i;
     Object* object;
     Vector* objects = self->objects;
     for(i = 0; i < objects->count(objects); i++){
         object = objects->get(objects, i);
-        object->scene = self;
         object->load(object);
     }
 }
@@ -66,20 +66,24 @@ void free_Scene(struct Scene* self){
 }
 
 Scene* new_Scene(char* name){
+    dbg_sprintf(dbgout, "[Scene %s] Creating scene\n", name);
     Scene* self = (Scene*)malloc(sizeof(Scene));
     if(current_scene != NULL){
         free_Scene(current_scene);
     }
     current_scene = self;
     self->name = name;
-    Scene_log("Creating scene");
+    Scene_log("Adding objects");
     self->objects = new_Vector(0, sizeof(Object), (vc_vector_deleter*)&free_Object);
+    Scene_log("Adding sprites");
     self->sprites = new_Vector(0, sizeof(Sprite), (vc_vector_deleter*)&free_Sprite);
+    Scene_log("Creating methods");
     self->add_object = &Scene_add_object;
     self->add_sprite = &Scene_add_sprite;
     self->update = &Scene_update;
     self->draw = &Scene_draw;
     self->load = &Scene_load;
+    Scene_log("Scene created");
     return self;
 }
 

+ 5 - 23
src/main.c

@@ -1,6 +1,7 @@
 #include <graphx.h>
 #include <keypadc.h>
 #include <compression.h>
+#include <debug.h>
 
 #include "gfx/main_gfx.h"
 #include "main.h"
@@ -10,7 +11,7 @@ int main(void){
     size_t i;
     Scene* scene = new_Scene("Main");
     Sprite* sprite;
-    Object* player;
+    Object* player = new_Player();
     Vector* objects = scene->objects;
     Vector* sprites = scene->sprites;
     if(!sprites->consume(sprites, new_Sprite(bm1_width, bm1_height, bm1_compressed)) ||
@@ -40,15 +41,14 @@ int main(void){
         free_Scene(scene);
         return 1;
     }
-
-    if(!objects->consume(objects, new_Player())){
-        log("Unable to add player to stack");
+    if(!objects->consume(objects, player)){
+        log("Unable to load objects");
         free_Scene(scene);
         return 1;
     }
     player = objects->get(objects, 0);
     if(player == NULL){
-        log("Unable to get player from stack");
+        log("Unable to get player");
         free_Scene(scene);
         return 1;
     }
@@ -59,28 +59,10 @@ int main(void){
         return 1;
     }
     player->sprite = sprite;
-    log("Get max sizes");
-
-    #ifdef RESIZE_SPRITES
-    log("Resizing sprites");
-    dbg_sprintf(dbgout, "[Player] %d x %d\n", sprite->data->width, sprite->data->height);
-    for(i = 0; i < sprites->count(sprites); i++){
-        sprite = sprites->get(sprites, i);
-        sprite->resize(sprite, sprite->data->width * SCALE, sprite->data->height * SCALE);
-    }
-    dbg_sprintf(dbgout, "[Player] %d x %d\n", player->sprite->data->width, player->sprite->data->height);
-    #else
-    player->scale.x = SCALE;
-    player->scale.y = SCALE;
-    MAX_WIDTH -= player->width(player);
-    MAX_HEIGHT -= player->height(player);
-    #endif
 
-    log("Start graphics");
     gfx_Begin();
     gfx_SetPalette(main_palette, sizeof_main_palette, 0);
     gfx_SetDrawBuffer();
-
     log("Main loop");
     scene->load(scene);
     do{

+ 6 - 5
src/main.h

@@ -5,16 +5,17 @@
 #include <debug.h>
 #include "lib/scene.h"
 
-#define WALK_SPEED 1;
-#define RUN_SPEED 3;
-#define SCALE 3.0;
+#define WALK_SPEED 1
+#define RUN_SPEED 3
+#define SCALE 3.0
+#undef NDEBUG
 // #define RESIZE_SPRITES
 
 //#define LOG_UPDATE
 //#define LOG_DRAW
 
 #define log(msg) dbg_sprintf(dbgout, "[TBP] %s\n", msg)
-static int MAX_WIDTH = LCD_WIDTH;
-static int MAX_HEIGHT = LCD_HEIGHT;
+#define MAX_WIDTH (LCD_WIDTH - (8 * SCALE))
+#define MAX_HEIGHT (LCD_HEIGHT - (16 * SCALE))
 
 #endif

+ 1 - 1
src/objects/player.c

@@ -6,7 +6,7 @@
 #define Player_log(msg) dbg_sprintf(dbgout, "[Object(Player) %d] %s\n", self->id, msg)
 
 void Player_update(Object* self){
-    Scene* scene = self->scene;
+    Scene* scene = current_Scene();
     Vector* sprites = scene->sprites;
     Sprite* sprite;
     kb_key_t arrows = kb_Data[7];