From 6093a6996bb372a5a70308698eebd56e47beef64 Mon Sep 17 00:00:00 2001 From: sardap Date: Mon, 22 Mar 2021 21:01:04 +1100 Subject: [PATCH 01/12] made spawn_obstacles --- assets/title_screen/tsBackgroundAgg.png | Bin 405 -> 409 bytes assets/title_screen/tsBeach.png | Bin 13409 -> 13409 bytes assets/title_screen/tsCity.png | Bin 17472 -> 17472 bytes assets/title_screen/tsEmpty.png | Bin 6951 -> 6951 bytes assets/title_screen/tsLava.png | Bin 6848 -> 6848 bytes assets/title_screen/tsTitleText.png | Bin 13965 -> 13965 bytes assets/title_screen/tsWater.png | Bin 6912 -> 6912 bytes source/gen.c | 116 ++++++++++-------------- source/gen.h | 7 ++ source/player.c | 2 +- source/scenes/main_game.c | 5 +- source/scenes/main_game.h | 4 +- 12 files changed, 59 insertions(+), 75 deletions(-) diff --git a/assets/title_screen/tsBackgroundAgg.png b/assets/title_screen/tsBackgroundAgg.png index b1ab934c3cfffe88f54bfae882007f74e7b7a365..bbe61d1ed8137ced21b3eddd0b42e28e694ba5c3 100644 GIT binary patch delta 382 zcmV-^0fGLN1DOMmB!6H@L_t(|ob1leYf=FK!13=(d-kwbq!?6}pn4@FSQoV}5(Sn; z6di(u=nzo^9_kR7Sc*j$*bl*eK}11@W#lEnlM*FO#uzdfGUpHnn>aU6-^S3l|6|+d zFZk$>eb6)|f0a}!1%isENjR6_e{Y${u5Ij4;iv(uZ%$(VC4W(IHAr5b06sXh;%`U$^yM(oCQe&=$Ct`k^VJ#>-N zyB~?7jzaMd?%)~fO$Xz#B>wG2KL6d%`PnbTUw%S9>><*XSlo9COEt&yjGYV0A>IYA zP&0e+D0-adZg+F>`*DVeID4Z%`F5wulU0>y`y-B(AzKGBY1u`#>1ALFpyaP1*t3#$ zuN7wWh>uI{w^XtT(ls0Nz7nrYAs!g#kPY{-=|!xi$8_8we%v}sd890`9&FhRZ1})h c00030|51;4S%k1o8vp+3!BPt;emWqZMLJmX&9fAT6B0&c`q=s2&5e3pAi-_VW2vWK!SVAupy%B^&2t&uv2gY9AhGW0|AKN~E z!DqcNkb{pk_SVjz>pBm{!L7p4jS!rKue0;qv~M7q-pBT>4u3XRG|I(1&N(x?{a%{o z5~@Yxe}9_HsRaK_EtGznm*3kAjZwb+{LA4(2e4Rec%9qmXuIhBeor`dh3x%1n52%x z^dvKjHcp&8f_1I5fHlgiVF8BX7A5L)_7H+lnWt;p1`*N}Qf zWUNQyPmfk8OmiT&hcCkb@$*4a#y#qm<6Lt+;^MKLC~q^o+j4;yA3QiedLi-25TD;C z`5%Vtf1=6razS=nRwYt#$*Zew$=<#to~kBi>m6xU(^9(R5PvNxtQ6+8z^V@{2LJ&7 Y|I>?nZ6aoLjQ{`u07*qoM6N<$f_XEutpET3 diff --git a/assets/title_screen/tsBeach.png b/assets/title_screen/tsBeach.png index 36e6ce1758ac3ef1abe1a0878e9c990ed135d59b..8b076d1a20a66b76ff2bcdeffccb03601aa27833 100644 GIT binary patch delta 63 zcmaEu@i1e;cQzBD_jbQpH~!sbAYvF|XkcY(WMycfZD3$!U~n}q%y#l|LnVGBu_es! L8aMwi%wz%pC>|FV delta 63 zcmaEu@i1e;cQ$>i;=MDUZv4B=K*S)#z}U*f$jaDK+rYrez@SclrtIY7hD!V<=2oT_ Q5Ha?5U;c0YVVKDT04eJiwg3PC diff --git a/assets/title_screen/tsCity.png b/assets/title_screen/tsCity.png index b66c51cb696b12caebdccb4311d25b4c8f7e3de2..9188b85f3fbbfaddf2e6c91b07458899f49b4800 100644 GIT binary patch delta 98 zcmX@m!FZs9aRDPIvnZE|(0jXIt(!R+I~`mNLktb9OpUAzEwl{`tPBjU#)a83Ffgc= oxJHzuB$lLF<>sekrd2W+85kMr8W`&up=(&e{H}5Hb;nF50E?#_iU0rr delta 98 zcmX@m!FZs9aRDPIqc{({Z2Y>^+RdDdoer)BAqK`)KxAaBZD3$!VBq=gULgYmgKCLu wL`h0wNvc(DeoAIqC4-THk)f`Ep{|i}h@p{{fw`5DB}7BVSz*r2*BvvN0B7PG#Q*>R diff --git a/assets/title_screen/tsEmpty.png b/assets/title_screen/tsEmpty.png index 2497312acb71b4a4478858f26da42ddee1f3c8b7..5f2a6c3c6c4893607917685a5cc5d41732562706 100644 GIT binary patch delta 71 zcmZ2(w%lyOBo0w76QTEZzgjoWdMhqs7-DE(Wol$)XrXOjU}a!%H7?9{@@xqiQ6qGj OCCu*{H=mJ+W&!|CHWqLI delta 71 zcmZ2(w%lyOBo0At3B~92ys;Z+y%iTR2r)3WGBB|+w9qy%ure@E-!)Be@@xqiQA6_( XLqjVg6Dwn5h>Yw^WA)8vB%+xB2$d8- diff --git a/assets/title_screen/tsLava.png b/assets/title_screen/tsLava.png index f83e5e15b5b5ecdfc2703efa3e92ad346b0fcfa3..9e3febec28b463a6d2266a5cb8595a3fc1408cd4 100644 GIT binary patch delta 60 zcmX?LdcbtTbT$*A_jbQpH_q)A7cw-kGBvU?w9qy%ure^X8W(0e*-Ao*4@qnZ^SjMi H5@AdLe9aRA delta 60 zcmX?LdcbtTbT%ml@rI^{8|QY53mF(&85>y{8EP9CSQ!|wSq6WbY$c(@XJiKCLBy)3 LiEhr42x9^OLw^xz diff --git a/assets/title_screen/tsTitleText.png b/assets/title_screen/tsTitleText.png index e084adedba8fbcd717240b428b1c7f883e2eb0e4..ec4dc4f03501c52448ad57e3187e88a21ebb2f86 100644 GIT binary patch delta 78 zcmeCp?aiIg&m+oZBJ|$wS1SX9>io$I)I~RLur(Gj3^6pYGBvU?w9qy%ure^X8W(0e TnbAZRLt+W@yT;8%Cecg)(jpf! delta 78 zcmeCp?aiIg&m+R3Wqta+cq9XZ>io$I)I~RLur(Gj2r)3SGBLL@G}ksTure?R@B02{ cGNXwsNW#R*#K_9j5+boBPp@vXkx4WY0N1S-mjD0& diff --git a/assets/title_screen/tsWater.png b/assets/title_screen/tsWater.png index b9816b448cef99486de209bb8572bad4547718ef..e778a2dcf4ceda0149efa7ba5358ef8bb99cf01f 100644 GIT binary patch delta 101 zcmZoLYcQKIpPS1>=)K*qRt5&XcauK|h;H1!P~6op#L&RX)X2)vLfgQ=%D~`iT$n8b s1A}UbYeY#(Vo9o1ZhlH;S|x*#fsvuEfw8U;x`rjp?;1BRm562n0CLG5xc~qF delta 101 zcmZoLYcQKIpPN~O=g;(oCJYRG?)2i Cj2^-O diff --git a/source/gen.c b/source/gen.c index b0a6dc6..d3db73f 100644 --- a/source/gen.c +++ b/source/gen.c @@ -15,6 +15,12 @@ #include "assets/building3TileSet.h" #include "assets/building4TileSet.h" +static t_spawn_info building_0 = {75, 75, 75}; +static t_spawn_info building_1 = {75, 75, 75}; +static t_spawn_info building_2 = {75, 75, 75}; +static t_spawn_info building_3 = {75, 75, 75}; +static t_spawn_info building_4 = {00, 75, 75}; + static int _lava_0_idx; static int _building_0_idx; static int _building_1_idx; @@ -76,6 +82,40 @@ static FIXED level_to_screen(int level_x) return (level_x * 8) - fx2int(_bg_pos_x); } +static bool spawn_enemy_biscuit(int start_x, int width, int y) +{ + FIXED att_x = level_to_screen(start_x + width / 2); + + int ent_idx = allocate_ent(1); + create_toast_enemy( + &_ents[ent_idx], ent_idx, + int2fx(att_x), int2fx(y * 8 - 32)); + + return true; +} + +static bool spawn_speed_up_token(int start_x, int width, int y) +{ + FIXED att_x = level_to_screen(start_x) + gba_rand_range(0, width * 8); + + int ent_idx = allocate_ent(1); + create_speed_up( + &_ents[ent_idx], ent_idx, + int2fx(att_x), int2fx(y * 8 - 10)); + + return true; +} + +static void spawn_obstacles(int start_x, int width, int y, t_spawn_info *info) +{ + if (width > 3 && gba_rand_range(1, 100) > 100 - info->lava_chance) + spawn_lava(width, start_x, y); + else if (gba_rand_range(1, 100) > 100 - info->enemy_0_chance) + spawn_enemy_biscuit(start_x, width, y); + else if (gba_rand_range(1, 100) > 100 - info->speed_up_token) + spawn_speed_up_token(start_x, width, y); +} + void load_building_0(int cb) { _building_0_idx = allocate_bg_tile_idx(building0TileSetTilesLen / 64 - 1); @@ -111,21 +151,11 @@ int spawn_building_0(int start_x) set_level_at(x, y, BUILDING_0_BRICK + tile); set_level_col(x, y, BUILDING_0_BRICK + tile); - if (width > 3 && gba_rand() % 4 == 0) - { - spawn_lava(width, x_base, y); - return width; - } - - FIXED att_x = level_to_screen(start_x + width / 2); //early return to avoid that awesome wraping bug - if (att_x < 0 || gba_rand() % 100 > 75) + if (level_to_screen(start_x + width) < 0) return width; - int ent_idx = allocate_ent(1); - create_toast_enemy( - &_ents[ent_idx], ent_idx, - int2fx(att_x), int2fx(y * 8 - 32)); + spawn_obstacles(start_x, width, y, &building_0); return width; } @@ -166,21 +196,7 @@ int spawn_building_1(int start_x) set_level_at(x, y, BUILDING_1_RIGHT_ROOF + tile); set_level_col(x, y + 1, BUILDING_1_RIGHT_BOT + tile); - if (width > 3 && gba_rand() % 4 == 0) - { - spawn_lava(width, x_base, y); - return width; - } - - FIXED att_x = level_to_screen(start_x + width / 2); - //early return to avoid that awesome wraping bug - if (att_x < 0 || gba_rand() % 100 > 75) - return width; - - int ent_idx = allocate_ent(1); - create_toast_enemy( - &_ents[ent_idx], ent_idx, - int2fx(att_x), int2fx(y * 8 - 32)); + spawn_obstacles(start_x, width, y, &building_1); return width; } @@ -238,21 +254,7 @@ int spawn_building_2(int start_x) set_level_at(x, y, BUILDING_2_RIGHT_ROOF + tile); set_level_col(x, y + 1, BUILDING_2_RIGHT_MIDDLE + tile); - if (width > 3 && gba_rand() % 6 == 0) - { - spawn_lava(width, x_base, y); - return width; - } - - FIXED att_x = level_to_screen(start_x + width / 2); - //early return to avoid that awesome wraping bug - if (att_x < 0 || gba_rand() % 100 > 75) - return width; - - int ent_idx = allocate_ent(1); - create_toast_enemy( - &_ents[ent_idx], ent_idx, - int2fx(att_x), int2fx(y * 8 - 32)); + spawn_obstacles(start_x, width, y, &building_2); return width; } @@ -301,21 +303,7 @@ int spawn_building_3(int start_x) set_level_at(x, y + 1, BUILDING_3_ROOF_RIGHT + tile); set_level_col(x, y + 2, BUILDING_3_RIGHT + tile); - if (width > 3 && gba_rand() % 6 == 0) - { - spawn_lava(width, x_base, y); - return width; - } - - FIXED att_x = level_to_screen(start_x) + gba_rand_range(0, width * 8); - //early return to avoid that awesome wraping bug - if (att_x < 0) - return width; - - int ent_idx = allocate_ent(1); - create_speed_up( - &_ents[ent_idx], ent_idx, - int2fx(att_x), int2fx(y * 8 - 10)); + spawn_obstacles(start_x, width, y, &building_3); return width; } @@ -335,7 +323,7 @@ int spawn_building_4(int start_x) { int x_base = start_x; int x; - int y = gba_rand_range(CITY_BUILDING_Y_TILE_SPAWN - 6, CITY_BUILDING_Y_TILE_SPAWN - 3); + int y = gba_rand_range(CITY_BUILDING_Y_TILE_SPAWN - 5, CITY_BUILDING_Y_TILE_SPAWN - 3); int tile = _building_4_idx / 2; //LEFT SECTION @@ -415,17 +403,7 @@ int spawn_building_4(int start_x) set_level_at(x, y, BUILDING_4_ROOF_RIGHT + tile); set_level_col(x, y + 1, BUILDING_4_RIGHT_BOT + tile); - FIXED att_x = level_to_screen(start_x + width / 2); - //early return to avoid that awesome wraping bug - if (att_x < 0 || gba_rand() % 100 > 50) - return width; - - int ent_idx = allocate_ent(1); - create_toast_enemy( - &_ents[ent_idx], ent_idx, - int2fx(att_x), int2fx(y * 8 - 32)); - - return width; + spawn_obstacles(start_x, width, y, &building_4); return width; } diff --git a/source/gen.h b/source/gen.h index 7824ffd..f533368 100644 --- a/source/gen.h +++ b/source/gen.h @@ -86,6 +86,13 @@ #define LAVA_TILE_RIGHT LAVA_OFFSET + 2 #define LAVA_TILE_END LAVA_TILE_RIGHT +typedef struct t_spawn_info +{ + int lava_chance; + int enemy_0_chance; + int speed_up_token; +} t_spawn_info; + int get_lava_tile_offset(); int get_buildings_tile_offset(); int get_buildings_tile_offset_end(); diff --git a/source/player.c b/source/player.c index e855392..7049b41 100644 --- a/source/player.c +++ b/source/player.c @@ -244,7 +244,7 @@ void update_player() } //Check colsion with other - if (_speed_up <= 0 && _player.ent_cols & (TYPE_SPEED_UP)) + if (_speed_up <= 0 && _player.ent_cols & (TYPE_SPEED_UP) && _scroll_x > 0) { _speed_up = 120; _scroll_x += 0.5f * FIX_SCALEF; diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index ea1d9ea..d5a6d4c 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -274,14 +274,11 @@ static void update(void) if (check_game_over()) { - for (int i = 0; i < SB_SIZE; i++) - { - se_mem[MG_CITY_SB][i] = 0x0; - } scene_set(title_screen); return; } + _scroll_x = clamp(_scroll_x, 0, MG_MAX_SCROLL_SPEED); _bg_pos_x += _scroll_x; _bg_0_scroll += _scroll_x; _bg_2_scroll += _scroll_x; diff --git a/source/scenes/main_game.h b/source/scenes/main_game.h index ad22926..8874c52 100644 --- a/source/scenes/main_game.h +++ b/source/scenes/main_game.h @@ -1,6 +1,8 @@ #ifndef MAIN_GAME_H #define MAIN_GAME_H +#include "../common.h" + #define MG_SHARED_CB 0 #define MG_TEXT_SB 22 #define MG_CITY_SB 30 @@ -12,7 +14,7 @@ #define MG_BG_X 64 #define MG_BG_X_PIX (int)(MG_BG_X * 8 * (FIX_SCALE)) -#include "../common.h" +#define MG_MAX_SCROLL_SPEED (int)(10 * FIX_SCALE) typedef enum mg_mode_t { From 86199698bd1402851dd8ec2601b23818af930a47 Mon Sep 17 00:00:00 2001 From: sardap Date: Mon, 22 Mar 2021 21:03:56 +1100 Subject: [PATCH 02/12] renamed att_idx to ent_idx --- source/enemy.c | 4 ++-- source/ent.h | 4 ++-- source/gun.c | 4 ++-- source/obstacles.c | 8 ++++---- source/player.c | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/enemy.c b/source/enemy.c index 125f60d..df4526a 100644 --- a/source/enemy.c +++ b/source/enemy.c @@ -39,7 +39,7 @@ void create_toast_enemy(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->h = 16; ent->vx = 0; ent->vy = 0; - ent->att_idx = att_idx; + ent->ent_idx = att_idx; obj_set_attr( get_ent_att(ent), @@ -76,7 +76,7 @@ void update_enemy(ent_t *ent) mmEffectEx(&damage); } - free_ent(ent->att_idx, 1); + free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; return; } diff --git a/source/ent.h b/source/ent.h index 2a2a226..39649de 100644 --- a/source/ent.h +++ b/source/ent.h @@ -53,7 +53,7 @@ typedef enum typedef struct ent_t { int tid; - int att_idx; + int ent_idx; FIXED x, y; FIXED vx, vy; int w, h; @@ -103,7 +103,7 @@ void free_ent_visual(int idx, int count); inline OBJ_ATTR *get_ent_att(ent_t *e) { - return &_obj_buffer[e->att_idx]; + return &_obj_buffer[e->ent_idx]; } FIXED translate_x(ent_t *e); diff --git a/source/gun.c b/source/gun.c index 2e90de2..14da297 100644 --- a/source/gun.c +++ b/source/gun.c @@ -27,7 +27,7 @@ void create_bullet( ent_t *bul, int att_idx, bullet_type_t type, FIXED x, FIXED y, FIXED vx, FIXED vy, int flip) { - bul->att_idx = att_idx; + bul->ent_idx = att_idx; bul->bullet_type = type; bul->x = x; bul->w = 5; @@ -58,7 +58,7 @@ void update_bullet(ent_t *bul) if (fx2int(bul->x) > SCREEN_WIDTH || fx2int(bul->x) < 0 || hit_x || bul->ent_cols & (TYPE_ENEMY)) { - free_ent(bul->att_idx, 1); + free_ent(bul->ent_idx, 1); bul->ent_type = TYPE_NONE; return; } diff --git a/source/obstacles.c b/source/obstacles.c index 8f78d9b..406ac5e 100644 --- a/source/obstacles.c +++ b/source/obstacles.c @@ -30,7 +30,7 @@ void create_speed_up(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->h = 0; ent->vx = 0; ent->vy = 0; - ent->att_idx = att_idx; + ent->ent_idx = att_idx; obj_set_attr( get_ent_att(ent), @@ -50,7 +50,7 @@ void create_speed_line(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->h = 8; ent->vx = _scroll_x + -3.5f * FIX_SCALEF; ent->vy = 0; - ent->att_idx = att_idx; + ent->ent_idx = att_idx; obj_set_attr( get_ent_att(ent), @@ -64,7 +64,7 @@ void update_speed_up(ent_t *ent) { if (ent->x + ent->w < 0 || (ent->ent_cols & (TYPE_PLAYER) && !speed_up_active())) { - free_ent(ent->att_idx, 1); + free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; int count = gba_rand_range(3, 7); int line_ent = allocate_ent(count); @@ -90,7 +90,7 @@ void update_speed_line(ent_t *ent) { if (ent->x < GBA_WIDTH * FIX_SCALE && !speed_up_active()) { - free_ent(ent->att_idx, 1); + free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; return; } diff --git a/source/player.c b/source/player.c index 7049b41..3a57ee2 100644 --- a/source/player.c +++ b/source/player.c @@ -62,7 +62,7 @@ void init_player() load_player_tile(); //Reserved for player - _player.att_idx = 0; + _player.ent_idx = 0; _player_anime_cycle = 0; _player_life = PLAYER_LIFE_START; @@ -85,7 +85,7 @@ void init_player() void unload_player() { - free_ent(_player.att_idx, 1); + free_ent(_player.ent_idx, 1); free_obj_tile_idx(_tile_start_idx, 4); } From 00d51e5dc692e1bcb1745a92ab4b2e63c74dad6c Mon Sep 17 00:00:00 2001 From: sardap Date: Tue, 23 Mar 2021 07:19:57 +1100 Subject: [PATCH 03/12] refactor so att are allocated every frame --- assets/title_screen/tsBackgroundAgg.png | Bin 409 -> 405 bytes source/common.c | 41 +++++++++++++--------- source/enemy.c | 11 ++---- source/ent.c | 44 +++++++++++++++++------- source/ent.h | 13 +++---- source/gun.c | 11 ++---- source/level.c | 1 + source/life_display.c | 24 ++++++++----- source/obstacles.c | 22 ++++-------- source/player.c | 35 +++++++------------ source/player.h | 3 ++ source/scenes/main_game.c | 6 ++-- 12 files changed, 109 insertions(+), 102 deletions(-) diff --git a/assets/title_screen/tsBackgroundAgg.png b/assets/title_screen/tsBackgroundAgg.png index bbe61d1ed8137ced21b3eddd0b42e28e694ba5c3..c5ee092fd3d452761f35574bfb4b7f33282b779f 100644 GIT binary patch delta 378 zcmV-=0fqjV1C;}iB!65a@2wx?rkd;34O zeg1-v*u-}t@FKsyeI{QhQ_WO(@HS5P z&RuG`7}sxJV{@VLfo^w*6iAVuNpouI0?FDR5+6;3JZ)@}nbzVantl@DeddYrTTNn> zElg~zv-&zpEE3?v5uLeu8SAC{Jl#J}=YJ7p-x5FN8$_KN-*0IGJAr90uaU6-^S3l|6|+d zFZk$>eb6)|f0a}!1%isENjR6_e{Y${u5Ij4;iv(uZ%$(VC4W(IHAr5b06sXh;%`U$^yM(oCQe&=$Ct`k^VJ#>-N zyB~?7jzaMd?%)~fO$Xz#B>wG2KL6d%`PnbTUw%S9>><*XSlo9COEt&yjGYV0A>IYA zP&0e+D0-adZg+F>`*DVeID4Z%`F5wulU0>y`y-B(AzKGBY1u`#>1ALFpyaP1*t3#$ zuN7wWh>uI{w^XtT(ls0Nz7nrYAs!g#kPY{-=|!xi$8_8we%v}sd890`9&FhRZ1})h c00030|51;4S%k1o8vpvy = 0; ent->ent_idx = att_idx; - obj_set_attr( - get_ent_att(ent), - ATTR0_TALL | ATTR0_8BPP, ATTR1_SIZE_16x8, - ATTR2_PRIO(1) | ATTR2_ID(_enemy_tile_idx)); - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); + ent->att.attr0 = ATTR0_TALL | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_16x8; + ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(_enemy_tile_idx); } void step_enemy_global() @@ -108,6 +105,4 @@ void update_enemy(ent_t *ent) ent_move_x(ent, ent->vx); //Take back scroll for next loop ent->vx += _scroll_x; - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); } diff --git a/source/ent.c b/source/ent.c index 3e7c2ba..87c8e18 100644 --- a/source/ent.c +++ b/source/ent.c @@ -8,12 +8,13 @@ #include "obstacles.h" #include "gun.h" #include "enemy.h" +#include "player.h" +#include "life_display.h" OBJ_ATTR _obj_buffer[128] = {}; -FIXED _bg_pos_x = 0; ent_t _ents[ENT_COUNT]; -static int _att_count; -static int _free_obj; + +static int _att_count = 0; static int _allocated_objs[128]; @@ -63,8 +64,6 @@ int allocate_ent(int count) void free_ent(int idx, int count) { - obj_set_attr(&_obj_buffer[idx], ATTR0_HIDE, 0, 0); - if (idx >= _att_count) { _att_count -= count; @@ -74,16 +73,33 @@ void free_ent(int idx, int count) { _allocated_objs[i] = 0; } - - _free_obj++; } -//THIS SHOULD ONLY BE CALLED ONCE A LOOP -int att_count() +void copy_ents_to_oam() { - int result = _free_obj + (_att_count + 1); - _free_obj = 0; - return result; + int obj_idx = 0; + + ent_t *ent; + + for (int i = 0; i < ENT_COUNT; i++) + { + ent = &_ents[i]; + + if (ent->ent_type == TYPE_NONE) + continue; + + _obj_buffer[obj_idx] = ent->att; + obj_set_pos(&_obj_buffer[obj_idx], fx2int(ent->x), fx2int(ent->y)); + + ++obj_idx; + } + + for (int i = obj_idx; i < 128; i++) + { + obj_set_attr(&_obj_buffer[i], ATTR0_HIDE, 0, 0); + } + + oam_copy(oam_mem, _obj_buffer, 128); } FIXED translate_x(ent_t *e) @@ -256,6 +272,10 @@ void update_ents() case TYPE_SPEED_LINE: update_speed_line(&_ents[i]); break; + case TYPE_SCORE: + case TYPE_LIFE: + update_life_display(get_player_life()); + break; } } diff --git a/source/ent.h b/source/ent.h index 39649de..64d7f38 100644 --- a/source/ent.h +++ b/source/ent.h @@ -23,6 +23,8 @@ typedef enum ent_types_t TYPE_ENEMY = 4, TYPE_SPEED_UP = 8, TYPE_SPEED_LINE = 16, + TYPE_SCORE = 32, + TYPE_LIFE = 64 } ent_types_t; typedef enum ent_visual_types_t @@ -52,13 +54,13 @@ typedef enum typedef struct ent_t { - int tid; int ent_idx; FIXED x, y; FIXED vx, vy; int w, h; int ent_cols; ent_types_t ent_type; + OBJ_ATTR att; //Ent speifc vars union @@ -98,14 +100,11 @@ void init_obj_atts(); int allocate_ent(int count); void free_ent(int idx, int count); +void copy_ents_to_oam(); + int allocate_ent_visual(int count); void free_ent_visual(int idx, int count); -inline OBJ_ATTR *get_ent_att(ent_t *e) -{ - return &_obj_buffer[e->ent_idx]; -} - FIXED translate_x(ent_t *e); FIXED translate_y(ent_t *e); @@ -127,8 +126,6 @@ inline int ent_level_collision_at(ent_t *e, FIXED vx, FIXED vy) e->h); } -int att_count(); - void push_up_from_ground(ent_t *e); bool did_hit_x(ent_t *e, FIXED dx); diff --git a/source/gun.c b/source/gun.c index 14da297..82fc2db 100644 --- a/source/gun.c +++ b/source/gun.c @@ -43,12 +43,9 @@ void create_bullet( break; } - obj_set_attr( - get_ent_att(bul), - ATTR0_SQUARE | ATTR0_8BPP, ATTR1_SIZE_8x8 || flip ? ATTR1_HFLIP : 0, - ATTR2_ID(_gun_0_tile)); - - obj_set_pos(get_ent_att(bul), fx2int(bul->x), fx2int(bul->y)); + bul->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + bul->att.attr1 = ATTR1_SIZE_8x8 || flip ? ATTR1_HFLIP : 0; + bul->att.attr2 = ATTR2_ID(_gun_0_tile); } void update_bullet(ent_t *bul) @@ -62,6 +59,4 @@ void update_bullet(ent_t *bul) bul->ent_type = TYPE_NONE; return; } - - obj_set_pos(get_ent_att(bul), fx2int(bul->x), fx2int(bul->y)); } \ No newline at end of file diff --git a/source/level.c b/source/level.c index 4b7f7b2..cac2fca 100644 --- a/source/level.c +++ b/source/level.c @@ -7,6 +7,7 @@ #include "gun.h" u16 _level[LEVEL_SIZE] = {}; +FIXED _bg_pos_x; void set_level_col(int x, int y, u16 tile) { diff --git a/source/life_display.c b/source/life_display.c index 88741bc..6b522d1 100644 --- a/source/life_display.c +++ b/source/life_display.c @@ -10,19 +10,27 @@ #include "assets/lifeAmmount1.h" static int _life_tile_start_idx; -static int _att_life_idx; +static int _ent_life_idx; void load_life_display() { _life_tile_start_idx = allocate_obj_tile_idx(4); update_life_display(PLAYER_LIFE_START); - _att_life_idx = allocate_ent(1); - obj_set_attr( - &_obj_buffer[_att_life_idx], - ATTR0_SQUARE | ATTR0_8BPP, ATTR1_SIZE_16x16, - ATTR2_PALBANK(0) | ATTR2_PRIO(0) | ATTR2_ID(_life_tile_start_idx)); - obj_set_pos(&_obj_buffer[_att_life_idx], GBA_WIDTH - 16, 0); + _ent_life_idx = allocate_ent(1); + + ent_t *ent = &_ents[_ent_life_idx]; + + ent->ent_type = TYPE_LIFE; + + ent->vx = 0; + ent->x = (GBA_WIDTH - 16) * FIX_SCALE; + ent->vy = 0; + ent->y = 0; + + ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_16x16; + ent->att.attr2 = ATTR2_PALBANK(0) | ATTR2_PRIO(0) | ATTR2_ID(_life_tile_start_idx); } void update_life_display(int life) @@ -43,5 +51,5 @@ void update_life_display(int life) void unload_life_display() { free_obj_tile_idx(_life_tile_start_idx, 4); - free_ent(_att_life_idx, 1); + free_ent(_ent_life_idx, 1); } diff --git a/source/obstacles.c b/source/obstacles.c index 406ac5e..5aad115 100644 --- a/source/obstacles.c +++ b/source/obstacles.c @@ -32,12 +32,9 @@ void create_speed_up(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->vy = 0; ent->ent_idx = att_idx; - obj_set_attr( - get_ent_att(ent), - ATTR0_SQUARE | ATTR0_8BPP, ATTR1_SIZE_8x8, - ATTR2_PRIO(1) | ATTR2_ID(_speed_up_tile_idx)); - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); + ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_8x8; + ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(_speed_up_tile_idx); } void create_speed_line(ent_t *ent, int att_idx, FIXED x, FIXED y) @@ -52,12 +49,9 @@ void create_speed_line(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->vy = 0; ent->ent_idx = att_idx; - obj_set_attr( - get_ent_att(ent), - ATTR0_WIDE | ATTR0_8BPP, ATTR1_SIZE_32x8, - ATTR2_PRIO(2) | ATTR2_ID(_speed_lines_idx)); - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); + ent->att.attr0 = ATTR0_WIDE | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_32x8; + ent->att.attr2 = ATTR2_PRIO(2) | ATTR2_ID(_speed_lines_idx); } void update_speed_up(ent_t *ent) @@ -82,8 +76,6 @@ void update_speed_up(ent_t *ent) ent_move_x_dirty(ent); //Take back scroll for next loop ent->vx += _scroll_x; - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); } void update_speed_line(ent_t *ent) @@ -96,6 +88,4 @@ void update_speed_line(ent_t *ent) } ent_move_x_dirty(ent); - - obj_set_pos(get_ent_att(ent), fx2int(ent->x), fx2int(ent->y)); } \ No newline at end of file diff --git a/source/player.c b/source/player.c index 3a57ee2..0aae65e 100644 --- a/source/player.c +++ b/source/player.c @@ -66,7 +66,6 @@ void init_player() _player_anime_cycle = 0; _player_life = PLAYER_LIFE_START; - _player.tid = _tile_start_idx; _player.facing = FACING_RIGHT; _player.jump_power = (int)(2.0f * (FIX_SCALE)); _player.w = 16; @@ -77,10 +76,9 @@ void init_player() _player.ent_type = TYPE_PLAYER; - obj_set_attr( - get_ent_att(&_player), - ATTR0_SQUARE | ATTR0_8BPP, ATTR1_SIZE_16x16, - ATTR2_PALBANK(0) | _player.tid); + _player.att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + _player.att.attr1 = ATTR1_SIZE_16x16; + _player.att.attr2 = ATTR2_PALBANK(0) | ATTR2_ID(_tile_start_idx); } void unload_player() @@ -105,13 +103,8 @@ static void apply_player_damage(int ammount) //Setup moasic effect _player_mos.x = 32; - obj_set_attr( - get_ent_att(&_player), - ATTR0_SQUARE | ATTR0_8BPP | ATTR0_MOSAIC, - get_ent_att(&_player)->attr1, - get_ent_att(&_player)->attr2); + _player.att.attr0 = _player.att.attr0 | ATTR0_MOSAIC; - update_life_display(_player_life); //Half a second _invincible_frames = 60; } @@ -158,11 +151,8 @@ void update_player() if (_player_mos.x-- <= 0) { - obj_set_attr( - get_ent_att(&_player), - ATTR0_SQUARE | ATTR0_8BPP, - get_ent_att(&_player)->attr1, - get_ent_att(&_player)->attr2); + //Turn off moasic + _player.att.attr0 ^= ATTR0_MOSAIC; } } @@ -170,12 +160,12 @@ void update_player() if (_player.facing == FACING_RIGHT && key_hit(KEY_LEFT)) { _player.facing = FACING_LEFT; - get_ent_att(&_player)->attr1 ^= ATTR1_HFLIP; + _player.att.attr1 ^= ATTR1_HFLIP; } else if (_player.facing == FACING_LEFT && key_hit(KEY_RIGHT)) { _player.facing = FACING_RIGHT; - get_ent_att(&_player)->attr1 ^= ATTR1_HFLIP; + _player.att.attr1 ^= ATTR1_HFLIP; } // Player movement @@ -338,12 +328,11 @@ void update_player() { _player.y = PLAYER_SPAWN_Y; } +} - //What the fuck does this do? - // increment/decrement starting tile with R/L - _player.tid += bit_tribool(key_hit(KEY_START), KI_R, KI_L); - - obj_set_pos(get_ent_att(&_player), fx2int(_player.x), fx2int(_player.y)); +int get_player_life() +{ + return _player_life; } int speed_up_active() diff --git a/source/player.h b/source/player.h index 6b5d233..360d1e2 100644 --- a/source/player.h +++ b/source/player.h @@ -15,6 +15,9 @@ void unload_player(); void update_player(); +int get_player_life(); + + //This really shouldn't be here int speed_up_active(); diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index d5a6d4c..aa710b7 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -210,6 +210,7 @@ static void show(void) _next_building_spawn = 0; _scroll_x = 0; + _bg_pos_x = 0; _building_spawn_x = 0; _state = MG_S_STARTING; @@ -217,10 +218,10 @@ static void show(void) _player.move_state = MOVEMENT_AIR; load_gun_0_tiles(); - //These should be moved into level speifc stuff load_enemy_toast(); load_number_tiles(); load_speed_up(); + init_score(); while (_building_spawn_x < LEVEL_WIDTH / 2 + LEVEL_WIDTH / 5) @@ -321,8 +322,7 @@ static void update(void) update_player(); update_ents(); - - oam_copy(oam_mem, _obj_buffer, att_count()); + copy_ents_to_oam(); switch (_state) { From 4df4c6a40bf7bc11acec59dc18a39db2af05aecf Mon Sep 17 00:00:00 2001 From: sardap Date: Tue, 23 Mar 2021 07:42:05 +1100 Subject: [PATCH 04/12] added new visual_ents which are like ents but only visual --- source/ent.c | 72 +++++++++++++++++++++++++++++-------------- source/ent.h | 15 ++++++--- source/life_display.c | 12 +++----- source/main.c | 2 +- 4 files changed, 66 insertions(+), 35 deletions(-) diff --git a/source/ent.c b/source/ent.c index 87c8e18..2b91f88 100644 --- a/source/ent.c +++ b/source/ent.c @@ -12,32 +12,38 @@ #include "life_display.h" OBJ_ATTR _obj_buffer[128] = {}; -ent_t _ents[ENT_COUNT]; +ent_t _ents[ENT_COUNT] = {}; +visual_ent_t _visual_ents[ENT_VISUAL_COUNT] = {}; -static int _att_count = 0; +static int _allocated_ents[ENT_COUNT]; +static int _allocated_visual_ents[ENT_COUNT]; -static int _allocated_objs[128]; - -void init_obj_atts() +void init_all_ents() { oam_init(_obj_buffer, 128); - for (int i = 0; i < 128; i++) + for (int i = 0; i < ENT_COUNT; i++) + { + _allocated_ents[i] = 0; + } + //Player? maybe I don't know + _allocated_ents[0] = 1; + + for (int i = 0; i < ENT_VISUAL_COUNT; i++) { - _allocated_objs[i] = 0; + _allocated_visual_ents[i] = 0; } - _allocated_objs[0] = 1; } -int allocate_ent(int count) +static int allocate(int *ary, int length, int count) { - for (int i = 0; i < 128;) + for (int i = 0; i < length;) { bool found = true; - for (int j = i; j - i < count && j < 128; j++) + for (int j = i; j - i < count && j < length; j++) { - if (_allocated_objs[j]) + if (ary[j]) { found = false; break; @@ -48,11 +54,7 @@ int allocate_ent(int count) { for (int j = i; j - i < count; j++) { - _allocated_objs[j] = 1; - } - if (i > _att_count) - { - _att_count = i + count; + ary[j] = 1; } return i; } @@ -62,16 +64,29 @@ int allocate_ent(int count) return -1; } +int allocate_ent(int count) +{ + return allocate(_allocated_ents, ENT_COUNT, count); +} + void free_ent(int idx, int count) { - if (idx >= _att_count) + for (int i = idx; i < idx + count; i++) { - _att_count -= count; + _allocated_ents[i] = 0; } +} +int allocate_visual_ent(int count) +{ + return allocate(_allocated_visual_ents, ENT_VISUAL_COUNT, count); +} + +void free_visual_ent(int idx, int count) +{ for (int i = idx; i < idx + count; i++) { - _allocated_objs[i] = 0; + _allocated_ents[i] = 0; } } @@ -79,11 +94,9 @@ void copy_ents_to_oam() { int obj_idx = 0; - ent_t *ent; - for (int i = 0; i < ENT_COUNT; i++) { - ent = &_ents[i]; + ent_t *ent = &_ents[i]; if (ent->ent_type == TYPE_NONE) continue; @@ -94,6 +107,19 @@ void copy_ents_to_oam() ++obj_idx; } + for (int i = 0; i < ENT_VISUAL_COUNT; i++) + { + visual_ent_t *ent = &_visual_ents[i]; + + if (ent->type == TYPE_VISUAL_NONE) + continue; + + _obj_buffer[obj_idx] = ent->att; + obj_set_pos(&_obj_buffer[obj_idx], fx2int(ent->x), fx2int(ent->y)); + + ++obj_idx; + } + for (int i = obj_idx; i < 128; i++) { obj_set_attr(&_obj_buffer[i], ATTR0_HIDE, 0, 0); diff --git a/source/ent.h b/source/ent.h index 64d7f38..e32a646 100644 --- a/source/ent.h +++ b/source/ent.h @@ -13,7 +13,7 @@ //Making this above 90 causes linking errors (maybe running out of ram? that's not how ram works?) #define ENT_COUNT 25 -#define ENT_VISUAL_COUNT 5 +#define ENT_VISUAL_COUNT 30 typedef enum ent_types_t { @@ -31,6 +31,7 @@ typedef enum ent_visual_types_t { TYPE_VISUAL_NONE = 0, TYPE_VISUAL_SPEED_LINE = 1, + TYPE_VISUAL_LIFE = 2, } ent_visual_types_t; typedef enum movement_state_t @@ -85,21 +86,27 @@ typedef struct ent_t } ent_t; -typedef struct ent_visual_t +typedef struct visual_ent_t { + int ent_visual_idx; FIXED x, y; FIXED vx, vy; ent_visual_types_t type; -} ent_visual_t; + OBJ_ATTR att; +} visual_ent_t; def OBJ_ATTR _obj_buffer[128]; def ent_t _player; def ent_t _ents[ENT_COUNT]; +def visual_ent_t _visual_ents[ENT_VISUAL_COUNT]; -void init_obj_atts(); +void init_all_ents(); int allocate_ent(int count); void free_ent(int idx, int count); +int allocate_visual_ent(int count); +void free_visual_ent(int idx, int count); + void copy_ents_to_oam(); int allocate_ent_visual(int count); diff --git a/source/life_display.c b/source/life_display.c index 6b522d1..77d0444 100644 --- a/source/life_display.c +++ b/source/life_display.c @@ -10,22 +10,20 @@ #include "assets/lifeAmmount1.h" static int _life_tile_start_idx; -static int _ent_life_idx; +static int _v_ent_life_idx; void load_life_display() { _life_tile_start_idx = allocate_obj_tile_idx(4); update_life_display(PLAYER_LIFE_START); - _ent_life_idx = allocate_ent(1); + _v_ent_life_idx = allocate_visual_ent(1); - ent_t *ent = &_ents[_ent_life_idx]; + visual_ent_t *ent = &_visual_ents[_v_ent_life_idx]; - ent->ent_type = TYPE_LIFE; + ent->type = TYPE_VISUAL_LIFE; - ent->vx = 0; ent->x = (GBA_WIDTH - 16) * FIX_SCALE; - ent->vy = 0; ent->y = 0; ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; @@ -51,5 +49,5 @@ void update_life_display(int life) void unload_life_display() { free_obj_tile_idx(_life_tile_start_idx, 4); - free_ent(_ent_life_idx, 1); + free_ent(_v_ent_life_idx, 1); } diff --git a/source/main.c b/source/main.c index 74d4765..3360e14 100644 --- a/source/main.c +++ b/source/main.c @@ -40,7 +40,7 @@ int main() #ifdef DEBUG init_debug(); #endif - init_obj_atts(); + init_all_ents(); init_graphics(); From bec92bd31efdd06c45c69b8cc7ff9bd4a38e5d8e Mon Sep 17 00:00:00 2001 From: sardap Date: Tue, 23 Mar 2021 17:39:57 +1100 Subject: [PATCH 05/12] moved the speed lines and whatnot to visual ents --- source/common.c | 19 +++++++++--------- source/ent.c | 41 ++++++++++++++++++++++++++++++--------- source/ent.h | 19 +++++++++++++++++- source/life_display.c | 2 +- source/obstacles.c | 37 ++++++++++++++++------------------- source/obstacles.h | 4 ++-- source/scenes/main_game.c | 1 + 7 files changed, 81 insertions(+), 42 deletions(-) diff --git a/source/common.c b/source/common.c index 439fe12..6e41c1d 100644 --- a/source/common.c +++ b/source/common.c @@ -5,6 +5,7 @@ #include "debug.h" #include "numbers.h" +#include "ent.h" static int _frame_count; FIXED _scroll_x; @@ -66,18 +67,18 @@ int gba_rand() void init_score() { _score = 0; - _score_ent_start = allocate_ent(SCORE_DIGITS); + _score_ent_start = allocate_visual_ent(SCORE_DIGITS); for (int i = 0; i < SCORE_DIGITS; i++) { - _ents[_score_ent_start + i].ent_type = TYPE_LIFE; + _visual_ents[_score_ent_start + i].type = TYPE_VISUAL_SCORE; - _ents[_score_ent_start + i].att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; - _ents[_score_ent_start + i].att.attr1 = ATTR1_SIZE_8x8; - _ents[_score_ent_start + i].att.attr2 = ATTR2_PALBANK(0) | ATTR2_PRIO(0) | ATTR2_ID(get_number_tile_start()); + _visual_ents[_score_ent_start + i].x = int2fx(8 * i); + _visual_ents[_score_ent_start + i].y = 0; - _ents[_score_ent_start + i].x = int2fx(8 * i); - _ents[_score_ent_start + i].y = 0; + _visual_ents[_score_ent_start + i].att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + _visual_ents[_score_ent_start + i].att.attr1 = ATTR1_SIZE_8x8; + _visual_ents[_score_ent_start + i].att.attr2 = ATTR2_PALBANK(0) | ATTR2_PRIO(0) | ATTR2_ID(get_number_tile_start()); } } @@ -107,7 +108,7 @@ static void update_score() i_score /= 10; - _ents[_score_ent_start + i].att.attr2 = + _visual_ents[_score_ent_start + i].att.attr2 = ATTR2_PALBANK(0) | ATTR2_PRIO(0) | ATTR2_ID(get_number_tile_start() + offset * 2); @@ -116,7 +117,7 @@ static void update_score() void clear_score() { - free_ent(_score_ent_start, SCORE_DIGITS); + free_visual_ent(_score_ent_start, SCORE_DIGITS); } void add_score(int x) diff --git a/source/ent.c b/source/ent.c index 2b91f88..00fd1e7 100644 --- a/source/ent.c +++ b/source/ent.c @@ -16,7 +16,7 @@ ent_t _ents[ENT_COUNT] = {}; visual_ent_t _visual_ents[ENT_VISUAL_COUNT] = {}; static int _allocated_ents[ENT_COUNT]; -static int _allocated_visual_ents[ENT_COUNT]; +static int _allocated_visual_ents[ENT_VISUAL_COUNT]; void init_all_ents() { @@ -25,6 +25,7 @@ void init_all_ents() for (int i = 0; i < ENT_COUNT; i++) { _allocated_ents[i] = 0; + _ents[i].ent_type = TYPE_NONE; } //Player? maybe I don't know _allocated_ents[0] = 1; @@ -32,6 +33,7 @@ void init_all_ents() for (int i = 0; i < ENT_VISUAL_COUNT; i++) { _allocated_visual_ents[i] = 0; + _visual_ents[i].type = TYPE_VISUAL_NONE; } } @@ -120,12 +122,12 @@ void copy_ents_to_oam() ++obj_idx; } - for (int i = obj_idx; i < 128; i++) + for (int i = obj_idx; i < ENT_COUNT + ENT_VISUAL_COUNT; i++) { obj_set_attr(&_obj_buffer[i], ATTR0_HIDE, 0, 0); } - oam_copy(oam_mem, _obj_buffer, 128); + oam_copy(oam_mem, _obj_buffer, ENT_COUNT + ENT_VISUAL_COUNT); } FIXED translate_x(ent_t *e) @@ -244,6 +246,16 @@ bool apply_gravity(ent_t *e) return false; } +void visual_ent_move_x(visual_ent_t *e) +{ + e->x += e->vx; +} + +void visual_ent_move_Y(visual_ent_t *e) +{ + e->y += e->vy; +} + void update_ents() { //Add player to ent array @@ -295,15 +307,26 @@ void update_ents() case TYPE_SPEED_UP: update_speed_up(&_ents[i]); break; - case TYPE_SPEED_LINE: - update_speed_line(&_ents[i]); + } + } + + step_enemy_global(); +} + +void update_visual_ents() +{ + for (int i = 0; i < ENT_VISUAL_COUNT; i++) + { + switch (_visual_ents[i].type) + { + case TYPE_VISUAL_SPEED_LINE: + update_speed_line(&_visual_ents[i]); break; - case TYPE_SCORE: - case TYPE_LIFE: + case TYPE_VISUAL_LIFE: update_life_display(get_player_life()); break; + case TYPE_VISUAL_SCORE: + break; } } - - step_enemy_global(); } \ No newline at end of file diff --git a/source/ent.h b/source/ent.h index e32a646..d399898 100644 --- a/source/ent.h +++ b/source/ent.h @@ -15,6 +15,14 @@ #define ENT_COUNT 25 #define ENT_VISUAL_COUNT 30 +/* + These need to be ^2 for col + Player colides with bullet and enemy + 00000000 00000000 00000000 00000110 + + enemy cloides with player and bullet + 00000000 00000000 00000000 00000101 +*/ typedef enum ent_types_t { TYPE_NONE = 0, @@ -27,11 +35,14 @@ typedef enum ent_types_t TYPE_LIFE = 64 } ent_types_t; +//These don't need to be bit alligend since we never do cols with them typedef enum ent_visual_types_t { TYPE_VISUAL_NONE = 0, TYPE_VISUAL_SPEED_LINE = 1, TYPE_VISUAL_LIFE = 2, + TYPE_VISUAL_SCORE = 3, + TYPE_SPPED_LINE = 4, } ent_visual_types_t; typedef enum movement_state_t @@ -89,6 +100,7 @@ typedef struct ent_t typedef struct visual_ent_t { int ent_visual_idx; + int ent_idx; FIXED x, y; FIXED vx, vy; ent_visual_types_t type; @@ -109,7 +121,7 @@ void free_visual_ent(int idx, int count); void copy_ents_to_oam(); -int allocate_ent_visual(int count); +int allocate_visual_ent(int count); void free_ent_visual(int idx, int count); FIXED translate_x(ent_t *e); @@ -143,8 +155,13 @@ bool did_hit_y(ent_t *e, FIXED dy); bool ent_move_y(ent_t *e, FIXED dy); void ent_move_y_dirty(ent_t *e); +void visual_ent_move_x(visual_ent_t *e); +void visual_ent_move_Y(visual_ent_t *e); + bool apply_gravity(ent_t *e); void update_ents(); +void update_visual_ents(); + #endif \ No newline at end of file diff --git a/source/life_display.c b/source/life_display.c index 77d0444..d0dd9b1 100644 --- a/source/life_display.c +++ b/source/life_display.c @@ -49,5 +49,5 @@ void update_life_display(int life) void unload_life_display() { free_obj_tile_idx(_life_tile_start_idx, 4); - free_ent(_v_ent_life_idx, 1); + free_visual_ent(_v_ent_life_idx, 1); } diff --git a/source/obstacles.c b/source/obstacles.c index 5aad115..438dfe7 100644 --- a/source/obstacles.c +++ b/source/obstacles.c @@ -24,7 +24,6 @@ void create_speed_up(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->ent_type = TYPE_SPEED_UP; ent->x = x; - //This is inccorect so it fails fast for the col dect ent->w = 0; ent->y = y; ent->h = 0; @@ -34,24 +33,22 @@ void create_speed_up(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; ent->att.attr1 = ATTR1_SIZE_8x8; - ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(_speed_up_tile_idx); + ent->att.attr2 = ATTR2_PRIO(2) | ATTR2_ID(_speed_up_tile_idx); } -void create_speed_line(ent_t *ent, int att_idx, FIXED x, FIXED y) +void create_speed_line(visual_ent_t *v_ent, int ent_idx, FIXED x, FIXED y) { - ent->ent_type = TYPE_SPEED_LINE; + v_ent->type = TYPE_VISUAL_SPEED_LINE; - ent->x = x; - ent->w = 32; - ent->y = y; - ent->h = 8; - ent->vx = _scroll_x + -3.5f * FIX_SCALEF; - ent->vy = 0; - ent->ent_idx = att_idx; + v_ent->vx = _scroll_x + -3.5f * FIX_SCALEF; + v_ent->x = x; + v_ent->vy = 0; + v_ent->y = y; + v_ent->ent_idx = ent_idx; - ent->att.attr0 = ATTR0_WIDE | ATTR0_8BPP; - ent->att.attr1 = ATTR1_SIZE_32x8; - ent->att.attr2 = ATTR2_PRIO(2) | ATTR2_ID(_speed_lines_idx); + v_ent->att.attr0 = ATTR0_WIDE | ATTR0_8BPP; + v_ent->att.attr1 = ATTR1_SIZE_32x8; + v_ent->att.attr2 = ATTR2_PRIO(0) | ATTR2_ID(_speed_lines_idx); } void update_speed_up(ent_t *ent) @@ -61,11 +58,11 @@ void update_speed_up(ent_t *ent) free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; int count = gba_rand_range(3, 7); - int line_ent = allocate_ent(count); + int line_ent = allocate_visual_ent(count); for (int i = 0; i < count; i++) { create_speed_line( - &_ents[line_ent + i], line_ent + i, + &_visual_ents[line_ent + i], line_ent + i, GBA_WIDTH * FIX_SCALE + gba_rand_range(0, GBA_WIDTH * FIX_SCALE), int2fx(gba_rand_range(0, GBA_HEIGHT))); } @@ -78,14 +75,14 @@ void update_speed_up(ent_t *ent) ent->vx += _scroll_x; } -void update_speed_line(ent_t *ent) +void update_speed_line(visual_ent_t *ent) { if (ent->x < GBA_WIDTH * FIX_SCALE && !speed_up_active()) { - free_ent(ent->ent_idx, 1); - ent->ent_type = TYPE_NONE; + free_visual_ent(ent->ent_idx, 1); + ent->type = TYPE_VISUAL_NONE; return; } - ent_move_x_dirty(ent); + visual_ent_move_x(ent); } \ No newline at end of file diff --git a/source/obstacles.h b/source/obstacles.h index 4c7cd01..bf3d1da 100644 --- a/source/obstacles.h +++ b/source/obstacles.h @@ -6,9 +6,9 @@ void load_speed_up(); void create_speed_up(ent_t *ent, int att_idx, FIXED x, FIXED y); -void create_speed_line(ent_t *ent, int att_idx, FIXED x, FIXED y); +void create_speed_line(visual_ent_t *ent, int att_idx, FIXED x, FIXED y); void update_speed_up(ent_t *ent); -void update_speed_line(ent_t *ent); +void update_speed_line(visual_ent_t *ent); #endif \ No newline at end of file diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index aa710b7..3d36283 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -322,6 +322,7 @@ static void update(void) update_player(); update_ents(); + update_visual_ents(); copy_ents_to_oam(); switch (_state) From 58b3a2a6d19b46c092a9802db8cfed05b6c84860 Mon Sep 17 00:00:00 2001 From: sardap Date: Tue, 23 Mar 2021 18:32:06 +1100 Subject: [PATCH 06/12] moved player ent data into player.c --- source/ent.h | 6 ------ source/player.c | 42 +++++++++++++++++++-------------------- source/player.h | 1 - source/scenes/main_game.c | 1 - 4 files changed, 21 insertions(+), 29 deletions(-) diff --git a/source/ent.h b/source/ent.h index d399898..819e937 100644 --- a/source/ent.h +++ b/source/ent.h @@ -30,9 +30,6 @@ typedef enum ent_types_t TYPE_BULLET = 2, TYPE_ENEMY = 4, TYPE_SPEED_UP = 8, - TYPE_SPEED_LINE = 16, - TYPE_SCORE = 32, - TYPE_LIFE = 64 } ent_types_t; //These don't need to be bit alligend since we never do cols with them @@ -80,9 +77,6 @@ typedef struct ent_t //Player struct { - movement_state_t move_state; - facing_t facing; - FIXED jump_power; }; //Bullet struct diff --git a/source/player.c b/source/player.c index 0aae65e..47bef80 100644 --- a/source/player.c +++ b/source/player.c @@ -36,6 +36,9 @@ static POINT _player_mos; static int _invincible_frames; static FIXED _player_speed = (int)(2.0f * (FIX_SCALE)); static int _speed_up; +static movement_state_t _move_state; +static facing_t _facing; +static FIXED _jump_power; ent_t _player = {}; @@ -66,8 +69,6 @@ void init_player() _player_anime_cycle = 0; _player_life = PLAYER_LIFE_START; - _player.facing = FACING_RIGHT; - _player.jump_power = (int)(2.0f * (FIX_SCALE)); _player.w = 16; _player.h = 16; @@ -79,6 +80,10 @@ void init_player() _player.att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; _player.att.attr1 = ATTR1_SIZE_16x16; _player.att.attr2 = ATTR2_PALBANK(0) | ATTR2_ID(_tile_start_idx); + + _facing = FACING_RIGHT; + _jump_power = (int)(2.0f * (FIX_SCALE)); + _move_state = MOVEMENT_AIR; } void unload_player() @@ -123,7 +128,7 @@ static void player_shoot() int att_idx = allocate_ent(1); FIXED vx, x; - if (_player.facing == FACING_RIGHT) + if (_facing == FACING_RIGHT) { vx = 2.5 * FIX_SCALE; x = _player.x + 16 * FIX_SCALE; @@ -137,7 +142,7 @@ static void player_shoot() create_bullet( &_ents[att_idx], att_idx, BULLET_TYPE_GUN_0, x, _player.y + 4 * FIX_SCALE, - vx, 0, _player.facing == FACING_LEFT); + vx, 0, _facing == FACING_LEFT); } void update_player() @@ -157,14 +162,14 @@ void update_player() } //Handles fliping the sprite if facing the other direction - if (_player.facing == FACING_RIGHT && key_hit(KEY_LEFT)) + if (_facing == FACING_RIGHT && key_hit(KEY_LEFT)) { - _player.facing = FACING_LEFT; + _facing = FACING_LEFT; _player.att.attr1 ^= ATTR1_HFLIP; } - else if (_player.facing == FACING_LEFT && key_hit(KEY_RIGHT)) + else if (_facing == FACING_LEFT && key_hit(KEY_RIGHT)) { - _player.facing = FACING_RIGHT; + _facing = FACING_RIGHT; _player.att.attr1 ^= ATTR1_HFLIP; } @@ -185,7 +190,7 @@ void update_player() } // Update velocity - switch (_player.move_state) + switch (_move_state) { case MOVEMENT_AIR: _player.vx /= 2; @@ -219,7 +224,7 @@ void update_player() { _player.vy -= LAVA_BOUNCE; _player_anime_cycle = PLAYER_AIR_CYCLE_COUNT; - _player.move_state = MOVEMENT_AIR; + _move_state = MOVEMENT_AIR; apply_player_damage(1); } //Enemy Damage @@ -243,15 +248,10 @@ void update_player() else if (_speed_up > 0) { _speed_up--; - if (_speed_up == 0) - { - _scroll_x -= 0.5f * FIX_SCALEF; - _player_speed == 0.25f * FIX_SCALEF; - } } //Handles player anime - switch (_player.move_state) + switch (_move_state) { case MOVEMENT_GROUNDED: if (abs(_player.vx) > _scroll_x) @@ -267,7 +267,7 @@ void update_player() if (key_hit(KEY_A)) { _player_anime_cycle = PLAYER_JUMP_TIME; - _player.move_state = MOVEMENT_JUMPING; + _move_state = MOVEMENT_JUMPING; } break; @@ -282,9 +282,9 @@ void update_player() } else if (_player_anime_cycle <= 0) { - _player.vy = -_player.jump_power; + _player.vy = -_jump_power; _player_anime_cycle = PLAYER_AIR_CYCLE_COUNT; - _player.move_state = MOVEMENT_AIR; + _move_state = MOVEMENT_AIR; dma3_cpy(&tile_mem[4][_tile_start_idx], whale_smallTiles, whale_smallTilesLen); } _player_anime_cycle--; @@ -293,7 +293,7 @@ void update_player() case MOVEMENT_AIR: if (hit_y) { - _player.move_state = MOVEMENT_LANDED; + _move_state = MOVEMENT_LANDED; _player_anime_cycle = PLAYER_LAND_TIME; } @@ -316,7 +316,7 @@ void update_player() else if (_player_anime_cycle <= 0) { dma3_cpy(&tile_mem[4][_tile_start_idx], whale_smallTiles, whale_smallTilesLen); - _player.move_state = MOVEMENT_GROUNDED; + _move_state = MOVEMENT_GROUNDED; } _player_anime_cycle--; break; diff --git a/source/player.h b/source/player.h index 360d1e2..c131c7b 100644 --- a/source/player.h +++ b/source/player.h @@ -17,7 +17,6 @@ void update_player(); int get_player_life(); - //This really shouldn't be here int speed_up_active(); diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index 3d36283..05e3998 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -215,7 +215,6 @@ static void show(void) _state = MG_S_STARTING; init_player(); - _player.move_state = MOVEMENT_AIR; load_gun_0_tiles(); load_enemy_toast(); From 69dd216fbf1b3127d363162f6b1a81ebf6d6f049 Mon Sep 17 00:00:00 2001 From: sardap Date: Tue, 23 Mar 2021 21:52:14 +1100 Subject: [PATCH 07/12] added enemy death anime --- .vscode/settings.json | 6 +- assets/enemy/enemyBisuctDeath00.psd | Bin 0 -> 23280 bytes assets/enemy/enemyBisuctDeath01.psd | Bin 0 -> 23422 bytes assets/enemy/enemyBisuctDeath02.psd | Bin 0 -> 23472 bytes assets/enemy/enemyBisuctDeath03.psd | Bin 0 -> 21062 bytes assets/title_screen/tsBackgroundAgg.png | Bin 405 -> 412 bytes source/anime.c | 23 ++++++- source/anime.h | 15 ++-- source/enemy.c | 88 +++++++++++++++++++----- source/enemy.h | 16 ++--- source/ent.c | 17 ++--- source/ent.h | 29 +++++--- source/gen.c | 2 +- source/obstacles.c | 6 +- source/player.c | 9 ++- source/scenes/game_intro.c | 2 +- source/scenes/main_game.c | 1 - 17 files changed, 152 insertions(+), 62 deletions(-) create mode 100644 assets/enemy/enemyBisuctDeath00.psd create mode 100644 assets/enemy/enemyBisuctDeath01.psd create mode 100644 assets/enemy/enemyBisuctDeath02.psd create mode 100644 assets/enemy/enemyBisuctDeath03.psd diff --git a/.vscode/settings.json b/.vscode/settings.json index 3fa70ac..b2a2310 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,7 +19,11 @@ "giwhale_air_0.h": "c", "ready.h": "c", "building3tileset.h": "c", - "tonc.h": "c" + "tonc.h": "c", + "player.h": "c", + "graphics.h": "c", + "enemybisuctdeath03.h": "c", + "anime.h": "c" }, "C_Cpp.errorSquiggles": "Disabled", "cSpell.words": [ diff --git a/assets/enemy/enemyBisuctDeath00.psd b/assets/enemy/enemyBisuctDeath00.psd new file mode 100644 index 0000000000000000000000000000000000000000..d4d59c7346bbdf80c3a50640fba99262f0c59477 GIT binary patch literal 23280 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 XBTWWeb2rVK5FqN4!l1i(6QW-NOLPwl literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBisuctDeath01.psd b/assets/enemy/enemyBisuctDeath01.psd new file mode 100644 index 0000000000000000000000000000000000000000..1261e5089b68b7f33cf47af7daa9eb9c88fce52f GIT binary patch literal 23422 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 Rm{%Y{)}@3=cjXFX{{}v~QQ80i literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBisuctDeath02.psd b/assets/enemy/enemyBisuctDeath02.psd new file mode 100644 index 0000000000000000000000000000000000000000..d97dc276dae5bbb472d4ea939ac800bd35a8166d GIT binary patch literal 23472 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 O9Wd)q!lJ9!A^Q)B1fLTC literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBisuctDeath03.psd b/assets/enemy/enemyBisuctDeath03.psd new file mode 100644 index 0000000000000000000000000000000000000000..695286a3047c0f2f2427dff345d1f72142c5fb3a GIT binary patch literal 21062 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 I)26-u0leB`0ssI2 literal 0 HcmV?d00001 diff --git a/assets/title_screen/tsBackgroundAgg.png b/assets/title_screen/tsBackgroundAgg.png index c5ee092fd3d452761f35574bfb4b7f33282b779f..a39d5958bb66a564669aaaa3c056b41dbef54215 100644 GIT binary patch delta 385 zcmV-{0e=3K1DpepB!6Q`L_t(|ob1k9OPT=y2H;m^ZbR5`urW5~uG}s*Hil!M?7$A< zPE0mojtLXS*u@SY1ws(s z&o6kSM46BLq}godG2|<3DwD1)a$<)(B>ALB#_e~w+^XaLvwznNg=75m-Nt|z<$%AJ z@820IGzg5X6#2$lLtmGNh3y0W|M{Flqm%q#`OEAs+0rQRS3E_IgUuao>IIQ9W#?6) z@1+)+drsJEE%>-z#pPHS@=ND&V{QsIM-Ylx5$P|(c>LfgDql@-xqYZgE<$rl24}?z z>x=6s<>nDjrh1W$gz&j%5Z}}esPz%3mI8RCxrRS$L1<_EI9F8S$8-cGgBQvCTS&a^ z{}_H)k3`}&ZjR|tuthPFGobEnH|}4#fYm*~wCTa(h63_bKiV=XD1R?NG-f0?38ZI% fQy(}A00960sDYzMhAQTp00000NkvXXu0mjfK3BI; delta 378 zcmV-=0fqjY1C;}iB!65a@2wx?rkd;34O zeg1-v*u-}t@FKsyeI{QhQ_WO(@HS5P z&RuG`7}sxJV{@VLfo^w*6iAVuNpouI0?FDR5+6;3JZ)@}nbzVantl@DeddYrTTNn> zElg~zv-&zpEE3?v5uLeu8SAC{Jl#J}=YJ7p-x5FN8$_KN-*0IGJAr90u -void step_anime( +void step_anime_bad( const unsigned int *anime[], int tile_len, int count, int *cycle, int tile_idx) { @@ -21,3 +21,24 @@ void step_anime( (*cycle) = count * 3; } } + +bool step_anime( + int *cycle, + const unsigned int *anime[], int count, + int tile_idx, int tile_len) +{ + dma3_cpy( + &tile_mem[4][tile_idx], + anime[(*cycle)], + tile_len); + + ++(*cycle); + + if ((*cycle) > count) + { + (*cycle) = 0; + return true; + } + + return false; +} \ No newline at end of file diff --git a/source/anime.h b/source/anime.h index 6e759ef..f08bef4 100644 --- a/source/anime.h +++ b/source/anime.h @@ -1,9 +1,16 @@ #ifndef ANIME_H #define ANIME_H -void step_anime( - const unsigned int *anime[], int tile_len, int count, - int *cycle, int tile_idx -); +#include + +void step_anime_bad( + const unsigned int *anime[], int tile_len, int count, + int *cycle, int tile_idx); + +//Returns true when the anime is complete +bool step_anime( + int *cycle, + const unsigned int *anime[], int count, + int tile_idx, int tile_len); #endif \ No newline at end of file diff --git a/source/enemy.c b/source/enemy.c index cf13b31..dd426e5 100644 --- a/source/enemy.c +++ b/source/enemy.c @@ -9,27 +9,29 @@ #include "anime.h" #include "graphics.h" #include "debug.h" +#include "ent.h" #include "assets/toast_enemy_idle_01.h" #include "assets/toast_enemy_idle_02.h" #include "assets/toast_enemy_idle_03.h" #include "assets/toast_enemy_idle_04.h" #include "assets/toast_enemy_idle_05.h" +#include "assets/enemyBisuctDeath00.h" +#include "assets/enemyBisuctDeath01.h" +#include "assets/enemyBisuctDeath02.h" +#include "assets/enemyBisuctDeath03.h" -const uint *enemy_toast_idle_cycle[] = { +const uint *enemy_biscut_idle_cycle[] = { toast_enemy_idle_01Tiles, toast_enemy_idle_01Tiles, toast_enemy_idle_02Tiles, toast_enemy_idle_03Tiles, toast_enemy_idle_04Tiles, toast_enemy_idle_05Tiles}; -static int _enemy_tile_idx; -static int _enemy_anime_cycle = 0; +const uint *enemy_biscut_death_cycle[] = { + enemyBisuctDeath00Tiles, + enemyBisuctDeath01Tiles, + enemyBisuctDeath02Tiles, + enemyBisuctDeath03Tiles}; -void load_enemy_toast() -{ - _enemy_tile_idx = allocate_obj_tile_idx(2); - dma3_cpy(&tile_mem[4][_enemy_tile_idx], toast_enemy_idle_01Tiles, toast_enemy_idle_01TilesLen); -} - -void create_toast_enemy(ent_t *ent, int att_idx, FIXED x, FIXED y) +void create_enemy_biscut(ent_t *ent, int att_idx, FIXED x, FIXED y) { ent->ent_type = TYPE_ENEMY; @@ -41,23 +43,26 @@ void create_toast_enemy(ent_t *ent, int att_idx, FIXED x, FIXED y) ent->vy = 0; ent->ent_idx = att_idx; + //Load tiles + ent->eb_tile_id = allocate_obj_tile_idx(2); + GRIT_CPY(&tile_mem[4][ent->eb_tile_id], toast_enemy_idle_01Tiles); + + ent->eb_anime_cycle = 0; + ent->att.attr0 = ATTR0_TALL | ATTR0_8BPP; ent->att.attr1 = ATTR1_SIZE_16x8; - ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(_enemy_tile_idx); + ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(ent->eb_tile_id); } -void step_enemy_global() +void update_enemy_biscut(ent_t *ent) { if (frame_count() % 2) { - step_anime( - enemy_toast_idle_cycle, toast_enemy_idle_01TilesLen, ENEMY_TOAST_IDLE_CYCLE, - &_enemy_anime_cycle, _enemy_tile_idx); + step_anime_bad( + enemy_biscut_idle_cycle, toast_enemy_idle_01TilesLen, ENEMY_BISCUT_IDLE_CYCLE, + &ent->eb_anime_cycle, ent->eb_tile_id); } -} -void update_enemy(ent_t *ent) -{ if (ent->x + ent->w < 0 || ent->ent_cols & (TYPE_BULLET)) { if (ent->ent_cols & (TYPE_BULLET)) @@ -71,8 +76,14 @@ void update_enemy(ent_t *ent) 127, }; mmEffectEx(&damage); + + int visual_ent_idx = allocate_visual_ent(1); + create_enemy_biscut_death( + &_visual_ents[visual_ent_idx], visual_ent_idx, + ent->x, ent->y); } + free_obj_tile_idx(ent->eb_tile_id, 2); free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; return; @@ -106,3 +117,44 @@ void update_enemy(ent_t *ent) //Take back scroll for next loop ent->vx += _scroll_x; } + +void create_enemy_biscut_death(visual_ent_t *v_ent, int ent_idx, FIXED x, FIXED y) +{ + v_ent->type = TYPE_VISUAL_ENEMY_BISUCT_DEATH; + + v_ent->x = x; + v_ent->y = y; + v_ent->ent_idx = ent_idx; + + v_ent->eb_anime_cycle = 0; + + //Load tiles + v_ent->eb_tile_id = allocate_obj_tile_idx(2); + GRIT_CPY(&tile_mem[4][v_ent->eb_tile_id], enemyBisuctDeath00Tiles); + + v_ent->att.attr0 = ATTR0_TALL | ATTR0_8BPP; + v_ent->att.attr1 = ATTR1_SIZE_8x16; + v_ent->att.attr2 = ATTR2_PRIO(0) | ATTR2_ID(v_ent->eb_tile_id); +} + +void update_enemy_biscut_death(visual_ent_t *v_ent) +{ + //God I wish I wrote comments explaning this + if (frame_count() % 6 == 0) + { + bool anime_complete = step_anime( + &v_ent->eb_anime_cycle, + enemy_biscut_death_cycle, ENEMY_BISCUT_DEATH_CYCLE, + v_ent->eb_tile_id, enemyBisuctDeath00TilesLen); + + if (anime_complete) + { + free_obj_tile_idx(v_ent->eb_tile_id, 2); + free_visual_ent(v_ent->visual_ent_idx, 1); + v_ent->type = TYPE_VISUAL_NONE; + return; + } + } + + v_ent->x += -_scroll_x; +} diff --git a/source/enemy.h b/source/enemy.h index c332fa5..50c9f95 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -3,15 +3,15 @@ #include "ent.h" -#define ENEMY_TOAST_IDLE_CYCLE 6 -extern const unsigned int *enemy_toast_idle_cycle[]; +#define ENEMY_BISCUT_IDLE_CYCLE 6 +extern const unsigned int *enemy_biscut_idle_cycle[]; +#define ENEMY_BISCUT_DEATH_CYCLE 4 +extern const unsigned int *enemy_biscut_death_cycle[]; -void load_enemy_toast(); +void create_enemy_biscut(ent_t *ent, int ent_idx, FIXED x, FIXED y); +void update_enemy_biscut(ent_t *ent); -void create_toast_enemy(ent_t *ent, int att_idx, FIXED x, FIXED y); - -void update_enemy(ent_t *ent); - -void step_enemy_global(); +void create_enemy_biscut_death(visual_ent_t *ent, int ent_idx, FIXED x, FIXED y); +void update_enemy_biscut_death(visual_ent_t *ent); #endif \ No newline at end of file diff --git a/source/ent.c b/source/ent.c index 00fd1e7..c2550d7 100644 --- a/source/ent.c +++ b/source/ent.c @@ -246,16 +246,6 @@ bool apply_gravity(ent_t *e) return false; } -void visual_ent_move_x(visual_ent_t *e) -{ - e->x += e->vx; -} - -void visual_ent_move_Y(visual_ent_t *e) -{ - e->y += e->vy; -} - void update_ents() { //Add player to ent array @@ -298,7 +288,7 @@ void update_ents() update_bullet(&_ents[i]); break; case TYPE_ENEMY: - update_enemy(&_ents[i]); + update_enemy_biscut(&_ents[i]); break; case TYPE_PLAYER: break; @@ -309,8 +299,6 @@ void update_ents() break; } } - - step_enemy_global(); } void update_visual_ents() @@ -327,6 +315,9 @@ void update_visual_ents() break; case TYPE_VISUAL_SCORE: break; + case TYPE_VISUAL_ENEMY_BISUCT_DEATH: + update_enemy_biscut_death(&_visual_ents[i]); + break; } } } \ No newline at end of file diff --git a/source/ent.h b/source/ent.h index 819e937..2ac8ee3 100644 --- a/source/ent.h +++ b/source/ent.h @@ -39,7 +39,8 @@ typedef enum ent_visual_types_t TYPE_VISUAL_SPEED_LINE = 1, TYPE_VISUAL_LIFE = 2, TYPE_VISUAL_SCORE = 3, - TYPE_SPPED_LINE = 4, + TYPE_VISUAL_SPPED_LINE = 4, + TYPE_VISUAL_ENEMY_BISUCT_DEATH = 5, } ent_visual_types_t; typedef enum movement_state_t @@ -83,9 +84,11 @@ typedef struct ent_t { bullet_type_t bullet_type; }; - //Enemy + //Enemy bisuct struct { + int eb_tile_id; + int eb_anime_cycle; }; }; @@ -93,12 +96,25 @@ typedef struct ent_t typedef struct visual_ent_t { - int ent_visual_idx; + int visual_ent_idx; int ent_idx; FIXED x, y; - FIXED vx, vy; ent_visual_types_t type; OBJ_ATTR att; + union + { + //Speed line + struct + { + FIXED sl_vx; + }; + //enemy bisuct death + struct + { + int eb_tile_id; + int eb_anime_cycle; + }; + }; } visual_ent_t; def OBJ_ATTR _obj_buffer[128]; @@ -116,7 +132,7 @@ void free_visual_ent(int idx, int count); void copy_ents_to_oam(); int allocate_visual_ent(int count); -void free_ent_visual(int idx, int count); +void free_visual_ent(int idx, int count); FIXED translate_x(ent_t *e); FIXED translate_y(ent_t *e); @@ -149,9 +165,6 @@ bool did_hit_y(ent_t *e, FIXED dy); bool ent_move_y(ent_t *e, FIXED dy); void ent_move_y_dirty(ent_t *e); -void visual_ent_move_x(visual_ent_t *e); -void visual_ent_move_Y(visual_ent_t *e); - bool apply_gravity(ent_t *e); void update_ents(); diff --git a/source/gen.c b/source/gen.c index d3db73f..464c3f7 100644 --- a/source/gen.c +++ b/source/gen.c @@ -87,7 +87,7 @@ static bool spawn_enemy_biscuit(int start_x, int width, int y) FIXED att_x = level_to_screen(start_x + width / 2); int ent_idx = allocate_ent(1); - create_toast_enemy( + create_enemy_biscut( &_ents[ent_idx], ent_idx, int2fx(att_x), int2fx(y * 8 - 32)); diff --git a/source/obstacles.c b/source/obstacles.c index 438dfe7..6972841 100644 --- a/source/obstacles.c +++ b/source/obstacles.c @@ -3,6 +3,7 @@ #include "common.h" #include "player.h" #include "graphics.h" +#include "ent.h" #include "assets/speedUp.h" #include "assets/speedLine.h" @@ -40,9 +41,8 @@ void create_speed_line(visual_ent_t *v_ent, int ent_idx, FIXED x, FIXED y) { v_ent->type = TYPE_VISUAL_SPEED_LINE; - v_ent->vx = _scroll_x + -3.5f * FIX_SCALEF; + v_ent->sl_vx = _scroll_x + -3.5f * FIX_SCALEF; v_ent->x = x; - v_ent->vy = 0; v_ent->y = y; v_ent->ent_idx = ent_idx; @@ -84,5 +84,5 @@ void update_speed_line(visual_ent_t *ent) return; } - visual_ent_move_x(ent); + ent->x += ent->sl_vx; } \ No newline at end of file diff --git a/source/player.c b/source/player.c index 47bef80..2624549 100644 --- a/source/player.c +++ b/source/player.c @@ -247,7 +247,10 @@ void update_player() } else if (_speed_up > 0) { - _speed_up--; + --_speed_up; + //Check ended and handle ended + if (_speed_up <= 0) + _scroll_x -= 0.5f * FIX_SCALEF; } //Handles player anime @@ -256,7 +259,7 @@ void update_player() case MOVEMENT_GROUNDED: if (abs(_player.vx) > _scroll_x) { - step_anime( + step_anime_bad( walk_anime_cycle, whale_smallTilesLen, PLAYER_WALK_CYCLE_COUNT, &_player_anime_cycle, _tile_start_idx); } @@ -297,7 +300,7 @@ void update_player() _player_anime_cycle = PLAYER_LAND_TIME; } - step_anime( + step_anime_bad( air_anime_cycle, whale_air_0TilesLen, PLAYER_AIR_CYCLE_COUNT, &_player_anime_cycle, _tile_start_idx); diff --git a/source/scenes/game_intro.c b/source/scenes/game_intro.c index 5d8f706..e00787a 100644 --- a/source/scenes/game_intro.c +++ b/source/scenes/game_intro.c @@ -152,7 +152,7 @@ static void show(void) static void update(void) { - step_anime( + step_anime_bad( air_anime_cycle, giWhale_air_0TilesLen, 3, &_anime_cycle, 0); diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index 05e3998..8520dfe 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -217,7 +217,6 @@ static void show(void) init_player(); load_gun_0_tiles(); - load_enemy_toast(); load_number_tiles(); load_speed_up(); From 7c9b4827f10b5e7f100657e952c8f6fbcd546a0d Mon Sep 17 00:00:00 2001 From: sardap Date: Thu, 25 Mar 2021 07:46:57 +1100 Subject: [PATCH 08/12] added ufo and enemy bullet --- .vscode/settings.json | 3 +- .vscode/tasks.json | 16 +++- assets/enemy/enemyBiscutUFOIdle00.psd | Bin 0 -> 37864 bytes assets/enemy/enemyBiscutUFOIdle01.psd | Bin 0 -> 37930 bytes assets/enemy/enemyBiscutUFOIdle02.psd | Bin 0 -> 37978 bytes assets/enemy/enemyBullet00.psd | Bin 0 -> 19892 bytes assets/title_screen/tsBackgroundAgg.png | Bin 412 -> 405 bytes source/anime.c | 5 +- source/enemy.c | 118 +++++++++++++++++++++++- source/enemy.h | 10 ++ source/ent.c | 14 ++- source/ent.h | 14 ++- source/gen.c | 33 +++++-- source/gen.h | 2 +- source/gun.c | 6 +- source/player.c | 2 +- source/scenes/main_game.c | 1 + tools/builder/main.go | 5 + 18 files changed, 208 insertions(+), 21 deletions(-) create mode 100644 assets/enemy/enemyBiscutUFOIdle00.psd create mode 100644 assets/enemy/enemyBiscutUFOIdle01.psd create mode 100644 assets/enemy/enemyBiscutUFOIdle02.psd create mode 100644 assets/enemy/enemyBullet00.psd diff --git a/.vscode/settings.json b/.vscode/settings.json index b2a2310..daf0505 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,7 +23,8 @@ "player.h": "c", "graphics.h": "c", "enemybisuctdeath03.h": "c", - "anime.h": "c" + "anime.h": "c", + "enemybiscutufoidle00.h": "c" }, "C_Cpp.errorSquiggles": "Disabled", "cSpell.words": [ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 546128c..b851954 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -30,6 +30,19 @@ "panel": "new" } }, + { + "label": "build-assets", + "type": "shell", + "command": "docker run --rm -v ${PWD}:/app wgm-builder:latest assets", + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "always", + "panel": "new" + } + }, { "label": "build-docker", "type": "shell", @@ -44,6 +57,5 @@ }, "problemMatcher": [] } - ] -} +} \ No newline at end of file diff --git a/assets/enemy/enemyBiscutUFOIdle00.psd b/assets/enemy/enemyBiscutUFOIdle00.psd new file mode 100644 index 0000000000000000000000000000000000000000..a9ec9def9c2c0332da614efcae4bee888f582bf5 GIT binary patch literal 37864 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 We)Pp0htPB!?H`d}X*!N3rT+(Tqrp1> literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBiscutUFOIdle01.psd b/assets/enemy/enemyBiscutUFOIdle01.psd new file mode 100644 index 0000000000000000000000000000000000000000..50b9bd54b5ab9b26f96c9ef51404817d88ac45da GIT binary patch literal 37930 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 literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBiscutUFOIdle02.psd b/assets/enemy/enemyBiscutUFOIdle02.psd new file mode 100644 index 0000000000000000000000000000000000000000..45b2c0a014db274ef668bd3553aadcae4262b365 GIT binary patch literal 37978 zcmeHwX>eOvcHRTHilVralA3CX#10Vq4iNi75c|q~#YT$V6iJhmx_f@vjuV%ErR?d% zW%rNR{#&)VQ`C-S-ICfI89Vbqu%8A=Ey+|b9%XcmSN}|;4o|(2Y zt|A}+?{42c_dDmFci*{uPtH)T$ceb-s{=nn?9t8dp&rz-W` zy#uf0|NiS=l1%N@ypknb+L%5H*B|c9f91Gd{7R-&{mR=_S54yg^?BZPzx(LuQT?<$ z_3oqngA@0=UP-xjSgE^lOxXs>6svOjwpS9Qf~nDQXr6Mo^d`I2 zYBy@9%to`(V6+)bW}V6IHd@^#$5iVj@%7=zb6neT7b0`5?vV0I9-f{axebPQ-g!s= zjzxcXylXJITrPvrY%rU3sG&P~@8GojuI}JO+5~CiMCvEi0Y<;iLE2}aOjj z!;^=HpE2%>;^yd?a+;iZAig_%TrZy<9+wUe_kB&h=h}EvW|Q7LrCQoMs2#p@qV^ar z*MCm`bEtZxd|LOBdFV_=o!MM6I^6hYvd@@IZlm!9kY>$G7-^Vdt$bQ;qnLC?i_UB< znT>9<(`_-ni1Je1%Q%O%y`A^I5X$qKFJRQF?w!NqN99vr`RHhWuUaPCGdww{wJhp_ zRgd9$)fd_`%W%gJPEN}Q)p|VQLxz5Duja1X9A!({w4<{aYj&O8VRh=t)g7mGX@uUxAJsRv(jb0=hYmYll_9U&!S))lE)&+2+(aDlU`G=CImzu1d|J zt2&*IYSrp8R-N{CM=yZA(oyz!4{oNs|3V!aOAVdvIE_ZDv1-=Y?AEf*RJYc2PDkCY zbJ)xko6%7*+3k*Y7q5YNrK|b96PV(AFPJC{l{u1P{fA!8Z5QnCF^6zeK0c|_eDO-! z6XwE$TsR17!{(j4TqSk-s$~21n#b@`?sKs&TDF?)y{gVHMnMz*h322#$2$+}2Uks> zCKRjn*&ru}JE!lIkL$r*Sjgv2>n7yOZ7ySb4CHtB_x>ETa8iEq{pp}yv)XnXWtYxn zwbyhtBh0XDvFzx~PD{mQbd~G&oeLd*A3Ctu+Ro?ylMbHSZ}nmMV7FfL8QP}X&iG5E zwlCxfzlW*wS?7$u>}qSy!IxcO+r7T(Iz7)%1>wW}!{hW}t?sjU46n<6ZZiCt>T$}^G%!B8Af0?M4u&z6~M99_2Yr3xH=Thl4U6%;CI(bdk)%;v4y{79DAy+4_ z>AISqOQqLzT_WV_uP>3m0r_ziIA(4*K}RY&!y69x-JoN zb@H07tNFQ9dQI0QLat6;({(jJmrAecxkoxjK1G*VX)7D!r!b z5+PS7uj#s)pG&3JbX_9k>f|+DSMzhJ^qQ_qgj}7xrt4~cE|p%>b%~Ixlh<@z&CjLM zYq~BGa&_{WuB-XERC-OAFP7)yZqRuIA@b=`~%K2)R0WP1n`@ zTq?b$>k=VXC$H(cnx9Lh*K}PXp&by8pF# zKkUt;kEvgRE_F?_H`9 z+B>B-RNTa@A7{#s>ZRy%30W#`p38AlT$nrL_VGE!af&N*CtMxJ34EU-Cx_!h{H8f8 z=ir>&4yWT>_@3g{I3s7_g4`VY-Jo7t-RF)E4|j_7)5k~I%3D=r_qSjUS;HcOe#{-Q zCVfX2wUHK4UTFXHpf$e!%HzHL)4c-*iJ}{=3qtk;nC7`Twe32;Zo}@1l;p2nw^TfgF^F*q$e{xZh**$%7k%&Ipk6a|6mFLi* z>f5_5BG~Xat`G}_Aq~6Lxlo&$svSPA1P*_nBxJAH@xd#3q5W6ug^p{bg@e;MXD3EuT8x!zi_gD%JOsX?gx&)-mc&Gq+Z3nDY(%S_XM|WEVr9GY1iAz&{MsVn`zd2w5H#I} z-^WsPJ3hxvu_Xo9;OWvS*YC;(s0!^U{J4NOtJLf{r=K~X?@Z8)f-F<@F ztm`L>`ze~RqL=#VVr9r4!Ka5M;*l5n>e)R$e0=m$R`(&hZ@KM@qeVh*-h>Q{Tjj^6 zhq3xW{g`e5Mg~VW54S4!H7ipNmBb(IPT}Xzd;A@E@IdSI)=~NhL9?B2r{$Q^Fthhi56Xu@R<4~Xj$y9eNcbJ$Pq=>e@Pw^!niC8EhZ|riuJ*&IClY>-`!TM+x3~93Z~u)O z{lho=ZVrzR_V*8t-x(bpA053j+|OREpJw9nx9HZ*o3{pT4GjzojSUP8jM3M?ShLCS z7Xc8y&JFiM_|6WIgcA>oI)+8Ue??j(d_&}ilwD0<27&3-!HLA3UEMvsH~MahE*IjQ z)6p&*;zXUI4soZrtEaoStE1n7!r_k2=@C;`Fkc>({Lqh>yT^X==l^j?DjP5Sa>Zgj z{?XqE_sD;$_@{sHVfDl|@wI>QR}_)2mTJ*o`Gr&a?cZGZ!}_27(;xe{|MBsE|Mr~n z{lEQJ|JmR8#&7-6cmB>V{_1c4kB=62p8U1H`FH>Mul=Y0`LQFmwENDF|McJc7r*|k zKmKHx6N@2jCzGkCyUWHzm^O`cLV_QXjCPrSpWotizxH*G!%Cs`%WQut_Zg27;qYt_ zJPE|&He2x&ndVbHfC7{IIZ?B3LEyNb6JPW(^m850k6BGPV^K#-PMj&9k3}STJ{FPY z#j%J*Z48lF{2aRlhsz1T;M4kz|304L^GDpxb}@d3*r$_Z<3cPy#9D+HFCk+501pfi zKs2B{tOi}EV8!x9K0T@Od-dZfBjM~nKG;Kh;<|@j*1QL^pi3Mmmz5u!9HXprzx>`Y zOTV{Ar!ewMY;{)Muh2=mlLkcPdj~u3w#r%h?Sr=uUrg_x9PPZ6uI>{)4TQZ2Vxq^>FVQ?(^jz+zr+r8hgS43A$o#KE9VBJtRI*59@XheA^1BJzx>yK;^&W;96RqG zAEDMzfLi0#{%xk%w;kU_uF3lEQqIs1Q$Ir$VtwcXlBCIcAIiRG)*XcNnXEfLm-PY0 z$PYa0f9oaIiOnltP1eCPUSg(QF|&1MV@=lYphyI(WUnu5>jNG`)7sgptr<;du|EZ* z0nWo2Ub6dLb|Ft!-9DzNw*6zBz|zm{{}xN1RLM4JK6EtGf6?~+FF%iInky6>p{uR_ zmVL8$3MXMq;|z@w2}%DYcoi#S;j_F7<}WL6v-+x6xk2SW_+I6=Ut;|=-sDBrZ?;&c zD<=*oPAY4j$WRd$2IWhu+FYUfACrV-=D`i@k?{@MO&x!G>1SPv7TVIp7@ej zH(kj(E>=H>^)4#^!DpTSJl4s7P!ypDpT3r@HzOJojP(h|`ox#Sy8TMlaTfm^)^Gl$ zVEt>OuVww~pt$vFdl<6!wuc#GWn+x>F~<7Xm&Cf|O4co(%X-gW4%X$bXZ>P*+9tpC z`$g9+O}%^jW*E}z=d5Jqpwj;nK?@-Hg=vloov*9wc;WA18C9F-HjD^oyn>at$hKH#A54^wr zTIKUtr-%|=Z&H-Ly&`0rEV#}kuhPL-XY1K7fpyoFth+v!bru`@!Ds!+)vP0CbM^Z} z;p#Uu^XHGieR$>j3&`;ChgZHoAK~*x`Q4QNBjGRZjgjRMPAhUHyqn+jo5efF@+d!t zeUt-GB4e=x9NMrw6Ow92*)Q8ygzvzpVqL%j0!u`;!??)Ld+X9h$aJvVQ5iN!-R zc(5%VdhK+(Yz}{zbMcOD&7ioWtGkoubbT6^(>d#LyYS-<1l+D!-Jl3@axr&9fv4{p zjlgs{T^@fZb-6qq zm(xAdPx=*eJyNsXhG%laR)FaX1ibnYEcrVj$-scdVTIalPQTA)w%L0fc9-8g45Q(@ ztR36{S(L+Wwzy{Zntx0tVbm3BFui3)r7dMR%^Cd z9X^j>?{o(&LtH~_>kxDO8i?(%n=G?1M5D#yu}E>r0aNT6*SlOZL|A)PMgE+_gEx1u;T!=^~;P#gMlO@ zBb)VjeTHE%aZD0wV4ya;Yj)P{aC$vmP@hW!xY2Hj$>NxuwL82Xn-xl*waNQ=ZW3(u zN&(jt&f&y(JwE*a_B}d8fV-uJwrqCHEtl0|cXV6K7MprdMALP=V^CqSIX$z0a~KUK zsL!Px5uI}rH?(dWhHAB7xR|ssc{R@IXf!AqkeRF?7p0~dl}2yC*sa<(hKB|R28KsQ zCUtmJvdd{P+wCSi4;|KLxHov?#^6BDsL2CeSuMQzfz@WUz-`Rj#y(Kr&B39e+X{ol zg8D{-UOS^T%)2dSn?8G=`|9$*^VH**+lkZ z2dKqnGwElP(-MtVr8bbquytDuMv&%=xtS@EqcK~pW{U&niZ0DA4?vy1S)<+pqn~w{ zO~`%;(+-1mT7lw13#*N{_rQ4=-G2Y??hqieU~Sm+FbuoN1YZM>IO~CXv=fxwfvIbT`!W-t zg#g*Ntzj2zg1rkqmI3xy&3YX)YU3SG?J~>)YK1P%R`)Dv7BtYzvZ4ocV1S!9@kZX# zWj4YJ9K2I-G@N39HEi8xgWiC?&K>7=IU6iI4Gh#`n}v;-Ep`xUL$7A@3rO9N4Jx*s zIXHN2&dEDKo6SNO=e3HL3q8T+nL?qOF;J(NnR>NSrPjjEbTCSEp`TGJl^Ts&rPAnlLnnGMY8x6}-J#Ly z4ZKk>bZZrIg;K44_Tc=!)os@-rzf5vGNy=?5}BED5s-vrdfxs4)^9 zyesI{WA0+|@`_2d&S)}10S2{F4FWMtjUMg;lUAqV<%04|#!KUp>8S?~WCk`pEhZi6 zDM6-Etv6ZFv60Z&z>s4!K|v;lra`AbV^bDrav4-`F5w}X`oWv`Ca1J!3k(3tR47nJ zN|-U2OfZ=l3|6LqB4mmgUN7kG>M>aO8{pye3p}V!Et>{$(k9-62lwy2L3n6w&|wg5 zJUzn$F;W3=5~)I?BdzPSN`+c8qfshhQ|1@(K81X9Q}<;?n7henF~QBjwA30fhq-~F z>A<)GvdZKtm^PThLP0e{3k0|zrR;DVVUFYTZzyslTP(@3YLfcQ+sLp-!1dU<^p#8F5k z4XH&2ok3z9!9!xw8U&^#8Rf_^8Sn-1P(`QL$|Vw+Ldhx5G1?BY{RVpJh9m%!@Ia%f zgSHTjz^10Ar5J1zO)it+AI)c$q1DX*4U^~-rHJ^zh-bPm0%SI%w+INs#ykb`6#rm+ zYMLa)7&R&x3`-(`pmG(j5!5|1DjK6q_KC7X1v5NX3z{yplaWNEy%smf0e=trNhV}L zRZ8hJ4}%&6eJYxLYNdoEmU4<`NnUuF&kYeHu!-vwEz^bpj_Sn3Xg#aGfy>Q6r2NE455jDrz%0sX&SI7NFwJIyj%<`Mv1CNLpsFVZ(uwy zD9uw;5+JZr*-&u|5)IW)XULbLIpz|t8X;%Os8*{n2kBT%?FIFB(DocS=NM3@28N_N zLpvyqBz@kHIeKaclA8^AjYy3)=PE(T;r9$!f`*$p*EVLvXicOwl*8;C&~jen&(W=- z7s6xe!nK?!pD9F2rWJunLk2^m0kz6*aw)J?UdG9JWgkqLoD6xrhN4-UQ$1Cj6Y)ee z2BQ>Ez|q8I5NE6rjJ-L56n&UllmdCmegH!rvJvR(4BS&onxCBVOwmb-YN7C8K@5B0 zr$c@Lr@$i$tyckfJ$PdVr2W06QKnayQ0=}f7Z@+xlQ`hH?; zdUk$(E*wpzV^Kg-F)&942ZtLYnR_O$Kbp=aV$u0*KAlRXvmyDNdv}Kh#>R*4xf1zo zG&~=V#xl8drjSc`RBw!pOxzy5Zx7GKqS0717|xUyO8IOiAfFf+85=E3K?`!N(c%h4 ze6ucpnqg)ldbwJ0Z&D(CQ)&xDf)1NEG?&Qc(&=0-88j&*({kCARA+VJ0>M*e$R7tQA~@pw8J_Im@dcp+OT=0a+WW^{aPd_opLcez3#7mvkL z`9dy}^vNfN@kf5QHOZAGW+9iHk0-O4gzMhm@c889#Q1GRD4R*e6B#r}rHhMm*>o!D zogN*98b^mmB*9!Zi=u2Mlg^e(nN%h)J&L}@1}ELAd>)zkVj-KscQNCAFgP#-UPmVs z;T)go%@r2bmQ(YIR3V#8r2SJP`=d>+5R$e`@@-Miz1Z#WV;hK50a zoMIv4my8Syj!%pXkIO^EbUs^HSx(23NnJLbU6@zgzWc`AH||Z|QACT7A`?&K3z0CCEEEF^Gxp<+Fa7~Thy)!!Yh9+9b=K(1OE$8XGDZlcKiHW;+ z2r-yV11yn9XR^hW1#K>yUzn2&4GoWsjtmdo_rTggRCaL@9Tpag4Ds&mi3!PUBAw-P z&+6^e_?%Zr7=VyO>9EJUOu!^5Ma{K)i_Cz;MIEM#+w z3mKZ3#k5yCLDG*tm_KAl-uUM>|DvJfVhE076iQ|SWC zE}crGN{eV-SSlrA>HNZCDW6Qhd%?INBW4yb;pY|?@@Yr~DPZ@7Vrij}&MvR7FNtB! zXE`Cu=kHJvMwLh}EMkC#g%U;pGt6ch*~uJ41RlX*R*|IS>6&wl&tlf(K^No@vY+PO zgv_~A3X*1$nT16R7qZZV%ww|V@_hDg9^++T=#Gsji@{TQuF=GT9t#CBEj~Ayhhrhf zkjgA9Fs0Gx;ho`bFkuI>G(wt^pbi>6EAYir$Cy2@urJKztjVgSV= zB<71fm}W)FILioGAt&T}3#B3rvru?8$H#8ZMWb``iFBUC$>g&MxV8+)b z3L|flOZo$6iDV+th>H_R7#A^(j8rDW&+_hPvwE*T9K%U2J|Bz6LV-|tZjKB(nSco< z=I78=9H*@LWGV%aR5I3xjznO1(HM#`qy)3Vxlb&D)nK!`{gF5|ibO&_#1(@ku#!N}ZPI2?@z{XT?i@fD0hI-JesLXF@EGW@|XB%Y7Q=TOBT2nfb=L&GRV z?9>^UgKV)_G#v1G7@9AH#?i=J3yt^n1*7xxF$@_ee?G_sc;7&v1vejpq!7*`AacW7 z^n8E*c7k!r@O@An1lQz!nnGh@bc9 zW^o$zf<0|5V>Fg!Djy(n8U& zch=LQD;!HCuzHCEywELi=tny&CFUZ5myifM;PvvpPmJ^U5BW^?a2)HR2xX#~#~<)P zsAQ6KfoeWK^1K&90Se@`g(5p?nT4%k6)e*f?{o&E(MTv13Bf9`QvmT`7o^EZ5IMX@ zaEoVsAwJ57?*vii^LgDaw>J=mRfeNj+Ccd})S4CCoD0!LR~N$I5P|oI-F7Q)=Ahp` z1YZ5nhR0<`&{ak;Rs_9)g#CkNOcgO?gvq_g@F74-v2;E#0E6^m8HB*13!6et-qnRI zDMX}rgB2k^gyAW!ZbK9t@kyAZ4f_LB6@g?#q!6HF+Z)*5a68cmF%&+~=l7uxK;qMI z@$N1}KM~vG4T5nD`xc0|Q$`CAp-OjSR_u0I8m19M8ch@fW^iVN6)l#5fS*aoLFCMVpBa<2k!zP#08$s#zVLUtb`1wG22ag!xm4&(Sc1ASY0PW zJGXZbPGj~icAO}D3~QmCClB_XW)Z~4Ae>yF;s4OrMQU}q&fKC|&p8`2$trjRZ^PH& z#TFP3{fM!h!uthpkIzeb^mzEdr~an_!7qkcKos^l^NGB^b3f<%6xpbP%t0^B$e3Iu|f;j}szPZ&QX~<=Ft)FKZ9}wA1P)K zmEqTL4Zu7Sx`IRkq-0IcaVQD|8zCVmw3>?o{&O5siQwgklb11o7w9MB#w5jQ1cv?$ z)zNwIJR}YVXp}haffI+6&15I*pX5Vde5emzm8J&?1}V3pV^+IPu}6APV?+ui!DU6v(CV5;lkmM&L0?P6hxCG0%cIPG`t~ z|6}My2=qcDv)*vn>v@wnBG=;$5NC9TfK;K7-v@n#Xv%<%aT=Fr7UI+C%^QTEG@cIw zJ=hlZMk5}WsFS%g^4rlcS%;TdNq8>GP6B98jvd?u!gN-}d5r47!36?;7VLrKf!LhS zt0H?sC0MT)rw2NLKr#{~8m5yzEmp~+6K}V|Q7k9uyar?ULKsjOz(s4+>*=AYSRi;Y zKiN6pZ1x_Ej)6687rF$$emAzpX#5Q?_=ePtz{h@?4s3gvgWcbyHt=R%IDc3=eS0Ar z@!Np$Hheb&KAZq%-LqsKFa%g>!~Y3b>jsM7?{>E$4D@#l?Kedh+R+92%_B~bMC5>? z3R$EIET%wl2&$LD-#^gbNHqW2A%(wY2y%MPjTpl$=S6%WkMul?FhsdX0Rb3^DYw3W z%cSMC)wQkdjg4|`XTkVDB1d#aE;A;U78gpTrM22lwNkC^?o{$N`7~lJGE-`0X|cGt zxxK!&zKJ&V>cZ@dLOLxiAha~4ODxh_a&dWSWpis|W2;;%nI#l~Lw~wCT*(yjrRDYQ zGC&{hZe<;c2X9KG)4KVEg;JrkzPYkOkURBCX?8|B^Hwkwl<5nt7=AdA1&{z=ax3t3s?~smbUBF>P~GV<5Wwgq>=~fU>0lE($Z3Kx%$@IZ$GS6 ziVh`0Jdy&PM=UO^N-_nki1VA(EnsezeAs54(U?p#rcgSciG(#4t*wDo3JGi>LTi@O+Zz8CZTUse>S1MaM zhjQx82M8al?1k;EtxC1Jy}G;t0=L#zQx@5SdvClcbFS_IbGurvm)Dk;SJ&5;=G6Bd z$TTz9v2!ogYn5%ZtCcr4YP((A8*8g613%@LAOtV7ma64)wOR)9=60>NxwerpV&hFF zc~cYLsP0tD)mpu}MMK$MOK9&+-j^e8rY6i9U+;eSXm4|6ZKJQezPg^)BXWZ{pgdw* ztXH63l68B#Qr_Iy%orrt36tGd$JU@A453yB{uXL2RH`n>KH&$0tHVj*(oSv537pj#?wY;$o+>m?(9 zUo<7*WpA2uTj*n_T-n>J!15pNY@{rR zs*tF>y$wF|CbAPHF63Q{J9~ROJ8wUt|M0q6EznFXI1q@9a`Ame^?+$vbHTat7^HjyIZSP%3I~VxA%5yJ8$o8 zu9fS1Z#}GUZIWHW03jvBfk%KNs&20@!v&Na7}eSH}1tN2V1o|9A^A3 zh^m2EhzN-Yu1=$bn`@wVp)3YZe61I}G{G9Bvjt&sdLvz&2HRD>ey0M+ zT6qi8la!7^m`J6(v9@-;-m$T{1p#|8f9ce3N7^-!8qdUh}ajF z*4EKzX=wq0yCULQrRBACxGsDaOO!@bZ)I(buvgF=r`jUE(b4+)+A2<=XjH-?-_yWi z)r@QJXgs&LO4XMZDEftvR=%(ZfMuM$7mElxA+D7#F0HO$imWV`ihQZNh@jiT(kj2+ zOF>6!Q{ddRy63%dicv)3`6WoOva$?F#N-g~0uAfytE(UZkQ92u$(r@r5)xs^0&>>j zYe`576w_*&MlQ#~G!jjeRyP=nONfo-5%Mf9tb)VMjjc_LyR^8-m-?30Fmo^+))!0s z;t1l9#f9ay4e~b2G?3B)L1J+o5Cua#q%1L+)>ak}rfNZM0umq$a)D0r>r7c&8&Do7 zC&-oc&CRvd)g_8@7E8Qaz}i!c1sU(}i{!98Sy)&?Adb)2DQ;F+UfYBK7&pbes7YyM zy*UtuxY$HQ4#L6Mj6vKDf79aci+4?>YhIEEDpSp+S45Hm`pQyHw%P;s%CJx>XV z>12i=7D@})I>8hXV3n)flFhQG1X&&(zVNQs4Bb+veK-PKE9FK;BxX43TV=j(J zCPI|h2|^GAOMA*mV@D&2ItU;m3pohk@yYIax+si9_>_**5>F*Sh`?@Gm13k#Ne^PE~23n3brEL zhfAnn@YA%A60=yZ0O`6&jtF$rPcX1Ntet_~2zAoF0lE@{ghq%D4r07SCI%hC6>22% zai#$zzKI4CIj7ihk~GXE`1mICb)eLnv(4Q!o;xl~|xlbY3jjM@U*os2fAFhz?Vl=2p z_AD=8*P)T4=I5zyOgn_vso!Q}3gtr9OuCWjZMMY(Kg*q?OEGX75dJLNMcY9L$!7&n z-^hql=o$16V*db$UF%}@c`LIgy|2%0D1;xe!%C|F2$C+Cxe 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 Kn}lFs47D;#OGJ|(&0C@U5{W?Z5-4Ja z@(^U+ii+w~9r92TA=#mbf`Xu+S9C}u4GqIcP(g?S$6y2XuqVE4=-@eb+1vlI?eiCW zcBo8L-&;LLD+xqVq^dx07x>4}Ql>oGr^C1kXPwoF~_{oiI8Ex|wJFPx) zsZ%Vw1030H;8*c8gTo#U$O^|?Hrl-rVl_|H?m!;NboygHB%YJ`{}P|qj}X3cSB-d` zR9jtQ7h@E@l{uuTV|Ii{rjk5fnqVw`XXWn~&YizTLpIRde~C!%0VdO4Zb$F&XZ917 z&X9%BEgrVx+;jK5pwc>tNjt(`3NXCf!0MXgOva7zNe}nG9G$@)3MXWQJ9SBwrUKWM z*GRRmWPj^O9q;m9I?c@sK|WgE5uXn;<4;ptbnM&dMF0Q*07*qoM6N<$g8ELlR{#J2 delta 385 zcmV-{0e=3K1DpepB!6Q`L_t(|ob1k9OPT=y2H;m^ZbR5`urW5~uG}s*Hil!M?7$A< zPE0mojtLXS*u@SY1ws(s z&o6kSM46BLq}godG2|<3DwD1)a$<)(B>ALB#_e~w+^XaLvwznNg=75m-Nt|z<$%AJ z@820IGzg5X6#2$lLtmGNh3y0W|M{Flqm%q#`OEAs+0rQRS3E_IgUuao>IIQ9W#?6) z@1+)+drsJEE%>-z#pPHS@=ND&V{QsIM-Ylx5$P|(c>LfgDql@-xqYZgE<$rl24}?z z>x=6s<>nDjrh1W$gz&j%5Z}}esPz%3mI8RCxrRS$L1<_EI9F8S$8-cGgBQvCTS&a^ z{}_H)k3`}&ZjR|tuthPFGobEnH|}4#fYm*~wCTa(h63_bKiV=XD1R?NG-f0?38ZI% fQy(}A00960sDYzMhAQTp00000NkvXXu0mjfK3BI; diff --git a/source/anime.c b/source/anime.c index 734dc5b..8d41d13 100644 --- a/source/anime.c +++ b/source/anime.c @@ -27,14 +27,17 @@ bool step_anime( const unsigned int *anime[], int count, int tile_idx, int tile_len) { + //Copy current frame into tile mem dma3_cpy( &tile_mem[4][tile_idx], anime[(*cycle)], tile_len); + //Next frame ++(*cycle); - if ((*cycle) > count) + //Check if need to wrap cycle + if ((*cycle) >= count) { (*cycle) = 0; return true; diff --git a/source/enemy.c b/source/enemy.c index dd426e5..8ce2033 100644 --- a/source/enemy.c +++ b/source/enemy.c @@ -20,6 +20,10 @@ #include "assets/enemyBisuctDeath01.h" #include "assets/enemyBisuctDeath02.h" #include "assets/enemyBisuctDeath03.h" +#include "assets/enemyBiscutUFOIdle00.h" +#include "assets/enemyBiscutUFOIdle01.h" +#include "assets/enemyBiscutUFOIdle02.h" +#include "assets/enemyBullet00.h" const uint *enemy_biscut_idle_cycle[] = { toast_enemy_idle_01Tiles, toast_enemy_idle_01Tiles, toast_enemy_idle_02Tiles, @@ -31,9 +35,23 @@ const uint *enemy_biscut_death_cycle[] = { enemyBisuctDeath02Tiles, enemyBisuctDeath03Tiles}; +const uint *enemy_biscut_ufo_idle_cycle[] = { + enemyBiscutUFOIdle00Tiles, + enemyBiscutUFOIdle01Tiles, + enemyBiscutUFOIdle02Tiles, +}; + +static int _enemy_bullet_0_tile_idx; + +void load_enemy_bullets_tiles() +{ + _enemy_bullet_0_tile_idx = allocate_obj_tile_idx(1); + GRIT_CPY(&tile_mem[4][_enemy_bullet_0_tile_idx], enemyBullet00Tiles); +} + void create_enemy_biscut(ent_t *ent, int att_idx, FIXED x, FIXED y) { - ent->ent_type = TYPE_ENEMY; + ent->ent_type = TYPE_ENEMY_BISCUT; ent->x = x; ent->w = 8; @@ -139,7 +157,6 @@ void create_enemy_biscut_death(visual_ent_t *v_ent, int ent_idx, FIXED x, FIXED void update_enemy_biscut_death(visual_ent_t *v_ent) { - //God I wish I wrote comments explaning this if (frame_count() % 6 == 0) { bool anime_complete = step_anime( @@ -158,3 +175,100 @@ void update_enemy_biscut_death(visual_ent_t *v_ent) v_ent->x += -_scroll_x; } + +void create_enemy_ufo_bisuct(ent_t *ent, int ent_idx, FIXED x, FIXED y) +{ + ent->ent_type = TYPE_ENEMY_BISCUT_UFO; + + ent->x = x; + ent->w = 16; + ent->y = y; + ent->h = 16; + ent->vx = 0; + ent->vy = 0; + ent->ent_idx = ent_idx; + + //Load tiles + ent->ebu_tile_id = allocate_obj_tile_idx(4); + GRIT_CPY(&tile_mem[4][ent->ebu_tile_id], enemyBiscutUFOIdle00Tiles); + + ent->ebu_anime_cycle = 0; + + ent->ebu_next_shoot = gba_rand_range(10, 120); + + ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_16x16; + ent->att.attr2 = ATTR2_PRIO(1) | ATTR2_ID(ent->ebu_tile_id); +} + +void update_enemy_ufo_bisuct(ent_t *ent) +{ + if (frame_count() % 6 == 0) + { + step_anime( + &ent->ebu_anime_cycle, + enemy_biscut_ufo_idle_cycle, ENEMY_BISCUT_UFO_IDLE_CYCLE, + ent->ebu_tile_id, enemyBiscutUFOIdle00TilesLen); + } + + ent_move_y_dirty(ent); + + ent->x += -_scroll_x; + + if (ent->x + int2fx(ent->w) < 0 || ent->ent_cols & (TYPE_BULLET)) + { + free_obj_tile_idx(ent->ebu_tile_id, 4); + free_ent(ent->ent_idx, 1); + ent->ent_type = TYPE_NONE; + return; + } + + --ent->ebu_next_shoot; + + if (ent->ebu_next_shoot <= 0) + { + ent->ebu_next_shoot = 60; + + int bul_ent_idx = allocate_ent(1); + create_enemy_bullet( + &_ents[bul_ent_idx], + bul_ent_idx, ent->x + 6 * FIX_SCALE, + ent->y + 16 * FIX_SCALE, 0, 0.5 * FIX_SCALE); + } +} + +void create_enemy_bullet(ent_t *ent, int ent_idx, FIXED x, FIXED y, FIXED vx, FIXED vy) +{ + ent->ent_type = TYPE_ENEMY_BULLET; + + ent->x = x; + ent->w = 6; + ent->y = y; + ent->h = 5; + ent->vx = vx; + ent->vy = vy; + ent->ent_idx = ent_idx; + + ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + ent->att.attr1 = ATTR1_SIZE_8x8; + ent->att.attr2 = ATTR2_PRIO(0) | ATTR2_ID(_enemy_bullet_0_tile_idx); +} + +void update_enemy_bullet(ent_t *ent) +{ + int hit = ent->ent_cols & (TYPE_PLAYER); + + ent->vx += -_scroll_x; + hit |= ent_move_x(ent, ent->vx); + //Take back scroll for next loop + ent->vx += _scroll_x; + + hit |= ent_move_y(ent, ent->vy); + + if (hit || fx2int(ent->x) + ent->w < 0) + { + free_ent(ent->ent_idx, 1); + ent->ent_type = TYPE_NONE; + return; + } +} diff --git a/source/enemy.h b/source/enemy.h index 50c9f95..5d5b4c9 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -7,6 +7,10 @@ extern const unsigned int *enemy_biscut_idle_cycle[]; #define ENEMY_BISCUT_DEATH_CYCLE 4 extern const unsigned int *enemy_biscut_death_cycle[]; +#define ENEMY_BISCUT_UFO_IDLE_CYCLE 3 +extern const unsigned int *enemy_biscut_ufo_idle_cycle[]; + +void load_enemy_bullets_tiles(); void create_enemy_biscut(ent_t *ent, int ent_idx, FIXED x, FIXED y); void update_enemy_biscut(ent_t *ent); @@ -14,4 +18,10 @@ void update_enemy_biscut(ent_t *ent); void create_enemy_biscut_death(visual_ent_t *ent, int ent_idx, FIXED x, FIXED y); void update_enemy_biscut_death(visual_ent_t *ent); +void create_enemy_ufo_bisuct(ent_t *ent, int ent_idx, FIXED x, FIXED y); +void update_enemy_ufo_bisuct(ent_t *ent); + +void create_enemy_bullet(ent_t *ent, int ent_idx, FIXED x, FIXED y, FIXED vx, FIXED vy); +void update_enemy_bullet(ent_t *ent); + #endif \ No newline at end of file diff --git a/source/ent.c b/source/ent.c index c2550d7..8609790 100644 --- a/source/ent.c +++ b/source/ent.c @@ -284,19 +284,25 @@ void update_ents() { switch (_ents[i].ent_type) { + case TYPE_NONE: + break; case TYPE_BULLET: update_bullet(&_ents[i]); break; - case TYPE_ENEMY: + case TYPE_ENEMY_BISCUT: update_enemy_biscut(&_ents[i]); break; case TYPE_PLAYER: break; - case TYPE_NONE: - break; case TYPE_SPEED_UP: update_speed_up(&_ents[i]); break; + case TYPE_ENEMY_BISCUT_UFO: + update_enemy_ufo_bisuct(&_ents[i]); + break; + case TYPE_ENEMY_BULLET: + update_enemy_bullet(&_ents[i]); + break; } } } @@ -307,6 +313,8 @@ void update_visual_ents() { switch (_visual_ents[i].type) { + case TYPE_NONE: + break; case TYPE_VISUAL_SPEED_LINE: update_speed_line(&_visual_ents[i]); break; diff --git a/source/ent.h b/source/ent.h index 2ac8ee3..9de55af 100644 --- a/source/ent.h +++ b/source/ent.h @@ -28,8 +28,10 @@ typedef enum ent_types_t TYPE_NONE = 0, TYPE_PLAYER = 1, TYPE_BULLET = 2, - TYPE_ENEMY = 4, + TYPE_ENEMY_BISCUT = 4, TYPE_SPEED_UP = 8, + TYPE_ENEMY_BISCUT_UFO = 16, + TYPE_ENEMY_BULLET = 32, } ent_types_t; //These don't need to be bit alligend since we never do cols with them @@ -39,8 +41,7 @@ typedef enum ent_visual_types_t TYPE_VISUAL_SPEED_LINE = 1, TYPE_VISUAL_LIFE = 2, TYPE_VISUAL_SCORE = 3, - TYPE_VISUAL_SPPED_LINE = 4, - TYPE_VISUAL_ENEMY_BISUCT_DEATH = 5, + TYPE_VISUAL_ENEMY_BISUCT_DEATH = 4, } ent_visual_types_t; typedef enum movement_state_t @@ -90,6 +91,13 @@ typedef struct ent_t int eb_tile_id; int eb_anime_cycle; }; + //Enemy bisuct ufo + struct + { + int ebu_tile_id; + int ebu_anime_cycle; + int ebu_next_shoot; + }; }; } ent_t; diff --git a/source/gen.c b/source/gen.c index 464c3f7..6f0e6f8 100644 --- a/source/gen.c +++ b/source/gen.c @@ -15,10 +15,10 @@ #include "assets/building3TileSet.h" #include "assets/building4TileSet.h" -static t_spawn_info building_0 = {75, 75, 75}; -static t_spawn_info building_1 = {75, 75, 75}; -static t_spawn_info building_2 = {75, 75, 75}; -static t_spawn_info building_3 = {75, 75, 75}; +static t_spawn_info building_0 = {50, 75, 75}; +static t_spawn_info building_1 = {50, 75, 75}; +static t_spawn_info building_2 = {50, 75, 75}; +static t_spawn_info building_3 = {50, 75, 75}; static t_spawn_info building_4 = {00, 75, 75}; static int _lava_0_idx; @@ -94,6 +94,18 @@ static bool spawn_enemy_biscuit(int start_x, int width, int y) return true; } +static bool spawn_enemy_biscut_ufo(int start_x, int width, int y) +{ + FIXED att_x = level_to_screen(start_x + width / 2); + + int ent_idx = allocate_ent(1); + create_enemy_ufo_bisuct( + &_ents[ent_idx], ent_idx, + int2fx(att_x), int2fx(y * 8 - 45)); + + return true; +} + static bool spawn_speed_up_token(int start_x, int width, int y) { FIXED att_x = level_to_screen(start_x) + gba_rand_range(0, width * 8); @@ -109,11 +121,20 @@ static bool spawn_speed_up_token(int start_x, int width, int y) static void spawn_obstacles(int start_x, int width, int y, t_spawn_info *info) { if (width > 3 && gba_rand_range(1, 100) > 100 - info->lava_chance) + { spawn_lava(width, start_x, y); - else if (gba_rand_range(1, 100) > 100 - info->enemy_0_chance) - spawn_enemy_biscuit(start_x, width, y); + } + else if (gba_rand_range(1, 100) > 100 - info->enemy_chance) + { + if (gba_rand() % 2 == 0) + spawn_enemy_biscut_ufo(start_x, width, y); + else + spawn_enemy_biscuit(start_x, width, y); + } else if (gba_rand_range(1, 100) > 100 - info->speed_up_token) + { spawn_speed_up_token(start_x, width, y); + } } void load_building_0(int cb) diff --git a/source/gen.h b/source/gen.h index f533368..545c424 100644 --- a/source/gen.h +++ b/source/gen.h @@ -89,7 +89,7 @@ typedef struct t_spawn_info { int lava_chance; - int enemy_0_chance; + int enemy_chance; int speed_up_token; } t_spawn_info; diff --git a/source/gun.c b/source/gun.c index 82fc2db..9e0071c 100644 --- a/source/gun.c +++ b/source/gun.c @@ -53,7 +53,11 @@ void update_bullet(ent_t *bul) bool hit_x = ent_move_x(bul, bul->vx - _scroll_x); ent_move_y(bul, bul->vy); - if (fx2int(bul->x) > SCREEN_WIDTH || fx2int(bul->x) < 0 || hit_x || bul->ent_cols & (TYPE_ENEMY)) + if ( + fx2int(bul->x) > SCREEN_WIDTH || + fx2int(bul->x) < 0 || + hit_x || + bul->ent_cols & (TYPE_ENEMY_BISCUT | TYPE_ENEMY_BISCUT_UFO)) { free_ent(bul->ent_idx, 1); bul->ent_type = TYPE_NONE; diff --git a/source/player.c b/source/player.c index 2624549..a96e8b2 100644 --- a/source/player.c +++ b/source/player.c @@ -228,7 +228,7 @@ void update_player() apply_player_damage(1); } //Enemy Damage - if (_player.ent_cols & (TYPE_ENEMY)) + if (_player.ent_cols & (TYPE_ENEMY_BISCUT | TYPE_ENEMY_BISCUT_UFO | TYPE_ENEMY_BULLET)) { apply_player_damage(1); } diff --git a/source/scenes/main_game.c b/source/scenes/main_game.c index 8520dfe..ae58002 100644 --- a/source/scenes/main_game.c +++ b/source/scenes/main_game.c @@ -219,6 +219,7 @@ static void show(void) load_number_tiles(); load_speed_up(); + load_enemy_bullets_tiles(); init_score(); diff --git a/tools/builder/main.go b/tools/builder/main.go index 931253d..1f7bdaf 100644 --- a/tools/builder/main.go +++ b/tools/builder/main.go @@ -52,6 +52,11 @@ func latestModify(path string) time.Time { } func main() { + if os.Args[1] == "assets" { + makeAssets() + return + } + //Hacked makefile lamo if files, _ := ioutil.ReadDir("source/assets"); os.Args[1] != "clean" && (len(files) == 0 || latestModify("assets").After(latestModify("source/assets"))) { From 79aac373e76bd4dbccba2a1d2551a3e34b206f43 Mon Sep 17 00:00:00 2001 From: sardap Date: Thu, 25 Mar 2021 17:43:18 +1100 Subject: [PATCH 09/12] fixed ufo obj tile allocation bug --- source/gen.c | 11 ++++++----- source/graphics.c | 13 +++++++++++++ source/graphics.h | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/source/gen.c b/source/gen.c index 6f0e6f8..79eaae3 100644 --- a/source/gen.c +++ b/source/gen.c @@ -15,11 +15,12 @@ #include "assets/building3TileSet.h" #include "assets/building4TileSet.h" +//Maybe do combo math here static t_spawn_info building_0 = {50, 75, 75}; static t_spawn_info building_1 = {50, 75, 75}; static t_spawn_info building_2 = {50, 75, 75}; static t_spawn_info building_3 = {50, 75, 75}; -static t_spawn_info building_4 = {00, 75, 75}; +static t_spawn_info building_4 = {10, 75, 75}; static int _lava_0_idx; static int _building_0_idx; @@ -120,6 +121,10 @@ static bool spawn_speed_up_token(int start_x, int width, int y) static void spawn_obstacles(int start_x, int width, int y, t_spawn_info *info) { + //early return to avoid that awesome wraping bug + if (level_to_screen(start_x + width) < 0) + return width; + if (width > 3 && gba_rand_range(1, 100) > 100 - info->lava_chance) { spawn_lava(width, start_x, y); @@ -172,10 +177,6 @@ int spawn_building_0(int start_x) set_level_at(x, y, BUILDING_0_BRICK + tile); set_level_col(x, y, BUILDING_0_BRICK + tile); - //early return to avoid that awesome wraping bug - if (level_to_screen(start_x + width) < 0) - return width; - spawn_obstacles(start_x, width, y, &building_0); return width; diff --git a/source/graphics.c b/source/graphics.c index e78fe16..6ddfb7a 100644 --- a/source/graphics.c +++ b/source/graphics.c @@ -47,6 +47,19 @@ static int allocate_tile_idx(int *allc, int len, int size) i += size; } + char str[200]; + sprintf(str, "FAILLED TO ALLOCATE s:%d l:%d", size, len); + write_to_log(LOG_LEVEL_DEBUG, str); + + str[0] = '\0'; + for (int i = 0; i < len; i++) + { + char b[50]; + sprintf(b, "%d, ", allc[i]); + strcat(str, b); + } + + write_to_log(LOG_LEVEL_DEBUG, str); return -1; } diff --git a/source/graphics.h b/source/graphics.h index d7af5bb..aa5b5ea 100644 --- a/source/graphics.h +++ b/source/graphics.h @@ -5,7 +5,7 @@ #define SKY_OFFSET 76 -#define OBJ_TILE_ALLC_SIZE 64 +#define OBJ_TILE_ALLC_SIZE 127 * 2 #define BG_TILE_ALLC_SIZE 1024 * 2 void init_graphics(); From a3c3eb097068d0bc2e49e1ed77e18a5705002918 Mon Sep 17 00:00:00 2001 From: sardap Date: Fri, 26 Mar 2021 21:44:40 +1100 Subject: [PATCH 10/12] added ufo death --- assets/enemy/enemyBiscutUFODeath00.psd | Bin 0 -> 38459 bytes assets/enemy/enemyBiscutUFODeath01.psd | Bin 0 -> 41197 bytes assets/enemy/enemyBiscutUFODeath02.psd | Bin 0 -> 40506 bytes assets/enemy/enemyBiscutUFODeath03.psd | Bin 0 -> 40882 bytes assets/enemy/enemyBiscutUFODeath04.psd | Bin 0 -> 37878 bytes assets/enemy/enemyBiscutUFODeath05.psd | Bin 0 -> 41036 bytes assets/title_screen/tsBackgroundAgg.png | Bin 405 -> 406 bytes music/enemy_biscut_ufo_death_0.wav | Bin 0 -> 14656 bytes source/enemy.c | 81 ++++++++++++++++++++++++ source/enemy.h | 5 ++ source/ent.c | 3 + source/ent.h | 3 +- 12 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 assets/enemy/enemyBiscutUFODeath00.psd create mode 100644 assets/enemy/enemyBiscutUFODeath01.psd create mode 100644 assets/enemy/enemyBiscutUFODeath02.psd create mode 100644 assets/enemy/enemyBiscutUFODeath03.psd create mode 100644 assets/enemy/enemyBiscutUFODeath04.psd create mode 100644 assets/enemy/enemyBiscutUFODeath05.psd create mode 100644 music/enemy_biscut_ufo_death_0.wav diff --git a/assets/enemy/enemyBiscutUFODeath00.psd b/assets/enemy/enemyBiscutUFODeath00.psd new file mode 100644 index 0000000000000000000000000000000000000000..646ce4699bceff389c60bf079cd6a301a11cdc35 GIT binary patch literal 38459 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 literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBiscutUFODeath02.psd b/assets/enemy/enemyBiscutUFODeath02.psd new file mode 100644 index 0000000000000000000000000000000000000000..0a54b1b3d3c6fe7a228bd00d538a5bb449fdaafd GIT binary patch literal 40506 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 literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBiscutUFODeath03.psd b/assets/enemy/enemyBiscutUFODeath03.psd new file mode 100644 index 0000000000000000000000000000000000000000..aaafe917dcec123c4769e24b574b7f3a271a2719 GIT binary patch literal 40882 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Ȫ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 literal 0 HcmV?d00001 diff --git a/assets/enemy/enemyBiscutUFODeath04.psd b/assets/enemy/enemyBiscutUFODeath04.psd new file mode 100644 index 0000000000000000000000000000000000000000..eb424cfa4657e3144fb034dcddf09637e7d2cee2 GIT binary patch literal 37878 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 literal 0 HcmV?d00001 diff --git a/assets/title_screen/tsBackgroundAgg.png b/assets/title_screen/tsBackgroundAgg.png index 7cbd750e1f63ad45132aa8e2a17cc666a7476755..a5b8ee27c5de8c6598424051fb494b018314f395 100644 GIT binary patch delta 379 zcmV->0fhdQ1C|4jB!68=L_t(|ob1j`Ymxx~!12E?JoYGRlBoq{N%ce~S_jMMVqSuR z@DOzA5EYaVbcs4dFVG<>$z$p%$xyW$2Otn^FwfT=)--AUIXb*Rhia$rQ`<3yT zZ&c*Xttd;K8)WM;)9>Hn7--0*KXa$w;qpUXn6*>P6bF{*vpK9!iliycnRcr<7oxrvaYz6=T Z|Nq(5bJwhM+u8sC002ovPDHLkV1mXMy>kEn delta 378 zcmV-=0fqjS1C;}iB!65s47D;#OGJ|(&0C@U5{W?Z5-4Ja z@(^U+ii+w~9r92TA=#mbf`Xu+S9C}u4GqIcP(g?S$6y2XuqVE4=-@eb+1vlI?eiCW zcBo8L-&;LLD+xqVq^dx07x>4}Ql>oGr^C1kXPwoF~_{oiI8Ex|wJFPx) zsZ%Vw1030H;8*c8gTo#U$O^|?Hrl-rVl_|H?m!;NboygHB%YJ`{}P|qj}X3cSB-d` zR9jtQ7h@E@l{uuTV|Ii{rjk5fnqVw`XXWn~&YizTLpIRde~C!%0VdO4Zb$F&XZ917 z&X9%BEgrVx+;jK5pwc>tNjt(`3NXCf!0MXgOva7zNe}nG9G$@)3MXWQJ9SBwrUKWM z*GRRmWPj^O9q;m9I?c@sK|WgE5uXn;<4;ptbnM&dMF0Q*07*qoM6N<$g7I>=Q2+n{ diff --git a/music/enemy_biscut_ufo_death_0.wav b/music/enemy_biscut_ufo_death_0.wav new file mode 100644 index 0000000000000000000000000000000000000000..0695a4b67c49650af029338d6fc5abf1927b4296 GIT binary patch literal 14656 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 jx + int2fx(ent->w) < 0 || ent->ent_cols & (TYPE_BULLET)) { + //Play sound + mm_sound_effect death = { + {SFX_ENEMY_BISCUT_UFO_DEATH_0}, + (int)(1.0f * (1 << 10)), + 0, + 120, + 127, + }; + mmEffectEx(&death); + free_obj_tile_idx(ent->ebu_tile_id, 4); free_ent(ent->ent_idx, 1); ent->ent_type = TYPE_NONE; + + int visual_ent_idx = allocate_visual_ent(1); + create_enemy_ufo_biscut_death( + &_visual_ents[visual_ent_idx], visual_ent_idx, + ent->x, ent->y); return; } @@ -237,6 +277,47 @@ void update_enemy_ufo_bisuct(ent_t *ent) } } +void create_enemy_ufo_biscut_death(visual_ent_t *v_ent, int ent_idx, FIXED x, FIXED y) +{ + v_ent->type = TYPE_VISUAL_ENEMY_BISUCT_UFO_DEATH; + + v_ent->x = x; + v_ent->y = y; + v_ent->ent_idx = ent_idx; + + v_ent->eb_anime_cycle = 0; + + //Load tiles + v_ent->eb_tile_id = allocate_obj_tile_idx(4); + GRIT_CPY(&tile_mem[4][v_ent->eb_tile_id], enemyBisuctDeath00Tiles); + + v_ent->att.attr0 = ATTR0_SQUARE | ATTR0_8BPP; + v_ent->att.attr1 = ATTR1_SIZE_16x16; + v_ent->att.attr2 = ATTR2_PRIO(0) | ATTR2_ID(v_ent->eb_tile_id); +} + +void update_enemy_ufo_biscut_death(visual_ent_t *v_ent) +{ + + if (frame_count() % 3 == 0) + { + bool anime_complete = step_anime( + &v_ent->eb_anime_cycle, + enemy_biscut_ufo_death_cycle, ENEMY_BISCUT_UFO_DEATH_CYCLE, + v_ent->eb_tile_id, enemyBiscutUFODeath00TilesLen); + + if (anime_complete) + { + free_obj_tile_idx(v_ent->eb_tile_id, 2); + free_visual_ent(v_ent->visual_ent_idx, 1); + v_ent->type = TYPE_VISUAL_NONE; + return; + } + } + + v_ent->x += -_scroll_x; +} + void create_enemy_bullet(ent_t *ent, int ent_idx, FIXED x, FIXED y, FIXED vx, FIXED vy) { ent->ent_type = TYPE_ENEMY_BULLET; diff --git a/source/enemy.h b/source/enemy.h index 5d5b4c9..aad3e5e 100644 --- a/source/enemy.h +++ b/source/enemy.h @@ -9,6 +9,8 @@ extern const unsigned int *enemy_biscut_idle_cycle[]; extern const unsigned int *enemy_biscut_death_cycle[]; #define ENEMY_BISCUT_UFO_IDLE_CYCLE 3 extern const unsigned int *enemy_biscut_ufo_idle_cycle[]; +#define ENEMY_BISCUT_UFO_DEATH_CYCLE 11 +extern const unsigned int *enemy_biscut_ufo_death_cycle[]; void load_enemy_bullets_tiles(); @@ -21,6 +23,9 @@ void update_enemy_biscut_death(visual_ent_t *ent); void create_enemy_ufo_bisuct(ent_t *ent, int ent_idx, FIXED x, FIXED y); void update_enemy_ufo_bisuct(ent_t *ent); +void create_enemy_ufo_biscut_death(visual_ent_t *ent, int ent_idx, FIXED x, FIXED y); +void update_enemy_ufo_biscut_death(visual_ent_t *ent); + void create_enemy_bullet(ent_t *ent, int ent_idx, FIXED x, FIXED y, FIXED vx, FIXED vy); void update_enemy_bullet(ent_t *ent); diff --git a/source/ent.c b/source/ent.c index 8609790..79e93a5 100644 --- a/source/ent.c +++ b/source/ent.c @@ -326,6 +326,9 @@ void update_visual_ents() case TYPE_VISUAL_ENEMY_BISUCT_DEATH: update_enemy_biscut_death(&_visual_ents[i]); break; + case TYPE_VISUAL_ENEMY_BISUCT_UFO_DEATH: + update_enemy_ufo_biscut_death(&_visual_ents[i]); + break; } } } \ No newline at end of file diff --git a/source/ent.h b/source/ent.h index 9de55af..93ea3a8 100644 --- a/source/ent.h +++ b/source/ent.h @@ -42,6 +42,7 @@ typedef enum ent_visual_types_t TYPE_VISUAL_LIFE = 2, TYPE_VISUAL_SCORE = 3, TYPE_VISUAL_ENEMY_BISUCT_DEATH = 4, + TYPE_VISUAL_ENEMY_BISUCT_UFO_DEATH = 5, } ent_visual_types_t; typedef enum movement_state_t @@ -122,7 +123,7 @@ typedef struct visual_ent_t int eb_tile_id; int eb_anime_cycle; }; - }; + }; } visual_ent_t; def OBJ_ATTR _obj_buffer[128]; From 42f92930636860e755edda5ee0c108689eb6fc4e Mon Sep 17 00:00:00 2001 From: sardap Date: Sat, 27 Mar 2021 00:15:49 +1100 Subject: [PATCH 11/12] removed pngs --- .gitignore | 2 ++ assets/title_screen/tsBackgroundAgg.png | Bin 406 -> 0 bytes assets/title_screen/tsBeach.png | Bin 13409 -> 0 bytes assets/title_screen/tsCity.png | Bin 17472 -> 0 bytes assets/title_screen/tsEmpty.png | Bin 6951 -> 0 bytes assets/title_screen/tsLava.png | Bin 6848 -> 0 bytes assets/title_screen/tsTitleText.png | Bin 13965 -> 0 bytes assets/title_screen/tsWater.png | Bin 6912 -> 0 bytes 8 files changed, 2 insertions(+) delete mode 100644 assets/title_screen/tsBackgroundAgg.png delete mode 100644 assets/title_screen/tsBeach.png delete mode 100644 assets/title_screen/tsCity.png delete mode 100644 assets/title_screen/tsEmpty.png delete mode 100644 assets/title_screen/tsLava.png delete mode 100644 assets/title_screen/tsTitleText.png delete mode 100644 assets/title_screen/tsWater.png diff --git a/.gitignore b/.gitignore index 4bca59f..11b18ec 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ assets/weapons/*.png assets/misc/*.png assets/obstacles/*.png assets/game_intro/*.png +assets/title_screen/*.png assets/out.png __debug_bin @@ -19,6 +20,7 @@ mus_edit/ backgrounds_out.png objects_out.png +version.png act/ .actrc \ No newline at end of file diff --git a/assets/title_screen/tsBackgroundAgg.png b/assets/title_screen/tsBackgroundAgg.png deleted file mode 100644 index a5b8ee27c5de8c6598424051fb494b018314f395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 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 diff --git a/assets/title_screen/tsCity.png b/assets/title_screen/tsCity.png deleted file mode 100644 index 9188b85f3fbbfaddf2e6c91b07458899f49b4800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17472 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 PL4ZX&J8ND~F7JN<8!nYO diff --git a/assets/title_screen/tsEmpty.png b/assets/title_screen/tsEmpty.png deleted file mode 100644 index 5f2a6c3c6c4893607917685a5cc5d41732562706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6951 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 diff --git a/assets/title_screen/tsLava.png b/assets/title_screen/tsLava.png deleted file mode 100644 index 9e3febec28b463a6d2266a5cb8595a3fc1408cd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6848 zcmbtZ2T)V%whjWJ1_9}a0@9I~Py&P^U5X%0BorltAT1CfbfrtLB1MoQ9qA}VK@e$5 zk!lDXlwJg>(qB0Do_puaocHFv`}WNK|JiGO-}kSz_MX}Q+B-sD?-q!fgBkz;fV4E# z42d%t@gyN5C5|+VjHkqj8>MNe3jp{C0003Y0Kg&96tDyUxI+Md6)OM$o(cf4Vqd;D zkS97W>fbh2KLhObdI&5;!w(cx&(6;Jk-ZOyE)r{V8DXZ|m}ho3XM3le)h^!m8=VF|bnS2ADiv2PaYw9fkr1<=m zE4uU=iw~#ch%f6VD8K}9UA%*?_J+fF#~{9n)|3ryO*6)H%r(}3s~gG-kOI@@wc?lk zmWE|4g%BTS?zi$g-?yfI5cDvd_ASWZC&9|cJQZweE@W;RP&r^yUyP}w+X$Ft@r+5j zDKRtt!wBUp_{L%4(eGhcT98Xp(;VjW{rA8`;9ILe>96l9k&u{#FXHe<8go@g+wd*% zCvDe(kb0A_{m@NxgHWzfzswWeC|VMafGh1OyC9JrOuc}XO}lKjPPHuiGZ z3`pOXS$%+hh+6;jzGKX5QwjAS3B;OJ(B*;~;J4>g&q#Ld)FIR!vd;Usjt!Xb1)cU)z~Cq^IZ@B>Zc%*rVq zuk?9+zoO!Jl(fG=t2U9w3t@thf*V6=X0UkUTIQSwyo8~AMq~qe>fH|J2%2g~7Jor+ z@>iWFEjQ!s=*K>2j)}poT$xw=q&@;X_2Jh!S{*cLc61yhi=aVc+$vvfia=b2+sG_nZ{OvP0}KWq*?_JVGIXxA98dbH=8DrDI< zR7}Z4hi~3Iy>2VP)q&Eu2Yh#(WHf309>TaNfy|Fd+2E=b%V+h_5~dt;`VUH+lvb8l zVXg1l6rc#6QEp+xMBVT!b$n&!H6ATDK2?7B6hl+K+-Tgg`bbYb5XinHr4-;&0Jphm zwVOv8B3D&Fy~HDGksux;mD(O1_o$2hZSm9k=79p1??PhM0c85eY_HQ@29*zF5=^KZ z9eV+Jd2m?4 zNh8krHx#pyZ>WF)8s-+fY$I7pgy()BPY}v~DyuoFObHat2C5_j3QYZcX=>nI5A)=p!R zlwM4{_d9Ocq~z&%CHzto9s8~O#pMn2U80^#-&oGb1C12!j@=Dh-XrUm(%5@k6vr-` zCs?;u5{=xJHuqn6Lg6ho&OU(N=|tL$7GXQJU0OrkO2yEq_r>55=6S7x45-*Q@V>Ig zmPWn3Nw~7`Gj%<|W|Z))LRZEMkxIUrtV)`qVIoj>-2mU#ZW~B%qvfBZg6!W zjn+GQWx6=L+Viqb*Fuhu_c3jaX_%`vDH4%rEQXdc}B+ zOf(yJW0*g7lv>RP$Ex?L+JaemS^wuFB0M5 zDag4b9VZ2qUf-+>VDmTS$(=fT8AQYP;E#J<`WYtE@7wU#hU>sp`4(sn9*S6hx zz)q#{E5Z-n#oe)v?6@oO;ko+hSwOk?_NCG%ojnSOhSVef;2MecV?M``(zRQrM;&PA z?y>2UGsRNNQXZl!%6wqjYCSUPgw`>up(h4$RB|>QQPb9)A#_NZeXafYx+7~HqPb

q-CXDL_aYBu@#W^D7c2M5x+k91_;;Rdw2Y0T z4j)*rulpYzGdlJm7c3FJbP_IIV{WP5_wbpmJ?YhZmu;t#Y8D~e<)sQ?FQn1yvOSHW z=TO~q=*IsST5zuF`M0V@=K(bQJAnTTD*Ugs3iHFbq7}yZDoJid7w>Nlo)Pdm(>9LZ zhLztDEM~s7srcAbv9ri|$=GkgYwlzo-8fP?9QNwQzjI=L2Y6I0SCMjsRuMOTwC%!4 z7`WA;HBe~7uf?xnui#|-z33X4R~&D!4EVbIACqjiu$I!YDSI#|IQo6|3G(1l?C>51oE z0DkZFYfGoUX4iXb_$?)k&%=u?3Dvm_*@2Hc7-~3H0>89lE5pTp5#pS0^72{*jBWr7`IZ^`nqHwzIJEyfP)yV6%C+IZ#lYmt!>hh-5-n4Xq`$K4gGCOW4k%7jP6 zQWqSpPHWAnB%lP>DsvY3Th~7Jz+?^{@45y)<#}5|j=K^f@PO;HChOn=;oDuR4Y108?jnk76)yOx;BqU^T}e~4IgQ!*%E0H%l6X*phk@QOAV!Up=TjJ*j zL%+#{imIln5Kz{^{j_1}8)bSxf!iA-F%n+^m_>||wuk-VjH7^(Axy1!%b>im=YTfE zLzHKZIf=1b3nCW#!wu$K;8kIADVfQhE_b)|+5+1CXf2n#0AJ(qHT{rW#}6Sxrw8OH zWJvN^$cVq9`dmIxd%ykqvQgOrT}%2P>w#|p?*^ZI>>H5O(JPSNSRW4;vWuYTIiTc_ zSWjZPm|ZCQreCyHF!oK!Sqp8!;pdZYw8O}$W(S}NT(x$hs2E-7u|~E!IpGt#nthz= z@%UlDg(G>LyV(Xw8Kj8?acV{Kb&34G%Bqd2Yw+Twk#;Lt-7MP;vElax7H; z^5~&?YgaAo%{M1&Xn)!TkeDciD89mUW-9PrZs2-BGud>2cPhiEprz!UnmT0Jz3bSK zDzob9rTaaf?uft6+W~iAGM%*U+>YzL)Gk@)_6>PppUk*>VKWq5_H4c>Gn4Y zT8~^bjvnBvhGlGClXiP;aMhjAnWC4SvQ@r0^8Jm7StTJm-0m&Di49vP23&XlVv_rN z;bDYqeT7YB690ONOU#7^gO7w)d>fK9+gDuOk2{jm%je*#q$?(x(o9dbt^m8(09^*h z<(1UJkv!veBBNWE3|BQ2W;q%RFkuELKanrbwB~N`OQmYmdrTm5PV*~y?!Wl$x?KON z%0AyLc}4QGNa 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 ArvLx| diff --git a/assets/title_screen/tsTitleText.png b/assets/title_screen/tsTitleText.png deleted file mode 100644 index ec4dc4f03501c52448ad57e3187e88a21ebb2f86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13965 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 q(lTH*cO#r5^?zif@9yN_ Date: Sat, 27 Mar 2021 02:06:45 +1100 Subject: [PATCH 12/12] added version iamge to title screen --- assets/title_screen/tsTitleText.psd | Bin 135226 -> 124702 bytes dockerfile | 18 ++++++++ make_assets.sh | 2 +- tools/version-img-gen/go.mod | 5 +++ tools/version-img-gen/go.sum | 2 + tools/version-img-gen/main.go | 67 ++++++++++++++++++++++++++++ 6 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 tools/version-img-gen/go.mod create mode 100644 tools/version-img-gen/go.sum create mode 100644 tools/version-img-gen/main.go diff --git a/assets/title_screen/tsTitleText.psd b/assets/title_screen/tsTitleText.psd index 2a51bba28e84b5e23d3549452bfc4b238520c43a..986ae677c474b2ff6163c914ceeeb86c6834a741 100644 GIT binary patch delta 9194 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