From 1a84049b1e4b6f242888f663ce6d0f63bb34992b Mon Sep 17 00:00:00 2001 From: Julia <145168563+julia-aph@users.noreply.github.com> Date: Thu, 16 May 2024 01:08:15 -0500 Subject: [PATCH] d d --- .vscode/settings.json | 3 ++- build/errors.txt | 2 +- build/hdr_checksums.txt | 2 +- build/src_checksums.txt | 2 +- debug.exe | Bin 149855 -> 149855 bytes objects/ctrl.o | Bin 7526 -> 7530 bytes objects/dictionary.o | Bin 7089 -> 7093 bytes objects/event.o | Bin 4602 -> 4606 bytes objects/fumocommon.o | Bin 4750 -> 4754 bytes objects/fumoengine.o | Bin 8746 -> 8750 bytes objects/input.o | Bin 8506 -> 8510 bytes objects/parseinput.o | Bin 4392 -> 4396 bytes objects/ringbuffer.o | Bin 5952 -> 5956 bytes objects/terminal.o | Bin 7113 -> 7117 bytes objects/tetra.o | Bin 9323 -> 9327 bytes objects/vector.o | Bin 4508 -> 4512 bytes objects/win.o | Bin 14748 -> 14792 bytes source/fumo.txt | 14 ++++++++++++++ source/fumotris/fumotris.c | 29 ++++++++++++++++++++++++++--- source/fumotris/tetra.c | 4 ++-- 20 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 source/fumo.txt diff --git a/.vscode/settings.json b/.vscode/settings.json index 3aef1c1..e0e964b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,5 +7,6 @@ "cmath": "c", "limits": "c", "new": "c" - } + }, + "cmake.configureOnOpen": false } \ No newline at end of file diff --git a/build/errors.txt b/build/errors.txt index 170529f..f9b644f 100644 --- a/build/errors.txt +++ b/build/errors.txt @@ -1 +1 @@ -{"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 +{"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:138:37:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;31m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 138 | EventAdd(&inst.on_start, &game, \u001b[01;31m\u001b[KFumotrisStart\u001b[m\u001b[K);\n | \u001b[01;31m\u001b[K^~~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;31m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;31m\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:139:38:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;31m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 139 | EventAdd(&inst.on_update, &game, \u001b[01;31m\u001b[KFumotrisUpdate\u001b[m\u001b[K);\n | \u001b[01;31m\u001b[K^~~~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;31m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;31m\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:140:36:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KEventAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;31m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 140 | EventAdd(&inst.on_draw, &game, \u001b[01;31m\u001b[KFumotrisDraw\u001b[m\u001b[K);\n | \u001b[01;31m\u001b[K^~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;31m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;31m\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:142:32:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[Kpassing argument 3 of '\u001b[01m\u001b[KCoroutineAdd\u001b[m\u001b[K' from incompatible pointer type [\u001b[01;31m\u001b[K-Wincompatible-pointer-types\u001b[m\u001b[K]\n 142 | CoroutineAdd(&inst, &game, \u001b[01;31m\u001b[KFumotrisFall\u001b[m\u001b[K);\n | \u001b[01;31m\u001b[K^~~~~~~~~~~~\u001b[m\u001b[K\n | \u001b[01;31m\u001b[K|\u001b[m\u001b[K\n | \u001b[01;31m\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 e0cb5ab..065dca5 100644 --- a/build/hdr_checksums.txt +++ b/build/hdr_checksums.txt @@ -1 +1 @@ -["f315479de287d3cccdfa665c1e8c58bd", "7d30e573f96a566ed9510833b95d5520", "0eaec40fe47b9cb31ff5a70f7bfee15a", "72e1b62b85eac654ed094a8ecf009416", "5ce28b2bf9d7c5750ea290f80fbd1264", "0d65896ce70d098bdf4cb3587ca74508", "f6611a0f07f78cc4fd52df267e0d3d25", "9f0597e7cacc7c918163affc5f3d9841", "cd22e396133a64303ecae95280f8ba1a", "7d7451ae7d88f4d1f84055180f9e84a7", "29f6d19bcc5a1897b220a192ef6fc3cc", "1d88301163b019760c3dc8396ce2aa4b", "ec4912a725a2bc606bd76ba34159435c"] \ No newline at end of file +["7d30e573f96a566ed9510833b95d5520", "5ce28b2bf9d7c5750ea290f80fbd1264", "f315479de287d3cccdfa665c1e8c58bd", "0d65896ce70d098bdf4cb3587ca74508", "72e1b62b85eac654ed094a8ecf009416", "cd22e396133a64303ecae95280f8ba1a", "7d7451ae7d88f4d1f84055180f9e84a7"] \ No newline at end of file diff --git a/build/src_checksums.txt b/build/src_checksums.txt index 4e54ee3..73078c4 100644 --- a/build/src_checksums.txt +++ b/build/src_checksums.txt @@ -1 +1 @@ -["4aa55dfc1d038e75d0efbf277e6033a4"] \ No newline at end of file +["dd2f269c19f28201dce9133ab27198af"] \ No newline at end of file diff --git a/debug.exe b/debug.exe index b86c9320ccee11a2bf3368cfea58ba2a72772132..ac7f303f27c9cfd7839355992837f7bef4771575 100644 GIT binary patch delta 6140 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 Dc?JCi diff --git a/objects/ctrl.o b/objects/ctrl.o index ae0f4ec5fe719685f738bfc45edb9ca715d8264d..9eff00ac47a9d2bbcced2e0a65ba494856c3c9fb 100644 GIT binary patch delta 211 zcmaE6^~#DfrHz*X1T-dcDl-~P)Sb_mGx4lCqus=>{){gsyE3XX{+XQ1=+0<7c`Ktf zU<7Z02QZWnnhaGu%9tZ96MlCD07k%FRJM8LS>IKz1e&Hv;i;Al?bY zOpNkO{9KoTEXG?P;vq=vHHi2EB$yc)85mgjK!h}qU{nSXTAP`K7BjNCC+4OWOqZH7|9o1LUpm;eXYFBJd) delta 207 zcmaE5^~{PhrHz*X1XLz+Dl_U#)Sb_mG4ZTAqt(Q({)|s1yE3XX{+OK0=+3A=c`Ktf zzS(}4+GFUyFfb3Ktt_9-7K)e-* znHc4n__@vlS&Y{}#9ffsa}e^1w fo6id?F|wO#Dj0(7{UKt-26UI8l<;OZX%!{_)w(X% diff --git a/objects/dictionary.o b/objects/dictionary.o index 896882c73a74938cd2ec5cef73919a03c84135c9..d5ce13447ed8a89235e19f101dc91b0514597980 100644 GIT binary patch delta 217 zcmdmJzSW#FrHz*X1ac;FDl>Xa)Sb^*F!8K9xbGcs0Ap3LFLRtYqh zrE>Fgjw!5GK0tOM5O)LdMj&QllxO1SI1FSlUH}nyL1NEA#0Mb3{1+s~1+xbP1Q{3>Z02Q}$--=`XEb>wn=YgB=Id;`85y%CPv-Dr%L1Cq zlC}9c#}rm8FCaS?h}(g9Ef6y?$}{nE><6+K&wz-VAhE|F;th~s{s|Ie1KP>Nzj-TP p1tYU#LB?bw0e29+xlVwYk=;~N!4PQc<_s{% ziHstX&oT-#T1s{% ziHstX&oT-#noNGksLtBL&A_0unU_hGiP>1sXtF7bE~_%gtj*~x(-;}ECjVpAX3W~G z#b(BA;0hGZ0OBSfUID~RjPgwUY`cIg#zP?D6iDm}kYIiY;=Y_bfpe3XvsFxJacWU< zjAKDYOh8e7R%&udam?g}T*8w*xa7F>!IJtw$;s2X97pT3ySVQEg;~?C(y>^%*)2)bc~0cgMmQ>BFu1S^C}(=W?7Ki85tB9m>Bd*QY%WJ al8iu_8R(1i{OOFq@JQqo-RvXi#0UWJpiM;p delta 324 zcmbQF+Na8y(#FRC0#Xw>l^M@W)Sb`xVB%SS#wn9!8T}c>Cg(D$Giptq%IMB0F!?T{ zHe=yrP9}BMgWL=Zizb^gJ>^RC;IBIXB=QbSmSQfLJcYT0_ZiSM4Il>50h2{pbeWCy zj3&FX*fIueZf1GQ$oOn>A)7xFE92xtY}Sl{oBy#TF);>APUN&SbpmQh1>$lbo(sfG zjPgwU?8kvD#w#H1Z4m1Pi1i6X{04D3CZFewXPUTvvH@2lvtvQV0gNP&$Hw#1*0|~|kAi>%V zB$%dv2v$Z0P9~t4U?9%Qx_k3^kzPht_r%=PqRH`M_7K+Qg<{=|?1q{OhCs(|HkSCw Q#x#dSrjnz diff --git a/objects/input.o b/objects/input.o index 40266615cc160a9f0ba71b67565b3fd357d10c54..b9a14eba89695dc291988953531de05dcabdb811 100644 GIT binary patch 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; 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 diff --git a/objects/parseinput.o b/objects/parseinput.o index 08a24b446e9047177d348af1fcd1f75fe209f458..3353ca881a75d6a36813d73d35a117cde80d9ba8 100644 GIT binary patch delta 179 zcmZ3Xv_^?DrHz*X1cWAX9%f9LcvhY9&cv_&jAoNv8PyrRCg(D`GwM#>%Bam4J^3M{ zI_qj~28KhMd6}*B7wj7F1P8PyrxCg(D`GipxW%Bam4KKUV| zI_q+728Ml`d6}*yIa`<=3o<6#aQTDi%@eqI7}-rV6%2ufZ(hvp%)+F}IMGpL J^B;Z#MgW0oCzJpH diff --git a/objects/ringbuffer.o b/objects/ringbuffer.o index 9f3e95a048f19eb0dcc75a0373eead3d18c07c60..017d124030fedd2c58cc250bce8541bbb4b2b4ba 100644 GIT binary patch delta 206 zcmX@0cSMgfrHz*X1TrRaDl@iB)Sb_`ZQ@yV#*T?!{TTx$yE3XXrcBOdbY~T2WMFtW zc_O38 z{RE4t5778RAnpd@jX=!AD9^;tei+DNyZ|EZg2bMKhz~%5`7cO}Yx4;nB}P{F#N5=P l$!~exp)7O0U+jjO3Wh-IHe2vVu`voyE))^oyi9Z!BLFpMH6j22 delta 202 zcmX@2cR-IbrHz*X1X3n)Dl;}r)Sb_`Y2sOR#+Hd+{TY2GyE3XXCQQy{bZ6yfWMFtW zc_O38ZSx5pB}Qh)f{e-U jdELRZHQz6GQ%wa!pjDe~_@meu`6ma82yb2`I*SniChRi< diff --git a/objects/terminal.o b/objects/terminal.o index 948523597f17fb7e1edc093a1c0327c61b57b475..6832335ce1fb0841ae8426061f63c3bf39781ed3 100644 GIT binary patch delta 233 zcmX?Ue%72brHzjP1TIYERAxLfQFlJ$w~1%{8J|s-W%Os9H9412opIgdsf_N7Vw3MO zYBS1A=44W5%@Jl`FxYI$q{+r?qGvcckwceJb#p(*6Gq0$$t7Hda+M$xd6N@!a`KZI zB$)03dG$;T3@jjVmdeeCxjwR3c>~!6K->+)8-bXKQJ#sP<1moLcn(C|1c^Nc5pRG5 z^G}c%3nP%ryZIfzA``27Vs2{DWFa9pC@Wg%AG@KZf+5gBn-hfBumK&+C?UF8NoqMG E0LsQUMF0Q* delta 225 zcmX?We$t#XrHzjP1kOz4RAxLdQFlJ$r-^6%86QoSW%Os9HaVA3opIIVsf_N7LX+<@ zYBNeq=44W5%@Af_(AjLtq{+r?tYI<6Gq0Y$t7Hda#>uvK-><*Yk`=FQJ#sPV?U6^cnU;Z1&Q4U5ifuQ y^H-1<5Hc`vZhptF$i(bekTF?A$PG-#3;km^)l@J9I%ac<@ESHoq0NF)dl&)2D1aPnP7 zZARY7oJ{Jhu~G~SMw?BU1lVNtJi1*!cr+hiN;?iTg@2ns^CSM|Qw<#g#~c_HHYaf$ zVPZDXGn}l+t;-6sMq)CfsQBh0?#oPUl|U|685d2S%IMC>JNYi7 zHY4X`P9}BMNGS#ez0Iaf0&KDx9^I}VJem(Mr5y*F!oN+R`4NBfsfG@LV-Ad(o0B+> zFfkkJ8BNyY)@4>^V3_=0L~?Tx_hlxwETC$xtj*qhzuD}pf$TUS&I95pK)eiynHc4n z_&E*&S&Sz^#6^(UZ4mJUNHBi{5-fj!1S8Al7SRf3F=wlo(Bjmh;uyz*jF^C;{H)aE zlH!=jfs(?LnIuKH^udz)K*`PSlI)D^rkVVrHz*X1lT5WDl>9S)Sb_0F!8K9~uRR)qL zShX1|H-BMOXSVhL%H{%bI}oo0VkSm;CVr0nKo;W(5OEPCb{j-I0TRp~L1Mo^TxQ0} zVVpgaS-DhsVnT~ki;8316LV9GCconp=X18w2Mg&#giN@;vm0tE7y@0i*@*iD3lk6H ML`RX$0s=jZ0A7PSi~s-t delta 255 zcmZ3WJV%)`rHz*X1ehjrDl@W7)Sb_$Gx4lC5OEeHb{#}K020h^fdu0>5cfaB ztVkcIXtD*@ dcXm@v1w)|wHk)yuU}555oaiXBSwx_R5dcjmLCpXF diff --git a/objects/win.o b/objects/win.o index 10298dbccb5502d8ab46098a63dbd96f7fb8bf4b..4a2c2abe69875c1c668f279f6acdfc1cfd8dd6ea 100644 GIT binary patch delta 3038 zcmZ8jdu&^06+h?tk?TinC$$U8)tYzw(PT=d^RZB#I=GDY=*tGgq47aWRBV_6D1N>YDI4=Si zGGz?_cSJYFOfyk{55ycsOy48)cX1XY_+Rk{^oY06X}*O3(YW{{MkQ0Duu4($SR;U^ zU35vcW|d&Def_93ZB|-{-ULVq0P6eqkJa?H-B;7rnP^*oUw#ZRx_;Q&hv*hB*>+%s zxMhoBOqAGTxJk6w19ndyN^DX|4^`z6ySKQX~&4z z;iIFmptA(G`N3ow5R*P9w;%sPdQ4@IwImtZ!2C} z|F?HZvNn+pd`@@8ZSk0|rPY0jMy#22&PwZD!t!kr?mHyRBdPi0J^ATrH8Y?lr@-Y@ zj%W*x~{&7jl|lrP$^74ZZrgd;kBt z4_Mhk?#GDX4R+`0+zG9NLlZq?eG{YL8u$E#pVMM$ek#34^`ljm#Si_lXd9^jOAYT) zn1#-OezD`kWSYA&qEj9apZQ~WRa94{j6P$%TRd4ce86XHYH$PC7f-0_EF|1K>yiYD zv34)1Ez{Z|z=)IeWmn5dxJj?oFfqroNL2*nr$~nj=`3KdA}E@x!&Z$HeA0a%i}C6s zQ;O7C;vv4=@`4Ju+0n;z90iJN*A}*%RF?s}eFK!jq7!3}U#mfH7qHhKB%_`>qfUYc zJLH2DTK+Nfl$Qv9AdF|kjzG+Ih17mzRr$XvR{h_f=c2g zUTfkVnoz?BJfcsbNRbcP<4D@rdzzW8xM?eJ_eH=WMR9mu5@v{vDDW;j(~ptrns;o4#)#hxvw z-{9DY=&o@;$lf1viF65WpDxPh18~sBW#K|IV`&u}*<1!L4D8ZYvUMI_w$G5Sv^s3% zBXrTTM?7CsKU()uVW!V$Q~=f#{J2c_9IyMVU_7y59K-+=U^DCs4@27%fK7wAJ zwQ)+T&F=fO2Rn1&yL-wY>9%WcB zyKRP0RfrWXn((L-Y?LJSc~4x%rb;x(8%?sJD(=OYM%Li|f~ip~)O%K%NbS%fY+G#{ z(Okiu*r+q@=_QJc1$&FeW70i1ptVzf+*-g+We3em+r27@2D-h_YJqr%R#S(sl=iPv z+XeF3EL>3^c8PfOiSQi^q%S|0o~ApONoApTTgzBh&173Nr}eS;FR-L7uK!I8H@;|G$4?FtGl5>vaQmh^IOum=&*dK8?55 JyEh*;{tsk?CTaix delta 2929 zcmZ8jeQZ=h#zb?T00l~{;@GaA1 zVep8#vfog+R_9WE<;2X+sm$zjYPoMZbtD7IZEGoel747@7L>o{hp-{{k@GFdqDqds zyW)k4ZagJ^S22TO(WOT4t~jJtqfIQTZKQc!?X;e^16apI&>gUt9m5p|h3sy{TJgBM z3NMSN-A$qA6ejfT-7&I%toNzjp#x*Xy*u^}?*y~sP{jlBV|Q}Xdqh!Pj&GcC0ND0u z%e@O)Itz}J?-T{M4eIk5t)My_u!)E6VEiC?*ao%qd_h0qzs#CGeSAJsP-%e&qTA!e zUyFmDh)<=^X0Y@R?Heg3;5cGABUU{g`x+T#p1fYXNgj3Lrl%R-$bIfvlI#tf3>+n?iNYDJ_q&Bx(OHF{w>6bgjUwn-?DoXr8 zTo85ssCLl>fJ@*C+x|ff1h@>Yhyl&e*q@%A&+bfRQy{xyB_9*hc6dGuu3EK|acXHQ z1FpLAQ63y4822m?1gqgUtc~k)6X0{z%N^o%e*iCv8~(;8JIX0NC_!ngN7tueQ=XPj z6V9QlTb?5Z9yK!VsWNduJUl-Mt{pzMxWLPaoF?cKPXv5>fANUE>woFH?Q9|XVTy2_ z>D+_cAlbintY@Te>;Sk%-Jfxt7N^n^`Xc3zcG)g|5=g|GNCjAG`Xjm7sMGTg6UWAN zUX>Z0@_@J(NZ>mnP&H-to9jH{J5~D*_|1)tDu840sHROrQss`8Bv8#*Ge~;dq|xgb zbF!iQoeB~j(i=&P&2VQ?8bSFS>2Oxh0EQ|fqM%e}zrQwPnC=-vCWw%ZJ9EfRROh#eh2k5i;f{pVP*{jcxKX27(AJfLOA{mtNtk@DvDA$N&dO)+Au8FB&*T84%V<>&p zfJ53+7MzKaA5f2}9^!K0O^iV1Ep9$AHKPsbi(pP#sa%jGON+P@^eZEe*uoVG4S$!% z#&mz61CqaMCdmT=!_+d}+>)g~WsV^}r1?yLr7f2QQrTlJ83e^?U4Fv+m2q$@^aF5c?vYs_j02GTQSDT-wA~T7|Mq zb`CD>?iJ5R{5T-aN9r&pu12a!eiHG9je@TJY=y$g+h~57&!Cq(?Q7)UD%9vE#}$ss zr}am%E8@v$eSo(QWG2;2&~2Z}jvpQ4PFw5{-;a7W#QgazV9C$n*OOQd^cpG2Wqc4% zc&>=|qs=wE=sy`t1<(q=c;O6((CJz_7CR$CHQ^QBE|7T}+tyd#pQbwFn3W@3EO>Sm zBSfdjOb0ui(Wf;yz$Cq3Y%Y@S(=_%OeL{n$6ys2@PP<+#So?X#b|cEsls!E$t;_gC9kXV-tI7zuCm*Fu9dI7ImoyA zwi;_hbzNvBreHZ%l+Xu3Io8RlVhUGd9Ns&j%uQQ}@S$wuCV1QQ-i7=bpZ|7WQ; zli~?Qq4|wv8tZ8wR#{=)hGJtSXUb(zR(OSt#R*8m32rjtS{{W+w&zPi_I`Dne=BWC z)0b5ewM}zzxdt!4*cLKCt5G^aZAmCp#GsVhX{pqtzRlu$B+TbYSYGAf zWfJ%+v=O|{;}3E>6RKqDo;@m_t&i|;?o|D|Xxm(Ge6S^(SGy~7+Qt{mD+}~xQbTzu zuvSEG(jA-E{j-RCbl>xpk8q3nvdlnn+T=WHE27aN(u?TDB0{QR-XoMpD-=*KDt}%? z9~DtI6*up)P(&{m(X}F4D' ``'-./\.-''` ' ,-''``''-. ,' `. ctrl); if (horizontal != 0 and fumo->last_moved < inst->time) { - fumo->last_moved = inst->time + 5e7; + fumo->last_moved = inst->time + 1e8; TetraMove(&fumo->piece, &fumo->board, horizontal, 0); } @@ -96,7 +96,7 @@ void FumotrisUpdate(struct Instance *inst, struct Fumotris *fumo) 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; + fumo->last_dropped = inst->time + 1e8; TetraMove(&fumo->piece, &fumo->board, 0, 1); } @@ -144,4 +144,27 @@ int main() FumoInstanceRun(&inst); return 0; -} \ No newline at end of file +} + +| | NEXT LINES +| [][][]. . . . . . . | +| [][][]. . . . . . . | SCORE +| [][][][]. . . . . . | +| [][][]. . . . . . [] | +| []. . [][]. . . . [] | +| [][][][][][]. . . [] | +| . . [][]. . . . . [] | +| [][][][]. [][]. [][] | +| [][][][][][][]. [][] | +| [][][][][][][][][][] | +| [][][][][][][][][][] | +| [][][][][][][][][][] | +| [][][][][][][][][][] | +| [][][][][][][]. [][] | +| . [][][][][][]. . [] | +| [][][]. [][][][]. [] | +| [][][][][][][][]. [] | +| [][][][][][][][]. [] | +| . [][][][][][][][][] | +| . [][][][][][][][][] | +|________________________| \ No newline at end of file diff --git a/source/fumotris/tetra.c b/source/fumotris/tetra.c index c0a7f57..2551362 100644 --- a/source/fumotris/tetra.c +++ b/source/fumotris/tetra.c @@ -132,8 +132,8 @@ void TetraTerminalClear(struct Tetra *board, struct Terminal *term) for (usize i = 0; i < board->wid * board->hgt; i++) { struct Char4 *block = term->buf + i * 2; - block[0] = (struct Char4) { .ch = '(', .color.fg = 8 }; - block[1] = (struct Char4) { .ch = ')', .color.fg = 8 }; + block[0] = (struct Char4) { .ch = '.', .color.fg = 8 }; + block[1] = (struct Char4) { .ch = ' ', .color.fg = 8 }; } }