diff options
author | Simponic <loganthebean222@gmail.com> | 2020-08-11 22:13:56 -0600 |
---|---|---|
committer | Simponic <loganthebean222@gmail.com> | 2020-08-11 22:13:56 -0600 |
commit | 723f879f85f25c2d466146e08261e0ae993c72b6 (patch) | |
tree | 185f367c712554f92c14b0074503ff0667e098c3 /source/main.c | |
parent | e84e232f8d003f3cf3340517d8bf6b65ba430143 (diff) | |
download | geometry-dash-gba-723f879f85f25c2d466146e08261e0ae993c72b6.tar.gz geometry-dash-gba-723f879f85f25c2d466146e08261e0ae993c72b6.zip |
Added basic camera controls
Diffstat (limited to 'source/main.c')
-rw-r--r-- | source/main.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/source/main.c b/source/main.c index eca5ea2..589db1a 100644 --- a/source/main.c +++ b/source/main.c @@ -8,23 +8,27 @@ #include "../include/velocity.h" #include "../include/playerObject.h" #include "../include/map.h" +#include "../include/camera.h" #include "../sprites/player.h" #include "../sprites/block.h" +#include "../sprites/spike.h" OBJ_ATTR obj_buffer[128]; OBJ_AFFINE *obj_aff_buffer= (OBJ_AFFINE*)obj_buffer; // Object affine-buffer int main() { + memcpy(pal_obj_mem, blockPal, blockPalLen); memcpy(&tile_mem[4][0], playerTiles, playerTilesLen); - memcpy(pal_obj_mem, playerPal, playerPalLen); memcpy(&tile_mem[4][4], blockTiles, blockTilesLen); + memcpy(&tile_mem[4][8], spikeTiles, spikeTilesLen); oam_init(obj_buffer, 128); REG_DISPCNT= DCNT_OBJ | DCNT_OBJ_1D; playerObject player = createPlayerObject(&obj_buffer[0], &obj_aff_buffer[0],0, 0); + player.camera = createCamera(10, 0); while(1) { vid_vsync(); @@ -34,22 +38,34 @@ int main() { player.vel.dy -= 9 << FIX_SHIFT; } - - updatePlayer(&player, 120); + updatePlayer(&player, 80); obj_affine_copy(obj_aff_mem, player.affine, 1); obj_copy(obj_mem, player.obj, 1); - OBJ_ATTR tileObject; - for (int i = 0; i < 7; i++) { - for (int j = 0; j < 12; j++){ - obj_set_attr(&tileObject, - ATTR0_SQUARE, - ATTR1_SIZE_16, - ATTR2_PALBANK(0) | 4 - ); - obj_set_pos(&tileObject, (j * 16), (i * 16)); - if (map1[i][j]) { - obj_copy(obj_mem + (17 * i + j) + 1, &tileObject, 1); + OBJ_ATTR blockObject, spikeObject; + obj_set_attr(&blockObject, + ATTR0_SQUARE, + ATTR1_SIZE_16, + ATTR2_PALBANK(0) | 4 + ); + obj_set_attr(&spikeObject, + ATTR0_SQUARE, + ATTR1_SIZE_16, + ATTR2_PALBANK(0) | 8 + ); + int x, y; + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 15; j++){ + x = (j * 16); + y = (i * 16); + applyCameraShift(&player.camera, &x, &y); + if (map1[i][j] == 1) { + obj_set_pos(&blockObject, x, y); + obj_copy(obj_mem + (17 * i + j) + 1, &blockObject, 1); + } + else if (map1[i][j] == 2) { + obj_set_pos(&spikeObject, x, y); + obj_copy(obj_mem + (17 * i + j) + 1, &spikeObject, 1); } } } |