From 2372340e6d9fbc0f1ade30c714d8025e7bd7e70c Mon Sep 17 00:00:00 2001 From: d0k3 Date: Sun, 6 Oct 2019 22:28:57 +0200 Subject: [PATCH] Updated touchscreen playground --- arm9/source/godmode.c | 12 ++++++------ arm9/source/system/vram0.h | 1 + arm9/source/utils/paint9.c | 23 ++++++++++++++++------- data/easter.bin | Bin 0 -> 2038 bytes 4 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 data/easter.bin diff --git a/arm9/source/godmode.c b/arm9/source/godmode.c index aae0c85..af6254a 100644 --- a/arm9/source/godmode.c +++ b/arm9/source/godmode.c @@ -118,9 +118,7 @@ u32 BootFirmHandler(const char* bootpath, bool verbose, bool delete) { } u32 SplashInit(const char* modestr) { - u16* bitmap; u64 splash_size; - u32 splash_width, splash_height; u8* splash = FindVTarFileInfo(VRAM0_SPLASH_PNG, &splash_size); const char* namestr = FLAVOR " " VERSION; const char* loadstr = "booting..."; @@ -132,11 +130,14 @@ u32 SplashInit(const char* modestr) { ClearScreenF(true, true, COLOR_STD_BG); if (splash) { - bitmap = PNG_Decompress(splash, splash_size, &splash_width, &splash_height); - if (bitmap) DrawBitmap(TOP_SCREEN, -1, -1, splash_width, splash_height, bitmap); + u32 splash_width, splash_height; + u16* bitmap = PNG_Decompress(splash, splash_size, &splash_width, &splash_height); + if (bitmap) { + DrawBitmap(TOP_SCREEN, -1, -1, splash_width, splash_height, bitmap); + free(bitmap); + } } else { DrawStringF(TOP_SCREEN, 10, 10, COLOR_STD_FONT, COLOR_TRANSPARENT, "(" VRAM0_SPLASH_PNG " not found)"); - bitmap = NULL; } if (modestr) DrawStringF(TOP_SCREEN, SCREEN_WIDTH_TOP - 10 - GetDrawStringWidth(modestr), @@ -150,7 +151,6 @@ u32 SplashInit(const char* modestr) { DrawStringF(BOT_SCREEN, pos_xu, pos_yu, COLOR_STD_FONT, COLOR_STD_BG, loadstr); DrawStringF(BOT_SCREEN, pos_xb, pos_yu, COLOR_STD_FONT, COLOR_STD_BG, "built: " DBUILTL); - free(bitmap); return 0; } diff --git a/arm9/source/system/vram0.h b/arm9/source/system/vram0.h index afde55f..b3f5fec 100644 --- a/arm9/source/system/vram0.h +++ b/arm9/source/system/vram0.h @@ -15,6 +15,7 @@ #define VRAM0_SCRIPTS "scripts" #define VRAM0_README_MD "README_internal.md" #define VRAM0_SPLASH_PNG FLAVOR "_splash.png" +#define VRAM0_EASTER_BIN "easter.bin" #define VRAM0_OFFSET 0x18000000 diff --git a/arm9/source/utils/paint9.c b/arm9/source/utils/paint9.c index 145f819..2f394f0 100644 --- a/arm9/source/utils/paint9.c +++ b/arm9/source/utils/paint9.c @@ -1,4 +1,6 @@ #include "paint9.h" +#include "vram0.h" +#include "png.h" #include "hid.h" #include "ui.h" @@ -100,10 +102,21 @@ u32 Paint9(void) { u16 color = *color_picker_tmp; u32 brush_id = 0; - // clear screens, draw title + // clear screens, draw logo + const char* snapstr = "(use L+R to save)"; + u64 logo_size; + u8* logo = FindVTarFileInfo(VRAM0_EASTER_BIN, &logo_size); ClearScreenF(true, true, COLOR_STD_BG); - DrawStringCenter(TOP_SCREEN, COLOR_STD_FONT, COLOR_TRANSPARENT, - "Paint9\n \nYou may save your creation at\nany time via the screenshot\nfunction (L+R).\n \nHave fun!"); + if (logo) { + u32 logo_width, logo_height; + u16* bitmap = PNG_Decompress(logo, logo_size, &logo_width, &logo_height); + if (bitmap) { + DrawBitmap(TOP_SCREEN, -1, -1, logo_width, logo_height, bitmap); + free(bitmap); + } + } else DrawStringF(TOP_SCREEN, 10, 10, COLOR_STD_FONT, COLOR_TRANSPARENT, "(" VRAM0_EASTER_BIN " not found)"); + DrawStringF(TOP_SCREEN, SCREEN_WIDTH_TOP - 10 - GetDrawStringWidth(snapstr), + SCREEN_HEIGHT - 10 - GetDrawStringHeight(snapstr), COLOR_STD_FONT, COLOR_TRANSPARENT, snapstr); // outline canvas DrawRectangle(BOT_SCREEN, 0, 0, 30, SCREEN_HEIGHT, outline_bg); @@ -129,8 +142,6 @@ u32 Paint9(void) { // Paint9 main loop while (1) { - DrawStringF(TOP_SCREEN, 16, 16, COLOR_STD_FONT, COLOR_STD_BG, - "Touchscreen coordinates (0/0) "); Paint9_DrawBrush(x_cb, y_cb, color, brush_bg, brush_id); if (InputWait(0) & BUTTON_B) break; @@ -140,8 +151,6 @@ u32 Paint9(void) { u16 ty_prev = 0; u32 tb_id_prev = 0; while (HID_ReadTouchState(&tx, &ty)) { - DrawStringF(TOP_SCREEN, 16, 16, COLOR_STD_FONT, COLOR_STD_BG, - "Touchscreen coordinates (%d/%d) ", tx, ty); TouchBoxGet(&tb_id, tx, ty, paint9_boxes, 8); if (tb_id == P9BOX_CANVAS) { if (tb_id_prev == P9BOX_CANVAS) diff --git a/data/easter.bin b/data/easter.bin new file mode 100644 index 0000000000000000000000000000000000000000..bc98c62f2dc906dad695a59a01031ed8d200ba4d GIT binary patch literal 2038 zcmV5HEU+pZ++|ge&06*4p9}TLka|FfI5HyXkZ6O9THa&THqhRNkIFB5f1nO zi~%|2S2!K~dpjHsXS3M@##${fT!~g65LH85b93|6t5-D|4S*v@j)?vF zd_Eiwd%fPp#l=FQa4?8#0vgI*Km$ir64%+;DX=CDIvS15X0zFB;c$3*dU|njF`v&L z00$=l5AXo3A_y?07I*UG$ubXXXlUr|?R7exTU%SPSnQi7&Ik+?_xuc`fo7s70E88c zu?R~`OPiaUm5scq>Bfy4PN(xAxx64S2CS%)9a7@*`MlrnCwn{|kI(1({P}ZfePh`7fdEo>6Hr$3kT__wg4?9oo1j`E`_LUGCe&#rJaRB!Rz&Uz20w{sZD^d zlyz!>R=M~fLtIBkNBQSPA`!RS{qf_+q6cWTPN&muw7`|jPl_wV2HJYRa}HDDHS$vP}j zNT?)^)V&f!qtU6UsrmVNQUfy#Gdw)(a=FCUbvPWiZ{L;`D>O}ac6L$}wX(9paU9t{ zI5>Fx`0;o=J~=tLy}d0CUAlDX%$YM3MaARs(b3UVDkW~!&6_vPW^;MoySlnEnM@!M zfShXk3HUEy0s4VffCkb)9OzMwA&SIBqfv*$LH2MQ7Yc=DW@cp5hKm<34h;=SwBEIA z*G5N2Nos^ZeEs_M-rin{qWpgU{rmUD3mgu|<;#~Tin7^kMx*iGy?ej-@A`U|%Oxbv zCX?yJi4!w3Gs2L?VyVcQuq9TjRhBq`y9AH`-V$flT1;H6O5&E6m&xY*{Jh)kP9~E| zuO(qwz|o^eT`rf;=PQa(ZEXT;0J^)oEfz~C6cUDPHk(*hu-olMqfrn*TCJ9h-Fm%V z{GCdrc%H9VjNo}b8jY&)3F2XvD3UsrawHy)lV-KOy{*KWU_`aGvRi`l=g*Vt1Yj^2 z$aNYF23cjpFwDTfK*e>guC97Ko}HZ?Nk7Z7o12@-WHOmdMx)WEPoK`u&+p2sN=iwT zN{ids*N7Cr_Syg+h*u#c>?Bv9UoqtTOW@CnXYzkbceSbXHf_tFNyg9v&9LB5D4l zk&4?)Hgmb$*C~I=2VycwD8F)zMnhUbBobL#TKZKzn$0aOE!DkQe}BK#YR%{KBsHbP z{a&E=IA5>Vi^oI=j>nE2BS~*-Ypb&6!!TE_T&b(8BX^P9r0PHcCg8h0uY9k`W_x=( zX_BIp6CsuRT9TA z40+;q6{I4Oh~MuglP#msC|ip!1D0j?G1aXCT1mM`C2?(SZKS4EQxF#M@ZrO|ckhz< z4NcR#HJL)8Fg7;!6+Q_m#Rp??Gplm0L_n;ptdw75nP$~kT3UMj`t`muB}oaCsz66d zs!ytjlVr~2zsSU5F)?~%v)R%Ld)0XH;zgNMuR0`(&t1Dh9B3_eaPcaL<2bIoy9ow^ zb8~Yn%Vsi}XV0Dq4l$R@k#`Wya93wGl}bH-{(OIl%K>YoQvyoAHd%|K?S?{dsF8hR z(%Gle>GDVQ(W6Hb6B8WAi4uQdVd3oAvqIh;2n0kPTU%R|@)KEn`0$~>zu#`Rm!Cok zrt;zmz#?EHWXC^&?3e#Jn1LanuQ>7s)ceQj>1mmWm$Hyza3V?JvO(sU+aQM!h zJ3gOpVq)UKg9qXr$TXJYII`M9I!B)8g(*DGyWMVbsI)-DvMjl^6@A5PAXZ$YyaD_b z_&e}#V4%2cnFgkn5*yj-$eTBBW@l%;UT@VtYhz=>@Aoe+FOy^?5{a&^E`z~PC=_14 zd`VV&8XFtCySqg*pPQQ#&0nwAcXV`66qQIM#>dA=KOm5s%jN8LJ5AH;>+5c}TXI2Z ze24-LV&(J~G0c>d=iESO4f{JBRxGm$z<~J!hHu zTCF;rE*K0-zB!0!YHBhV3~Os^D*u?#4g8=`6BoVVbHGPbH-Bg1DhMl@7SHK#jc(xk z60IwQ(Vqd2LNNV<68Dwy7vOt9N9sqwT^xB2iBl+20CvCt@W46{1PVCBA^w2)KadqH U271<+(f|Me07*qoM6N<$f}^O^jQ{`u literal 0 HcmV?d00001