From 046f05aef492a256d56a4d51c80af319b1a4e1ff Mon Sep 17 00:00:00 2001 From: OctoSpacc Date: Sat, 7 Oct 2023 16:51:29 +0200 Subject: [PATCH] Windows build support (MSYS2); Initial NDS support --- LibMultiSpacc/Examples/Common.mk | 46 ++++++++++++------ LibMultiSpacc/Examples/HelloWorld/HelloWorld | Bin 0 -> 35528 bytes .../Examples/HelloWorld/HelloWorld.c | 28 +++-------- LibMultiSpacc/LibMultiSpacc/MultiSpacc.h | 17 ++++++- LibMultiSpacc/LibMultiSpacc/NDS/NDS.c | 25 ++++++++++ LibMultiSpacc/LibMultiSpacc/NDS/NDS.h | 19 ++++++++ LibMultiSpacc/LibMultiSpacc/SDL12/SDL.c | 6 +-- LibMultiSpacc/LibMultiSpacc/SDL12/SDL.h | 12 ++--- LibMultiSpacc/LibMultiSpacc/SDL20/SDL.c | 6 +-- LibMultiSpacc/LibMultiSpacc/SDL20/SDL.h | 8 +-- LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c | 11 ++--- 11 files changed, 117 insertions(+), 61 deletions(-) create mode 100644 LibMultiSpacc/Examples/HelloWorld/HelloWorld create mode 100644 LibMultiSpacc/LibMultiSpacc/NDS/NDS.c create mode 100644 LibMultiSpacc/LibMultiSpacc/NDS/NDS.h diff --git a/LibMultiSpacc/Examples/Common.mk b/LibMultiSpacc/Examples/Common.mk index c74d49c..a943dd9 100644 --- a/LibMultiSpacc/Examples/Common.mk +++ b/LibMultiSpacc/Examples/Common.mk @@ -1,44 +1,60 @@ AppName = $(notdir ${CURDIR}) Sources = $(wildcard *.c ../../LibMultiSpacc/*.c) -CFlags = -O2 -CC = gcc $(Defines) +CFlags = -O2 -Wpedantic -Werror ifndef Target - Target = PC + ifeq ($(shell uname --operating-system), Msys) + Target = WindowsPC + else + Target = LinuxPC + endif endif ifdef Target - ifeq ($(Target), PC) + ifeq ($(Target), LinuxPC) ExeSuffix = .run - Defines = -DTarget_PC + Defines += -DTarget_LinuxPC MultiSpacc_Target = SDL20 + else ifeq ($(Target), WindowsPC) + ExeSuffix = .exe + Defines += -DTarget_WindowsPC + MultiSpacc_Target = SDL20 + else ifeq ($(Target), NDS) + Defines += -DTarget_NDS + MultiSpacc_Target = NDS endif endif ifeq ($(MultiSpacc_Target), SDL12) Defines += -DMultiSpacc_Target_SDL12 - LdFlags += -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf + CFlags += $(shell sdl-config --cflags) + LdFlags += $(shell sdl-config --libs) -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL12/*.c) else ifeq ($(MultiSpacc_Target), SDL20) Defines += -DMultiSpacc_Target_SDL20 - LdFlags += -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf + CFlags += $(shell sdl2-config --cflags) + LdFlags += $(shell sdl2-config --libs) -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL20/*.c) +else ifeq ($(MultiSpacc_Target), NDS) + #include $(DEVKITARM)/ds_rules + Defines += -DMultiSpacc_Target_NDS + CFlags += -I$(DEVKITPRO)/libnds/include -DARM9 + Sources += $(wildcard ../../LibMultiSpacc/NDS/*.c) + ToolsPrefix = $(DEVKITARM)/bin/arm-none-eabi- endif +CC = $(ToolsPrefix)gcc $(CFlags) $(Defines) Objects = $(Sources:.c=.o) -All: $(AppName) +All all: $(AppName) $(AppName): $(Objects) - $(CC) $^ $(CFlags) $(LdFlags) -o $(AppName)$(ExeSuffix) + $(CC) $^ $(LdFlags) -o $(AppName)$(ExeSuffix) -Run: All +Run run: All ./$(AppName)$(ExeSuffix) -Clean: +Clean clean: find -L . -name "*.o" -type f -delete + find -L ../../LibMultiSpacc -name "*.o" -type f -delete rm -f $(AppName)$(ExeSuffix) $(AppName).*$(ExeSuffix) - -all: All -run: Run -clean: Clean diff --git a/LibMultiSpacc/Examples/HelloWorld/HelloWorld b/LibMultiSpacc/Examples/HelloWorld/HelloWorld new file mode 100644 index 0000000000000000000000000000000000000000..24c2a6db74f2c3ee5be9f653086b7dc8c94333d4 GIT binary patch literal 35528 zcmeI53wT^tb?^6?8OalQVjo!w2xH9ggWv|o94Cf`kiz&8VuA_dM-l@ml5EMbh;2bd%7uL6D$K9Qbgyy2L(EC5P~m?)^5@C5)MFAK6*9v)}c{X)*_@8~uJ><&}|4qiv~tX! zd05CV0bhq1ugTt7U1aa8&Ommyv$LErJE6U@V!4H~o!eP$G&`&5+`eiC`Mwny=H0uh zmTB;1_K5qpr9`HoLMp|VZH-+lrJ%8lG1N|SugeybChIkf?~@Gs%w-O4DEI5kt>x{R zU~R@f@8o$E`D@*7NSc>k;C@HA2Abo!b@XF=$!(arq_L5Ev81(48w1`@A=guvbc!Wo z{|MeR$Nn4dDL0X&;9$;KFy_G%DeBF=#ISl>Z=8=w7ZA;)s@fC_S8o%eDSpROet+h=gj|^)ymwMaX?YEu9eZrktHZ6Bo-_E@mDptrLb9Jf4 zEiRno7H6HqJSUrCX{uK&P4{&qSGm!c=hN=p=<8BXe5BnSRWo$EXL6T&t)dN`i0(_8 z!_a4{soZC(>6Y8dzU+~&Xx7yPd#VMQoc4~EBL4mxeXOCGWj#M9&zy$$RnzW1_`9}} zpp!|bH}uEXIAF$%%**#v#*-Wt?>GsKJWf__IZ|lYxyzS zO|pBvgjrci6pOp9VzC!J?zJY*tb9*2L*90YH#b*4!m}Fs*vKe_?p}+|JmMTJO}p^1 zO2O%?JmNf2O1bw{Ylg4%8jAzfNupmYmTFADXS)N{^zZ7sP) zJn334SN^+^k>_iMJ_?;;!w=Xe|3)swJG`3w72f08L+HnI$RULcbYJThOVT-ie--!o zYg1S1S-tL6%B<7l=KQv}ZhouM7tN&g*rUzQ@n&H84PoW3H z1J$2uKD5;ssc_w1WUfP^Swz>MaXt6U%h#*FhMx3Ex|M)l8XYwLeZQB;p@ZOGp}odd zpYPIM^)+t47mcGfFQT7X;{%MfmG;SyhkBi7?29GvC7!hApI}d9I18jp#<{ava38O9 z(8qGNmlH$9(oNjQ>(_ys(<7gL1>0q^E6a(NVrduaFgbTy*%XSU`HcMrY>4d?_hNhZ z!uRe;x$pIV>HWoC`0lO6K4Eh?c2`$2Zm}U{H&)X_%gV;xab7b2Xl05e-MY5K+J0sE zq66$f*4|*B%yp$yaj1HW*4%xnl5`7R%H8XqL)W8^$>LL$I(Iv^VRdOSeJxXuu3+~M zHC87d`XKW8Ts3JwTCvc%NkAQX@*K9%DsK1hALPCkIi-=yAEuB~ORmfzSeJ4es}?dz zy0?32=L2QY|E!)nS74)8Rh~e<8Yt1%-6^NIyV00?v?j*A4V$yC`ey1<+^3y^J!$v0 zJsIk?zT9)3>P)?@DmvJ_8r!|C2E7GttFfJdY2eeEoPk7>dt1WToEvt3HAR`COgno3 z;Q`MtvnRy+kI;!)%2z_Wk#-8@WS%p{>^YHf`+`31XR9^N75GT2IRBDm$roAOk#x6X z4{wL>A?Dl<--W7ZO3zX)#ZsJZ(!I4*W8dys*ipZa(|cw=ySJ>qe+6IvL;A#eJb>Pf zUysjIC%Zk%m-)CcSkpHs8iZ2WyqF zHJ{$<&C!}g>t(YZ_MONwSg#EC>FmHB+qu(UFRf1++X9Y%sk7-$?)TL+Id}T&HN(EM z#?B6~R(DQwoI4Xu*#XuI9kBa+nkmY(KSm#NztXF*@AT!C)_VGK`yBF4mf6R?{-xYI zt1ZaZRU~Ro@IE}6noalvxsK?m@y}S7EZN1{@j=k{EY86TiBB5 ztkyW!ncniZ&XN6AY!jUQ|K5Jz8Q1UB74V%aBEMqAS$v@C%mV5a*9?@Un>DOa8ryI0 zMjpMujX>)G^nr6HH-O)VF9YNO8)yWY0Lk=a<{S0*pf}(SRA*!ds?N|rb#7sxIxjy^ zo!>H0y^i)RKpU_P_!Lk8P5?WAL0|}IhUUE?&C~8c^_r;zzSqbkz3P=MVgzhQm*t_As7yfUA&(?wJ3hHve8X&U} z8drp}X04uMt=0}2^E3{sv)7nG;3#m8vCK4+FsBwHS9G|^I#9h5nKv#}{I{20t1Ite zJ=4gs$?Sj8a#s_VnvW4PVgI@-+p+`Y8PuQ7an^E1TJBOm_IQDLKTXUhxl7h@nJt69 zWFT2UJ*P5Hm*1Eq9>$OKfy12Ort(RoQg*`Ahh2Cxt6MeiOWMrW14B zR{b&0+d^4tUs+~kB-%&IX?q%fXc2ZtGOOX7z62RahKtyndbY?JV2_!)8MIA8H`)sy zWXv?rUZsEZEE=c4nrRHx9~)O6JwG+UbH)14@!a2YPGB2;h&yok9dMpQg%4KKluFw@^8y%@f(%qIw!CRqpL9Kk-U zl7FO_-cr2!OU^pgCCzn}Jae0Zjpr<^yhZe&l^HJJUmNlht4mEhQ(Mb<_L%7WFZ$*~ z8xq+V<50h>*IV8~e4E3@Eg!&V;!JV(980-#yjri{OS(TO)tH9TPw1Z-UV#o@SNWeK zBX_8s)>X73x{2XpiJ0$X6yM6HK#%SrcL2`~ns2@3ESV=aPSM_z?rE%7?Pp2{ zL*IOoF%Rd^|1~;K-M!xMJMZ^$?6EcIeWZ7f;FDXIKJLeN(X(hBPlYs3L(|ICSFrP? zL`x9kDSvPd`ejXjwDO4kL}?OwQtK$L6%R*C&FHEhTZX!!JdhziHrN@~tD-hn!{=#A z?Q?(c_<5)Mh--FMqq(f0jb(1crsR`~AK*1)z=#QPb zT3gXOmS;b~{|szQ+TD+h+gnZMzE^qmeYcjUvL90RQg3ADqm`-h;jdg=w(8bkyUfGH zq`nQ?1TX5RSSU%{nqoa<+os5`L|>z|&@*GVm0Nt?^U_t~(*4zq?CBIa5G!|UC6()E zP4=+<+80YbgWr6bILV69iN?K3<2w6^*RuH2t1Bhq#=v*(^L+x@v<$XF2{422`S-|E ze#i@0j{;>LnJA9B2tKriFDOSb8(s`?5j>=amz6DhxMF#O-W2wD%Kg0W54K6)uq`Qf z7qoYIa~11k8>{Fuu}-g-&fW`+A@VkTnL&a2(N3xha1v@=2H0fgfB{EG=iuSr->e?=k)5OT7Ma!D5}< zJ;#k<9FxTc<*+Aa`iHP}X=EDW#9`b!kD-IBO62kG$Qa}eKWXNZhM&xEzc2HoWP&Wx z$gdVTz8`)v=JT}0hb7L5WMJ8Y$G_{_xE$wmZv%2U54oK8r0f8?m9}>w&)p|7`0Z(A zVL8M}&LC?tc>KT6PjgMWy&k$bJxy$Du^z|=yC=OIIuXSnmQ6oocNE=75BIV6b~C3{ zr9Wj3Pq_G2zMk%_zMJ#z%g`17Kcs9#$Dn=B8cLGOcg%WsvDAsowuCbK25qhb|9FW1 ziFnH51G0u!VdENS25a~&J!jn;8QTVyo52?|ErV6feMg%dWAHr`NqDS(ZNIOVugf(VG1j-Pb(S{s?qkpP!W#_^-=41I(G+ zCHHDO^6H4+R(99L?#rgAUrIcK&n51|o}4`NzeisBbIQn8@IJ%e$G*+yei8AyWcV)b z^PDM)F;0``e1~L~nO0fI^N7DA_3=|B9teoFS64=E3vn5#3YVtNteHb#`5cFWb%iG492aa$X1F z>nU)ZM<&ZUux65v&3X7Go+~du+3hXAK{7&Tb)Mq4-(i#c?4|5RhBo{)F*o$7vf^g! zySv>>W%m*b1$o#nymfb}h4olP`#+p|P32vdx%7cWhf2-JG6lcqTIP=PBRe{b9jz~xzIM|A z_O>*5BRc#Q=_b$X639fni|<-zsh=mphk9PQPdmH6+HxB< zi#eve{WbDAl{Zmtt=3)apMh_-%u`wyyRg052u!uiSA4tg?XOaCfrTFETuERP4^AtV zrj>S;`s?=}@1M1u9NUtz_H_pRPkGy`{foCB&t!YCqs2;=J~JNYOvf*KJL@pT%)nll z>4U@akB2M5Q{;nnPUu;L_hIbJQh(GYZT}`FQCv&WTB^6M6dShxf^5e-`M& z54jy%a}Rdn#>!-Sscr0D+qies82k3~CLL-h|Cs)1`v(8avZmiqPB=REddmrWv1fgy zSh@gE{@K@E-*4o-Ysg2&+;`$v^q0R==M+3+f3_+;w`}sR@RD}7Gd4L!bbdDNrkb@C zWU?3huJ6DvG%Lz2W!&ZX_>WVU!1wMWkH4C8b-+tWFLY)DX3!odIa~SFD!XDyf!%s(4I0+m(MSYpjhHHiu{Ny`I5- zu!lJx3W>Ss>`!0i-9YFcv8I>m?1%Op*E#*=zFEc6$MK63!~2gXoM7MR-A9tKKZy*| z!}9Tb96NNczn3j&`#zFG9dgwBt#r1pn#m4U&qrTHAHT@=EqWN|{K&Tm?a0gUllJyi zYloRzIIj%;XWCPquD41^W3uXDH80kf+|S`2JHk=daTy?M^>dhwLo;&})#dVtU2aDdL8V`#8L8 zugcz7j$&nWXJq7pB(_Lvq360!VLxPt&Vl!TfTrefocA&R#Jyz~D@(C$^_5*E*}VO- zCB=Tv6hB$68^7P!^NQ76d?@Yv$;F~&c!#O?Mzi2)HhtwAV%r1XFr3>K=GIM}{5sV= z5czfCJh#G!>Uc*K_9!xdu9t=~sC!|8Xev z9~CDlUP|Ljrb2&G?ze>#UUSIXMtRyobh&fb1veX9B#y~t|9(t z1Zvo8#B-G7)60$APto})Ja?;~>p-u`zXdsp`w{Y0=<1 zCp8~(9wqtbQylgorF=o<4gU^bP=28DQ8v03J!fN|@mzU})2_bVXsB3O&Xhd13P15G z_I!$1E-|^kB0YP=JX*pYKR+)gpZn^{67g2&>r%zE?DyY08|+6r{Ve$tj(m!pyz_)6 z_*8h+`}8Q!LVbyLrR$+{+8iy3u6*|tYllyR56C#qDsTAxk9)4}iT5Rs%VN(>p-4Oe z{ld=bc={iJ4>P>K`WDVe`Pal0cjS0)aM66mML!iwi2uZU!@QKs*o6UX(g6MhegnSQ z?@&hZf@#@atpSf>2F9&_^jBjsgJJJ0M-=5}>=u3Va*e*Z!iVtX)L?SEc|Wzgrk4DS zWN2E5y|Mq;*QXS_1N!sw*${mzAsx~>E%LvaTJ7g|wZ2+EVi1eG?`Uj?oQdmfKX;{bM6t`q$P+{{kYW~S zO@9Pl^=+2quXfQsS4=bmef}qS(EU5OkJmT;>&Q#W^Gf&iUI01QeVel?ijkgC9kxAs zhen=YbZ;p4ec}P$cTxK9pN7!q0=kojrxtkSTOuoWbvd2=3^veQDIW1l&_{F6tNwj= z1$utGs&{(Q&o^rAhHfuexy!LZTmAPait|j1z7@Hq@*?*-SEF}0(cVb0iWuIcg{lK7%a(NAKj;5#6PF@Q#NQ1P;2 zVdZmwjL##!kasfZ#0dxS`)|W0-0I6W(z{3CqhQyU>6f&~!x)>n@eK&~_3TOZ z!;Q*4lFtd^a-NsO1HP!AFM@}<73iI@iJj~B9G~H7pMFBRQ@7UMU9EB0^Yy`duQY9@ zxPi_qr?FPH6&q#vPAcL@_p|^oJ|kH_r1Un;PZj3_R()LeH4=p!UuNXq?H{gTa(u) zUs#uN9%7!WeE&61ea*tX$5Tc*(?a=5=!%9T`j07B>WVkU zNFk$$w{!7F-{{M@P$l%!`=XO+o&_;-p^CqJQalgByX37oNQSoV%(C^jmQ?S!i-F*a`AGI#*^a z+(9lZkVB*Pb+%Y)qfgrevRE^LEOfrcWuf`^GJnZJdV3kXjOoaZGjv3A*S^*KwRe;B zm2FA7*|Nj>rQ8E|8Pk84o@I{(=jf$2`c@!UroGMnJU^6!DHcn`+<|Iwh@4zL%e&k_ z*XJ-_+0vBzEng?#tIn|gIu8#2LTA*qeqL*mgWqZgXV==0w(?t(+~v`WbMsw2M<(-Nj!`kkF^YACm z)BZNI`bi5H8#H&xX&>Kr%a2IrnEz0*G|+OOI#7UiehB?!uEbAs&f_}7}&?Cw7v`4uMTVV}qRj7Q*a z5dOrc=7XR2(rnfyb1sn3sRv`0qS9>zeZS@tugT&+NUxKVqJx!^)f6 zxiYbMT~2aTJYnrU-sCCI{|SG8uO;VS>qw7-^RC7v-#M(c++A(T@2qN%%IA%rd&XuD zhTnsTADy>)*OHH)w=JCc@UTDRL9thyhsKZx#Tu{2gU*HV-}Ct*F1I4 zdru)F+3-eup>xrfuj7*_7nU}>6DQ8p_kQ?6CsNscdMEXjyL0;OK-Rl|F5khe>+=S| z@1LWyw6AUpp#q_6|J9 zpY?wT&3||M6Pnw>cOG8m?^oo;`dHFsbanK+mF7mjQ%SNu0T z=&TL*;jf$58ST&$<&7tr|9_<2>+QY6el9!b=RM+k&;C!|d-G*mSaYo>wzMw3=AY&K zT8rPu`S0&nee)^bQ!;zKes}%{`~AV|^piig6#lGXhq$73iRG*;`+k6X2>+yIiSpX# z6F(+QeQ6%;rX=bsz4b+l@8*)0Lwu3o-Hutg(3-|?0A?2#lC!!rVFk~6?c%~de*d6n zvd^N$H$4tH_*n|Ny!h#<*fCQ`s?JKUtjuaE&f+`yIfi#a7J2?zjm24Mr*F32GeU1xihJJG zRgz9$-$AEuNVG5Jn~X7<?=^L?B3Ey)iwsLr`XE9dFIaEyz z&-SLceO`hb_!NHslHqq!#G$1c(@??>Bz8FB>lb@wI=(Nt!&5#!pK)Zzlsj}o8>M$H z@MJ0HGh2Lwzp0XKAyzFzkN5w9pCle@eHyZ-&*Dw2^6i%TGJo=s$OztZ?Ae^H?p8VXQGoHc6D6irn;#0Xr$w~AcM)y_zh%)-t&9{SDzP}*mS8gQ#%E)LQB&ypO z)}{VstWNwcfPZVa0PPu-Q^=Ya(f2{g8^Hgnir#H~le6KQoCh_&yjPX=4b3DolNc#z zgPiV3GOm7CRO=#t?{Q?M9LwHgHRR#s1Eq-l&`W-M#9CyZ!5_P>gkLcod84P-H7Hgv z9&#LhwQ6O5M$Ej#Qya@&Uq+|kg?N>AlE3yxbf!dWkuod1=$Xb7Kb4q_EcUGCI7_sK zZE{J&6}>A?IYWGJxI5*qWqJ-N!P#^UI)1sqBUDg}=XSpoAWl zQo~E2x2lvFe%cyH&aj}95*_6W6PaRZHs>udb|sm~&6=~QXlXx;kRNt3>%CMq_${9D z+#1(%jvTYxXY{Qk_F>hmAmd)o^Fs2YBWoV3%t>AC z^9El!$EOcGK11)TG{5PI+}pfl=4x`q(!HT$%5}h7i9GwsktbeIPL(+BndGt{d zH2VU(-oDtLV!zLRmp#{>YS-ede*E&^buRDf>g;kpxTT|~qjgiq?{#ds-npiut-aG( zeM@&w`)0&y%<}e4n>w9qJG(Zu#rj;GZ)@#Q`_=2a+S|8ilhU@kr)|sDO`CjQUwxzN z9%_`!`q6V2OVvCb(4Z{D!9adc*vCbU^)2 z6o{{Z=t5VGev6^Jbacgkn-M+xe_e96`qz|;|K_WUrfvSo%l}wo$XWfyuMsX|*wNvo z_p#ACS-qFNJA@*o;K2|MQ3?)+Fia_UGK3?Pg6Bf;C27q)3Hl?5` z1cy>EF9erTa7hSRO2P6Fa+HF#A+%5mHinR=6l@EjKq=S}!Vsn4?huNUf(Ju5L@78N z!Z4-a$q`JW9cd5Kd7F zUJ1eci1`EQ5Nt|8QwR>FU|t9=rQnhfvXp}5A>=3pYeQ(E6l@G3Pbt_ILV;4SBZMJJ z!QCMgDFqLPaEMZHID}zJ!IL2zp%gq9f=4Mh5yB}-!7Cvc<&=SR2sWjlDFla7FfRm` zQgBHKSxUk35OS1)wIQ@n3O0t2rxa`pp+G5!=W5~T>~&TGXC-h}0%s*~Rsv@wa8?3m zC2&>(XC-h}0%s*~Rsv@w@c*F%lnIP-lPaToO*OjLw>tkfAX@)fm-3faEM0o3Gq0`v zrW-nX7O(oS)78GIy|ugDdG|%XLqvYg~okc`}qh(FUD4kaP5N&wf^S^(JUK3doHYE^gV>cc z=Z>zS9;eLDM*I;9Q6tL;kLEL;V$?n}u6;V3ui8(GNKvXi@0k6+pBg+)`Sc_CDetWM zdkaCW@Y&HVWz;{Cr=IX0ZdAS&`1`>l`C7PvS>Te_i30!lSHgUbGQuPJnclFP@&1_G72$eD^do)H z|4?&?`Utnc{rQCL^_EI_)L%I1^U*6>pQhM&e>++`CQtn>)!+)&V|lE-=+Enm>J$F_ z=ErbeCXZgxc*|n->VG7L|9rG{FuvsVT&!O0@7*3XN|;n^6Grrlv3j*%GdR}%4HLB2 z-*gJDg!yZ>obY)(h}NSgRxf_^_k@BgVa|u1@HIS$+CLeqS9|?^px{cFMYI=w2@lj> z_4=DY!Id!Yqh5Htep#&kO6rC4{p;v>+jfoh7rlF9xaR-FAC1+or(YZTk>Qc_$>%Rt zulDnY#@eg?k{GV~6){}(xfrhcwivGZjWJyHgE3t7cgJwmKQay%zrhvib7=3hU)5gk z>*DqLJ6#ce3-gVxNI#w&NB_|7s71o;nxOsRSp65q)oXlx_a9sVKV$C_)8?UZ?KNNh z{jlH)*1u`*nYjM8SiD|;XDp8EZ;nOyV-wIn5vvz}FYFs@uklaBaMcg*AFF?60(wVc z^`!~w^|$eYE0|B)J!AOKCTRbuSiQzK_m8#r`Hiig@YGMD`e6O_d(Yqs@WQB33*@iA zEfTNS-x~?8pkD7QBRr9a?#Jv6A9jTozZ9CFzUK>L^>Zeu&wp{OUi=Tl@QY}#-w($3 z-;P+l+TS}4SNq_qGas5@yyCd_#~z5<2kW8VT?JQw59m8>6rBj>d4+AB*8W zKVRdae+BC?H-@YJPz+c9!!ca-&;5ztnSX-*r((E2{-2K3`{Tv*N4P(Kze%tk^jm}A z3UK`fA&yHP5q<&lkFLm`j(zWvFjrA8Tzp68+b_oPlm2={Az?mBdwusG$UpGEGO>Dp zJ~3Q$y%?_g)S)qY!u9Qaa0UKKW?cOjW4P!Yis9;iWE>uRqc4hqd=$$BSIR$s#D8$5 z&Gi$==V*)`zkM0KBKf@#tJnA~--wzd%!3oOZ;REd{jnJS{R!Hih}En8nm-$({}bBl z`}auyRWCfa>den4pw|}bul9p6T=E=>;i_+WD4-VUYd(hi{bRV_KZdLRn=xGVhhwSuhDfBY-hPfiS1{bey+{j)J#^=&a+^&4Zj>IY-E>W5;u z>c1JoRev~!tNw);{uV7%ct!f-#p>0*P z_rT>ZHHG*c;96fh#6JTr|7{I^r}+6ixa@@!*8dr}g69t^V^{Q z$7sx@`SpND`H=bqe-#~E`#s`s7r5f_Cn2EmJ_oMzMe>*p{sq;?{+A_FM#X( z8lb)U9|PC<{KXLeDY)W^TsZ$%z~!%I!}<|$|L?tkYkl6x`Y7H%9P%?8{F0bF-UB`a zKhgLr!4;22^5OsN@X!CbA^k1jrT}nFGnVNAmp@4tpWj=-b$&$j{uo^G=SKJyKVJin z?AJ7ci|>Fdeva1fX>i4#r$Tzqg6lVDx+MP}gDXBekqE{+4le&vCSLOTCAi`prptI~ z^YuFQ3@)4E928OKm&3ifXm*z9M)ehyc*PtfBpunkw1AltltQ(_-|Rb z9zEc)w;F#o^Xmgwz9G`r9pH+u_>H&E-(BE}cUOe;?gLkR6v^YO;Fqyp6h6OCaie(U z-Vi?u9@kF~T=7@L-*ND!!r1z}46b-FkWZaSk^+_goek;P;EJCcL!7@&Z4|FY{5ar> zPrrzqCBF;67dr1y{VbE$sgQxEqu2W8liSxMBT| zz!k3*Lj1?z{@$4|lK&pBcL1p27_#ikIS46gV);(rdf{O1Do z^*mh&u6&7u{50PCz?Dym)?+2O&S%T7PnnN`D?T_H(r*Kg>th$V@|jWp?cj<}BmLY5 zzN~Ld{+|O6v`_nQvbi5z=RLpE_SgT*;E_GF;qTkvS=MJ>IR0OQFQUC89DVqEaGm!v z!g{m5tEXc@rhwfMuAH!r#TiVt4Z+{~l4&gSbkb*^jO)ZEt7+11_Lx^Hr9!QIv^{(U%QzlqP-f_!UNz;ZY3yV}=p?dtBhsl9pg z)}Hol5m%erH?QB=bs-X7H#V*w=5HDI5W#Qlim~etG}dPWKm3TXesgzw&sMP>&VIxC zO`YAb-kZnIl`%JW-V|@qz8M;06gF#?pv}!e-`ASah7Fsxc5fW(x8dg2P3jjivbpt! z_H|n~1P{7z>0Za1t!CJZ0S=`EeKZw}4b zaK*r>u^Fuz5&mQHFVD`i^O zb&E!KzJ2{gTe{oVQxQrbv>!BV?`ihuWx~xE4I^=~-Tb$}Jo8yKtJ<|+L;doVx1+PU zeH#WbP-uAZcT&JhdnX2>wM~>UEokRWo%x>DbxZ^KiuZ7;@Ze9iZEOA_1G4N4H4Zp7 zA4ah|R_9ySuW!zEb!_Qb)4mM}NKF359GhBCXTCYlsLjpmy1N4f3{Hsd&S+bWO1P_C z+p{|~%i>zf>vQkR+809W`Wv@)bhVG!9=e>l67ed{7y^si+9ELpW{_url^Wx8bL%#L zJWe)5WT4_3NLt1wySlw+aX!DMqh}Mk5RB_{#c9n!UaA<~rxk3_@1^7sQP3t-o zNUG2rtz{&G*Ps=j3WA}Z|Hi+$gPj4QQzb4Ge{DBPHzn+LG?T+v$AT}zU^=6=F4R3= z#4^G38k2IUYG;f;CgpWqovm%_ThW_vQ_(jh#}U_sW%kjIEgRTP{;}gT&>b8}0Wgnp(%&37uF&jAFn#b&| zVI#pB>u!RBLHq?rd2_x8JsfQgbxqtqJ=MrRH=Db!-?X(oK6Nx|+`Of5ferCh4jMOa zZ0+HU^+gd7Xl~~RqOH&$TjVi??G8??QEB@V>eF|Z-gJbd%p-EsYv z)=fMb+Z>xa+wdOS+l^V!eamLJr|jtp%8k*TzZDnYiuITU{`xHF>hveIpnYTDWSRwP z6Zn@wo9I4hmv6_Rt79ELUpFrIzx#SKEphQp zt$Gvyf@j4H(WQ7r*DN4vr#Q2TcE{eUn&67sy&W`ar+Du4hbE?{e4E-4uKC}kG!huk z6B1q#y?22}?UaAJ?5ZG!8sF~yJeUF~O|S1jvJUW!Y=AyOuT@SM(J3 zET`S+^FYFj@Y=tAmw%&niVv5yg%x3;I$a%r`uOz1cKon@^orqZe_{+FR3(# f=sNT%WB!p?FS;Un^*o5T+qK=8KZ+VrM(zF&^z)B2 literal 0 HcmV?d00001 diff --git a/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c b/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c index d536fad..bfccabe 100644 --- a/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c +++ b/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c @@ -1,18 +1,16 @@ #include "../../LibMultiSpacc/MultiSpacc.h" #define AppName "Hello World" -#define ScreenWidth 320 -#define ScreenHeight 240 -#define ScreenBits 16 int main( int argc, char *args[] ) { - MultiSpacc_Window *Window = MultiSpacc_SetWindow( ScreenWidth, ScreenHeight, ScreenBits, 0 ); + MultiSpacc_SurfaceConfig WindowConfig = { .Width = 320, .Height = 240, .Bits = 16 }; + MultiSpacc_Window *Window = MultiSpacc_SetWindow( WindowConfig ); MultiSpacc_Surface *Screen = MultiSpacc_GetWindowSurface( Window ); if( Screen == NULL ) { - printf("[E] Error initializing Video System.\n"); + printf("[E] Error Initializing Video System.\n"); return -1; }; @@ -22,28 +20,14 @@ int main( int argc, char *args[] ) // Copyright (c) 2018 Doug Fraker www.nesdoug.com (MIT) MultiSpacc_Surface *TilesImg = MultiSpacc_LoadImage( "Tiles.png", Screen, NULL ); - /*char Text[] = "Hello, World!"; - for(int i = 0; i < sizeof( Text ); i++){ - MultiSpacc_Rect Offset = { - .x = (8 * i) + (ScreenWidth / sizeof( Text )), - .y = ScreenHeight / 3, - }; - MultiSpacc_Rect Clip = { - .x = 8 * (Text[i] % 16), - .y = 8 * (Text[i] / 16), - .w = 8, - .h = 8, - }; - SDL_BlitSurface( TilesImg, &Clip, Screen, &Offset ); - };*/ - MultiSpacc_PrintString( "Hello, World!", Screen, ScreenWidth, ScreenHeight, 4, 4, TilesImg ); + MultiSpacc_PrintText( "Hello, World!", Screen, WindowConfig.Width, WindowConfig.Height, 4, 4, TilesImg ); if( MultiSpacc_UpdateWindowSurface( Window ) != 0 ) { - printf("[E] Error updating Screen.\n"); + printf("[E] Error Updating Screen.\n"); return -1; }; MultiSpacc_Sleep( 3000 ); return 0; -}; +} diff --git a/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h b/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h index 3729343..f4e40f7 100644 --- a/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h +++ b/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h @@ -1,6 +1,8 @@ #pragma once #include #include +#include +#include #ifdef MultiSpacc_Target_SDL12 #include "SDL12/SDL.h" @@ -12,7 +14,18 @@ #include "SDLCom/SDL.h" #endif -MultiSpacc_Window *MultiSpacc_SetWindow( int Width, int Height, int Bits, Uint32 Flags ); +#ifdef MultiSpacc_Target_NDS + #include "NDS/NDS.h" +#endif + +typedef struct MultiSpacc_SurfaceConfig { + int Width; + int Height; + int Bits; + Uint32 Flags; +} MultiSpacc_SurfaceConfig; + +MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ); MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ); void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ); @@ -23,4 +36,4 @@ int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) int MultiSpacc_PollEvent( MultiSpacc_Event *Event ); -void MultiSpacc_PrintString( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ); // WIP +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ); // WIP diff --git a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c new file mode 100644 index 0000000..4f59263 --- /dev/null +++ b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c @@ -0,0 +1,25 @@ +#include "../MultiSpacc.h" + +MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) +{ + MultiSpacc_Window *wip; + return wip; +} + +MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) +{ + MultiSpacc_Surface *wip; + return wip; +} + +void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ){} + +int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ) +{ + return 0; +} + +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) +{ + +} \ No newline at end of file diff --git a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h new file mode 100644 index 0000000..1bbb809 --- /dev/null +++ b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h @@ -0,0 +1,19 @@ +#pragma once + +#ifndef MultiSpacc_Target_NDS + #define MultiSpacc_Target_NDS +#endif + +#include "../MultiSpacc.h" +#include + +#define Uint32 int32 +#define MultiSpacc_Window PrintConsole +#define MultiSpacc_Surface PrintConsole +#define MultiSpacc_Sleep {} + +typedef struct MultiSpacc_Event { + int Keys; +} MultiSpacc_Event; + +int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ); diff --git a/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.c b/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.c index a2eaefd..12c9820 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.c +++ b/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.c @@ -5,8 +5,8 @@ #include "SDL/SDL_ttf.h" #include "../SDLCom/SDL.h" -MultiSpacc_Window *MultiSpacc_SetWindow( int Width, int Height, int Bits, Uint32 Flags ) { - return SDL_SetVideoMode( Width, Height, Bits, Flags ); +MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { + return SDL_SetVideoMode( WindowConfig.Width, WindowConfig.Height, WindowConfig.Bits, WindowConfig.Flags ); } MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { return Window; @@ -24,4 +24,4 @@ int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) return SDL_SetColorKey( Surface, SDL_SRCCOLORKEY, Key ); else return SDL_SetColorKey( Surface, 0, Key ); -}; +} diff --git a/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.h b/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.h index 0f15a7f..0fe8865 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.h +++ b/LibMultiSpacc/LibMultiSpacc/SDL12/SDL.h @@ -5,15 +5,15 @@ #endif #include "../MultiSpacc.h" -#include "SDL/SDL.h" -#include "SDL/SDL_image.h" -#include "SDL/SDL_mixer.h" -#include "SDL/SDL_ttf.h" +#include +#include +#include +#include #define MultiSpacc_Window SDL_Surface #define MultiSpacc_UpdateWindowSurface SDL_Flip typedef struct MultiSpacc_Event { - Uint32 Type; - SDLKey Key; + Uint32 Type; + SDLKey Key; } MultiSpacc_Event; diff --git a/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.c b/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.c index 13d14e6..294b7a8 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.c +++ b/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.c @@ -5,8 +5,8 @@ #include "SDL2/SDL_ttf.h" #include "../SDLCom/SDL.h" -MultiSpacc_Window *MultiSpacc_SetWindow( int Width, int Height, int Bits, Uint32 Flags ) { - return SDL_CreateWindow(NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, Width, Height, Flags); +MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { + return SDL_CreateWindow( NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WindowConfig.Width, WindowConfig.Height, WindowConfig.Flags ); } MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { return SDL_GetWindowSurface( Window ); @@ -24,4 +24,4 @@ int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) return SDL_SetColorKey( Surface, SDL_TRUE, Key ); else return SDL_SetColorKey( Surface, SDL_FALSE, Key ); -}; +} diff --git a/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.h b/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.h index 342db05..898b52b 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.h +++ b/LibMultiSpacc/LibMultiSpacc/SDL20/SDL.h @@ -5,10 +5,10 @@ #endif #include "../MultiSpacc.h" -#include "SDL2/SDL.h" -#include "SDL2/SDL_image.h" -#include "SDL2/SDL_mixer.h" -#include "SDL2/SDL_ttf.h" +#include +#include +#include +#include #define MultiSpacc_Window SDL_Window #define MultiSpacc_UpdateWindowSurface SDL_UpdateWindowSurface diff --git a/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c b/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c index 45e5749..72a5207 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c +++ b/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c @@ -9,7 +9,7 @@ int MultiSpacc_PollEvent( MultiSpacc_Event *Event ) .Key = FromEvent.key.keysym.sym, }; return Result; -}; +} MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *Screen, Uint32 *ColorKey ) { @@ -30,12 +30,11 @@ MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *S }; }; return Final; -}; +} -void MultiSpacc_PrintString( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) { - for(int i = 0; i < strlen( Text ); i++) - //while(*(Text++)) + for( int i = 0; i < strlen( Text ); i++ ) { MultiSpacc_Rect Offset = { .x = (x * 8) + (8 * i), @@ -49,4 +48,4 @@ void MultiSpacc_PrintString( char Text[], MultiSpacc_Surface *Surface, int Scree }; SDL_BlitSurface( Tiles, &Clip, Surface, &Offset ); }; -}; +}