From 1c4197e864c67f0a5d30b44f7a9d374ea5453510 Mon Sep 17 00:00:00 2001 From: Julia <145168563+julia-aph@users.noreply.github.com> Date: Wed, 15 May 2024 17:10:47 -0500 Subject: [PATCH] ALMOST WORKING AHH --- Fumofumotris.code-workspace | 3 +- build/errors.txt | 2 +- build/hdr_checksums.txt | 2 +- build/src_checksums.txt | 2 +- debug.exe | Bin 144456 -> 149855 bytes objects/ctrl.o | Bin 7889 -> 7526 bytes objects/dictionary.o | Bin 6981 -> 7089 bytes objects/event.o | Bin 4606 -> 4602 bytes objects/fumocommon.o | Bin 4534 -> 4750 bytes objects/fumoengine.o | Bin 7797 -> 8746 bytes objects/fumotris.o | Bin 9077 -> 12742 bytes objects/input.o | Bin 8510 -> 8506 bytes objects/parseinput.o | Bin 4396 -> 4392 bytes objects/ringbuffer.o | Bin 5974 -> 5952 bytes objects/terminal.o | Bin 6989 -> 7113 bytes objects/tetra.o | Bin 8092 -> 9323 bytes objects/vector.o | Bin 4469 -> 4508 bytes objects/win.o | Bin 14792 -> 14748 bytes source/fumoengine/fumocommon.c | 7 +- source/fumoengine/fumocommon.h | 3 +- source/fumoengine/fumoengine.c | 58 ++++++---- source/fumoengine/fumoengine.h | 23 ++-- source/fumoengine/include/dictionary.c | 59 +++++----- source/fumoengine/include/dictionary.h | 24 ++-- source/fumoengine/include/event.c | 2 +- source/fumoengine/include/event.h | 2 +- source/fumoengine/include/ringbuffer.c | 4 +- source/fumoengine/include/vector.c | 16 +-- source/fumoengine/include/vector.h | 17 +-- source/fumoengine/input/ctrl.c | 51 +-------- source/fumoengine/terminal/terminal.c | 30 ++--- source/fumoengine/terminal/terminal.h | 12 +- source/fumotris/fumotris.c | 116 +++++++++++++------ source/fumotris/fumotris.h | 49 ++++---- source/fumotris/tetra.c | 153 ++++++++++++++++--------- source/fumotris/tetra.h | 38 +++--- 36 files changed, 366 insertions(+), 307 deletions(-) diff --git a/Fumofumotris.code-workspace b/Fumofumotris.code-workspace index 3a25141..c4b7996 100644 --- a/Fumofumotris.code-workspace +++ b/Fumofumotris.code-workspace @@ -60,7 +60,8 @@ "stdbool.h": "c", "fumoengine.h": "c", "event.h": "c", - "fumocommon.h": "c" + "fumocommon.h": "c", + "terminal.h": "c" } } } \ No newline at end of file diff --git a/build/errors.txt b/build/errors.txt index c099047..170529f 100644 --- a/build/errors.txt +++ b/build/errors.txt @@ -1 +1 @@ -{"ringbuffer": "", "event": "", "ctrl": "", "terminal": "", "fumoengine": "", "parseinput": "", "dictionary": "", "fumocommon": "", "win": "", "input": "", "fumotris": "", "vector": "", "tetra": ""} \ No newline at end of file +{"ringbuffer": "", "event": "", "ctrl": "", "terminal": "", "fumoengine": "", "parseinput": "", "dictionary": "", "fumocommon": "", "win": "", "input": "", "fumotris": "\u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:\u001b[m\u001b[K In function '\u001b[01m\u001b[Kmain\u001b[m\u001b[K':\n\u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:120:37:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;35m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 120 | EventAdd(&inst.on_start, &game, \u001b[01;35m\u001b[KFumotrisStart\u001b[m\u001b[K);\n | \u001b[01;35m\u001b[K^~~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;35m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;35m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K\nIn file included from \u001b[01m\u001b[Ksource\\fumoengine/fumoengine.h:3\u001b[m\u001b[K,\n from \u001b[01m\u001b[Ksource\\fumotris\\fumotris.h:2\u001b[m\u001b[K,\n from \u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:1\u001b[m\u001b[K:\n\u001b[01m\u001b[Ksource\\fumoengine\\include/event.h:24:60:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kexpected '\u001b[01m\u001b[Khandler\u001b[m\u001b[K' {aka '\u001b[01m\u001b[Kvoid (*)(void *, void *)\u001b[m\u001b[K'} but argument is of type '\u001b[01m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K'\n 24 | bool EventAdd(struct Event *event, void *instance, \u001b[01;36m\u001b[Khandler callback\u001b[m\u001b[K);\n | \u001b[01;36m\u001b[K~~~~~~~~^~~~~~~~\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:121:38:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;35m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 121 | EventAdd(&inst.on_update, &game, \u001b[01;35m\u001b[KFumotrisUpdate\u001b[m\u001b[K);\n | \u001b[01;35m\u001b[K^~~~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;35m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;35m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumoengine\\include/event.h:24:60:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kexpected '\u001b[01m\u001b[Khandler\u001b[m\u001b[K' {aka '\u001b[01m\u001b[Kvoid (*)(void *, void *)\u001b[m\u001b[K'} but argument is of type '\u001b[01m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K'\n 24 | bool EventAdd(struct Event *event, void *instance, \u001b[01;36m\u001b[Khandler callback\u001b[m\u001b[K);\n | \u001b[01;36m\u001b[K~~~~~~~~^~~~~~~~\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:122:36:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;35m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 122 | EventAdd(&inst.on_draw, &game, \u001b[01;35m\u001b[KFumotrisDraw\u001b[m\u001b[K);\n | \u001b[01;35m\u001b[K^~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;35m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;35m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumoengine\\include/event.h:24:60:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kexpected '\u001b[01m\u001b[Khandler\u001b[m\u001b[K' {aka '\u001b[01m\u001b[Kvoid (*)(void *, void *)\u001b[m\u001b[K'} but argument is of type '\u001b[01m\u001b[Kvoid (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K'\n 24 | bool EventAdd(struct Event *event, void *instance, \u001b[01;36m\u001b[Khandler callback\u001b[m\u001b[K);\n | \u001b[01;36m\u001b[K~~~~~~~~^~~~~~~~\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumotris\\fumotris.c:124:32:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KCoroutineAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;35m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 124 | CoroutineAdd(&inst, &game, \u001b[01;35m\u001b[KFumotrisFall\u001b[m\u001b[K);\n | \u001b[01;35m\u001b[K^~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;35m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;35m\u001b[Knsec (*)(struct Instance *, struct Fumotris *) {aka long long unsigned int (*)(struct Instance *, struct Fumotris *)}\u001b[m\u001b[K\n\u001b[01m\u001b[Ksource\\fumoengine/fumoengine.h:35:73:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kexpected '\u001b[01m\u001b[Kcoroutine_handler\u001b[m\u001b[K' {aka '\u001b[01m\u001b[Klong long unsigned int (*)(void *, void *)\u001b[m\u001b[K'} but argument is of type '\u001b[01m\u001b[Knsec (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K' {aka '\u001b[01m\u001b[Klong long unsigned int (*)(struct Instance *, struct Fumotris *)\u001b[m\u001b[K'}\n 35 | bool CoroutineAdd(struct Instance *inst, void *state, \u001b[01;36m\u001b[Kcoroutine_handler callback\u001b[m\u001b[K);\n | \u001b[01;36m\u001b[K~~~~~~~~~~~~~~~~~~^~~~~~~~\u001b[m\u001b[K\n", "vector": "", "tetra": ""} \ No newline at end of file diff --git a/build/hdr_checksums.txt b/build/hdr_checksums.txt index 37d3502..e0cb5ab 100644 --- a/build/hdr_checksums.txt +++ b/build/hdr_checksums.txt @@ -1 +1 @@ -["1d6bdf7e8de4ac751252b67027e5d57e", "9df90eabc8908cac60aa774d335a106c", "1420f33d62a8ed8429c8f1a96f1ab33e", "dc6df72158812bc9f6ed484a4cfb046b", "6669fc7fcffc77563f1315cb7710ec82", "333c7211bb2c72ad321495f53d11bff0", "088145536b04ef82517eb93630888dff", "f61af2abe56cd6881a830ae6222483e9", "e09059d1f20c982c6c42a61a0754c102", "fbccab3d5cd1838cbf8ad1d4e2a7c03b", "330b6f9493d091e7c340c1434b6f80b4", "e38bd5ea2b554a21849158242a2add8e"] \ No newline at end of file +["f315479de287d3cccdfa665c1e8c58bd", "7d30e573f96a566ed9510833b95d5520", "0eaec40fe47b9cb31ff5a70f7bfee15a", "72e1b62b85eac654ed094a8ecf009416", "5ce28b2bf9d7c5750ea290f80fbd1264", "0d65896ce70d098bdf4cb3587ca74508", "f6611a0f07f78cc4fd52df267e0d3d25", "9f0597e7cacc7c918163affc5f3d9841", "cd22e396133a64303ecae95280f8ba1a", "7d7451ae7d88f4d1f84055180f9e84a7", "29f6d19bcc5a1897b220a192ef6fc3cc", "1d88301163b019760c3dc8396ce2aa4b", "ec4912a725a2bc606bd76ba34159435c"] \ No newline at end of file diff --git a/build/src_checksums.txt b/build/src_checksums.txt index 0637a08..4e54ee3 100644 --- a/build/src_checksums.txt +++ b/build/src_checksums.txt @@ -1 +1 @@ -[] \ No newline at end of file +["4aa55dfc1d038e75d0efbf277e6033a4"] \ No newline at end of file diff --git a/debug.exe b/debug.exe index dda63fab637ad05e72c36b17b1210befb444f4b2..b86c9320ccee11a2bf3368cfea58ba2a72772132 100644 GIT binary patch literal 149855 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
  • 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
  • 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 literal 7889 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 diff --git a/objects/dictionary.o b/objects/dictionary.o index 5aa83ba040e07732c5e38c9536bced0b79e4e397..896882c73a74938cd2ec5cef73919a03c84135c9 100644 GIT binary patch literal 7089 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 literal 6981 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 diff --git a/objects/event.o b/objects/event.o index 68654a02044ceff8b676e038018ef7047f4ed77b..1536ac03a7ba19a4bde6d4476be6805b6e5d100f 100644 GIT binary patch delta 269 zcmeyT{7acLrHz*X1ZpO7Dl_^_)Sb_mHSw%Es{% ziHstX&oT-#noNGksLtBL&A_0unU_h0k;A~FQ^2D;RAaIw^G{}DJ)_B{EV``9AcHrj zvrJ=T%$odU#Ro5Y;0VnT~ki;80$3o>E?it@8klS_(YCNJa? rp6tOT$E6RJ)CWpVp3e1%-BeS-5a`0q4ctFi7(Y#P6y4k>P{0TPJEuj; delta 263 zcmeyR{7;!PrHz*X1R5rCDl-O5)Sb_mH}R}Gs{% ziHstX&oT-#T19nA<%7`Yq)=~Fn*ipD7v{zpnwqow#P%A diff --git a/objects/fumocommon.o b/objects/fumocommon.o index bb3f424fb61dfb7deb42c73d69746c51787fde6e..5e59d86fdc63397a6ebd9a99c5bca1143dfb380c 100644 GIT binary patch delta 1939 zcmZ8iU2IfE6h1TefA4npZht8K(e8Fj`LV411wu|F z7(){tFxgBoJ}4p&zL;nt#0O$bt44yc4;tbNnh+zkB#;==_@FU(&YfihPIBga=R0T4 zoqO)g+%MwqY$_UG2mwiD7@#g+RPGEgfNl=(Lw@^=k;KSi{-byzh2WY7a3hESr5H5{ zjmgAoPrlHhed*|b9vg|QZ&S8t0>R&S;pfDIur z%^nZj!stA@+d|@9w%7D9DIE~Mv3hn)I6NM)kyv&CF38nGP_*+wag3K%c76TwH^ZsZ zH&bulZcLr&`SUVnLhAJL+9~lNZ)PuupZF7j!>RC_OE^p~iGTTQDYG@hZq_w60Kjx^ z5E3V~)bJS2Ekz}J7PY!ySJ7@kB})x!MN5)dS?Q1n;4f@|0n8>pxUYXW+SRl(+SHP0 z77@Lj4P1O)A7X>{$lT;qCOexsw4)Uc{)(lHxz|UsnL{uVTA`WbPLn@sFQaRNeSZRE zg8cvV!|n|~U91}oIj039&SfIZPq3zyN@pja##lg1OD1_$8es2#j>+2OTxJStJirmh+oWVD{P*_3S;7)S=L8vq>Q@2^P^x*rRO1F(HeRRlOIz>#<9Cv8Uhiy zM9{_{P+3?m&YYYU4OT_jIhkcVkY!Ygm#jv29V70@P!`(P#aXL6XMkq!j`646r`+BW zz7bd0`Y2-*`HU%ZcH!0-G&UoNIzp=}D~ z5(?6L%EWesXx~U~pF({K(IJ%47Zn;sBo|HXkD|hHR421=(#~Wu88H8%JAVF=;)Ks!I#Vs-jn?^$Nj7LA*P$QuVnmd4!u?J zW2g$R@H?R+EGZ6z;|49hSiBW(+w=w^5(`yh^p`69pnO&ir^NMeoC$F+91mY8@Bu&n zmT2wb&5LinJt7y``5(hr B{e1uc delta 1827 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 literal 7797 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 M@Job3F?Fr-zg=j0M*si- diff --git a/objects/fumotris.o b/objects/fumotris.o index 3268eb1129c0de2007e63d69a7f7aff3c2c588d9..467e9b50d9003203bee1b97eeaf567cf0f67cbef 100644 GIT binary patch literal 12742 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 literal 9077 zcmcgydu&_RdH*hXuXxGJmqf`TCC8>}#daL)6)TG3*s&g#P5BY2mRvvPOs1$SiZMm1 zm!vJZ9pKnW8Z9$m@716U)?nQq#g?{4w{B^+cD7T*EwFAG1`O@6Vg4fxyrn}ucPp|a zu=o4Ux%Y~+5^Vct2jIEi<9ELEo!58IIhQjpgo)GIbwrN|N~O-SxmXso%x-##c6*3k zZjn4ck~Ds@b0%F*SK;0U-CkEE069S8S39RmrCRA~?i}M5YYnyo_8+V4bq{ndtj5KC zM6a|;yM8H&%lb@lYs0Dr6yS&cO! ziQCp)BV=yh8lrdCO0fqIVXybm8r*ZRcNVx0Y+SR0dsL2$17^4Gva%`(dwu;?5~AOQ zy#za7l?1N8w!!1je=|`90xA0C@ml|0hWs9IHy@B#9-09f7&@F<{%PvM&jwP<2cxOw z!|~KhBY2Lyk7pdu+jzd8y4W-TcxrjFJ$c|_C<*$&MGZN<5k!_+zIKZlKyMGe9$+zN z)#B8JtMMDV+cz@|&m=zwzk{hsgRgUr8W#CcWhr%IK#T-ieQThfE~PGff8gmiZGXq_ z^OyZ(e{ap+7`ZE5NxgLLMc9n|=|IbKSIb7^&qnTExTVZ4kKARGwib>hYY( z1?*PprNg&U7x%>nzXMb7@4DO46$1mdfh6o!6~F+Zb)Q`9q+P7z(*IQMxvQ0bWDL4N zk=XHWJh=^o-b*Rhg>-qm`(M1MRYDxUSG#fHwt^0sV;EfMmu!GpuHe0~>he`BzV-2g zsETHCjzK)hkCj1WgSI;Z-KpoVE*i6upI^O`ifp<1UIM05fBUZ&ZYnANbw_;tPUPs- zJCP_BG0~mKiEFcwE=>nr@}bn$tM9F2B@0+7M5#9zi*zp4^R^hSrNl=q#fr;`|Qsac%&}A)_xAP$Vqf@{zM{vZc+11~4^>=FYE4Jj6d-nTW;nQytDdfQ{QAwjZ@{vw{ z3XlOOWO|S`(Pm20aXLzaG)x?yc*=ZoQiR3(^$HTpoF_oG#74Rb$unA(uz69`#)`*% z1#Fd~do|rsy$S-Kpnub*qw4cfudWn`HAGizJU>nJ1P3a9^7}Au>&zd0cTkcyhd+fW zr@N0a_i@c@WS#zpPo()@E=!n7N%y?CF#Ty&FqA?!aYfZ0;ael|QH!XNm?sg~M@J_} z(e{lUo0uFO-cKHFWMX)5e1xOQP^DZh7D(6E97Y-CbUI%#NpJRZkD<>77jq>jTdXQ& zt6zshQ0^-(mCCuyDFD`ei2;kGulIk%C6y)8lY&$!F1*{#+f`lP;QJdOqtlf#wa3`a zXqu~du%4@rK2xHNO^-!nB-EavTML@See@0(mn9+Pxx!7@uF z%nbceyD}lQ%)FTv;yxkPZ6ErD4^FMyMXm9bT6c(ATUan>=3#WF5VW$OvOxNif?Z4X zvbl2b>5`%k{wF&$$J0O`YUMWzDbtl%(ud=$iBf<&Q^SkT;6)Z8b)sy!(}%|OJ$=yG z2KH7PNCj8}1JfwC$1$*r>P5Gw(uEns5c25z|DFw4W(Kq1K!W>+^itU({a}Ktg^zNw zlRg$%hJQB|T}*P)$D6(k{+6Pnk(l76$~<@HryIWo>1{Tt18wu)G#7G3fCc4616ESQBEM)~z-=3T)QFA=|Atci0(D5fbUr_w#;OPyp-Bix$rZ3(3mKCFK@m-KQb$gkh^z5HOjRWEsr z=;MH3b)WTg zU%2x6J(c<5sMA2*8w~jI3RW^@D^EeAnWqnT0K(H0cP0gcah`5hbRKUChMLⅅ~XA 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 diff --git a/objects/input.o b/objects/input.o index b9a14eba89695dc291988953531de05dcabdb811..40266615cc160a9f0ba71b67565b3fd357d10c54 100644 GIT binary patch delta 245 zcmdnzw9APzrHzjP1T-dcDl<-)s9VnHH*u*yW75R0>WpHOWf}dM{zy*FV^m`lm^_uy zozZ9VT}Ew2*2$bq>a3w+3=A7Kn=(2EXarnD9X=DO)e>paVyQuPXpqTqRisSJ4BSZ^udbsfr>Wsh}to-n`$Z;0-d%w PP|Tj4(P#5S*|p37y+b)O delta 253 zcmdnxw9kn%rHzjP1au~HDl<-*s9Vk$G;ygvW7@>8>Wos8Wf}dM7^EiWF{&|&OrFZ< z&KNNHE~7Rh=VVSMb=F8R28J!0O_}zxFq`NZPX5ZK%L+0{VY52>D{gmJATtYyn}B!) z5bpxwD?rS|D9^;t`3=Zo{0Ab~7=dB}AVLyEC<6&*10ca-3nUm_H%AC3GETlDqGT8o zTAW%`9OIstn_3hTP?VpQnp{#G<5rrRp9aJwMVZA6&Q|(hMfzYxn>j@77}*Uq6%2vS U+w3c5&kl5cqqOMeMY1!P0VTydod5s; diff --git a/objects/parseinput.o b/objects/parseinput.o index 3353ca881a75d6a36813d73d35a117cde80d9ba8..08a24b446e9047177d348af1fcd1f75fe209f458 100644 GIT binary patch delta 175 zcmZ3Zv_gq9rHz*X1o$R$9%f9KcvhY9#>B7wj7F1P8PyrxCg(D`GipxW%Bam4KKUV| zI_q+728Ml`d6}*yIa`<=3o<6#aQTDi%@eqI7}-rV6%2ufZ(hvp%)+F}IMGpL J^B;Z#MgW0oCzJpH delta 179 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 diff --git a/objects/tetra.o b/objects/tetra.o index 871a9abce74023ccdaa3e5bf6075cd467c922361..9b3d35cec6fca727c739161139658d45ae3ab293 100644 GIT binary patch literal 9323 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 diff --git a/objects/vector.o b/objects/vector.o index 932cde819279b8192ae3d056fd388d5ab0ccfae4..a1bf4e5844a7b21c304c4405643c6359d2df6b2a 100644 GIT binary patch literal 4508 zcmcgwU2I%O6`r~G&hAaFf7Wr5+PKBniQA^dyXz#51)&Dwa88j~k3xElRdfxoqn7 z)O@a%YvOGOGi>TsYOY${uB}=3ZQ`v&4Gw_tU9*|RScVN|Qp-`^ASgG$8wlc~ig@Xv zXx}n8_mJO?@Dk(cgToPG72`c0kEmb|yu;+Fkx2Tzjk!@%$S_5UH*};y0{S!Zf500I zcvMMyM~+5#4y2EEL{y45JQ7jbi0?1k@kXKpoFmZ|v+MsH%x=7x$Zkw`Wv`y-%HICO%5L1gM^>{NCmv+izx9CC<2OkD#}F8a z>{T!~PyzlfL$+9e6NwOCoqmwrnCiNLfw1iQdxID52EJVBOIpdmit=*}6gQwWLV<@V z3JEpKw*MTV@jrlc4iS%J-zxS~*f2MJ02~)wTh*CF_Sl{J87=Tzau|{$?I5x{L931c zl+Q5I&-6%7D~22f4HXV37E~EK`&O1?65#tZd{PW|?q#;NwlEw}4xHNfm^3sm;rK^h zy>R#1wQJlqh5dEQ1TP-@UkmTL8~cYM(+dwwAgG3V!(j<1XiCx?gJ--R8>Lx7Hd>0Ua6C#$Sklsbr9M~m7$OPWsDSF|GlGcB{%!{Wb8hS2 zlE4k2{E}^}PVqC#>Ar~Qt@;SF+PXgn+Z=9QTHtPJkD-SMY@dnTx3W$*H=9{>J!ngHYa z%TleTp}$@Ar6tad+3`xH$l~Lm?NR|vdRQ1eaU#)DrlhVV@HamV1L|>gK&rn2h4S0jV0=^ditP)$?jZt?B?HGX zH8k5%Lt8>yKXaVt9TVHl5bRVZ+zMveqka52=a_S<)4=w$_L9a?3ap@3Nf40xz!<^u ziVZ#7C*IDSKAY^>DgKpivKW6(9P8_Ny8Be;m%BL{c69J3?M}z+?dk2{yW)w*uyQ-O zX*-VcMH~md+CtalsRedXwFX9IPz{r9Phq(2x=kE&p6*u85?YC2Q3rCF>H4OOq{HDP z;-}r7wI*4e(Z*&2yQ57F>x}Kebm|e%Y_b7lEDt1k#z{m)^AV+$0DnXl;C=%&=lt`w zR;sY<7&1VwbrQIMypH@+WP|q_?e_{q0Xg3dGYe_P#U+&?C?+$Fez1s4{4T)qNzXA-ZjWq zd@t|UQcDbX5{_#C@|UlaN|iE%fJn_gJStwXFb6O>F)`{Mc(G8Pd@1=7F18?&I?N@P zE7ihEvg$1jxO4SFvF6ULy5sP)RCCYe%JZ1L0oOnBOmJc12SwVAj9Yz+Grr=s#O45OilEOr5i#$+Mm9zr%HR){tmJsVB= z`cOK0<|#yTq*`fpT5B_BAoaO2XJ?2+iSMrVPjFK4fz#Bm4S zImFy8(LU@!)p}l|Uubk+qa>~d#XAe6`o>_PLs|((#O3U$2fvwgWM46huGx39g z6Erkc&EJ^#0k`KgeP5CXlMggmP_X&il6Hv62T`^>!lU`4L~F$4^kw-d=WWSQznjVF ztMbwGZlIzyu6)r5qv>`a(kGwE>1&eqMKpaFh&xf6T)s`C1V|qT8frDUy=^@A0uGJF zXmvjjn(!g3l%xsXz)iidL|AIxo2xI*7Rn2i z5a;IReD9K${9Jj_tA=6`w^xX92ZWH+vr_iyzk~j@wY9Km!OxXE7I_9Xy(7=d3y@x= M3eki4{}t2!0Nq!{!vFvP delta 2025 zcmZ8i|8G-O6hHU9-oD$uc70pN)>^Tz>>G>#>zuOjMY_$oR|TAbq65a9T~(5fkr4u{$jG=Ux0*|7^4A^8Qd?6UlNT-{Kfc%ACyEV!C(xY^IrQT+~mCbIp==P zx#ygF-+S{-w^s$nPX&R7zXqVG9E>xwyzX6Qm6zhR7gd0pC|3eD1N`NG8~HE;ct=KA z8~;-PG|K@N_g%;JRX%`jIlofm43EP{+6;zI}EFoiCD7(hBXVaLs{9s8kLCkxxK#wQ^G*a#LzqxOP6xHDt+CpVhOuJuXDJnJ}Fo8+UOJ2PTWE?b-|>;~a$7)4*cE4_CB z{A;M4;OoQ5Q)O`7KaIMVXucvoD!vd2iVslb`P?C>u|0Wq?C@CjU~w8kqzgV)D2z>m zK{Nvbf(g&~vI zPIWlR4Cac!Vj7X?C~2&5Cd{QB4-s>TMeolgw${xBVvkdMF%bwqg?(^B!VGKhR_{ua z8|(lDqhcCNCjdZwKlZj*bz@$;Clv?#mJw$2n1VNUe+u4pl@v6mNTEALzKZN-(B)pu zU$2Ty3AS19(bHiCFQ>{O9hR?YEeArNCqz1oz3PGoNFvNsq3fFxoE#Z)e68q)-=+0z zTa?J!X5N#iZHuPETcWhC*RmE7*420{Ud!qxmMLx!#j+kQ6?UzRuYXy?U+-fMN5 z{o$bXctt#L9Fd9Q0S~q;VWSa5t7KbXR*#~t!_)YT%1eQ0atPb0p~hg&MZdeK2d}8J zdZdbEEEt_}qO?*JJ6^ks*1M?NMO$6e=b}Lu(cA7sdCo<9T(r+cIYdq_52p~WMA7X+ z9pjU(jjotu%e%J2uI+8I$>rc^3!M(b2v{wSH&N&${c-2z9nz$JNR&6H#?6RRI1_L1h7Avma!w(IgE+$SuZ;%59M6jIZUdM&dt}hhv!l diff --git a/objects/win.o b/objects/win.o index f9b8c5653aa9bb4016ca1f3f2a282794b7a950f3..10298dbccb5502d8ab46098a63dbd96f7fb8bf4b 100644 GIT binary patch delta 2929 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 -usize min_usize(usize a, usize b) +usize min(usize a, usize b) { return a < b ? a : b; } +usize max(usize a, usize b) +{ + return a > b ? a : b; +} + nsec TimeNow() { struct timespec ts; diff --git a/source/fumoengine/fumocommon.h b/source/fumoengine/fumocommon.h index 132da2e..86dc12b 100644 --- a/source/fumoengine/fumocommon.h +++ b/source/fumoengine/fumocommon.h @@ -40,7 +40,8 @@ typedef int_fast64_t i64f; typedef u64 nsec; -size_t min_usize(usize a, usize b); +size_t min(usize a, usize b); +size_t max(usize a, usize b); nsec TimeNow(); double TimeNowD(); diff --git a/source/fumoengine/fumoengine.c b/source/fumoengine/fumoengine.c index 0ed53bd..d2e0863 100644 --- a/source/fumoengine/fumoengine.c +++ b/source/fumoengine/fumoengine.c @@ -2,16 +2,35 @@ #include "platform.h" -const VectorT FUMOCO_T = VECTOR_T(struct FumoCoroutine); - - void Panic(char *message) { printf(message); exit(1); } -bool CreateFumoInstance(struct FumoInstance *instance) +bool CoroutineAdd(struct Instance *inst, void *state, coroutine_handler callback) +{ + return VectorAdd(&inst->coroutines, &(struct Coroutine) { + .callback = callback, + .state = state, + .next_scheduled = inst->time + }); +} + +void CoroutineTryInvoke(struct Instance *inst, struct Coroutine *co) +{ + while (inst->time > co->next_scheduled) { + nsec wait = co->callback(inst, co->state); + if (wait == 0) { + co->next_scheduled = inst->time; + break; + } else { + co->next_scheduled += wait; + } + } +} + +bool CreateFumoInstance(struct Instance *instance) { if (!PlatformInit()) Panic("Platform failed to initialize"); @@ -22,27 +41,27 @@ bool CreateFumoInstance(struct FumoInstance *instance) if (!CreateInputThread(&instance->input_hand)) Panic("Input handle failed to initialize"); - if (!CreateTerminal(&instance->term, 20, 10)) - Panic("Out of memory"); - if (!CreateEvent(&instance->on_start)) Panic("Out of memory"); if (!CreateEvent(&instance->on_update)) Panic("Out of memory"); + if (!CreateEvent(&instance->on_draw)) + Panic("Out of memory"); + + if (!CreateVector(&instance->coroutines, sizeof(struct Coroutine))) + Panic("Out of memory"); + instance->time = TimeNow(); return true; } -bool FumoInstanceRun(struct FumoInstance *inst) +bool FumoInstanceRun(struct Instance *inst) { EventInvoke(&inst->on_start, inst); - usize buf_n = TerminalMaxOut(&inst->term); - char *buf = malloc(buf_n); - while (true) { // Time nsec now = TimeNow(); @@ -57,28 +76,17 @@ bool FumoInstanceRun(struct FumoInstance *inst) if (!InputRelease(&inst->input_hand)) Panic("Release failed"); - + // Update EventInvoke(&inst->on_update, inst); + for (usize i = 0; i < inst->coroutines.len; i++) { - struct FumoCoroutine *co = VectorGet(FUMOCO_T, &inst->coroutines, i); - co->callback(); + CoroutineTryInvoke(inst, VectorGet(&inst->coroutines, i)); } // Draw EventInvoke(&inst->on_draw, inst); - TerminalPrint(&inst->term, buf, buf_n); - puts(buf); //_sleep(100); } -} - -bool CoroutineAdd(struct FumoInstance *inst, handler callback, nsec period) -{ - return VectorAdd(FUMOCO_T, &inst->coroutines, &(struct FumoCoroutine) { - .callback = callback, - .timer = 0, - .period = period - }); } \ No newline at end of file diff --git a/source/fumoengine/fumoengine.h b/source/fumoengine/fumoengine.h index 0b277ae..4e5f0ba 100644 --- a/source/fumoengine/fumoengine.h +++ b/source/fumoengine/fumoengine.h @@ -3,20 +3,21 @@ #include "event.h" #include "fumocommon.h" #include "input.h" -#include "terminal.h" #include "vector.h" -struct FumoCoroutine { - handler callback; - nsec timer; - nsec period; +typedef nsec (*coroutine_handler)(void *state, void *instance); + + +struct Coroutine { + coroutine_handler callback; + void *state; + nsec next_scheduled; }; -struct FumoInstance { +struct Instance { struct Controller ctrl; struct InputHandle input_hand; - struct Terminal term; struct Event on_start; struct Event on_update; @@ -31,6 +32,10 @@ struct FumoInstance { void Panic(char *message); -bool CreateFumoInstance(struct FumoInstance *game); +bool CoroutineAdd(struct Instance *inst, void *state, coroutine_handler callback); -bool FumoInstanceRun(struct FumoInstance *game); \ No newline at end of file +void CoroutineTryInvoke(struct Instance *inst, struct Coroutine *co); + +bool CreateFumoInstance(struct Instance *game); + +bool FumoInstanceRun(struct Instance *game); \ No newline at end of file diff --git a/source/fumoengine/include/dictionary.c b/source/fumoengine/include/dictionary.c index 2e69e08..f4ab940 100644 --- a/source/fumoengine/include/dictionary.c +++ b/source/fumoengine/include/dictionary.c @@ -1,21 +1,24 @@ #include "dictionary.h" +#include #include #include #include -bool CreateDictionary(DictT T, struct Dictionary *dict) +bool CreateDictionary(struct Dictionary *dict, usize value_size) { - void *bkts = calloc(16, T->BKT_SIZE); + void *bkts = calloc(16, value_size); if (bkts == nullptr) return false; - *dict = (struct Dictionary) { - .filled = 0, - .capacity = 16, - .bkts = bkts - }; + dict->value_size = value_size; + dict->value_offset = max(alignof(u32), alignof(u8[dict->value_size])); + dict->bkt_size = dict->value_offset + value_size; + + dict->filled = 0; + dict->capacity = 16; + dict->bkts = bkts; return true; } @@ -25,45 +28,45 @@ void FreeDictionary(struct Dictionary *dict) free(dict->bkts); } -void *index_bkt(DictT T, struct Dictionary *dict, usize i) +void *index_bkt(struct Dictionary *dict, usize i) { - return (u8 *)dict->bkts + i * T->BKT_SIZE; + return (u8 *)dict->bkts + i * dict->bkt_size; } -u32 *get_key(DictT T, void *bkt) +u32 *get_key(struct Dictionary *dict, void *bkt) { return (u32 *)bkt; } -void *get_val(DictT T, void *bkt) +void *get_value_ptr(struct Dictionary *dict, void *bkt) { - return (u8 *)bkt + T->VAL_OFS; + return (u8 *)bkt + dict->value_offset; } -void set_bkt(DictT T, void *bkt, u32 key, void *val) +void set_bkt(struct Dictionary *dict, void *bkt, u32 key, void *value_ptr) { - *get_key(T, bkt) = key; - memcpy(get_val(T, bkt), val, T->VAL_SIZE); + *get_key(dict, bkt) = key; + memcpy(get_value_ptr(dict, bkt), value_ptr, dict->value_size); } -void *probe_bkt(DictT T, struct Dictionary *dict, usize index, u32 key) +void *probe_bkt(struct Dictionary *dict, usize index, u32 key) { for (usize i = 0; i < dict->capacity; i++) { - void *bkt = index_bkt(T, dict, (index + i) % dict->capacity); + void *bkt = index_bkt(dict, (index + i) % dict->capacity); - if (*get_key(T, bkt) == key) + if (*get_key(dict, bkt) == key) return bkt; } return nullptr; } -void *probe_empty_bkt(DictT T, struct Dictionary *dict, usize index, u32 key) +void *probe_empty_bkt(struct Dictionary *dict, usize index, u32 key) { for (usize i = 0; i < dict->capacity; i++) { - void *bkt = index_bkt(T, dict, (index + i) % dict->capacity); + void *bkt = index_bkt(dict, (index + i) % dict->capacity); - u32 k = *get_key(T, bkt); + u32 k = *get_key(dict, bkt); if (k == 0 or k == key) return bkt; } @@ -71,25 +74,25 @@ void *probe_empty_bkt(DictT T, struct Dictionary *dict, usize index, u32 key) return nullptr; } -void *DictionaryFind(DictT T, struct Dictionary *dict, u32 key) +void *DictionaryFind(struct Dictionary *dict, u32 key) { usize index = key % dict->capacity; - void *bkt = probe_bkt(T, dict, index, key); + void *bkt = probe_bkt(dict, index, key); if (bkt == nullptr) return false; - return get_val(T, bkt); + return get_value_ptr(dict, bkt); } -void *DictionarySet(DictT T, struct Dictionary *dict, u32 key, void *val) +void *DictionarySet(struct Dictionary *dict, u32 key, void *value_ptr) { usize index = key % dict->capacity; - void *bkt = probe_empty_bkt(T, dict, index, key); + void *bkt = probe_empty_bkt(dict, index, key); - if (*get_key(T, bkt) == 0) - set_bkt(T, bkt, key, val); + if (*get_key(dict, bkt) == 0) + set_bkt(dict, bkt, key, value_ptr); return bkt; } \ No newline at end of file diff --git a/source/fumoengine/include/dictionary.h b/source/fumoengine/include/dictionary.h index d2e547d..1c12cb2 100644 --- a/source/fumoengine/include/dictionary.h +++ b/source/fumoengine/include/dictionary.h @@ -1,31 +1,21 @@ #pragma once #include "fumocommon.h" -#define DICT_T(DICT_VAL_T) \ - (&(struct DictT) { \ - .VAL_SIZE = sizeof(DICT_VAL_T), \ - .VAL_OFS = offsetof(struct { u32 k; DICT_VAL_T v; }, v), \ - .BKT_SIZE = sizeof(struct { u32 k; DICT_VAL_T v; }) \ - }) \ - - -typedef const struct DictT { - usize VAL_SIZE; - usize VAL_OFS; - usize BKT_SIZE; -} *const DictT; struct Dictionary { + usize value_size; + usize value_offset; + usize bkt_size; + usize filled; usize capacity; void *bkts; }; - -bool CreateDictionary(DictT T, struct Dictionary *dict); +bool CreateDictionary(struct Dictionary *dict, usize value_size); void FreeDictionary(struct Dictionary *dict); -void *DictionaryFind(DictT T, struct Dictionary *dict, u32 key); +void *DictionaryFind(struct Dictionary *dict, u32 key); -void *DictionarySet(DictT T, struct Dictionary *dict, u32 key, void *val); \ No newline at end of file +void *DictionarySet(struct Dictionary *dict, u32 key, void *value_ptr); \ No newline at end of file diff --git a/source/fumoengine/include/event.c b/source/fumoengine/include/event.c index 8814345..f28b710 100644 --- a/source/fumoengine/include/event.c +++ b/source/fumoengine/include/event.c @@ -22,7 +22,7 @@ void FreeEvent(struct Event *event) free(event->methods); } -bool EventAdd(struct Event *event, handler callback, void *instance) +bool EventAdd(struct Event *event, void *instance, handler callback) { if (event->len == event->capacity) { usize new_size = event->capacity * 2 * sizeof(struct Method); diff --git a/source/fumoengine/include/event.h b/source/fumoengine/include/event.h index bb25b41..637ca77 100644 --- a/source/fumoengine/include/event.h +++ b/source/fumoengine/include/event.h @@ -21,6 +21,6 @@ struct Event { bool CreateEvent(struct Event *event); -bool EventAdd(struct Event *event, handler callback, void *instance); +bool EventAdd(struct Event *event, void *instance, handler callback); void EventInvoke(struct Event *event, void *state); \ No newline at end of file diff --git a/source/fumoengine/include/ringbuffer.c b/source/fumoengine/include/ringbuffer.c index 6e6c16a..751699f 100644 --- a/source/fumoengine/include/ringbuffer.c +++ b/source/fumoengine/include/ringbuffer.c @@ -37,7 +37,7 @@ void RingBufferTransfer( struct RingBufferHead *dest, struct RingBufferHead *tmp ) { - usize copy_max = min_usize(T->LEN - dest->len, tmp->len); + usize copy_max = min(T->LEN - dest->len, tmp->len); for (usize i = 0; i < copy_max; i++) { void *to = RingBufferGet(T, dest, dest->len + i); @@ -55,7 +55,7 @@ usize RingBufferOut( void *dest, struct RingBufferHead *src ) { - usize copy_max = min_usize(n, src->len); + usize copy_max = min(n, src->len); for (usize i = 0; i < copy_max; i++) { void *to = (u8 *)dest + i * T->SIZE; diff --git a/source/fumoengine/include/vector.c b/source/fumoengine/include/vector.c index 19e1db7..fb766f7 100644 --- a/source/fumoengine/include/vector.c +++ b/source/fumoengine/include/vector.c @@ -3,13 +3,15 @@ #include -bool CreateVector(VectorT T, struct Vector *vec) +bool CreateVector(struct Vector *vec, usize value_size) { - void *array = malloc(16 * T->SIZE); + void *array = malloc(16 * value_size); if (array == nullptr) return false; + vec->value_size = value_size; + vec->len = 0; vec->capacity = 16; vec->array = array; @@ -22,16 +24,16 @@ void FreeVector(struct Vector *vec) free(vec->array); } -void *VectorGet(VectorT T, struct Vector *vec, usize i) +void *VectorGet(struct Vector *vec, usize i) { - return (u8 *)vec->array + i * T->SIZE; + return (u8 *)vec->array + i * vec->value_size; } -bool VectorAdd(VectorT T, struct Vector *vec, void *item) +bool VectorAdd(struct Vector *vec, void *item) { if (vec->len == vec->capacity) { usize new_capacity = vec->capacity * 2; - void *new_array = realloc(vec->array, new_capacity * T->SIZE); + void *new_array = realloc(vec->array, new_capacity * vec->value_size); if (new_array == nullptr) return false; @@ -39,7 +41,7 @@ bool VectorAdd(VectorT T, struct Vector *vec, void *item) vec->capacity = new_capacity; } - memcpy(VectorGet(T, vec, vec->len++), item, T->SIZE); + memcpy(VectorGet(vec, vec->len++), item, vec->value_size); return true; } \ No newline at end of file diff --git a/source/fumoengine/include/vector.h b/source/fumoengine/include/vector.h index 8610531..2f7c5fd 100644 --- a/source/fumoengine/include/vector.h +++ b/source/fumoengine/include/vector.h @@ -1,26 +1,19 @@ #include "fumocommon.h" -#define VECTOR_T(VEC_ITEM_T) \ - (&(struct VectorT) { \ - .SIZE = sizeof(VEC_ITEM_T) \ - }) \ - - -typedef const struct VectorT { - usize SIZE; -} *const VectorT; struct Vector { + usize value_size; + usize len; usize capacity; void *array; }; -bool CreateVector(VectorT T, struct Vector *vec); +bool CreateVector(struct Vector *vec, usize value_size); void FreeVector(struct Vector *vec); -void *VectorGet(VectorT T, struct Vector *vec, usize i); +void *VectorGet(struct Vector *vec, usize i); -bool VectorAdd(VectorT T, struct Vector *vec, void *item); \ No newline at end of file +bool VectorAdd(struct Vector *vec, void *item); \ No newline at end of file diff --git a/source/fumoengine/input/ctrl.c b/source/fumoengine/input/ctrl.c index fba729f..5b19a80 100644 --- a/source/fumoengine/input/ctrl.c +++ b/source/fumoengine/input/ctrl.c @@ -4,16 +4,13 @@ #define INIT_SIZE 16 -DictT BIND_T = DICT_T(struct InputAxis *); - - bool CreateController(struct Controller *ctrl) { struct InputAxis *axes = calloc(16, sizeof(struct InputAxis)); if (axes == nullptr) return false; - if (!CreateDictionary(BIND_T, &ctrl->binds)) + if (!CreateDictionary(&ctrl->binds, sizeof(struct InputAxis*))) return false; ctrl->pending_len = 0; @@ -39,7 +36,7 @@ bool ControllerBind(struct Controller *ctrl, u16 control, u16 code, u16 type) u32 hash = hash_bind(code, type); struct InputAxis *axis = &ctrl->axes[control]; - struct InputAxis **bind = DictionarySet(BIND_T, &ctrl->binds, hash, &axis); + struct InputAxis **bind = DictionarySet(&ctrl->binds, hash, &axis); if (bind == nullptr) return false; @@ -92,7 +89,7 @@ void ControllerPoll(struct Controller *ctrl, struct RecordBuffer *recs) struct InputRecord *rec = recs->buf + i; u32 hash = hash_bind(rec->code, rec->type); - struct InputAxis **axis = DictionaryFind(BIND_T, &ctrl->binds, hash); + struct InputAxis **axis = DictionaryFind(&ctrl->binds, hash); if (axis == nullptr) continue; @@ -102,44 +99,4 @@ void ControllerPoll(struct Controller *ctrl, struct RecordBuffer *recs) } recs->head.len = 0; -} - -/*int main() -{ - struct Controller ctrl; - if (!CreateController(&ctrl)) - return 1; - - ControllerMap(&ctrl, 123, 111, BUTTON); - ControllerMap(&ctrl, 0, 8, BUTTON); - - struct RecordBuffer recs = { .head.len = 0, .head.start = 0 }; - - recs.buf[recs.head.len++] = (struct InputRecord) { - .but.value = 69, - - .is_down = true, - - .id.bind = 111, - .id.type = BUTTON - }; - recs.buf[recs.head.len++] = (struct InputRecord) { - .but.value = 1000, - - .is_down = true, - - .id.bind = 8, - .id.type = BUTTON - }; - - ControllerPoll(&ctrl, &recs); - - struct InputAxis *a = ControllerGet(&ctrl, 123, BUTTON); - printf("%u\n", a->but.value); - - struct InputAxis *b = ControllerGet(&ctrl, 0, BUTTON); - printf("%u\n", b->but.value); - - printf("success"); - return 0; -}*/ \ No newline at end of file +} \ No newline at end of file diff --git a/source/fumoengine/terminal/terminal.c b/source/fumoengine/terminal/terminal.c index 3ae0e8b..7967f02 100644 --- a/source/fumoengine/terminal/terminal.c +++ b/source/fumoengine/terminal/terminal.c @@ -5,26 +5,30 @@ #define MAX_CH4_LEN 11 -usize TerminalMaxOut(struct Terminal *term) +usize TerminalMaxOut(usize wid, usize hgt) { return RESET_STR_LEN - + MAX_CH4_LEN * term->wid * term->hgt - + term->hgt + + MAX_CH4_LEN * wid * hgt + + hgt + 1; } bool CreateTerminal(struct Terminal *term, usize wid, usize hgt) { struct Char4 *ch4s = calloc(wid * hgt, sizeof(struct Char4)); - if (ch4s == nullptr) return false; - *term = (struct Terminal) { - .wid = wid, - .hgt = hgt, + char *str = malloc(TerminalMaxOut(wid, hgt)); + if (str == nullptr) + return false; - .buf = ch4s + *term = (struct Terminal) { + .buf = ch4s, + .str = str, + + .wid = wid, + .hgt = hgt }; return true; @@ -107,12 +111,12 @@ usize ch4_dif_to_str(char *out, struct Color4 *dif, struct Char4 *ch4) return len; } -usize TerminalPrint(struct Terminal *term, char *out, usize n) +usize TerminalPrint(struct Terminal *term) { struct Color4 dif = { 0, 0 }; usize len = 7; - memcpy(out, "\x1b[H\x1b[0m", 7); + memcpy(term->str, "\x1b[H\x1b[0m", 7); usize i = 0; for (usize y = 0; y < term->hgt; y++) { @@ -124,11 +128,11 @@ usize TerminalPrint(struct Terminal *term, char *out, usize n) ch4->ch = '#'; // DEBUG - len += ch4_dif_to_str(out + len, &dif, ch4); + len += ch4_dif_to_str(term->str + len, &dif, ch4); } - out[len++] = '\n'; + term->str[len++] = '\n'; } - out[len] = 0; + term->str[len] = 0; return len; } \ No newline at end of file diff --git a/source/fumoengine/terminal/terminal.h b/source/fumoengine/terminal/terminal.h index c3af9a0..c965bf5 100644 --- a/source/fumoengine/terminal/terminal.h +++ b/source/fumoengine/terminal/terminal.h @@ -1,10 +1,6 @@ #pragma once -#include -#include -#include #include #include - #include "fumocommon.h" @@ -19,16 +15,18 @@ struct Char4 { }; struct Terminal { + struct Char4 *buf; + char *str; + usize wid; usize hgt; - struct Char4 *buf; }; -usize TerminalMaxOut(struct Terminal *term); +usize TerminalMaxOut(usize wid, usize hgt); bool CreateTerminal(struct Terminal *term, usize wid, usize hgt); void FreeTerminal(struct Terminal *term); -usize TerminalPrint(struct Terminal *term, char *out, usize n); \ No newline at end of file +usize TerminalPrint(struct Terminal *term); \ No newline at end of file diff --git a/source/fumotris/fumotris.c b/source/fumotris/fumotris.c index 498641e..290c557 100644 --- a/source/fumotris/fumotris.c +++ b/source/fumotris/fumotris.c @@ -3,99 +3,143 @@ struct Fumotris { + struct Terminal term; + + struct TetraTemplate *bag[7]; + usize bag_i; + struct Tetra board; struct Tetra piece; bool is_ground; + + nsec last_moved; + nsec last_dropped; }; - -struct TetraTemplate *bag[7] = { &I, &O, &T, &S, &Z, &J, &L }; -usize bag_i = 0; - - -void shuffle() +void shuffle(struct Fumotris *fumo) { - for (usize i = 6; i >= 0; i--) { + for (usize i = 6; i > 0; i--) { usize swap = rand() % i; - struct TetraTemplate *tmp = bag[swap]; - bag[swap] = bag[i]; - bag[i] = tmp; + struct TetraTemplate *tmp = fumo->bag[swap]; + fumo->bag[swap] = fumo->bag[i]; + fumo->bag[i] = tmp; } } -void place_piece(struct Fumotris *fumo) +void check_clear() +{ + +} + +void place(struct Fumotris *fumo) { TetraOverlay(&fumo->piece, &fumo->board); - SetTetra(&fumo->piece, bag[bag_i++], 0, 0); - if (bag_i == 7) { - shuffle(); - bag_i = 0; + usize lines_cleared = fumo->piece.hgt; + + for (usize y = fumo->piece.y; y < fumo->piece.y + fumo->piece.hgt; y++) { + for (usize x = 0; x < fumo->board.wid; x++) { + if (fumo->board.blks[fumo->board.wid * y + x] == 0) { + lines_cleared -= 1; + break; + } + } } + + TetraSet(&fumo->piece, fumo->bag[fumo->bag_i++]); + + if (fumo->bag_i == 7) { + shuffle(fumo); + fumo->bag_i = 0; + } + } i16 get_horizontal(struct Controller *ctrl) { - return (-(i16)ctrl->axes[LEFT].is_down) + ctrl->axes[RIGHT].is_down; + return (-(i16)ctrl->axes[LEFT].is_held) + ctrl->axes[RIGHT].is_held; } -void FumotrisStart(struct FumoInstance *inst, struct Fumotris *fumo) +void FumotrisStart(struct Instance *inst, struct Fumotris *fumo) { - ControllerBindMulti(&inst->ctrl, BINDS_N, controls_g, codes_g, types_g); - CreateTetra(&fumo->board, 10, 10); + ControllerBindMulti(&inst->ctrl, BINDS_N, CONTROLS, CODES, TYPES); + CreateTerminal(&fumo->term, 20, 20); + for (usize i = 0; i < 7; i++) + fumo->bag[i] = templates[i]; + fumo->bag_i = 1; + + CreateTetra(&fumo->board, 10, 20); + TetraSet(&fumo->piece, fumo->bag[0]); fumo->is_ground = false; - - SetTetra(&fumo->piece, bag[bag_i++], 0, 0); + fumo->last_moved = 0; + fumo->last_dropped = 0; } -void FumotrisUpdate(struct FumoInstance *inst, struct Fumotris *fumo) +void FumotrisUpdate(struct Instance *inst, struct Fumotris *fumo) { - TetraMove(&fumo->piece, &fumo->board, get_horizontal(&inst->ctrl), 0); + i16 horizontal = get_horizontal(&inst->ctrl); - if (inst->ctrl.axes[SOFT_DROP].is_down) { + if (horizontal != 0 and fumo->last_moved < inst->time) { + fumo->last_moved = inst->time + 5e7; + TetraMove(&fumo->piece, &fumo->board, horizontal, 0); + } + + if (inst->ctrl.axes[ROTATE_CCW].is_down) + TetraRotate(&fumo->piece, &fumo->board, 1); + + if (inst->ctrl.axes[ROTATE_CW].is_down) + TetraRotate(&fumo->piece, &fumo->board, -1); + + if (inst->ctrl.axes[SOFT_DROP].is_held and fumo->last_dropped < inst->time) { + fumo->last_dropped = inst->time + 5e7; TetraMove(&fumo->piece, &fumo->board, 0, 1); } if (inst->ctrl.axes[HARD_DROP].is_down) { while (TetraMove(&fumo->piece, &fumo->board, 0, 1)); - place_piece(fumo); + place(fumo); } } -void FumotrisOnFall(struct FumoInstance *inst, struct Fumotris *fumo) +nsec FumotrisFall(struct Instance *inst, struct Fumotris *fumo) { if (!TetraMove(&fumo->piece, &fumo->board, 0, 1)) { if (!fumo->is_ground) fumo->is_ground = true; else - place_piece(fumo); + place(fumo); } + + return 5e8; } -void FumotrisDraw(struct FumoInstance *inst, struct Fumotris *fumo) +void FumotrisDraw(struct Instance *inst, struct Fumotris *fumo) { - TetraTerminalClear(&fumo->board, &inst->term); - TetraTerminalDraw(&fumo->board, &inst->term); - TetraTerminalDraw(&fumo->piece, &inst->term); + TetraTerminalClear(&fumo->board, &fumo->term); + TetraTerminalDraw(&fumo->board, &fumo->term); + TetraTerminalDraw(&fumo->piece, &fumo->term); + + TerminalPrint(&fumo->term); + puts(fumo->term.str); } int main() { - struct FumoInstance inst; + struct Instance inst; CreateFumoInstance(&inst); struct Fumotris game; - EventAdd(&inst.on_start, FumotrisStart, &game); - EventAdd(&inst.on_update, FumotrisUpdate, &game); - EventAdd(&inst.on_draw, FumotrisDraw, &game); + EventAdd(&inst.on_start, &game, FumotrisStart); + EventAdd(&inst.on_update, &game, FumotrisUpdate); + EventAdd(&inst.on_draw, &game, FumotrisDraw); - VectorAdd(FUMOCO_T, &inst.coroutines, ); + CoroutineAdd(&inst, &game, FumotrisFall); FumoInstanceRun(&inst); diff --git a/source/fumotris/fumotris.h b/source/fumotris/fumotris.h index 3aa2b06..8d8db95 100644 --- a/source/fumotris/fumotris.h +++ b/source/fumotris/fumotris.h @@ -1,5 +1,6 @@ #include "fumocommon.h" #include "fumoengine.h" +#include "terminal.h" #include "tetra.h" #define BINDS_N 12 @@ -23,7 +24,7 @@ enum FumotrisControls { }; -u16 controls_g[BINDS_N] = { +u16 CONTROLS[BINDS_N] = { LEFT, RIGHT, SOFT_DROP, @@ -40,7 +41,7 @@ u16 controls_g[BINDS_N] = { MOUSE, }; -u16 codes_g[BINDS_N] = { +u16 CODES[BINDS_N] = { 0x25, 0x27, 0x28, @@ -57,7 +58,7 @@ u16 codes_g[BINDS_N] = { 0 }; -u16 types_g[BINDS_N] = { +u16 TYPES[BINDS_N] = { BUTTON, BUTTON, BUTTON, @@ -75,7 +76,7 @@ u16 types_g[BINDS_N] = { }; struct TetraTemplate I = { - .blks = &(u8) { + .blks = (u8[16]) { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, @@ -86,18 +87,18 @@ struct TetraTemplate I = { }; struct TetraTemplate O = { - .blks = &(u8) { - 1, 1, - 1, 1 + .blks = (u8[4]) { + 2, 2, + 2, 2 }, .wid = 2, .hgt = 2 }; struct TetraTemplate T = { - .blks = &(u8) { - 0, 1, 0, - 1, 1, 1, + .blks = (u8[9]) { + 0, 3, 0, + 3, 3, 3, 0, 0, 0 }, .wid = 3, @@ -105,9 +106,9 @@ struct TetraTemplate T = { }; struct TetraTemplate S = { - .blks = &(u8) { - 0, 1, 1, - 1, 1, 0, + .blks = (u8[9]) { + 0, 4, 4, + 4, 4, 0, 0, 0, 0 }, .wid = 3, @@ -115,9 +116,9 @@ struct TetraTemplate S = { }; struct TetraTemplate Z = { - .blks = &(u8) { - 1, 1, 0, - 0, 1, 1, + .blks = (u8[9]) { + 5, 5, 0, + 0, 5, 5, 0, 0, 0 }, .wid = 3, @@ -125,9 +126,9 @@ struct TetraTemplate Z = { }; struct TetraTemplate J = { - .blks = &(u8) { - 1, 0, 0, - 1, 1, 1, + .blks = (u8[9]) { + 6, 0, 0, + 6, 6, 6, 0, 0, 0 }, .wid = 3, @@ -135,11 +136,13 @@ struct TetraTemplate J = { }; struct TetraTemplate L = { - .blks = &(u8) { - 0, 0, 1, - 1, 1, 1, + .blks = (u8[9]) { + 0, 0, 7, + 7, 7, 7, 0, 0, 0 }, .wid = 3, .hgt = 3 -}; \ No newline at end of file +}; + +struct TetraTemplate *templates[7] = { &I, &O, &T, &S, &Z, &J, &L }; \ No newline at end of file diff --git a/source/fumotris/tetra.c b/source/fumotris/tetra.c index 890cf1f..c0a7f57 100644 --- a/source/fumotris/tetra.c +++ b/source/fumotris/tetra.c @@ -1,20 +1,24 @@ #include "tetra.h" -bool CreateTetra(struct Tetra *map, u16 wid, u16 hgt) +bool CreateTetra(struct Tetra *tetra, u16 wid, u16 hgt) { u8 *blks = calloc(wid * hgt, sizeof(u8)); if (blks == nullptr) return false; - map->blks = blks; - map->wid = wid; - map->hgt = hgt; + *tetra = (struct Tetra) { + .blks = blks, - map->x = 0; - map->y = 0; - map->rot = 0; + .wid = wid, + .hgt = hgt, + + .x = 0, + .y = 0, + + .rot = 0 + }; return true; } @@ -24,37 +28,45 @@ void FreeTetra(struct Tetra *tetra) free(tetra->blks); } -void SetTetra(struct Tetra *map, struct TetraTemplate *t, i16 x, i16 y) +void TetraSet(struct Tetra *tetra, struct TetraTemplate *template) { - map->blks = t->blks; - map->wid = t->wid; - map->hgt = t->hgt; + tetra->blks = template->blks; + tetra->wid = template->wid; + tetra->hgt = template->hgt; + + tetra->x = 0; + tetra->y = 0; + tetra->rot = 0; +} + +usize rotate_index(usize i, usize wid, u8 rot) +{ + if(rot == 0) + return i; + + usize row = i / wid; + usize col = i % wid; - map->x = x; - map->y = y; - map->rot = 0; + switch (rot) { + case 1: + return (wid - col - 1) * wid + row; + case 2: + return (wid - row - 1) * wid + (wid - col - 1); + case 3: + return col * wid + (wid - row - 1); + } + + return 0; } -bool TetraMove(struct Tetra *piece, struct Tetra *board, i16 dx, i16 dy) +bool TetraIsCollision(struct Tetra *t, struct Tetra *board) { - if (TetraIsCollision(piece, board, dx, dy)) - return false; - - piece->x += dx; - piece->y += dy; - - return true; -} - -bool TetraIsCollision(struct Tetra *piece, struct Tetra *board, i16 dx, i16 dy) -{ - i16 x_start = piece->x + dx; - i16 y_start = piece->y + dy; - usize i = 0; - for (i16 y = y_start; y < y_start + piece->hgt; y++) { - for (i16 x = x_start; x < x_start + piece->wid; x++, i++) { - if(piece->blks[i] == 0) + for (i16 y = t->y; y < t->y + t->hgt; y++) { + for (i16 x = t->x; x < t->x + t->wid; x++, i++) { + usize rot_i = rotate_index(i, t->wid, t->rot); + + if(t->blks[rot_i] == 0) continue; if(x < 0 or x >= board->wid or y < 0 or y >= board->hgt) @@ -68,6 +80,53 @@ bool TetraIsCollision(struct Tetra *piece, struct Tetra *board, i16 dx, i16 dy) return false; } +bool TetraMove(struct Tetra *t, struct Tetra *board, i16 dx, i16 dy) +{ + t->x += dx; + t->y += dy; + + if (TetraIsCollision(t, board)) { + t->x -= dx; + t->y -= dy; + + return false; + } + + return true; +} + +bool TetraRotate(struct Tetra *t, struct Tetra *board, i8 dr) +{ + u8 rot = t->rot; + t->rot = (t->rot + 4 + dr) % 4; + + if (TetraIsCollision(t, board)) { + t->rot = rot; + + return false; + } + + return true; +} + +void TetraOverlay(struct Tetra *t, struct Tetra *board) +{ + usize i = 0; + for (i16 y = t->y; y < t->y + t->hgt; y++) { + for (i16 x = t->x; x < t->x + t->wid; x++, i++) { + usize rot_i = rotate_index(i, t->wid, t->rot); + + if(t->blks[rot_i] == 0) + continue; + + if(x < 0 or x >= board->wid or y < 0 or y >= board->hgt) + continue; + + board->blks[board->wid * y + x] = t->blks[rot_i]; + } + } +} + void TetraTerminalClear(struct Tetra *board, struct Terminal *term) { for (usize i = 0; i < board->wid * board->hgt; i++) { @@ -78,38 +137,24 @@ void TetraTerminalClear(struct Tetra *board, struct Terminal *term) } } -void TetraTerminalDraw(struct Tetra *tetra, struct Terminal *term) +void TetraTerminalDraw(struct Tetra *t, struct Terminal *term) { static const u8f blk_colors[8] = { 8, 14, 11, 13, 10, 9, 12, 3 }; usize i = 0; - for (usize y = 0; y < tetra->hgt; y++) { - for (usize x = 0; x < tetra->wid; x++, i++) { - if (tetra->blks[i] == 0) + for (usize y = 0; y < t->hgt; y++) { + for (usize x = 0; x < t->wid; x++, i++) { + usize rot_i = rotate_index(i, t->wid, t->rot); + + if (t->blks[rot_i] == 0) continue; - usize term_i = (y + tetra->y) * term->wid + (x + tetra->x) * 2; + usize term_i = (y + t->y) * term->wid + (x + t->x) * 2; struct Char4 *block = term->buf + term_i; - u8 fg = blk_colors[tetra->blks[i]]; + u8 fg = blk_colors[t->blks[rot_i]]; block[0] = (struct Char4) { .ch = '[', .color.fg = fg }; block[1] = (struct Char4) { .ch = ']', .color.fg = fg }; } } -} - -void TetraOverlay(struct Tetra *piece, struct Tetra *board) -{ - usize i = 0; - for (usize y = piece->y; y < piece->y + piece->hgt; y++) { - for (usize x = piece->x; x < piece->x + piece->wid; x++, i++) { - if(piece->blks[i] == 0) - continue; - - if(x < 0 or x >= board->wid or y < 0 or y >= board->hgt) - continue; - - board->blks[board->wid * y + x] = piece->blks[i]; - } - } } \ No newline at end of file diff --git a/source/fumotris/tetra.h b/source/fumotris/tetra.h index f0838cc..1f6541c 100644 --- a/source/fumotris/tetra.h +++ b/source/fumotris/tetra.h @@ -4,38 +4,38 @@ #include "terminal.h" -struct Tetra { +struct TetraTemplate { u8 *blks; + usize wid; + usize hgt; +}; + +struct Tetra { + u8 *blks; + u16 wid; u16 hgt; i16 x; i16 y; - - u8f rot; + u8 rot; }; -struct TetraTemplate { - u8 *blks; - - u16 wid; - u16 hgt; -}; +bool CreateTetra(struct Tetra *tetra, u16 wid, u16 hgt); +void FreeTetra(struct Tetra *tetra); -bool CreateTetra(struct Tetra *map, u16 wid, u16 hgt); +void TetraSet(struct Tetra *tetra, struct TetraTemplate *template); -void FreeTetra(struct Tetra *map); +bool TetraIsCollision(struct Tetra *t, struct Tetra *board); -void SetTetra(struct Tetra *map, struct TetraTemplate *t, i16 x, i16 y); +bool TetraMove(struct Tetra *t, struct Tetra *board, i16 dx, i16 dy); + +bool TetraRotate(struct Tetra *t, struct Tetra *board, i8 dr); + +void TetraOverlay(struct Tetra *t, struct Tetra *board); void TetraTerminalClear(struct Tetra *board, struct Terminal *term); -void TetraTerminalDraw(struct Tetra *map, struct Terminal *term); - -bool TetraMove(struct Tetra *piece, struct Tetra *board, i16 dx, i16 dy); - -bool TetraIsCollision(struct Tetra *piece, struct Tetra *board, i16 dx, i16 dy); - -void TetraOverlay(struct Tetra *piece, struct Tetra *board); \ No newline at end of file +void TetraTerminalDraw(struct Tetra *t, struct Terminal *term); \ No newline at end of file