From 984a32a25dd869066d900358346e47df5a86ab12 Mon Sep 17 00:00:00 2001 From: breadone Date: Sat, 11 Mar 2023 15:25:46 +1300 Subject: [PATCH] Update to use the actual flappy bird font in score --- Makefile | 28 ++++++++++++++++++++++++---- gfx/big0.png | Bin 1203 -> 0 bytes gfx/big1.png | Bin 1199 -> 0 bytes gfx/big2.png | Bin 1221 -> 0 bytes gfx/big3.png | Bin 1211 -> 0 bytes gfx/big4.png | Bin 1211 -> 0 bytes gfx/big5.png | Bin 1219 -> 0 bytes gfx/big6.png | Bin 1216 -> 0 bytes gfx/big7.png | Bin 1217 -> 0 bytes gfx/big8.png | Bin 1205 -> 0 bytes gfx/big9.png | Bin 1218 -> 0 bytes gfx/fbfont.ttf | Bin 0 -> 6632 bytes gfx/sprites.t3s | 10 ---------- romfs/fbfont.bcfnt | Bin 0 -> 524780 bytes romfs/sprites.t3x | Bin 0 -> 26777 bytes source/main.c | 16 ++++++++-------- source/sprites.h | 20 ++++++-------------- 17 files changed, 38 insertions(+), 36 deletions(-) delete mode 100644 gfx/big0.png delete mode 100644 gfx/big1.png delete mode 100644 gfx/big2.png delete mode 100644 gfx/big3.png delete mode 100644 gfx/big4.png delete mode 100644 gfx/big5.png delete mode 100644 gfx/big6.png delete mode 100644 gfx/big7.png delete mode 100644 gfx/big8.png delete mode 100644 gfx/big9.png create mode 100644 gfx/fbfont.ttf create mode 100644 romfs/fbfont.bcfnt create mode 100644 romfs/sprites.t3x diff --git a/Makefile b/Makefile index 0a4678d..e61601a 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,6 @@ SOURCES := source DATA := data INCLUDES := include GRAPHICS := gfx -#GFXBUILD := $(BUILD) ROMFS := romfs GFXBUILD := $(ROMFS)/gfx @@ -88,6 +87,7 @@ SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) GFXFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.t3s))) +FONTFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.ttf))) BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) #--------------------------------------------------------------------------------- @@ -108,10 +108,12 @@ endif ifeq ($(GFXBUILD),$(BUILD)) #--------------------------------------------------------------------------------- export T3XFILES := $(GFXFILES:.t3s=.t3x) +export EFONTFILES := $(FONTFILES:.ttf=.bcfnt) #--------------------------------------------------------------------------------- else #--------------------------------------------------------------------------------- export ROMFS_T3XFILES := $(patsubst %.t3s, $(GFXBUILD)/%.t3x, $(GFXFILES)) +export ROMFS_FONTFILES := $(patsubst %.ttf, $(GFXBUILD)/%.bcfnt, $(FONTFILES)) export T3XHFILES := $(patsubst %.t3s, $(BUILD)/%.h, $(GFXFILES)) #--------------------------------------------------------------------------------- endif @@ -121,7 +123,7 @@ export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) export OFILES_BIN := $(addsuffix .o,$(BINFILES)) \ $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(addsuffix .o,$(T3XFILES)) + $(addsuffix .o,$(T3XFILES)) $(addsuffix .o,$(EFONTFILES)) export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) @@ -161,7 +163,7 @@ endif .PHONY: all clean #--------------------------------------------------------------------------------- -all: $(BUILD) $(GFXBUILD) $(DEPSDIR) $(ROMFS_T3XFILES) $(T3XHFILES) +all: $(BUILD) $(GFXBUILD) $(DEPSDIR) $(ROMFS_T3XFILES) $(ROMFS_FONTFILES) $(T3XHFILES) @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile $(BUILD): @@ -188,6 +190,12 @@ $(GFXBUILD)/%.t3x $(BUILD)/%.h : %.t3s @echo $(notdir $<) @tex3ds -i $< -H $(BUILD)/$*.h -d $(DEPSDIR)/$*.d -o $(GFXBUILD)/$*.t3x +#--------------------------------------------------------------------------------- +$(GFXBUILD)/%.bcfnt : %.ttf +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @mkbcfnt -o $(GFXBUILD)/$*.bcfnt $< + #--------------------------------------------------------------------------------- else @@ -209,13 +217,19 @@ $(OUTPUT).elf : $(OFILES) @$(bin2o) #--------------------------------------------------------------------------------- -.PRECIOUS : %.t3x +.PRECIOUS : %.t3x %.bcfnt #--------------------------------------------------------------------------------- %.t3x.o %_t3x.h : %.t3x #--------------------------------------------------------------------------------- @echo $(notdir $<) @$(bin2o) +#--------------------------------------------------------------------------------- +%.bcfnt.o %_bcfnt.h : %.bcfnt +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + #--------------------------------------------------------------------------------- # rules for assembling GPU shaders #--------------------------------------------------------------------------------- @@ -248,6 +262,12 @@ endef @echo $(notdir $<) @tex3ds -i $< -H $*.h -d $*.d -o $*.t3x +#--------------------------------------------------------------------------------- +%.bcfnt : %.ttf +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @mkbcfnt -o $*.bcfnt $< + -include $(DEPSDIR)/*.d #--------------------------------------------------------------------------------------- diff --git a/gfx/big0.png b/gfx/big0.png deleted file mode 100644 index d1b6f3fbe2a7e9c132b61bec91023c6dd8d1113f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmZ`&zi-n(6uvZ2m9#;qWk6-Xav0K<_-v_yan!vmqpwvKDw}r-_@kFS)zt``-6{+`W5NTDlaEO~w#H z@j_lL!#W0Id}J7A`{OzK@lvlAn#CfT27Lq#N5)YUv4+k4am^?P>(gX9_{JlfT5WO z=oc(U+WDG`&?rP1ors`UuTLNpy<=3Wq*}Zxt=J}~HSA@b^UOA7A=#5aHFcsfp4qZo z$;-07g#!D5k(7<=(T1=A|q*5jffLqw4O8W3-83TMYH9E!(Rk%d#|3Pl7yk z&*(?8+-_M=Af^ZwI3DjugJOI6?P7Ua`#=&gng_(9NI>%sBgj#v8A$#W)>OmPEf?xh zgtM}r+8&@^T!>f=5ydbu1cZoCmbB>Tv|%c?-BR}UkBkRx2Ixh&?1n}(RU^70@?tv0 z!+*Xa%u2Jol%AUr(h|=HZg$y*{Ltf&s%71^TdVXEm3ff|!2+FSyayhn_L_O?hIPr--X^+VsI=w??{Q6Urr_A zXZb|)oq5kMUZ{6bFfe4{^ijLLejbh`ZXBA9EuuObjqG zf)NctufDcWPYeGXX4dARgQajTSU#!MP3pLO!FBkIm;p^}H`Zni?#A143Up}f1^Ne5 ze`9{dLudfJ3=DDT{m07)#h+Ql5-sHy)Us0-&5E;1M8Do(ETs7=h;>3u-mlkePxZ4x zfKWkZ+gRWO2wl$#rF?;(aa_XR5hYO)^aRiInp>%=%f^Ei9adT4DWwe+<7TrdHZ!8* zu3>p zLOZ4CBo`r;B19!hj3^>RNK2h@2`iYQbNo{XH-cF&78nS?6BidOUuM_Y8&hl^$A6ShGjNt_>{Vv+F?GlEviG}0i|oZ zo3+x>pXD&B?xrre7J*U>VwGFoqI)g8hFLX6sxvJ8U>9m%Pr$Jpzau^Id*>E=u5&r# zUU6i*TzMJ0*#GBnaB}a%rKKx!&+N_5hvm4C+CSV*mcNrxae6KJX-E07zBimIHut~0 m;(qRJiPIySyT7Iv{v&jdxc>L{wS%|px#ngUjc@m#Y#jmU7Dtx= diff --git a/gfx/big2.png b/gfx/big2.png deleted file mode 100644 index 5a61a1bafa58fbdae5a7f1b49269e02cc060c280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcmZ`&-D}fO6u({Pm|X*7b0QNVX2L$3o20|pkjA;ixq_XgRB6Etvn|zVlawT*(FuYm z>YIC$Avo|!5W)XI@x`}2y5~J9;)@DC2-9M26~^ zHo))*X4DI#{6t6Xb^JY8iOj+PPr;hgJ*{G>u4U6X+oF?f5-e>SZ4Fj@Bihh=z=lRw z(RWymR%c5NLR}E0t2ctyU!FiHdRs3P-D38#xMUfux@;|KtY=gS3rU^`s-d|m?HLu* z5xq3yBSg^2HfCra;@(L!#cYnAwrq_)%W^Eo$T6CxC40Fn=9QT`9lp}cE!VAz7}shw zww7cq`zGd7sTAe}EC>leB%HgZt9l9383>&0`cX7z$=0i`ZkaUkt1enAZkl08poRo_ zYM$PVWIFY-pg>G4m}fbB5DkiLZ!niy@*ACWZ_lB9tXg+Zt(@f@M|Y{rw~1R!j>$3zxmDx~ihOnk;Za zGQq)rqQH-f!h|@U8s(EB#|3WoU_*Y$afrpd=2(>#a*6VUz=2?%%o5&bZlyMvS54iO zp>UtlvfaumHSGrl44Yf2S8QE_R`he_>(Rn{b-aX0H-@@1XnlVddS8ygvFyGhIrh2l z$8mUC^BLtrVQ6jX*xK`*&B-&~ukGQ1*H0h){`Y0`Rd-=*WcbquBFfuu+~g`X7LRxS zIUT*ev-oi^(>F*>QDa-}?;rOsP+L<*_aHTs{~0ARK&Ih!^z~HlUp#;R0eQrki*w4m IsT&Xf1BzcxWdHyG diff --git a/gfx/big3.png b/gfx/big3.png deleted file mode 100644 index 1073404a664795d326f30ae3428c69ed01136225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1211 zcmZ`&O=uHA6rLnnYMP+5Dy3f5t>~6%`WwX|H)doxrHA(^^Zre?}n(Tz#DOoLe z5J3eGEvSeH7W5*BH}8t4o_h4|O~jLex9XeSG})%@OJ?TnyzhHIGjE>cXD%het5{Jt>gi8x)ute9RO;%z(*3`SfhDKJ< zPgoAsrb{kDT@aH3Gy^O zs};$18)ZR(m|3tShUE&(@I)aWO+nNE20><*?|rDVaK5qXHAz>mf0n0W3mW>B{r*gm${wVVqUW?szKpC zrER;NRchJy3K%xGQ?EFd39aboDm9{o_ZoN=vu+G^XVCioF7&<@hhy1(M_T;;^R6X$ zT356B`NH7Z{L!`5t<8y3-tX^2{cj&X{PXYI=9?ph(cz)5pPA?%euxt*$aDfYWAaH4li744lyDNW9weA6zwWx;7@=FNQXdp|R8?q%oBbjADP z2%)abv^o!SC-m<2HW-~}6Lj&=)H6j*L&rdFM{Tig#DElo55@Y>fj~y+e5}7NUx*FX zbXq`1L@=Tr=*2r0YOU#CgPFEz=wK0o6#?;+FyUOIYW=+Wa|gqSN7idTz({0SLfeN{r=5#H~PC2g0j_?96a7vtIS=lWVrFr#qjSj0ccbSligmJZ6 z<*O;)aW7$Ue0&@WNt{e3KqKL;*u?M?wl@$O*|DRV-jZuoh~?NUwQDRo%OuTl)KR^K zahkr>@ML?nv>-uD5iIfo-j4>!*5lj7@{P)WNyIAt#}`FHT5uR)j53Wt3a&7(T4mGr zARk2>lY`Lq0FC4#L_I=GMu`z1LWH!WDc7V0lXIMsvbTO@+^o|?*Wj`X1~F8Fm`YMe zrV;}DqdD=oluAj$@Q?_j5SrPg8?i%=L(=C>&nYd_OH@Xa0yHerQO0}VW@>}EU|U3i z!~;sxb~7vA!1r?)g`25oUCV@03}O{)-lBUoeHqhgj8tb>`oS*Lz7mIH*?C7w{PoP6 zukf_aWz>_o!HuOu8~3+AojC0O{(f{|?e6-YRdRD?R-ODi(ev`@hxc1;uZG{=*k1oQ zl3idr7=~HfdeV8jm0uO!t^9njQRx3X{B7o!t{urUiiS9GtoKFh7fhdS=G2_}eDdP0 Ef8`2J!2kdN diff --git a/gfx/big5.png b/gfx/big5.png deleted file mode 100644 index bbf0a72bcf4a492154fe26dd755e6ca3f847f211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmZ`&O=uHA6rMD-)U*X@DwKL~*{c1`&i+V$*3DY&stuSLN|aQgxNSFeHQ5cjQ?lBV zMNw}SJQNWvcoL*|@~r6D;>n)9so+IHL{Q)CrpY#KUotaq=Y8M%nR)XdGkLBp))hkt zwWTJsDOg)!v^O`wY`-{3KUR%gDxXfHe$bmyQ=}b5L5si-MY_;FUq|Rt0!zbMLzUIK7Om>-U_%2- z=o>8iOB2&BLM;%bB_2VKpL8M=y>4c6B$qxf&)G#zpSNcX&MTHE3n`uqYSAD%;}r{* zD|<=SN64VlZOk%0gxpB7xpamZw;h8S;&_f{)fmGtiZh>=r?j&bI(#MBYlM_!jLYRR zSC%;2S-`^R=qTnzEQ$$0B;1=8(Y=J_b_Y(j{Ah+d=a?m8+7?6o>a+GDNwO>rRFxo4 z!!v73mlJkqd~FN{I;o zM-@gCKeZi(T5%y_E<_Z=#E>CGgtFvu$Dj?9we5nsvwsv^kEx@l;j-s-qH8)aRFM~@ z1P}k=tZ-bGBv~985G0xB12@~SAwTpu-@o(o-=~dd2eO0xeed2-(O!Px$Cla#Hyicu zM=wWTk9EF(dJI2$bvL%Yx$w3pb+G5-Otic2_iZXGbm~Z>!@uHx_~g(keZr|TliK>} HtIPiZJA+kk diff --git a/gfx/big6.png b/gfx/big6.png deleted file mode 100644 index 2bcb61fd5689c3fe81baac23feaa1a5727f21b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 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 z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** 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 literal 0 HcmV?d00001 diff --git a/source/main.c b/source/main.c index aeb3876..7ea00ad 100644 --- a/source/main.c +++ b/source/main.c @@ -19,7 +19,7 @@ #define SCREEN_WIDTH 400 #define SCREEN_HEIGHT 240 -// Simple sprite struct + typedef struct { C2D_Sprite spr; float x, y; // pos @@ -47,11 +47,6 @@ static void initSprites() { // set bird consts C2D_SpriteSetPos(&sprites[SPR_BIRD].spr, SCREEN_WIDTH / 4, SCREEN_HEIGHT / 3); - // big number positions - for (size_t i = 1; i < 10; i++) { - C2D_SpriteSetPos(&sprites[i].spr, 260, 100); // a guess - } - // set bottom screen scorecard C2D_SpriteSetCenter(&sprites[SPR_SCORECARD].spr, 0.0, 0.0); C2D_SpriteSetPos(&sprites[SPR_SCORECARD].spr, 2, 40); @@ -93,8 +88,9 @@ int main(int argc, char* argv[]) { C2D_Font font; g_staticBuf = C2D_TextBufNew(4096); - font = C2D_FontLoadSystem(CFG_REGION_EUR); + font = C2D_FontLoad("romfs:/fbfont.bcfnt"); C2D_TextFontParse(&scoreText, font, g_staticBuf, "0"); + C2D_TextOptimize(&scoreText); // Load graphics spriteSheet = C2D_SpriteSheetLoad("romfs:/gfx/sprites.t3x"); @@ -141,6 +137,7 @@ int main(int argc, char* argv[]) { char scoreString[(((sizeof score) * CHAR_BIT) + 2)/3 + 2]; sprintf(scoreString, "%d", score); C2D_TextFontParse(&scoreText, font, g_staticBuf, scoreString); + C2D_TextOptimize(&scoreText); // Render the scene @@ -156,13 +153,16 @@ int main(int argc, char* argv[]) { // C2D_DrawSprite(&scoreSprite->spr); - C2D_DrawText(&scoreText, 0, 260, 100, 0.0f, 1, 1); + C2D_DrawText(&scoreText, 0, 255, 90, 0.0f, 1.0f, 1.0f); C3D_FrameEnd(0); + } // Delete graphics C2D_SpriteSheetFree(spriteSheet); + C2D_TextBufDelete(g_staticBuf); + C2D_FontFree(font); // Deinit libs C2D_Fini(); diff --git a/source/sprites.h b/source/sprites.h index 26e0438..aec0959 100644 --- a/source/sprites.h +++ b/source/sprites.h @@ -4,21 +4,13 @@ #define SPRITES_H #define SPR_BIRD 0 -#define SPR_BIG0 1 -#define SPR_BIG1 2 -#define SPR_BIG2 3 -#define SPR_BIG3 4 -#define SPR_BIG5 6 -#define SPR_BIG7 8 -#define SPR_BIG8 9 -#define SPR_BIG9 10 -#define SPR_BG 11 -#define SPR_FLOOR 12 -#define SPR_LOGO 13 -#define SPR_PIPEBOTTOM 14 -#define SPR_PIPETOP 15 +#define SPR_BG 1 +#define SPR_FLOOR 2 +#define SPR_LOGO 3 +#define SPR_PIPEBOTTOM 4 +#define SPR_PIPETOP 5 -#define SPR_SCORECARD 16 +#define SPR_SCORECARD 6 #endif \ No newline at end of file