aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/tasks.json2
-rw-r--r--src/demo.c74
-rw-r--r--src/ppusim/input.c1
3 files changed, 54 insertions, 23 deletions
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 8404cfa..53a235e 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -54,7 +54,7 @@
"args": [ "" ],
},
"command": "make",
- "args": [ "compile_commands.json" ],
+ "args": [ "compile_commands" ],
"type": "shell"
},
{
diff --git a/src/demo.c b/src/demo.c
index 95347cb..baaf73d 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -1,18 +1,12 @@
#include <math.h>
#include "demo.h"
-#include "input.h"
#include "entity.h"
+#include "input.h"
#include "ppu/ppu.h"
-#include "engine/maths.h"
-#include "engine/camera.h"
-#include "engine/entity.h"
-#include "engine/draw_screen.h"
-#include "engine/player_controller.h"
-#include "engine/sprite_controller.h"
-
-
+#define HH_DEMO_BALL_COUNT 1
+hh_s_ppu_loc_fam_entry g_hh_demo_balls[HH_DEMO_BALL_COUNT];
hh_s_entity_player g_hh_player_1 = {
.pos_x = 31000, // 0b0000 0001 0011 0110
@@ -38,26 +32,64 @@ uint8_t g_hh_data_send[3];
int g_hh_tile_x;
int g_hh_tile_y;
-typedef struct {
- vec2 pos;
- uint8_t idx;
-}hh_s_tiles;
-
-
-hh_entity hh_g_player, hh_g_player_new;
void hh_demo_setup() {
+ // load sprites
+ hh_ppu_update_sprite(0, HH_DBG_SPRITE_BALL);
+ hh_ppu_update_sprite(1, HH_DBG_SPRITE_CHECKERBOARD);
+
+ // background pattern
+ hh_ppu_update_color(0, 1, (hh_ppu_rgb_color_t){0x4, 0x4, 0x4});
+ for (unsigned i = 0; i < HH_PPU_BG_CANVAS_TILES_H * HH_PPU_BG_CANVAS_TILES_V; i++) {
+ hh_ppu_update_background(i, (hh_s_ppu_loc_bam_entry){
+ .horizontal_flip = false,
+ .vertical_flip = false,
+ .palette_index = 0,
+ .tilemap_index = 1,
+ });
+ }
- hh_setup_palettes();
- hh_setup_screen();
-
+ // cool colors
+ hh_ppu_update_color(1, 1, (hh_ppu_rgb_color_t){0xf, 0x0, 0xf});
+ hh_ppu_update_color(2, 1, (hh_ppu_rgb_color_t){0xf, 0xf, 0xf});
+ hh_ppu_update_color(3, 1, (hh_ppu_rgb_color_t){0xf, 0x0, 0x0});
+ hh_ppu_update_color(4, 1, (hh_ppu_rgb_color_t){0x0, 0xf, 0xf});
+ hh_ppu_update_color(5, 1, (hh_ppu_rgb_color_t){0x0, 0x0, 0xf});
+
+ // balls
+ for (unsigned i = 0; i < HH_DEMO_BALL_COUNT; i++) {
+ g_hh_demo_balls[i].horizontal_flip = false;
+ g_hh_demo_balls[i].vertical_flip = false;
+ g_hh_demo_balls[i].palette_index = i + 1;
+ g_hh_demo_balls[i].tilemap_index = 0;
+ }
}
void hh_demo_loop(unsigned long frame) {
+ hh_player_movement();
+ // input testing (no hitbox stuff)
+ // g_hh_player_1.pos_x += ((-1 * g_hh_controller_p1.dpad_left) + (1 * g_hh_controller_p1.dpad_right)) * g_hh_player_1.speed; // -1 = L || 1 == R
+ // g_hh_player_1.pos_y += ((-1 * g_hh_controller_p1.dpad_up) + (1 * g_hh_controller_p1.dpad_down)) * g_hh_player_1.speed; // -1 = D || 1 == U
+
+
+ // adjust map size
+ g_hh_pos_x = g_hh_player_1.pos_x / 100;
+ g_hh_pos_y = g_hh_player_1.pos_y / 100;
+
+
- // hh_player_movement();
- hh_player_actions();
+ // update player sprite on ppu
+ g_hh_demo_balls[0].position_x = g_hh_pos_x;
+ g_hh_demo_balls[0].position_y = g_hh_pos_y;
+ hh_ppu_update_foreground(0, g_hh_demo_balls[0]);
+ // set background pattern position
+ hh_ppu_update_aux((hh_s_ppu_loc_aux){
+ .bg_shift_x = (frame / 2) % HH_PPU_SPRITE_WIDTH,
+ .bg_shift_y = (frame / 8) % HH_PPU_SPRITE_HEIGHT,
+ .fg_fetch = 0,
+ .sysreset = 0,
+ });
}
// void sendData(uint8_t address, uint16_t data) {
diff --git a/src/ppusim/input.c b/src/ppusim/input.c
index 5323fb1..08bc382 100644
--- a/src/ppusim/input.c
+++ b/src/ppusim/input.c
@@ -12,5 +12,4 @@ void hh_input_read() {
g_hh_controller_p1.dpad_down = kb[SDL_SCANCODE_S];
g_hh_controller_p1.dpad_left = kb[SDL_SCANCODE_A];
g_hh_controller_p1.dpad_right = kb[SDL_SCANCODE_D];
- g_hh_controller_p1.button_primary = kb[SDL_SCANCODE_SPACE];
}