From c9ebb85d1392a3ca912d31626fc61fa1a6dcf760 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Tue, 4 Jan 2022 14:47:34 -0800 Subject: [PATCH] commit --- .gitignore | 5 ++- Font.aseprite | Bin 789 -> 0 bytes data.png | Bin 142 -> 0 bytes font.png | Bin 595 -> 0 bytes images/Font.aseprite | Bin 0 -> 763 bytes images/font.png | Bin 0 -> 564 bytes out.c | 72 ---------------------------------- out.c.png | Bin 2547 -> 0 bytes scripts/png2gb/index.js | 2 +- src/common_tiles.c | 15 +++++++ src/common_tiles.h | 18 +++++++++ src/font.c | 75 +++++++++++++++++++++++++++++++++++ src/{images => }/font.h | 9 +++-- src/images/font.c | 75 ----------------------------------- src/libs.h | 8 +--- src/main.c | 68 ++++++++------------------------ src/text.c | 75 ----------------------------------- src/text.h | 16 -------- src/textbox.c | 85 ++++++++++++++++++++++++++++++++++++++++ src/textbox.h | 34 ++++++++++++++++ src/tiles.h | 9 +++++ src/time.c | 10 +++++ src/time.h | 11 ++++++ src/util.h | 12 ++++++ test.png | Bin 205 -> 0 bytes 25 files changed, 297 insertions(+), 302 deletions(-) delete mode 100644 Font.aseprite delete mode 100644 data.png delete mode 100644 font.png create mode 100644 images/Font.aseprite create mode 100644 images/font.png delete mode 100644 out.c delete mode 100644 out.c.png create mode 100644 src/common_tiles.c create mode 100644 src/common_tiles.h create mode 100644 src/font.c rename src/{images => }/font.h (60%) delete mode 100644 src/images/font.c delete mode 100644 src/text.c delete mode 100644 src/text.h create mode 100644 src/textbox.c create mode 100644 src/textbox.h create mode 100644 src/tiles.h create mode 100644 src/time.c create mode 100644 src/time.h create mode 100644 src/util.h delete mode 100644 test.png diff --git a/.gitignore b/.gitignore index 8aeb3ee..2babf3f 100644 --- a/.gitignore +++ b/.gitignore @@ -76,4 +76,7 @@ yarn.lock *.log obj -res \ No newline at end of file +res + +./out.c +./out.c.png \ No newline at end of file diff --git a/Font.aseprite b/Font.aseprite deleted file mode 100644 index 5926422bdc74c0a798f01c1fd055ca102a849673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmWe-W?*=*l##&!2ss!S85kH+fEWQ-7#Klkf*RS$FS@7*RuU*i0 z3%-Y)9QXaYw%16Cwrhqz{=O%^_Ne^jgzo&?*ZZEo^NoBg==k~iKEJ;o4tz9}t6A^Nz3F_e9$wE+c%c@KWyQ z@;S8}2c9p?y>n!L`L=gW-+yO)xc^@A+3B0kvdr;wx0tj=pYu(v{&aD{$L+7c`fn{{1j#;jTxUyZ+b9J$ACr{5*5>iTk>LtLkc>&6#g{ z|Mee7`=b*N1?V4ZfA9WpLG`;5m#_YR*|y%fnq4vLY5sk-c(dDI=L$T({rd5q)87TN zuD>d;ee@&rAGbX}->U2v7IRP9X?#8M)^4ZZld%0xZ1s<_QlXwMjv*C{tp^Q7n*#(G4yNAM zpD@8_(uK)dLK7St*WKXY%S+$(_v=672?~x)ESy3rYu=X{OoXw2|1w0d|G>pmdKI;Vst03OpUBme*a diff --git a/font.png b/font.png deleted file mode 100644 index c90012765cd7203f3c2cc45103cabcaad45205d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)Px#3{Xr|MVq`2i>wbYVlWRl5BN)mg8%>l^+`lQR9JWZO4;aB{8zd=L-=xL|+ff4Y>eMUYN&Papvt zm0OH3JQ#zzF{k}l5=LGJJBWZrd$Xc?P^36nIl}+~dRstUXu7KDktm}BoW{G|!_5FI zdT;;x$GYzUev>W0b;QxWHU^N+z(=R~(&7MS3|&jW=p?irT=Js>bcbU|ukL}~cSp+i zL~tm|=IIJ;r4ipim|wbT0R97juHmy_i5d8!#jfZ*n4d(j@;gA;3p?$v0C#B|ARg>S z9)%BL5xM|4mlJI^nyUi@j`Df<1Rz`QSMyQm&pp6#1k@N%RW>nj^D^I}JgG$%}sK`3Nl##Er5(l$_2Lugz8?6K=nL`23%7+{`HTPn002ovPDHLkV1hbJ1PTBE diff --git a/images/Font.aseprite b/images/Font.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..e93a76e51310afc0d11531abefecdab37243bd37 GIT binary patch literal 763 zcmey(#K7=iDIlOKsGNa|!6`90JH05sG%w{fPz$R9M8SWc+aLfGIu&!)hA~b$qQFtC_W%Fqw=vvm zf;qcmpIenpZD~lz?>Wz4cmDtV1=DAoGhYzXH@D$o{Soh?=gt*v{A#uxNwYTJFf9;u zYRkK>(_E-v-8tv4_UlLT#cKr~yf}Jr;;G;a$%DHm2HGerew^F&l+7mi{PMpn{fbOU z!lxa@KgiXe6i*fYaa1x#Z~Ibnv$D6JO6Qcb2MKmr{$l(#`)$)vIfonR%&TKN{fm!n zest2j{8E`g-6{6jXU(Q}tNhhw@HycZqj)s4M(#pSJj*P<-F~j`{LlS2?7!ZAvmj5*;W^Mf?h02oczJG45U(fENer=cb zE8}D*zp8aM{Ifp_#s5r?J;UCs|6O_A-21ooKYI5e=aKll*niIpGylc&WzP58K4gRcak`{;Egw8Yb?pdldSAPu!E`2eyCIFFjPbrMUI~w?F;zye848d#mIg>;B*PSpMg~`*YVH Kli&Y~n;QVlJrR8X literal 0 HcmV?d00001 diff --git a/images/font.png b/images/font.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2999e6e186f8289a6fd3fdbf8d6490203dd9c7 GIT binary patch literal 564 zcmV-40?Yl0P)Px#3{Xr|MVq`2i>wbYVlWRl5BN)mg8%>l)=5M`R9JoA?8O zQ^07e4N%fe4PpS%+auk>_$yMc8#XC4W1J1x`^r8D|MCR{KF>4zQNj{j0GKlY<`PXv z0ub}<=I@bYGtdYyB4;TieIWr|6H{c4M$PV6A^cDu+(s(>BD($VZsHf+no0tRR#j0}iHKvCd%4fOOrU@)qv9oTeg%EI1S*88m7t1rI`+PqKZ94Pj?~SiT)nwiHWXU@_Vx5J~Ft+m($uD`_f~xg```Bsr~V@Gl!e%9yQGF?`oPkLa&^e%ITSo%9+O_{sS3L zeYcCAbPi5D9NPZV-kHk}W|mhD?%tM}vFGXJxAD`4_`OdIcV<1a{e~fN>+atjSLyuu z!#QVLuSMqg9m=NZiLTk{8zZw*75+bG{~D{@dxu^{{uqjwm@+uFb2p;(R%ZY6h5uq9 zDp2V>@+8lweB9mQt%;7Y3P<#%I_<77i}AZ*TZqfaZ^6cB{(vC2g|ub#W95uua|G`) zFdU?u^_ZfcRue;|Jzht$t(;4rC^n4)my^6jX056VljA!@(rPTcyM^v6<2)s%B$pF! z)d^`Xr|}tNQfn2Lre32vCkw8tLke7KR0o1KE)70w#{ZhcjA|(^7m6O#g{i9(&?N8Z zs?h4&h^tJEilIB}#S8da79%({3eR$@kRKkwtL?ufe`qn@5z0(S;#G*<>BtR#_H1zn zS%rJTD8lu&mg*)CQFd`h-7OUsBd`&_&-d7<@*T=3=Ze(!#H||SyguBaR~4Jwj*CE` z-b2+ERVVPcYVwlZjFjsE7P2TYm2qvVzCa**kKcb^Z&dZ2;^lQ_UhQ%g0(g;LM=eJ0 z=rXDy0}W7GtIWK^toYo5liIL$?+L|bcguQI=5i{fC~}i23Aeh@K%BOEYZ`n4zRBt= zd?&I)9o-5uFSk}j>%~sDqwhP#=2BMU4xzMZcFOKd9xmtFY-OCw3BXWI<5ECtMoFV` z^zND+D+&~@v9KEm@FW|o1@a%{G?u$AZt~F27OT53&S0Pun!DNQ#Y&n zWO{v}ZgM5DjYOZpDo*&HEk-Ivf$CCImZ7;(6IL%$RAe@q3`@Z&(7F*ssZJ0<+-l~< zPI8c>`kghr*#pQh069R#5 z4jf(wVUd{;!yytiQ}0cv*8m{dI!Qg;(G8Y%MnITE-XTU>H3VO5Y6a>@e*s&rZB;^Kz6mK8NU`F@XYgHDU;(B7NGR`FrplTJ{+SYh_liK|l| zn6gL|I8AsH=h|XHQ*;EtXfc~ewcZ+zxwxCmm(7k^(KSdM7oZIkfnN$>ho=nlk20V{ z0Xl(=F?9?!>~0~Gb~#T&aq`r!K`}6c#-s@!lLCl>(=y-$x*-@eE8Hb_r%?n?d`{pC zMh-{@84x*on2RKlx4YpTn5|;b69T*>;FTQF+;<=r0{6V&Gr0pazT22X(7 { require('./../gb2png/')(bits, `${fileOut}.png`); } -convert('font.png', 'out.c'); \ No newline at end of file +convert('images/font.png', 'out.c'); \ No newline at end of file diff --git a/src/common_tiles.c b/src/common_tiles.c new file mode 100644 index 0000000..453dc9e --- /dev/null +++ b/src/common_tiles.c @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "common_tiles.h" + +const uint8_t COMMON_TILES[] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00, + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +}; \ No newline at end of file diff --git a/src/common_tiles.h b/src/common_tiles.h new file mode 100644 index 0000000..f6c3d16 --- /dev/null +++ b/src/common_tiles.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" + +#define COMMON_TILE_COUNT 0x04 + +#define COMMON_TILE_0 0x00 +#define COMMON_TILE_1 0x01 +#define COMMON_TILE_2 0x02 +#define COMMON_TILE_3 0x03 + +extern const uint8_t COMMON_TILES[]; \ No newline at end of file diff --git a/src/font.c b/src/font.c new file mode 100644 index 0000000..7d676af --- /dev/null +++ b/src/font.c @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "font.h" + +const uint8_t FONT_DATA[] = { + 0x06,0x06,0x0E,0x0E,0x1C,0x1C,0x38,0x38,0x70,0x70,0x20,0x20,0x80,0x80,0x00,0x00, + 0x48,0x48,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x24,0x24,0x7E,0x7E,0x24,0x24,0x24,0x24,0x7E,0x7E,0x24,0x24,0x00,0x00,0x00,0x00, + 0x08,0x08,0x3E,0x3E,0x28,0x28,0x3E,0x3E,0x0A,0x0A,0x3E,0x3E,0x08,0x08,0x00,0x00, + 0x02,0x02,0x64,0x64,0x48,0x48,0x08,0x08,0x10,0x10,0x22,0x22,0x46,0x46,0x00,0x00, + 0x38,0x38,0x44,0x44,0x4C,0x4C,0x38,0x38,0x44,0x44,0x44,0x44,0x3A,0x3A,0x00,0x00, + 0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x04,0x00,0x00, + 0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x00,0x00, + 0xA0,0xA0,0x40,0x40,0xA0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x10,0x10,0x10,0x7C,0x7C,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x7C,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x04,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x00,0x00, + 0x7C,0x7C,0xCE,0xCE,0xD6,0xD6,0xD6,0xD6,0xD6,0xD6,0xE6,0xE6,0x7C,0x7C,0x00,0x00, + 0x18,0x18,0x38,0x38,0x78,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x7E,0x00,0x00, + 0x3C,0x3C,0x66,0x66,0x66,0x66,0x06,0x06,0x1C,0x1C,0x38,0x38,0x7E,0x7E,0x00,0x00, + 0x3C,0x3C,0x66,0x66,0x66,0x66,0x0C,0x0C,0x66,0x66,0x66,0x66,0x3C,0x3C,0x00,0x00, + 0x3C,0x3C,0x6C,0x6C,0xCC,0xCC,0xCC,0xCC,0xFE,0xFE,0x0C,0x0C,0x0C,0x0C,0x00,0x00, + 0x7E,0x7E,0x60,0x60,0x60,0x60,0x7C,0x7C,0x06,0x06,0x66,0x66,0x7C,0x7C,0x00,0x00, + 0x7C,0x7C,0xE6,0xE6,0xE0,0xE0,0xFC,0xFC,0xE6,0xE6,0xE6,0xE6,0x7C,0x7C,0x00,0x00, + 0x7E,0x7E,0x06,0x06,0x06,0x06,0x0C,0x0C,0x38,0x38,0x30,0x30,0x30,0x30,0x00,0x00, + 0x3C,0x3C,0x66,0x66,0x66,0x66,0x3C,0x3C,0x66,0x66,0x66,0x66,0x3C,0x3C,0x00,0x00, + 0x3C,0x3C,0x66,0x66,0x66,0x66,0x3E,0x3E,0x06,0x06,0x06,0x06,0x3C,0x3C,0x00,0x00, + 0x00,0x00,0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x00,0x00, + 0x00,0x00,0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0x20,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x08,0x10,0x10,0x08,0x08,0x04,0x04,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x7C,0x00,0x00,0x7C,0x7C,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x20,0x10,0x10,0x20,0x20,0x40,0x40,0x00,0x00, + 0x1C,0x1C,0x22,0x22,0x02,0x02,0x04,0x04,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x5A,0x5A,0x6A,0x6A,0x7A,0x7A,0x46,0x46,0x3C,0x3C,0x00,0x00, + 0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x42,0x42,0x7E,0x7E,0x42,0x42,0x00,0x00, + 0x7C,0x7C,0x42,0x42,0x42,0x42,0x7C,0x7C,0x42,0x42,0x42,0x42,0x7C,0x7C,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x42,0x42,0x40,0x40,0x42,0x42,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x7C,0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x7C,0x7C,0x00,0x00, + 0x7E,0x7E,0x40,0x40,0x40,0x40,0x78,0x78,0x40,0x40,0x40,0x40,0x7E,0x7E,0x00,0x00, + 0x7E,0x7E,0x40,0x40,0x40,0x40,0x7C,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x40,0x40,0x40,0x40,0x4E,0x4E,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x42,0x42,0x42,0x42,0x42,0x42,0x7E,0x7E,0x42,0x42,0x42,0x42,0x42,0x42,0x00,0x00, + 0x7C,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x7C,0x00,0x00, + 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x42,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x42,0x42,0x44,0x44,0x48,0x48,0x70,0x70,0x48,0x48,0x44,0x44,0x42,0x42,0x00,0x00, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C,0x7C,0x00,0x00, + 0x42,0x42,0x42,0x42,0x66,0x66,0x5A,0x5A,0x42,0x42,0x42,0x42,0x42,0x42,0x00,0x00, + 0x42,0x42,0x42,0x42,0x62,0x62,0x52,0x52,0x4A,0x4A,0x46,0x46,0x42,0x42,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x7C,0x7C,0x42,0x42,0x42,0x42,0x7C,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x4A,0x4A,0x44,0x44,0x3A,0x3A,0x00,0x00, + 0x7C,0x7C,0x42,0x42,0x42,0x42,0x7C,0x7C,0x50,0x50,0x48,0x48,0x44,0x44,0x00,0x00, + 0x3C,0x3C,0x42,0x42,0x40,0x40,0x3C,0x3C,0x02,0x02,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x7C,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x3C,0x00,0x00, + 0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x44,0x44,0x44,0x28,0x28,0x10,0x10,0x00,0x00, + 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x5A,0x5A,0x66,0x66,0x42,0x42,0x00,0x00, + 0x42,0x42,0x42,0x42,0x24,0x24,0x18,0x18,0x24,0x24,0x42,0x42,0x42,0x42,0x00,0x00, + 0x82,0x82,0x82,0x82,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x7E,0x7E,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x7E,0x7E,0x00,0x00, + 0x0C,0x0C,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0C,0x0C,0x00,0x00, + 0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x04,0x04,0x00,0x00, + 0x60,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0x60,0x00,0x00, + 0x10,0x10,0x28,0x28,0x44,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x7C,0x00,0x00, + 0x10,0x10,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; \ No newline at end of file diff --git a/src/images/font.h b/src/font.h similarity index 60% rename from src/images/font.h rename to src/font.h index 96049e7..c9a4903 100644 --- a/src/images/font.h +++ b/src/font.h @@ -5,10 +5,11 @@ * https://opensource.org/licenses/MIT */ -#include "../libs.h" +#pragma once +#include "libs.h" -#define IMAGE_WIDTH 64 -#define IMAGE_HEIGHT 64 -#define IMAGE_TILES 64 +#define FONT_IMAGE_WIDTH 64 +#define FONT_IMAGE_HEIGHT 64 +#define FONT_TILE_COUNT 64 extern const uint8_t FONT_DATA[]; \ No newline at end of file diff --git a/src/images/font.c b/src/images/font.c deleted file mode 100644 index 424922b..0000000 --- a/src/images/font.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2022 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#include "font.h" - -const uint8_t FONT_DATA[] = { - 0x06,0x06,0x0E,0x0E,0x1E,0x1E,0x1C,0x1C,0x38,0x38,0x30,0x30,0x00,0x00,0x40,0x40, - 0x48,0x48,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x24,0x24,0x00,0x3E,0x24,0x64,0x00,0x3C,0x24,0x26,0x24,0x66,0x00,0x3C,0x24,0x24, - 0x02,0x02,0x44,0x44,0x64,0x64,0x08,0x08,0x10,0x10,0x20,0x20,0x26,0x26,0x44,0x44, - 0x38,0x38,0x44,0x44,0x44,0x44,0x38,0x38,0x30,0x30,0x4A,0x4A,0x44,0x44,0x3A,0x3A, - 0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x08,0x08,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x08,0x08, - 0x10,0x10,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x10,0x10, - 0x10,0x10,0x38,0x38,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x10,0x10,0x10,0x10,0x7C,0x7C,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x40,0x40, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40, - 0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x20,0x40,0x40, - 0x3C,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x3C, - 0x18,0x18,0x38,0x38,0x78,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x7E, - 0x3C,0x3C,0x66,0x66,0x66,0x66,0x06,0x06,0x1C,0x1C,0x38,0x38,0x70,0x70,0x7E,0x7E, - 0x3C,0x3C,0x66,0x66,0x66,0x66,0x0C,0x0C,0x0E,0x0E,0x66,0x66,0x66,0x66,0x3C,0x3C, - 0x0E,0x0E,0x1E,0x1E,0x36,0x36,0x66,0x66,0x7E,0x7E,0x06,0x06,0x06,0x06,0x06,0x06, - 0x7E,0x7E,0x60,0x60,0x60,0x60,0x7C,0x7C,0x06,0x06,0x66,0x66,0x66,0x66,0x3C,0x3C, - 0x3C,0x3C,0x66,0x66,0x60,0x60,0x7C,0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x3C, - 0x7E,0x7E,0x06,0x06,0x06,0x06,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x38,0x38,0x30,0x30, - 0x3C,0x3C,0x66,0x66,0x66,0x66,0x3C,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x3C, - 0x3E,0x3E,0x66,0x66,0x66,0x66,0x66,0x66,0x3E,0x3E,0x06,0x06,0x06,0x06,0x06,0x06, - 0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x00, - 0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x08,0x08,0x10,0x10, - 0x00,0x00,0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x20,0x10,0x10,0x08,0x08,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0x00,0x00,0x7E,0x7E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x08,0x04,0x04,0x08,0x08,0x10,0x10,0x00,0x00, - 0x1C,0x1C,0x22,0x22,0x22,0x22,0x02,0x02,0x04,0x04,0x08,0x08,0x00,0x00,0x08,0x08, - 0x3C,0x3C,0x42,0x42,0x5A,0x5A,0x6A,0x6A,0x6A,0x6A,0x5A,0x5A,0x44,0x44,0x3A,0x3A, - 0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x42,0x42,0x7E,0x7E,0x42,0x42,0x42,0x42, - 0x7C,0x7C,0x42,0x42,0x42,0x42,0x7C,0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x7C,0x7C, - 0x3C,0x3C,0x42,0x42,0x42,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3C,0x3C, - 0x7C,0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x7C,0x7C, - 0x7E,0x7E,0x40,0x40,0x40,0x40,0x78,0x78,0x40,0x40,0x40,0x40,0x40,0x40,0x7E,0x7E, - 0x7E,0x7E,0x40,0x40,0x40,0x40,0x7C,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x3C,0x3C,0x42,0x42,0x42,0x42,0x40,0x40,0x4E,0x4E,0x42,0x42,0x42,0x42,0x3C,0x3C, - 0x42,0x42,0x42,0x42,0x42,0x42,0x7E,0x7E,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x38,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x38, - 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x42,0x42,0x42,0x3C,0x3C, - 0x42,0x42,0x44,0x44,0x48,0x48,0x70,0x70,0x48,0x48,0x44,0x44,0x42,0x42,0x42,0x42, - 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C,0x7C, - 0x42,0x42,0x42,0x42,0x66,0x66,0x5A,0x5A,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x62,0x62,0x52,0x52,0x4A,0x4A,0x46,0x46,0x42,0x42,0x42,0x42, - 0x3C,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x3C, - 0x7C,0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x7C,0x7C,0x40,0x40,0x40,0x40,0x40,0x40, - 0x3C,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x4A,0x4A,0x44,0x44,0x38,0x38, - 0x7C,0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x7C,0x7C,0x48,0x48,0x44,0x44,0x42,0x42, - 0x3C,0x3C,0x42,0x42,0x40,0x40,0x3C,0x3C,0x02,0x02,0x02,0x02,0x42,0x42,0x3C,0x3C, - 0xFE,0xFE,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x3C, - 0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x44,0x44,0x44,0x28,0x28,0x28,0x28,0x10,0x10, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x5A,0x5A,0x66,0x66,0x42,0x42, - 0x42,0x42,0x42,0x42,0x24,0x24,0x18,0x18,0x18,0x18,0x24,0x24,0x42,0x42,0x42,0x42, - 0x82,0x82,0x82,0x82,0x44,0x44,0x44,0x44,0x38,0x38,0x10,0x10,0x10,0x10,0x10,0x10, - 0x7E,0x7E,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x7E,0x7E, - 0x18,0x18,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18, - 0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x04,0x04,0x02,0x02, - 0x18,0x18,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x18,0x18, - 0x10,0x10,0x28,0x28,0x44,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E, - 0x10,0x10,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; \ No newline at end of file diff --git a/src/libs.h b/src/libs.h index 8fc79a2..22bfa03 100644 --- a/src/libs.h +++ b/src/libs.h @@ -6,13 +6,7 @@ */ #pragma once - -#ifndef _LIBS_H -#define _LIBS_H - #include #include #include -#include - -#endif \ No newline at end of file +#include \ No newline at end of file diff --git a/src/main.c b/src/main.c index 67a7d7e..cff209b 100644 --- a/src/main.c +++ b/src/main.c @@ -6,58 +6,30 @@ */ #include "libs.h" -#include "text.h" +#include "textbox.h" +#include "time.h" +#include "common_tiles.h" -const uint8_t std_data[] = { - /* Basic tiles (0xFC to 0xFF) */ - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00, - 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -}; - -#define NBDFRAMES 0x18 /* Nb frames for the door */ -#define NBSFRAMES 0x07 /* Nb frames for the sprite */ -#define WINSZX 0x80 /* Size of the picture in the window */ -#define WINSZY 0x50 -#define MINWINX (MAXWNDPOSX-WINSZX+1) /* Bounds of the window origin */ -#define MINWINY (MAXWNDPOSY-WINSZY+1) -#define MAXWINX MAXWNDPOSX -#define MAXWINY MAXWNDPOSY -#define FADESTEP 0x10 /* Nb steps for the fading effect */ -#define STARTFADE (0x06*FADESTEP) /* Initial value for the fading effect */ - -#define CLOSED 0x00 -#define OPENING 0x01 -#define OPENED 0x02 -#define CLOSING 0x03 - -static uint8_t time = 0;/* Global "time" value (counter) */ void main() { - uint8_t i; int16_t j; + uint8_t filled[0x20*0x20]; disable_interrupts(); DISPLAY_OFF; - LCDC_REG = LCDCF_OFF | LCDCF_BG8800 | LCDCF_BG9800 | LCDCF_BGON; - /* - * LCD = Off - * BG Chr = 0x8800 - * BG Bank = 0x9800 - * BG = On - */ - BGP_REG = 0xE4U; + LCDC_REG = LCDCF_OFF | LCDCF_WIN9C00 | LCDCF_BG8800 | LCDCF_BG9800 | LCDCF_BGON; + BGP_REG = OBP0_REG = OBP1_REG = 0xE4U; - set_bkg_data(0x00, 0x04, std_data); - set_bkg_data(0x04, FONT_TILE_COUNT, FONT); + // Upload the common tiles. + set_bkg_data(0x00, COMMON_TILE_COUNT, COMMON_TILES); + + // Init the textbox + textboxInit(); // Fill screen white - uint8_t filled[0x20*0x20]; - for(j = 0; j < 0x20*0x20; j++) { - filled[j] = 0x00; - } + for(j = 0; j < 0x20*0x20; j++) filled[j] = COMMON_TILE_0; set_bkg_tiles(0x00, 0x00, 0x20, 0x20, filled); + SCX_REG = 0x00; SCY_REG = 0x00; @@ -65,18 +37,12 @@ void main() { enable_interrupts(); wait_vbl_done(); - // Now set BKG tiles - uint8_t bkg_tiles[FONT_TILE_COUNT]; - for(i = 0; i < FONT_TILE_COUNT; i++) { - bkg_tiles[i] = i; - } - set_bkg_tiles(0, 0, 0x08, 0x08, bkg_tiles); + // Testing. + textboxSetText("HELLO WORLD.\nHOW ARE YOU?", 25); while(1) { - /* Skip four VBLs (slow down animation) */ - for(i = 0; i < 4; i++) { - wait_vbl_done(); - } + wait_vbl_done(); + textboxUpdate(); time++; } } diff --git a/src/text.c b/src/text.c deleted file mode 100644 index ca95525..0000000 --- a/src/text.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2021 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#include "text.h" - -const uint8_t FONT[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0, - 0x01,0x01,0x00,0x00,0x21,0x21,0x70,0x70,0x0F,0x0F,0x00,0x00,0x7E,0x7E,0x30,0x30, - 0x0C,0x0C,0x00,0x00,0x61,0x61,0xF8,0xF8,0x74,0x74,0x81,0x81,0x81,0x81,0x08,0x08, - 0x3C,0x3C,0x81,0x81,0xFF,0xFF,0x88,0x88,0x84,0x84,0xFF,0xFF,0x81,0x81,0x0F,0x0F, - 0x78,0x78,0x66,0x66,0xFF,0xFF,0x88,0x88,0x84,0x84,0x81,0x81,0x85,0x85,0x08,0x08, - 0xF0,0xF0,0x18,0x18,0x01,0x01,0xFF,0xFF,0x74,0x74,0x00,0x00,0x82,0x82,0x30,0x30, - 0xE0,0xE0,0x00,0x00,0x01,0x01,0xFF,0xFF,0x0F,0x0F,0x00,0x00,0x7C,0x7C,0xC0,0xC0, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xC0,0xC0,0x00,0x00,0x63,0x63,0x00,0x00,0xFF,0xFF,0x06,0x06,0xFF,0xFF,0x83,0x83, - 0x00,0x00,0x40,0x40,0xE7,0xE7,0x00,0x00,0x91,0x91,0x01,0x01,0x88,0x88,0x85,0x85, - 0x00,0x00,0xE0,0xE0,0x8F,0x8F,0x66,0x66,0x91,0x91,0x01,0x01,0x88,0x88,0x89,0x89, - 0xC0,0xC0,0x40,0x40,0x8D,0x8D,0x66,0x66,0x91,0x91,0x01,0x01,0x8C,0x8C,0x91,0x91, - 0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x00,0x91,0x91,0x01,0x01,0x8A,0x8A,0xA1,0xA1, - 0x00,0x00,0x00,0x00,0x71,0x71,0x00,0x00,0x6E,0x6E,0xFE,0xFE,0x71,0x71,0xC1,0xC1, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x10,0x10,0x66,0x66,0x00,0x00,0x7E,0x7E,0xFF,0xFF,0x62,0x62,0x00,0x00, - 0x00,0x00,0x10,0x10,0xE7,0xE7,0x00,0x00,0x81,0x81,0x10,0x10,0x91,0x91,0x00,0x00, - 0x00,0x00,0x7C,0x7C,0x81,0x81,0x65,0x65,0x81,0x81,0x10,0x10,0x91,0x91,0xFF,0xFF, - 0x00,0x00,0x10,0x10,0x99,0x99,0x66,0x66,0x81,0x81,0x28,0x28,0x91,0x91,0x81,0x81, - 0x00,0x00,0x10,0x10,0xFF,0xFF,0x00,0x00,0x81,0x81,0x44,0x44,0x91,0x91,0x00,0x00, - 0x00,0x00,0x00,0x00,0x6E,0x6E,0x00,0x00,0x62,0x62,0x83,0x83,0x4E,0x4E,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00, - 0x00,0x24,0x01,0x01,0x18,0x18,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x80,0x80,0x80,0x80, - 0xAD,0xFF,0x02,0x02,0x38,0x38,0x08,0x08,0x81,0x81,0x01,0x01,0x80,0x80,0x60,0x60, - 0x00,0x52,0x02,0x02,0x68,0x68,0x14,0x14,0x81,0x81,0x01,0x01,0xFF,0xFF,0x10,0x10, - 0x00,0x52,0x00,0x00,0xC8,0xC8,0x22,0x22,0x81,0x81,0x01,0x01,0x80,0x80,0x08,0x08, - 0xAD,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x81,0x81,0x01,0x01,0x80,0x80,0x06,0x06, - 0x00,0x4C,0x00,0x00,0xFF,0xFF,0x00,0x00,0x7E,0x7E,0x00,0x00,0x80,0x80,0x01,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x61,0x61,0x08,0x08,0xF6,0xF6,0x14,0x14,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0x00,0x00, - 0x26,0x26,0x08,0x08,0xF7,0xF7,0x14,0x14,0x91,0x91,0x20,0x20,0x01,0x01,0x00,0x00, - 0x08,0x08,0x08,0x08,0x91,0x91,0x14,0x14,0x91,0x91,0x10,0x10,0x01,0x01,0x81,0x81, - 0x10,0x10,0x08,0x08,0x91,0x91,0x14,0x14,0x91,0x91,0x10,0x10,0x01,0x01,0xFF,0xFF, - 0x63,0x63,0x08,0x08,0x9F,0x9F,0x14,0x14,0x81,0x81,0x20,0x20,0x01,0x01,0x00,0x00, - 0x82,0x82,0x08,0x08,0x8E,0x8E,0x14,0x14,0x81,0x81,0xFF,0xFF,0xFE,0xFE,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00, - 0x66,0x66,0x01,0x01,0x7E,0x7E,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x18,0x18,0x20,0x20, - 0x99,0x99,0x00,0x00,0xFF,0xFF,0x00,0x00,0x90,0x90,0x20,0x20,0x06,0x06,0x40,0x40, - 0x99,0x99,0x00,0x00,0x91,0x91,0x22,0x22,0x90,0x90,0x10,0x10,0x01,0x01,0x80,0x80, - 0x95,0x95,0x00,0x00,0x91,0x91,0x14,0x14,0x90,0x90,0x08,0x08,0x06,0x06,0x40,0x40, - 0x62,0x62,0x00,0x00,0xDF,0xDF,0x08,0x08,0x90,0x90,0x04,0x04,0x18,0x18,0x20,0x20, - 0x05,0x05,0x00,0x00,0x4E,0x4E,0x00,0x00,0x80,0x80,0xFF,0xFF,0xE0,0xE0,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x01,0x01,0x80,0x80,0x00,0x00,0x7E,0x7E,0x7E,0x7E,0xFF,0xFF,0x01,0x01, - 0x00,0x00,0x06,0x06,0x83,0x83,0x60,0x60,0x81,0x81,0x81,0x81,0x02,0x02,0x01,0x01, - 0xC0,0xC0,0x08,0x08,0x87,0x87,0x80,0x80,0x81,0x81,0x81,0x81,0x04,0x04,0x01,0x01, - 0x00,0x00,0x10,0x10,0x9E,0x9E,0x85,0x85,0x89,0x89,0x81,0x81,0x04,0x04,0x01,0x01, - 0x00,0x00,0x60,0x60,0xF8,0xF8,0x88,0x88,0x89,0x89,0x81,0x81,0x02,0x02,0x01,0x01, - 0x00,0x00,0x80,0x80,0xE0,0xE0,0x70,0x70,0x6E,0x6E,0x7E,0x7E,0xFF,0xFF,0x01,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x7E,0x7E,0x6E,0x6E,0x7E,0x7E,0xFF,0xFF,0xFF,0xFF,0xC3,0xC3,0x00,0x00, - 0x18,0x18,0xFF,0xFF,0xFF,0xFF,0x99,0x99,0x10,0x10,0x88,0x88,0x24,0x24,0x00,0x00, - 0x66,0x66,0x81,0x81,0x91,0x91,0xA5,0xA5,0x10,0x10,0x88,0x88,0x18,0x18,0x80,0x80, - 0x81,0x81,0x81,0x81,0x91,0x91,0xBD,0xBD,0x10,0x10,0x88,0x88,0x18,0x18,0x40,0x40, - 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x82,0x82,0x10,0x10,0x88,0x88,0x24,0x24,0x00,0x00, - 0x00,0x00,0x7E,0x7E,0x6E,0x6E,0x7D,0x7D,0xFF,0xFF,0x70,0x70,0xC3,0xC3,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -}; \ No newline at end of file diff --git a/src/text.h b/src/text.h deleted file mode 100644 index 29ff45f..0000000 --- a/src/text.h +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2021 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#ifndef _TEXT_H -#define _TEXT_H -#include "libs.h" - -#define FONT_TILE_COUNT 64 - -extern const uint8_t FONT[]; - -#endif \ No newline at end of file diff --git a/src/textbox.c b/src/textbox.c new file mode 100644 index 0000000..e2f19db --- /dev/null +++ b/src/textbox.c @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "textbox.h" + +char *TEXTBOX_TEXT; +uint8_t TEXTBOX_TEXT_LENGTH; +uint8_t TEXTBOX_STATE; +uint8_t TEXTBOX_SCROLL; + + +void textboxInit() { + TEXTBOX_TEXT = NULL; + TEXTBOX_STATE = 0; + TEXTBOX_TEXT_LENGTH = 0; + TEXTBOX_SCROLL = 0; + move_win(7, SCREENHEIGHT - (TEXTBOX_TILES_ROWS * 8)); + + set_win_data(TEXTBOX_TILES_DATA_POSITION, FONT_TILE_COUNT, FONT_DATA); +} + +void textboxSetText(char *text, uint8_t length) { + uint8_t tiles[TEXTBOX_TILES_MAX]; + uint8_t i; + + TEXTBOX_TEXT = text; + TEXTBOX_TEXT_LENGTH = length; + TEXTBOX_STATE = TEXTBOX_STATE_VISIBLE; + TEXTBOX_SCROLL = 0; + + for(i = 0; i < TEXTBOX_TILES_MAX; i++) tiles[i] = TEXTBOX_TILE_BLANK; + + set_win_tiles(0, 0, TEXTBOX_TILES_PER_ROW, TEXTBOX_TILES_ROWS, tiles); + SHOW_WIN; +} + +void textboxClose() { + TEXTBOX_STATE &= ~TEXTBOX_STATE_VISIBLE; + HIDE_WIN; +} + +void textboxUpdate() { + uint8_t tiles[TEXTBOX_TILES_MAX]; + uint8_t i, j; + + if(!(TEXTBOX_STATE & TEXTBOX_STATE_VISIBLE)) return; + if(TEXTBOX_STATE & TEXTBOX_STATE_SCROLLED) { + return; + } + + TEXTBOX_SCROLL++; + j = 0; + for(i = 0; i < TEXTBOX_SCROLL; i++) { + if(TEXTBOX_TEXT[i] == ' ') { + j++; + continue; + } + if(TEXTBOX_TEXT[i] == '\n') { + j = TEXTBOX_TILES_PER_ROW; + continue; + } + tiles[j] = TILE_FROM_CHAR(TEXTBOX_TEXT[i]); + j++; + } + + + for(i = j; i < TEXTBOX_TILES_MAX; i++) { + tiles[i] = TEXTBOX_TILE_BLANK; + } + + set_win_tiles( + 0, 0, + TEXTBOX_TILES_PER_ROW, + TEXTBOX_TILES_ROWS, + tiles + ); + + if(TEXTBOX_SCROLL == TEXTBOX_TEXT_LENGTH) { + TEXTBOX_STATE |= TEXTBOX_STATE_SCROLLED; + } +} \ No newline at end of file diff --git a/src/textbox.h b/src/textbox.h new file mode 100644 index 0000000..9c118de --- /dev/null +++ b/src/textbox.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" +#include "font.h" +#include "util.h" +#include "common_tiles.h" + +#define TEXTBOX_STATE_VISIBLE 1 << 0 +#define TEXTBOX_STATE_SCROLLED 1 << 1 + +#define TEXTBOX_TILES_PER_ROW 20 +#define TEXTBOX_TILES_ROWS 2 +#define TEXTBOX_TILES_MAX TEXTBOX_TILES_PER_ROW * TEXTBOX_TILES_ROWS +#define TEXTBOX_CHARACTER_FIRST 33 +#define TEXTBOX_TILE_BLANK COMMON_TILE_3 + +#define TEXTBOX_TILES_DATA_POSITION 0x04 + +#define TILE_FROM_CHAR(c) c-TEXTBOX_CHARACTER_FIRST+TEXTBOX_TILES_DATA_POSITION + +extern char *TEXTBOX_TEXT; +extern uint8_t TEXTBOX_TEXT_LENGTH; +extern uint8_t TEXTBOX_STATE; +extern uint8_t TEXTBOX_SCROLL; + +void textboxInit(); +void textboxSetText(char *text, uint8_t length); +void textboxUpdate(); \ No newline at end of file diff --git a/src/tiles.h b/src/tiles.h new file mode 100644 index 0000000..e5affd8 --- /dev/null +++ b/src/tiles.h @@ -0,0 +1,9 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" \ No newline at end of file diff --git a/src/time.c b/src/time.c new file mode 100644 index 0000000..dde632a --- /dev/null +++ b/src/time.c @@ -0,0 +1,10 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "time.h" + +uint8_t time = 0; \ No newline at end of file diff --git a/src/time.h b/src/time.h new file mode 100644 index 0000000..9a2e498 --- /dev/null +++ b/src/time.h @@ -0,0 +1,11 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" + +extern uint8_t time; \ No newline at end of file diff --git a/src/util.h b/src/util.h new file mode 100644 index 0000000..7f205f3 --- /dev/null +++ b/src/util.h @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" + +#define MATH_MIN(a, b) a > b ? b : a +#define MATH_MAX(a, b) a < b ? b : a \ No newline at end of file diff --git a/test.png b/test.png deleted file mode 100644 index 5144522540a421521d0ddccb01b2c3c49de7c678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3HEhl+{lMQY^(zo*^7SP{WbZ0pz!Mx;Tbt zOiZr$@c2+YA1AAY*-4J(&DMM(f7DgZFIgyXpy2UAHnx%r8AD^{wpv9a;E z8hA<^P(PnBN${Jz+Qu{|(ZgNB+yN%9S!NhMn4G?I(?gLto0XCnom*U)4$o>xFEDia z#B+j?iCf`I!(sLFF01BWd>VN{^`hv)-;%L%3|v{Q{o0@3T?D#^!PC{xWt~$(69CL; BMAQHP