From 1702a06d9f3ce1f28a35e706e664bee6b1af3bb4 Mon Sep 17 00:00:00 2001 From: Trevor Boddy Date: Mon, 16 Feb 2026 14:21:25 -0500 Subject: [PATCH] minimap etc --- res/clouds.png | Bin 0 -> 71290 bytes res/ground.png | Bin 0 -> 3110 bytes res/mapenemy.png | Bin 0 -> 1872 bytes res/mapframe.png | Bin 0 -> 4496 bytes res/mapindicator.png | Bin 0 -> 1899 bytes res/mapplayer.png | Bin 0 -> 4073 bytes res/resources.res | 9 +++- res/sakuya2.png | Bin 1659 -> 2033 bytes res/sky.png | Bin 5258 -> 5152 bytes src/background.h | 9 ++-- src/bullets.h | 15 +++++-- src/chrome.h | 96 +++++++++++++++++++++++++++++++++++++++++-- src/enemies.h | 2 +- src/enemytypes.h | 15 ++++--- src/global.h | 5 +++ src/player.h | 2 +- src/stage.h | 1 + 17 files changed, 134 insertions(+), 20 deletions(-) create mode 100644 res/clouds.png create mode 100644 res/ground.png create mode 100644 res/mapenemy.png create mode 100644 res/mapframe.png create mode 100644 res/mapindicator.png create mode 100644 res/mapplayer.png diff --git a/res/clouds.png b/res/clouds.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef1ec575ecbad22b80198d4c1ad9440c68495bd GIT binary patch literal 71290 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 literal 0 HcmV?d00001 diff --git a/res/ground.png b/res/ground.png new file mode 100644 index 0000000000000000000000000000000000000000..1d66e9e1d5f7cfbed83cbd6bc1d68ba8f4299413 GIT binary patch literal 3110 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 XeX#Rc8QR{b{~Gu63E&=|7qRx=DUZ!_ literal 0 HcmV?d00001 diff --git a/res/mapenemy.png b/res/mapenemy.png new file mode 100644 index 0000000000000000000000000000000000000000..b14a824128a9c831842a0a2f6cf1d13f16c3a4eb GIT binary patch literal 1872 zcmcgtOKjXk7)hGylZ9cacw8N z8*Wq_I3Ug-gp?}>dL`lj;=~nIsu1D;C#X1ZC|nW$?29y{CF+5dyz}rk-~as&|MULZ z>YHayy>v=Zlrznh`Z|pB@|mB5|A*hL?!$oBuD2R6o`3%0)w_+o`|mZb40hOGcZ^G) ze)H>(8`pmRV0eH3od@6Vz1+KYkAHjjv;9B+`0bg?JxTUlwsNyjl+$PBb3*y}lXHr4 zaxZRemYd=AfQqC-m}v9LAjtr&C<}{&jLsJ`IDK)CT_qu9g)6uc3V-p!>V0eLHsgs`u7IPK_>-DP>d$6i$-LlLA zUGMk%mA+LGc}F*V-vuNA#v~v|qKnorrIKspI*+;kS+H`MRLnGPm;lxYU`T!10e&lRBo`ZhMIOoFkXo zRpc`-LZ(ldV-i9Qhfmqw%47K2Nbex4RKZmFLLS?nrG%C}~nKs#ukBG;yEKkn&yBtWLko>Xr zLPTYs5r3Nkew%s_e|`%HuaH*BLmqKdO$nEK7uToJ|wtmMBdc-L*oBk zj!!3k5*peiX@^4#)wQR0=XkX_*7?7>qszWIt~32`369jdZ?QUuw;NL~nh4a&zffYi{oH*?Wtxys)4suYGvp#UE}g+yRi% NY^>Hlf8*A>e*^npNWcI9 literal 0 HcmV?d00001 diff --git a/res/mapframe.png b/res/mapframe.png new file mode 100644 index 0000000000000000000000000000000000000000..80d11a8e43ff5029876e461ad98a9e091a94ef9f GIT binary patch literal 4496 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 TaC~mGv}0MD+nJS^c<=i^I_q>w literal 0 HcmV?d00001 diff --git a/res/mapindicator.png b/res/mapindicator.png new file mode 100644 index 0000000000000000000000000000000000000000..93ae0b5dbb8b1fb1bb6bde6843d7cd88be87ed20 GIT binary patch literal 1899 zcmb_dO>Epm6m|hcZJ`o^1C*0-E~&ul8Qbxnx(#V|ldKwtRk9L+Q)XwzyH@;%?PNDW z>Y>mBNJzk~2#~^&14Y~_kdTm&xFc0PaDW@ALI?>iJyg8eKhltvsA47WjO}l}_r3Q% z&%E7ST{?66xzmy)ooOuB)?j=Iu9GJph5yT6pZX03)Ld!RVLbcf%;NR>{>`iP3;i8- z_f356lW%|dasATI@9y5b@y4&W_MeX~{lLG!{@IPc{=EIj3y~l@l`X$oNYdj^i|d5+ z;YZI(($s#~+9)^t6_2KIg|M{EEB!bFv?QIM>t}>+@ltN{PMB1c-@p1skwaEhUYYfg zpDplixV)G1^}W>=-P@urQ|2zn=ldQI#JnVOKaP^Z>sOTluLpDSSX1Nyq}-}1^CF5V!-hQiDG)Jdfwxv$9L0mX zs?sgX%+s`9uUF|Al{D{Y*mYeX&~#k|gj(z-CF!e4F+FCe@q*@IR)%RJ3r5mTx67&m zYKLjW*@QMJMx}zHX?>DuxPnAl10bUlT(+G@gW!y6JmN7=$^x)>g3Y>VnHJsjKGc)f z_XL3Q`u-%wky_$-5~3*UJCMexAV;E$)^5hNHD09KIpy^okU1@~$-IS}lQPX)X&Q~2 z)f`Kfb-QB7Gd`hVB9b_FU*QBCB+%w>j3 z^?*6JZJRnVg`Wo&@s`5^nzuXpLe}}~qgfQn16O#23b$7kD%#AMGI|^yQIBIq9I}aA`=*YHB>Z%SB&7`mgv;*X-E_QX-2n-7c z&N%r);=zuFhrzSP*p3e;epDLTB}s?F7OE)^pU&~TIn?>@bPj!8|7SXy*f)nh(+*p3 z@b17K3(Xunf{j~DC#MG7OwJviK&5gxRjk*dr{F{~8@2h?%=>h6^R0{diRr6%&c3(u z)0KC=_~6rzul+Iin2s|1<=v^asU7T literal 0 HcmV?d00001 diff --git a/res/mapplayer.png b/res/mapplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..c08bfcfb5a459abaa743757f7a808ff9ed82b23e GIT binary patch literal 4073 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 IGw);n1tQDslmGw# literal 0 HcmV?d00001 diff --git a/res/resources.res b/res/resources.res index 2330de0..000a46b 100644 --- a/res/resources.res +++ b/res/resources.res @@ -4,6 +4,9 @@ IMAGE shadow "shadow.png" NONE NONE IMAGE logo "logo.png" NONE NONE IMAGE sky "sky.png" NONE NONE +IMAGE ground "ground.png" NONE NONE +// IMAGE clouds "clouds.png" NONE NONE + IMAGE fadeTop "fadetop.png" NONE NONE IMAGE fadeBottom "fadebottom.png" NONE NONE @@ -16,4 +19,8 @@ SPRITE pBulletSprite "pbullet.png" 4 4 NONE 0 SPRITE butterflySprite "butterfly.png" 4 4 NONE 8 // SPRITE fairySprite "fairy.png" 4 4 NONE 8 SPRITE fairySprite "fairy2.png" 4 4 NONE 8 -SPRITE aliceSprite "alice.png" 6 6 NONE 0 \ No newline at end of file +SPRITE aliceSprite "alice.png" 6 6 NONE 0 + +// IMAGE mapPlayer "mapplayer.png" NONE NONE +IMAGE mapIndicator "mapindicator.png" NONE NONE +// IMAGE mapFrame "mapframe.png" NONE NONE \ No newline at end of file diff --git a/res/sakuya2.png b/res/sakuya2.png index f68a7dbf51d36384e68af11a7585f847069840d2..e201cca3170fc8aea4856c177847baf4bed9ba00 100644 GIT binary patch delta 649 zcmey(^O1i-2@~s)jb#&6m!6tptE4|!kTtG8ZNjt< z3=E9ZJzX3_JUaJ=T%6Rbz;j38>b2S5{_o#B*YW)7Cu$9I1s4_QPiN;YF`wPa@KAx{ zL361thwX+8nM)u4n*KTGebB&4E@57}oXK0G6~{~c9y=X+@q;&P+7-=~yaU@!k3~PW zzVFb$UY@V~Xx~MX02RBh1@V7W`P$W(_SgSnw7>V-YVM*B8x*o<76w{`9Xu__pW+y0 zJd?@Z$bq?$qb0k$ed@u2KIebc_qdM!aeI&&{akLwj-X3<+e9RdoqkkLyyM7FdvQ*P z2n(OJdlJiQj`FCWT{B!%=C2oQcw%AA9(O3p=k=-Fjh2cpS!R?Kl+C~Ax!xyIG+nNV z(I>Os>}1p9D1FwrKV0qpq8erEg|}Y{?%;k(y- zUl!LNmfq+`(aXda<*dv5v&J@BE_qUI)Zx_l+3QvukunQD`uKsO_w$Pm3l;}yas79S z_zopr04a_J{Qv*} delta 327 zcmV-N0l5D05Bm&|bOHqRv38IG3N=(PIXW^pIyEwr5CbC$HB>M;Ix;vqH8PVu15lHX z1SYey17iV```85(F1Q>c{a5ns6KofcE*^25=81D7`yr5Y3zJk2MbV2TKe z6`GcrKD`mk37#`M99?eIDer@@;p*}7GuPF2szvb8acwXU6PL{ZQ{iv5?Bn^^WVZ^- z3|L^ULFn?XRDLQF?^DzH~SoZ*thW zG+F%M;R`oZ<8McEapv=W5DJ~kyLGB`&&)x*up(KUy5Ip zkPRqYRqCA3@9-=$;P8rdmGa%4TmD3_R{z~KgXygDRjor$3l6$`+jF_-?WW6&OIIzN z$hT{4Lqw0w1*Hj}J7-SRoUkc#etf-PvUaH9x?`P}zdY+oYB>7srdq*`nDliG^=1d^ zZ|-wx{NBBD=4Ai+d-jjqrrJs`J;roaCsFT5p5{~SBYGEpzm}9*WV55=bFz*I`$qBe zCl}wZS-DzJ)}i^Au#6o;+to{^`dPex4L+<|XUcmj-)G92{55|Z&g`7AOxClaJ(W3M ztbT|0Z^_0N9QIZWCu8n99PIX(C;sP0p>s_9J%546SGsO|n`yN{vs}Zzqwb8>>%I0n z9-KM7o>O2FqwsUt?3nboA8OB@Eeo5oG&gE?T8`9p<;u-DPu~fuF4DKXzILta^7oMv z5!uPS*I8bydtoCn?~6tJ0P%4^H@hx@x-asp$?k z4rK_$m*Bco@b{xxfNDaZHQ*|Xht?OC8# zZ-*P@FOLt?pBuJl#$BD=0X_^a z%odL>q_6*V;80r7O#P~e`~&dU=(aHDxaQ9(_D(Qqg&6t;q}5)4j8{=W9N? weBkJkqX%|wjMO^wtzopr0Cn$=c>n+a delta 994 zcmZ3W(WSY;hnLGF#K_3X)ZEJ0aB>*0GBUTBH$cTQ)gn3BIL$yeImOaa*Ca93LN_tl z!dTZd#lp-i(Znp((!gZ%cit=}4`Ng*DHNBumX%nQXQbxYDj69VndurB=^7%Ople_{ zS(e{=vZ#RA;RM2r)1)OMALFhD5a1hI39jqQD{Y@xOi9j7I{Fh9PhJI*YbD zFx*nh*&Olit!DiT{U09v>PqL&>aSmSeTS|?))W5f(!wnz8CT?fTs$-(MUe0LqsKRv zX(i;_M?^QLCY8%xWQfN?D@*nCiPAC;0J+;JFhW>|2)F9 zC8)+Lm@y`7sikDxv>kPyY98D>bHe1yuQx#vpZ8{}?5#-Zdn{l3r6xt3YmuciLkYu$ zLkCT|%Pwl?S^FJHh+O*Iaq%4`#)_O~y{|$SwD#QGEB=S0ZC>LMg@${T7FF&K@;BC- zFB4e(>>5i(@TVBA_K827MOm{h{5+%<&ByG(olu~7D(}nfn$+pDro`Onvs}r!d7f^| zF{6J^u9ol5S6Ix|u&Rm6K9gtvnm18O)BTSd>d*MO@7PPmBkenvtARD7FUoE`h2P^~bZ`7rltj|t{iKD|FbwL<2Y*oVd_?pV`>J+sTbJN~t7o7g8< zzei>JTEno~-5mbqrC}NqvzJMgiqHCFmQ;B1yG_NTXL6e^+<$MoH!JkUfvd9ZcZ1e9 zl&;X@Y;((e|E*R<^uxR3M{8zZON`oY_kZ7+@?Xqz*P1d$oc#ER0SG)@{an^LB{Ts5 DGnc^D diff --git a/src/background.h b/src/background.h index ef7e5a7..303132b 100644 --- a/src/background.h +++ b/src/background.h @@ -1,13 +1,14 @@ #define BG_I 8 -#define FADE_TOP_I BG_I + 64 -#define FADE_BOTTOM_I FADE_TOP_I + 64 +// #define FADE_TOP_I BG_I + 64 +// #define FADE_BOTTOM_I FADE_TOP_I + 64 #define BG_OFF 112 void loadBackground(){ VDP_loadTileSet(sky.tileset, BG_I, DMA); - VDP_loadTileSet(fadeTop.tileset, FADE_TOP_I, DMA); - VDP_loadTileSet(fadeBottom.tileset, FADE_BOTTOM_I, DMA); + VDP_loadTileSet(ground.tileset, BG_I + 64, DMA); + // VDP_loadTileSet(fadeTop.tileset, FADE_TOP_I, DMA); + // VDP_loadTileSet(fadeBottom.tileset, FADE_BOTTOM_I, DMA); for(u8 y = 0; y < 4; y++){ for(u8 x = 0; x < 16; x++){ VDP_fillTileMapRectInc(BG_B, TILE_ATTR_FULL(PAL1, 0, 0, 0, BG_I), x * 8, y * 8, 8, 8); diff --git a/src/bullets.h b/src/bullets.h index d72147d..5c34ff1 100644 --- a/src/bullets.h +++ b/src/bullets.h @@ -66,7 +66,14 @@ void spawnBullet(struct bulletSpawner spawner, void(*updater)){ // Find available slot, return if none s16 i = -1; for(s16 j = 0; j < BULLET_COUNT; j++) if(!bullets[j].active) { i = j; break; } - if(i == -1) return; + if(i == -1 && spawner.player){ + + for(s16 j = 0; j < BULLET_COUNT; j++) if(bullets[j].active && !bullets[j].player){ + killBullet(j, FALSE); + i = j; + } + + } else if(i == -1 && !spawner.player) return; bullets[i].active = TRUE; bullets[i].pos.x = spawner.x; @@ -154,7 +161,7 @@ static void updateBulletExplosion(u8 i){ s16 sx = getScreenX(bullets[i].pos.x, player.camera); s16 sy = fix32ToInt(bullets[i].pos.y); u8 off = bullets[i].player ? P_BULLET_OFF : BULLET_OFF; - SPR_setPosition(bullets[i].image, sx - off, sy); + SPR_setPosition(bullets[i].image, sx - off, sy - off); } static void updateBullet(u8 i){ @@ -176,7 +183,7 @@ static void updateBullet(u8 i){ bool offScreenX = (dx < -CULL_LIMIT || dx > CULL_LIMIT); bool offScreenTop = (bullets[i].pos.y < FIX32(-16)); - bool offScreenBottom = (bullets[i].pos.y > GAME_H_F - FIX32(8)); + bool offScreenBottom = (bullets[i].pos.y > GAME_H_F); if(offScreenX || offScreenTop){ killBullet(i, FALSE); @@ -204,5 +211,5 @@ void updateBullets(){ bulletCount = 0; for(s16 i = 0; i < BULLET_COUNT; i++) if(bullets[i].active) updateBullet(i); - intToStr(bulletCount, debugStr, 1); + // intToStr(bulletCount, debugStr, 1); } \ No newline at end of file diff --git a/src/chrome.h b/src/chrome.h index ff2216a..1aa8d6e 100644 --- a/src/chrome.h +++ b/src/chrome.h @@ -1,12 +1,101 @@ +#define MAP_I 512 +#define MAP_TILE TILE_ATTR_FULL(PAL1, 1, 0, 0, MAP_I) +#define MAP_PLAYER_TILE TILE_ATTR_FULL(PAL0, 1, 0, 0, MAP_I + 1) +#define MAP_ENEMY_TILE TILE_ATTR_FULL(PAL0, 1, 0, 0, MAP_I + 2) +#define MAP_BORDER_X_TILE TILE_ATTR_FULL(PAL0, 1, 0, 0, MAP_I + 3) + char scoreStr[SCORE_LENGTH]; u32 lastScore; +// previous map positions: -1 means not drawn +s16 mapEnemyCol[ENEMY_COUNT], mapEnemyRow[ENEMY_COUNT]; +s16 mapPlayerRow; + static void drawScore(){ uintToStr(score, scoreStr, 1); - VDP_drawText(scoreStr, 1, 1); + VDP_drawText(scoreStr, 1, 5); +} + +// load map when stage does so we have all enemies + player +void loadMap(){ + VDP_fillTileMapRect(BG_A, MAP_TILE, MAP_X, MAP_Y, MAP_W, MAP_H); + + // VDP_fillTileMapRect(BG_A, TILE_ATTR_FULL(PAL0, 1, 0, 0, MAP_I + 3), MAP_X, MAP_Y - 1, MAP_W, 1); + // VDP_fillTileMapRect(BG_A, TILE_ATTR_FULL(PAL0, 1, 1, 0, MAP_I + 3), MAP_X, MAP_Y + MAP_H, MAP_W, 1); + + // VDP_fillTileMapRect(BG_A, TILE_ATTR_FULL(PAL0, 1, 0, 0, MAP_I + 4), MAP_X - 1, MAP_Y, 1, MAP_H); + + for(s16 i = 0; i < ENEMY_COUNT; i++){ + mapEnemyCol[i] = -1; + mapEnemyRow[i] = -1; + } + mapPlayerRow = -1; +} + +// temp arrays for new positions +s16 mapNewCol[ENEMY_COUNT], mapNewRow[ENEMY_COUNT]; + +static bool mapTileOccupied(s16 col, s16 row, s16 pRow){ + // player always at center column + if(col == MAP_W / 2 && row == pRow) return TRUE; + for(s16 i = 0; i < ENEMY_COUNT; i++) + if(mapNewCol[i] == col && mapNewRow[i] == row) return TRUE; + return FALSE; +} + +static void updateMap(){ + // compute new player row + s16 pRow = fix32ToInt(player.pos.y) / 75; + if(pRow < 0) pRow = 0; + if(pRow >= MAP_H) pRow = MAP_H - 1; + + // compute new enemy positions + for(s16 i = 0; i < ENEMY_COUNT; i++){ + if(!enemies[i].active || enemies[i].image == NULL){ + mapNewCol[i] = -1; + mapNewRow[i] = -1; + continue; + } + fix32 dx = getWrappedDelta(enemies[i].pos.x, player.pos.x); + s16 col = fix32ToInt(dx) / 54 + MAP_W / 2; + if(col < 0) col = 0; + if(col >= MAP_W) col = MAP_W - 1; + s16 row = fix32ToInt(enemies[i].pos.y) / 75; + if(row < 0) row = 0; + if(row >= MAP_H) row = MAP_H - 1; + mapNewCol[i] = col; + mapNewRow[i] = row; + } + + // clear old player tile if it moved and nothing new occupies it + if(mapPlayerRow >= 0 && mapPlayerRow != pRow) + if(!mapTileOccupied(MAP_W / 2, mapPlayerRow, pRow)) + VDP_setTileMapXY(BG_A, MAP_TILE, MAP_X + MAP_W / 2, MAP_Y + mapPlayerRow); + + // clear old enemy tiles that moved or disappeared + for(s16 i = 0; i < ENEMY_COUNT; i++){ + if(mapEnemyCol[i] < 0) continue; + if(mapEnemyCol[i] == mapNewCol[i] && mapEnemyRow[i] == mapNewRow[i]) continue; + if(!mapTileOccupied(mapEnemyCol[i], mapEnemyRow[i], pRow)) + VDP_setTileMapXY(BG_A, MAP_TILE, MAP_X + mapEnemyCol[i], MAP_Y + mapEnemyRow[i]); + } + + // draw enemy dots (skip if player occupies same tile) + for(s16 i = 0; i < ENEMY_COUNT; i++){ + mapEnemyCol[i] = mapNewCol[i]; + mapEnemyRow[i] = mapNewRow[i]; + if(mapNewCol[i] < 0) continue; + if(mapNewCol[i] == MAP_W / 2 && mapNewRow[i] == pRow) continue; + VDP_setTileMapXY(BG_A, MAP_ENEMY_TILE, MAP_X + mapNewCol[i], MAP_Y + mapNewRow[i]); + } + + // draw player dot on top + mapPlayerRow = pRow; + VDP_setTileMapXY(BG_A, MAP_PLAYER_TILE, MAP_X + MAP_W / 2, MAP_Y + pRow); } void loadChrome(){ + VDP_loadTileSet(mapIndicator.tileset, MAP_I, DMA); drawScore(); } @@ -17,6 +106,7 @@ void updateChrome(){ lastScore = score; drawScore(); } - VDP_clearText(1, 26, 4); - VDP_drawText(debugStr, 1, 26); + if(clock % 4 == 0) updateMap(); + // VDP_clearText(1, 26, 4); + // VDP_drawText(debugStr, 1, 26); } \ No newline at end of file diff --git a/src/enemies.h b/src/enemies.h index 8b2df37..381a349 100644 --- a/src/enemies.h +++ b/src/enemies.h @@ -42,7 +42,7 @@ void spawnEnemy(u8 type, u8 zone){ enemies[i].pos.y = randY; enemies[i].off = 16; enemies[i].image = SPR_addSprite(&fairySprite, - getScreenX(enemies[i].pos.x, player.camera) - enemies[i].off, fix32ToInt(enemies[i].pos.y) - enemies[i].off, TILE_ATTR(gameOver ? PAL1 : PAL0, 0, 0, 0)); + getScreenX(enemies[i].pos.x, player.camera) - enemies[i].off, fix32ToInt(enemies[i].pos.y) - enemies[i].off, TILE_ATTR(PAL0, 0, 0, 0)); if(!enemies[i].image){ enemies[i].active = FALSE; return; diff --git a/src/enemytypes.h b/src/enemytypes.h index 2b02d36..f538b02 100644 --- a/src/enemytypes.h +++ b/src/enemytypes.h @@ -1,22 +1,25 @@ void loadEnemyOne(u8 i){ - enemies[i].ints[0] = random() % 60; + enemies[i].ints[0] = random() % 40; enemies[i].angle = ((random() % 4) * 256) + 128; enemies[i].speed = FIX32(2); } void updateEnemyOne(u8 i){ - if(enemies[i].clock % 60 == enemies[i].ints[0] && enemies[i].onScreen){ - enemies[i].clock % 120 == enemies[i].ints[0] ? sfxEnemyShotB() : sfxEnemyShotA(); + if(enemies[i].clock % 40 == enemies[i].ints[0] && enemies[i].onScreen){ + enemies[i].clock % 80 == enemies[i].ints[0] ? sfxEnemyShotB() : sfxEnemyShotA(); struct bulletSpawner spawner = { .x = enemies[i].pos.x, .y = enemies[i].pos.y, - // .anim = 6 + (random() % 3), - .anim = 6, + .anim = 3 + (random() % 3), + // .anim = 6, // .frame = 1, .speed = FIX32(2) + FIX16(random() % 4), .angle = random() % 128, }; - // if(random() % 2 < 1) spawner.anim += 3; + switch(random() % 3){ + case 1: spawner.anim += 3; break; + case 2: spawner.anim += 6; break; + } for(u8 j = 0; j < 8; j++){ spawnBullet(spawner, EMPTY); spawner.angle += 128; diff --git a/src/global.h b/src/global.h index dcc009d..77b84cc 100644 --- a/src/global.h +++ b/src/global.h @@ -15,6 +15,11 @@ u32 score; #define FIRST_ROTATING_BULLET 3 +#define MAP_X 1 +#define MAP_Y 1 +#define MAP_W 38 +#define MAP_H 3 + char debugStr[8]; void EMPTY(s16 i){(void)i;} diff --git a/src/player.h b/src/player.h index 08b55b4..75ff7bb 100644 --- a/src/player.h +++ b/src/player.h @@ -138,5 +138,5 @@ void updatePlayer(){ SPR_setPosition(player.image, sx - PLAYER_OFF, sy - PLAYER_OFF); - // intToStr(fix32ToInt(player.pos.x), debugStr, 1); + intToStr(fix32ToInt(player.pos.x), debugStr, 1); } \ No newline at end of file diff --git a/src/stage.h b/src/stage.h index 5aa93c0..723bcd3 100644 --- a/src/stage.h +++ b/src/stage.h @@ -5,4 +5,5 @@ void loadStage(){ spawnEnemy(0, zone); } } + loadMap(); } \ No newline at end of file