23 Commits

Author SHA1 Message Date
Priec
761b86585a removed legacy LED blinking 2025-11-14 21:03:06 +01:00
Priec
528e38b428 another movement done 2025-11-14 20:39:58 +01:00
Priec
a59192cf05 pitch perfect movement 2025-11-14 20:07:38 +01:00
Priec
fa7e18e4d5 BIG MOVES 2025-11-14 19:59:04 +01:00
Priec
4ed4452fae some renames, nothing much 2025-11-14 19:39:19 +01:00
Priec
b9ca8df59b small syntax change 2025-11-14 19:25:25 +01:00
Priec
8fa8bf392b usage of enums for frames 2025-11-14 19:20:14 +01:00
Priec
9170524d33 proper positioning works now 2025-11-14 18:50:57 +01:00
Priec
cda395d6b9 calculations 2025-11-14 17:31:37 +01:00
Priec
d8da84cffc added positioning 2025-11-14 16:42:16 +01:00
Priec
f6a13309f7 refactoring 2 2025-11-14 15:20:05 +01:00
Priec
9c93179bf0 refactoring 2025-11-14 15:15:20 +01:00
Priec
38b8bb0657 crawl for 300ms 2025-11-14 14:24:34 +01:00
Priec
b147d92423 walking stickman is now also crawling 2025-11-14 14:12:40 +01:00
Priec
13f01d13f8 player rendered 2025-11-14 12:35:22 +01:00
Priec
ebe03f42b6 render speed 2025-11-14 11:08:33 +01:00
Priec
a1c742c1cd vycistenou 2025-11-14 10:20:11 +01:00
Priec
3e0018d1cb split config now 2025-11-14 10:13:59 +01:00
Priec
1f5bc11ddd looking more stable 2025-11-14 00:01:08 +01:00
Priec
79db5bb8a0 better, needs optimizations tho 2025-11-13 23:57:42 +01:00
Priec
bb1a24e7b3 getting better 2025-11-13 23:45:37 +01:00
Priec
04085c97f1 amazing ascii moving now from file 2025-11-13 23:35:00 +01:00
Priec
b52c78d056 semestralka pvs 2025-11-13 23:14:58 +01:00
42 changed files with 639 additions and 0 deletions

View File

@@ -54,6 +54,8 @@
pkgs.probe-rs
pkgs.probe-rs-tools
pkgs.bear
pkgs.chafa
pkgs.imagemagick
mbedTools
pyOcd
];

8
semestralka1/.clangd Normal file
View File

@@ -0,0 +1,8 @@
CompileFlags:
Add:
-isystem
/nix/store/ih9psjpxn2pbbzw4klr9s6hmmngc52n8-gcc-arm-embedded-14.3.rel1/arm-none-eabi/include
-isystem
/nix/store/ih9psjpxn2pbbzw4klr9s6hmmngc52n8-gcc-arm-embedded-14.3.rel1/lib/gcc/arm-none-eabi/14.3.0/include
-isystem
/nix/store/ih9psjpxn2pbbzw4klr9s6hmmngc52n8-gcc-arm-embedded-14.3.rel1/lib/gcc/arm-none-eabi/14.3.0/include-fixed

25
semestralka1/.gitignore vendored Normal file
View File

@@ -0,0 +1,25 @@
.build
.mbed
projectfiles
*.py*
# Local build directories
cmake_build/
BUILD/
mbed-os/
.mbed/
.mbedignore
*.elf
*.bin
*.hex
*.map
# IDE and temporary files
.vscode/
.idea/
*.log
*.pyc
__pycache__/
.cache/
compile_commands.json

View File

@@ -0,0 +1,42 @@
# Copyright (c) 2020 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.19.0 FATAL_ERROR)
set(MBED_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mbed-os CACHE INTERNAL "")
set(MBED_CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR} CACHE INTERNAL "")
set(APP_TARGET mbed-os-example-blinky)
include(${MBED_PATH}/tools/cmake/app.cmake)
project(${APP_TARGET})
add_subdirectory(${MBED_PATH})
add_executable(${APP_TARGET})
# Recursively collect all .cpp files under src/
file(GLOB_RECURSE SRC_FILES CONFIGURE_DEPENDS "src/*.cpp")
target_sources(${APP_TARGET}
PRIVATE
${SRC_FILES}
)
# Make includes of headers work
target_include_directories(${APP_TARGET}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(${APP_TARGET}
PRIVATE
mbed-os
)
mbed_set_post_build(${APP_TARGET})
option(VERBOSE_BUILD "Have a verbose build process")
if(VERBOSE_BUILD)
set(CMAKE_VERBOSE_MAKEFILE ON)
endif()

5
semestralka1/README.md Normal file
View File

@@ -0,0 +1,5 @@
# Semestralka na VPS
Tato hra je najsamlepsejsia na celom svete.
Iba si treba matchnut baudrate a moze sa gamesit.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,19 @@
~`````````````````````````````````````````````````````````````````````````````````````"````````````````````````````````~```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````+````````````````````~````````````````````````````````~```````````````````````````````````````````````````````
...................................................................,.......................:..........................................'.........`..:.....................................................................................................+...................................:...........:..,................................................
..........................."............................................._................................+...........................................................................................................,..............................................`..............................................................!........................
.......`...............!..:..............................................`,...,,,'........_.....................''::.....:........................^......................,,...........................................':.......'........................,....,,,.......................+...,...'::'.............................^......................,,....
...`......................"...........`.....`...................._,....:,::::^.`::::::........'''``....`....y..^............-...........................................:'.....................,........".....................................:_......,,:::..`'`::::.........'''`..........+....+........,............................................,:`....
,,,,,,,,,,,`,,,,,,,^,,,,,,,,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`a',,,,,,',.+,,,''''`.........,,'?'!#R,,,,,,,,,,,,,y,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,__,,,_',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y'`,,,,,'.,,,,,,.'''`........,,''^,s@^,,,,,,,,,,,,_;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_,,,_,`,,,,,,
,,,,,,,,,,^,,,,,,','''':,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,+,,,,,,,,,:'!^'`,,``..'.'''`,,,,,,,yy_,_yaF,,.'`'',,,,,ym$###$@M@,,,,,;,,,,,,,,,,,,,,,,,,,,,''''':,y,,,7#@@~,,,,,,,,,,,,,,,,,~,,,,,,,::'''::,~,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,::'~''`,```..``''',,,,,,,yy___ygR^,.,`'`,,,,,,wa###$@R@:,,,,,,,,,,,,,,,,,,,,,,,,,,'''''',,X,,~T@@R,,,,,,,,
@@@@@@@@@@@@@@$~`,'________~TF?5#@@@@@@@``4@@E,,,4@@@@@@@@@@@@@#MT~yg$^$P_____..,...:_________@@______;'...'.?@@@@@@@@@@@@@@@@@@@@@@@@@@@MR@@@@@@@@@@B,,,,,,,4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P...________~TFFF#R@@@@@@F,`$@@,,,,@@RR@@@@@@@@@RPF~_g$Mb$______..,..,_________9@y______',....~$@@@@@@@@@@@@@@@@@@@@@@@@@@##R@@@@@@@@@@~,,,,,,~@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@yggy@@@@@@@@@@@@@@@@@@@@$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@g$@@@@@@yy$ggg$@@@@@@@@@g$@@@@@@$$_g____@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ggggggg@@@@@@@@@PM@@@@@@@@@@@@@@@@@@@@@@gygy$@@@@@@@@@@@@@@@@@@@@$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@gg@@@@@@gyg$ggg@@@@@@@@@F$$@@@@@@$Fyw___4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ggggg$gg@@@@@@@@@F@@@@@@@@
@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@R@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
MRRRRRRRRRRAA#PPF=FFF~~~~~~~~~~~~~~~~~~~~~~~FFPPRR@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@$$@@@@@@@@@@@@@g@@@@@@@@@@@$@@@@@@@@@RRRRRRRRRRRRRPPPP@@@@@@@R@@@@@@@@@@@@@@@@@@@$$RRRRRRRRRRR@0#PPPPFFFF~~~~~~~~~~~~~~~~~~~~~~FFFPPR@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@g$@@@@@@$@$@@@@@@@@@@@@@@g@@@@@@@@@@@$@@@@@@@@@RRRRRRRRRRRRPP=MA@@@@@@@R@@@@@@@@@@@@@@@@@@@@R
MF~~~~~~``.___yyyam....,,,,,,,,,yyw,-yyyyy.,,....,yg@PPPPPPPPPPPPRRRRRRRRRR#RR$@@@@@@@@@@ETT~~~~~~~~~~~FFFFFFFFFR@@@#=PPFF~~~`,,,,ggg,_.,___..._,y@PPPRRRR###5RRRRRR@@@@@@@@@PFFT~~~~~``..___yyyg....,,,,,,,,,,yy,,yyyyy,.,....._g@PPPPPP4PPPPPPRRRRRRRRRRRR@@@@@@@@@@@ETTT~~~~~~~~~~FFFFFFFFF5@@@R#=PFFF~~~,,,,aggy_..,__,.._,_$@PPRRRRR#$4GRRRRR@@@@@@@@@@F
...,,,:::::4@@@@@@~...,,,,,,,,,,$@$:_@@@@@_ggaggg@@F~.::::,,,,,,,,,,,yyyyyy,_yggg@@@@@@@@MF#$ggagggyww::$@M@@@@..~$.,,:3@@@$A::::,"@@g$_:d@@..~~@~`,,,,,,,,,,yyyx,,,,,,,ggg_......,,::::::@@@@@@$....:,,,,,,,,,@@:_$@@@@yg$g$ggg@@~`::::,,,,,,,,,,,yyyyyy_,yygg$@@@@@@@@F5aagggggyyw,:d@P@@@@L.`5r,,,:@@@@UL`:::,N@@gy.:@@F.>~5F~,,,,,,,,,,,yyy,,,,,,,,ggy...
...,,,,,,,,4@@@$g@....,7^=sa@@$a@@@@@@@@@@@@@@@@@@~``.`,,,,,,,,:::`,g@R@BZa$TTTTF5PM@@@@^:`'`~T5#@@y_`,u@~$@$@@g_,F,,,,`@@@@'':^na$g@@@=_:@@.`,.4__,,,,,,,,,g@@K:,,,,,,g@@@@w....,,,,,,,,,$@@$g@F...,,^=#aa@$gg@@@@@@@@@@@@@@@@@F``.`,,,,,,,,,::`,:@@P@R5$T~TTFFPP5@@@$:'``~~7P@@y_``,$E4@W@$@y,4::,,`3@@@[`:,raagg@@Fk`@@L.,.`g_,,,,,,,,,,g@@~:,,,,,,g@@@$..
..,:''``a$gg@$@@ZF...:,,,,,,:`~T@@@@@@@@@@@@@A@@^``...:,,,,,`,,::,.,@@@@@@@@,`.`````@@@[',,,,,,,,,,`TR@@@@@@@$@@@`'''':,A@MP.,,,,,"~TT@,`3@@*g'.`4@':,,,,,,:EDT,,,,,,,_@@@@@$....:':':H$$g@$@@$@....,,,,,`:`~7R@@@@@@@@@@@@AR@@```..,',,,'``,,::,,d@0@@@@@y`.`````g@@@`',,,,,,,,,:79@$@@@@@@@@@'"``':,!$FP~:,,,,,~~7@y.~A@mg@'."@F::,,,,,,4ER~,,,,,,,g@@@@@..
..:`::':''~F@@@@@....:````:`:,``"FB@P~5@@@$~~3@@L....::``',:``,:::,`g@@@@@@@@.```.:7@@@F:`````````::,:`@Fy@@$@@@F.::`:::`$@@L`````````~%.`$F.B`..`B::::````4PF````````@@@@@@B...,:,,:::``TM@@@@$...:````:,`````7M$@F~@@@@~~"@@@.....:,`',:'`':::,,x@@@@@@@@,....`:@@@@:``````````:::,g@ya@@@@@@.,'`'::`4@@g,```,`````4.."@.$^...4~`::````_RP~```````g@@@@@@L.
.,,`,```,,``@@@@@,,.``````````,,4@~,,,"$@@$,,$@@m',..,,,``,,````,``g@@@@@@@@@,'`,..,"Z@F``````````````_a@@@@@@@@'.`,,````~@@F``,````,,,,,,4(``....`'```,,,g@~,,``````g@@@@@@@,,.,,,```,,,`4@@@@~,.,```````'`,,`B$,,,,$gZ$r,:@@@',...,,,``,````,``:@@@@$@@@@@.',...`~@@```````````````D$@@@@@@@E,``:`````@@R``,````,,,,,,`R'['.,..,````,,`@B,,``````g@@@@@@@L,
.',,,,,,,,,,4@@@E,,,,,,,,,,,,,,,,@,,,,,5@@@,,$@@@,,..,,,,,,,,,,,,,,@@@@@@@@@@@,,,..`,,@F,,,,,,,,,,,,,,@@@@@@@@@@,,',,,,,,,~,,,,,,,,,,,,,,,,L,..,,.':,,,,,y@~,,,,,,,,g@@@@@@@@,,.',,,,,,,,,,@@@@,,.:,,,,,,,,,,,,$F,,,,"@@@F,d@@@,,,..,,,,,,,,,,,,,d@@@@@@@@@@L,,,..,,4@,,,,,,,,,,,,,,g@@@@@@@@@F,,',,,,,,~^,,,,,,,,,,,,,,,T,...,..,,,,,,,$E,,,,,,,,y@@@@@@@@$,

View File

@@ -0,0 +1,19 @@
.............................................................................................................................................................................................................................................................................................................................................................
......................````````````````````................................`````````````````````.....................................................................................................````````````````````...............................`````````````````````.................................................................................
.............................................................................................................................................................................................................................................................................................................................................................
.............................................................................................................................................................................................................................................................................................................................................................
.............................................................................................................................................................................................................................................................................................................................................................
.............................................................................................................................................................................................................................................................................................................................................................
......................................................................................`..................................................'..........................................................................................................................`..................................................'.....................................
.............................................................................................................................................................................................................................................................................................................................................................
........................................................................................................................................................................................................................................................`....................................................................................................
........................'''`'''''``............'`'''''......._,_yr,..._,,........................................................................_,,,,................................................'''`'''''``............'`'''''......,_,yy+,..._,,........................................................................_,,,,.........................
..................```.......................................```~~``^?~"``::.,,,,,,,,,,,::::````'````..........``'''...`......,,,,,,,:,,:,,,,..,,:~````:,,,............,,,,......................```.......................................``"~~``^?~```:..,,,,,,,,,,,:::'`````````..........````'...`......,,,,,,::,,:,,,,..,,:~```',,,,............,,,,.....
.''``''`....`..............................................................._..`````.......................................```````'`````````''`````````..............``````````'''`''`....`..............................................................._..`````.......................................````'``'`````````''`````````..............`````````'
._.............................____yyyyyyyagggggggggggggggggggggga_..........~Th=ay__.............._____yyyyyyyyyyyyyyyyy___...+_.........................agyy_yyyyyyyyyyyyyyy_,.............................____yyyyyyyagggggggggggggggggggggga,..........~T=*wy_,.............,_____yyyyyyyyyyyyyyyy____..:._.........................agyy_yyyyyyyyyyyyyyy_
.@@$gyy_,.....__yyyyyaggg$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$aaaaaa@@@$gga$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$gZgyy_________yyyyyyyag$@@@@@@@@@@@@@@@@@@@@@@@@@$gyy_,.....__yyyyyagg$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$aaaaaa@@@$gga$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$gZgyy_________yyyyyyyag$@@@@@@@@@@@@@@@@@@@@@@$
.@@@@@@@@@$g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@$@@@@@B0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@$@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$
.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR4RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRF

View File

@@ -0,0 +1,4 @@
nix-shell -p imagemagick
identify background.jpg
chafa --symbols ascii --fill none --size=6912x793 background.jpg > out.txt
chafa --symbols ascii-block -c none --fill none --invert --size=349x40 background_dark.jpg > background_dark_inverted.txt

View File

@@ -0,0 +1,7 @@
.....a@$..
.....7PF..
..yaM@@__y
..@.y@FFF~
..._$M@_..
yaa@~.`@y.
........@r

View File

@@ -0,0 +1,7 @@
.g@$
.7PF
y@$.
0@F.
4@$.
y$@.
u@..

View File

@@ -0,0 +1,9 @@
......_g@$w..
......4@@@F..
.....yyyy`...
...g@~@@@y_ys
..4F..@@FTF~.
.....g@@g,...
..._a@^.4@_..
4R@F~....7@y.
..........~@.

View File

@@ -0,0 +1,4 @@
.._$@.
.$By`.
4@$@@a
aa@W@.

View File

@@ -0,0 +1,3 @@
a@@Bw_,
7@@Db@$
4@@PF#@

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,4 @@
chafa --symbols ascii-block -c none --fill none --invert --size=13x20 predloha_run_a.jpg > out.txt
a = 78x111
b = 34x111

1
semestralka1/mbed-os.lib Normal file
View File

@@ -0,0 +1 @@
https://github.com/ARMmbed/mbed-os/#17dc3dc2e6e2817a8bd3df62f38583319f0e4fed

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -0,0 +1,22 @@
// src/assets/background_frame.h
#pragma once
static const char *BACKGROUND_MASK[] = {
"~`````````````````````````````````````````````````````````````````````````````````````\"````````````````````````````````~```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````+````````````````````~````````````````````````````````~```````````````````````````````````````````````````````",
"...................................................................,.......................:..........................................'.........`..:.....................................................................................................+...................................:...........:..,................................................",
"...........................\"............................................._................................+...........................................................................................................,..............................................`..............................................................!........................",
".......`...............!..:..............................................`,...,,,'........_.....................''::.....:........................^......................,,...........................................':.......'........................,....,,,.......................+...,...'::'.............................^......................,,....",
"...`......................\"...........`.....`...................._,....:,::::^.`::::::........'''``....`....y..^............-...........................................:'.....................,........\".....................................:_......,,:::..`'`::::.........'''`..........+....+........,............................................,:`....",
",,,,,,,,,,,`,,,,,,,^,,,,,,,,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`a',,,,,,',.+,,,''''`.........,,'?'!#R,,,,,,,,,,,,,y,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,__,,,_',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y'`,,,,,'.,,,,,,.'''`........,,''^,s@^,,,,,,,,,,,,_;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_,,,_,`,,,,,,",
",,,,,,,,,,^,,,,,,','''':,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,+,,,,,,,,,:'!^'`,,``..'.'''`,,,,,,,yy_,_yaF,,.'`'',,,,,ym$###$@M@,,,,,;,,,,,,,,,,,,,,,,,,,,,''''':,y,,,7#@@~,,,,,,,,,,,,,,,,,~,,,,,,,::'''::,~,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,::'~''`,```..``''',,,,,,,yy___ygR^,.,`'`,,,,,,wa###$@R@:,,,,,,,,,,,,,,,,,,,,,,,,,,'''''',,X,,~T@@R,,,,,,,,",
"@@@@@@@@@@@@@@$~`,'________~TF?5#@@@@@@@``4@@E,,,4@@@@@@@@@@@@@#MT~yg$^$P_____..,...:_________@@______;'...'.?@@@@@@@@@@@@@@@@@@@@@@@@@@@MR@@@@@@@@@@B,,,,,,,4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@P...________~TFFF#R@@@@@@F,`$@@,,,,@@RR@@@@@@@@@RPF~_g$Mb$______..,..,_________9@y______',....~$@@@@@@@@@@@@@@@@@@@@@@@@@@##R@@@@@@@@@@~,,,,,,~@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@yggy@@@@@@@@@@@@@@@@@@@@$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@g$@@@@@@yy$ggg$@@@@@@@@@g$@@@@@@$$_g____@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ggggggg@@@@@@@@@PM@@@@@@@@@@@@@@@@@@@@@@gygy$@@@@@@@@@@@@@@@@@@@@$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@gg@@@@@@gyg$ggg@@@@@@@@@F$$@@@@@@$Fyw___4@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ggggg$gg@@@@@@@@@F@@@@@@@@",
"@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@R@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"MRRRRRRRRRRAA#PPF=FFF~~~~~~~~~~~~~~~~~~~~~~~FFPPRR@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@$$@@@@@@@@@@@@@g@@@@@@@@@@@$@@@@@@@@@RRRRRRRRRRRRRPPPP@@@@@@@R@@@@@@@@@@@@@@@@@@@$$RRRRRRRRRRR@0#PPPPFFFF~~~~~~~~~~~~~~~~~~~~~~FFFPPR@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@g$@@@@@@$@$@@@@@@@@@@@@@@g@@@@@@@@@@@$@@@@@@@@@RRRRRRRRRRRRPP=MA@@@@@@@R@@@@@@@@@@@@@@@@@@@@R",
"MF~~~~~~``.___yyyam....,,,,,,,,,yyw,-yyyyy.,,....,yg@PPPPPPPPPPPPRRRRRRRRRR#RR$@@@@@@@@@@ETT~~~~~~~~~~~FFFFFFFFFR@@@#=PPFF~~~`,,,,ggg,_.,___..._,y@PPPRRRR###5RRRRRR@@@@@@@@@PFFT~~~~~``..___yyyg....,,,,,,,,,,yy,,yyyyy,.,....._g@PPPPPP4PPPPPPRRRRRRRRRRRR@@@@@@@@@@@ETTT~~~~~~~~~~FFFFFFFFF5@@@R#=PFFF~~~,,,,aggy_..,__,.._,_$@PPRRRRR#$4GRRRRR@@@@@@@@@@F",
"...,,,:::::4@@@@@@~...,,,,,,,,,,$@$:_@@@@@_ggaggg@@F~.::::,,,,,,,,,,,yyyyyy,_yggg@@@@@@@@MF#$ggagggyww::$@M@@@@..~$.,,:3@@@$A::::,\"@@g$_:d@@..~~@~`,,,,,,,,,,yyyx,,,,,,,ggg_......,,::::::@@@@@@$....:,,,,,,,,,@@:_$@@@@yg$g$ggg@@~`::::,,,,,,,,,,,yyyyyy_,yygg$@@@@@@@@F5aagggggyyw,:d@P@@@@L.`5r,,,:@@@@UL`:::,N@@gy.:@@F.>~5F~,,,,,,,,,,,yyy,,,,,,,,ggy...",
"...,,,,,,,,4@@@$g@....,7^=sa@@$a@@@@@@@@@@@@@@@@@@~``.`,,,,,,,,:::`,g@R@BZa$TTTTF5PM@@@@^:`'`~T5#@@y_`,u@~$@$@@g_,F,,,,`@@@@'':^na$g@@@=_:@@.`,.4__,,,,,,,,,g@@K:,,,,,,g@@@@w....,,,,,,,,,$@@$g@F...,,^=#aa@$gg@@@@@@@@@@@@@@@@@F``.`,,,,,,,,,::`,:@@P@R5$T~TTFFPP5@@@$:'``~~7P@@y_``,$E4@W@$@y,4::,,`3@@@[`:,raagg@@Fk`@@L.,.`g_,,,,,,,,,,g@@~:,,,,,,g@@@$..",
"..,:''``a$gg@$@@ZF...:,,,,,,:`~T@@@@@@@@@@@@@A@@^``...:,,,,,`,,::,.,@@@@@@@@,`.`````@@@[',,,,,,,,,,`TR@@@@@@@$@@@`'''':,A@MP.,,,,,\"~TT@,`3@@*g'.`4@':,,,,,,:EDT,,,,,,,_@@@@@$....:':':H$$g@$@@$@....,,,,,`:`~7R@@@@@@@@@@@@AR@@```..,',,,'``,,::,,d@0@@@@@y`.`````g@@@`',,,,,,,,,:79@$@@@@@@@@@'\"``':,!$FP~:,,,,,~~7@y.~A@mg@'.\"@F::,,,,,,4ER~,,,,,,,g@@@@@..",
};
static const int VIEW_HEIGHT = sizeof(BACKGROUND_MASK) / sizeof(BACKGROUND_MASK[0]);

View File

@@ -0,0 +1,54 @@
// src/assets/character_frames.h
#pragma once
// Player frame 1
static const char *CHARACTER_MASK_FRAME_1[] = {
".....a@$..",
".....7PF..",
"..yaM@@__y",
"..@.y@FFF~",
"..._$M@_..",
"yaa@~.`@y.",
"........@r"
};
// Player frame 2
static const char *CHARACTER_MASK_FRAME_2[] = {
".g@$",
".7PF",
"y@$.",
"0@F.",
"4@$.",
"y$@.",
"u@.."
};
// Player frame 3 (triggered)
static const char *CHARACTER_MASK_FRAME_3[] = {
".._$@.",
".$By`.",
"4@$@@a",
"aa@W@."
};
enum class CharacterFrame {
Walk1 = 0,
Walk2,
Crawl1,
COUNT // number of frames, must stay last
};
// Combine frames for easy access
static const char **PLAYER_FRAMES[] = {
CHARACTER_MASK_FRAME_1, // Walk1
CHARACTER_MASK_FRAME_2, // Walk1
CHARACTER_MASK_FRAME_3 // Crawl1
};
static const int CHARACTER_FRAME_COUNT = static_cast<int>(CharacterFrame::COUNT);
// Height per frame
static const int CHARACTER_HEIGHT_1 = sizeof(CHARACTER_MASK_FRAME_1) / sizeof(CHARACTER_MASK_FRAME_1[0]);
static const int CHARACTER_HEIGHT_2 = sizeof(CHARACTER_MASK_FRAME_2) / sizeof(CHARACTER_MASK_FRAME_2[0]);
static const int CHARACTER_HEIGHT_3 = sizeof(CHARACTER_MASK_FRAME_3) / sizeof(CHARACTER_MASK_FRAME_3[0]);

View File

@@ -0,0 +1,16 @@
// src/game/animation.cpp
#include "animation.h"
AnimationController::AnimationController() {
anim_timer.start();
}
bool AnimationController::tick(int speed) {
if (anim_timer.elapsed_time() >= ANIMATION_TICK) {
// speed determines scroll steps per tick
shift += speed;
anim_timer.reset();
return true;
}
return false;
}

View File

@@ -0,0 +1,20 @@
// src/game/animation.h
#pragma once
#include "mbed.h"
constexpr auto ANIMATION_TICK = 170ms;
class AnimationController {
private:
Timer anim_timer;
int shift = 0;
public:
AnimationController();
// Update animation, returns true if redraw needed
bool tick(int speed);
// Getters
int get_shift() const { return shift; }
};

View File

@@ -0,0 +1,38 @@
// src/game/state.cpp
#include "state.h"
void WalkingState::update() {
// stop crawling after duration
if (current_state == PlayerState::Crawl1 &&
state_timer.elapsed_time() >= CRAWL_DURATION) {
current_state = PlayerState::Walk1;
state_timer.stop();
}
}
void WalkingState::start_crawl() {
current_state = PlayerState::Crawl1;
state_timer.reset();
state_timer.start();
}
void WalkingState::toggle_walk_frame() {
if (current_state == PlayerState::Walk1) {
current_state = PlayerState::Walk2;
} else if (current_state == PlayerState::Walk2) {
current_state = PlayerState::Walk1;
}
}
CharacterFrame WalkingState::get_character_frame() const {
switch (current_state) {
case PlayerState::Walk1:
return CharacterFrame::Walk1;
case PlayerState::Walk2:
return CharacterFrame::Walk2;
case PlayerState::Crawl1:
return CharacterFrame::Crawl1;
default:
return CharacterFrame::Walk1;
}
}

View File

@@ -0,0 +1,27 @@
// src/game/state.h
#pragma once
#include "mbed.h"
#include "../assets/character_frames.h"
constexpr auto CRAWL_DURATION = 300ms;
enum class PlayerState { Walk1, Walk2, Crawl1 };
class WalkingState {
private:
PlayerState current_state = PlayerState::Walk1;
Timer state_timer;
public:
// MOVED FROM loop.cpp
// Update state (handles crawl timeout)
void update();
// State transitions
void start_crawl();
void toggle_walk_frame();
// Getters
PlayerState get_state() const { return current_state; }
CharacterFrame get_character_frame() const;
};

View File

@@ -0,0 +1,49 @@
// src/hardware/uart.cpp
#include "uart.h"
#include <cstring>
UartReader::UartReader(BufferedSerial &serial) : serial_port(serial) {
memset(rx_buffer, 0, sizeof(rx_buffer));
memset(message, 0, sizeof(message));
}
UartEvent UartReader::poll() {
bool changed = false;
bool triggered = false;
// cita spravu z uartu
if (serial_port.readable()) {
memset(rx_buffer, 0, sizeof(rx_buffer));
ssize_t num = serial_port.read(rx_buffer, sizeof(rx_buffer) - 1);
if (num > 0) {
strncpy(message, rx_buffer, sizeof(message) - 1);
message_active = true;
changed = true;
triggered = true;
}
}
// casovac na 1s zobrazenia spravy
if (!timer_started) {
msg_timer.start();
timer_started = true;
}
// po jednu sekundu sa sprava zobrazi
if (message_active && msg_timer.elapsed_time() > MESSAGE_DISPLAY_DURATION) {
message_active = false;
memset(message, 0, sizeof(message));
msg_timer.reset();
changed = true;
}
if (triggered)
return UartEvent::Triggered;
if (changed)
return UartEvent::MessageUpdate;
return UartEvent::NoChange;
}
const char* UartReader::get_message() const {
return message_active ? message : nullptr;
}

View File

@@ -0,0 +1,35 @@
// src/hardware/uart.h
#pragma once
#include "mbed.h"
#include <cstddef>
constexpr size_t UART_BUFFER_SIZE = 64;
constexpr auto MESSAGE_DISPLAY_DURATION = 1s;
enum class UartEvent {
NoChange = 0, // No new data
MessageUpdate = 1, // Message changed (received or expired)
Triggered = 2 // New message received (trigger action)
};
class UartReader {
private:
BufferedSerial &serial_port;
char rx_buffer[UART_BUFFER_SIZE];
char message[UART_BUFFER_SIZE];
bool message_active = false;
Timer msg_timer;
bool timer_started = false;
public:
UartReader(BufferedSerial &serial);
// Poll for UART events
UartEvent poll();
// Get current message (nullptr if no active message)
const char* get_message() const;
bool has_message() const { return message_active; }
};

26
semestralka1/src/main.cpp Normal file
View File

@@ -0,0 +1,26 @@
// main.cpp
#include "mbed.h"
#include "assets/background_frame.h"
#include "render/loop.h"
#define TARGET_TX_PIN USBTX
#define TARGET_RX_PIN USBRX
#define BAUD_RATE 460800
BufferedSerial serial_port(TARGET_TX_PIN, TARGET_RX_PIN, BAUD_RATE);
FileHandle *mbed::mbed_override_console(int fd)
{
return &serial_port;
}
DigitalOut led(LED1);
int main(void) {
serial_port.set_format(8, BufferedSerial::None, 1);
printf("Baud: %d, Format: 8-N-1\r\n", BAUD_RATE);
// Just call into render feature
render_loop(4);
}

View File

@@ -0,0 +1,35 @@
// src/render/background.cpp
#include "../assets/background_frame.h"
#include <cstdio>
#include <cstring>
void draw_mask(const char *unused_filename, int shift, const char *text) {
const int view_width = 90;
const int view_height = 16;
// Terminal clear + home
printf("\033[2J\033[H");
for (int i = 0; i < view_height && i < VIEW_HEIGHT; i++) {
const char *row = BACKGROUND_MASK[i];
int width = strlen(row);
if (width == 0) {
printf("\r\n");
continue;
}
int start = shift % width;
for (int j = 0; j < view_width; j++) {
printf("%c", row[(start + j) % width]);
}
printf("\r\n");
}
if (text && text[0] != '\0') {
printf("\r\n[RX] %s\r\n", text);
}
fflush(stdout);
}

View File

@@ -0,0 +1,6 @@
// src/render/background.h
#pragma once
// Draws the ASCII art background with optional message
void draw_mask(const char *unused_filename, int shift, const char *text = nullptr);

View File

@@ -0,0 +1,70 @@
// src/render/loop.cpp
#include "loop.h"
#include "../assets/background_frame.h"
#include "player_positioning.h"
#include "background.h"
#include "mbed.h"
#include "player.h"
#include "../game/state.h"
#include "../game/animation.h"
#include "../hardware/uart.h"
#include "../assets/character_frames.h"
extern BufferedSerial serial_port;
extern DigitalOut led;
// Constants
constexpr int PLAYER_X = 9;
constexpr int PLAYER_Y = 6;
void draw_mask(const char *unused_filename, int shift, const char *text);
void render_loop(int speed) {
WalkingState player_state;
AnimationController animation;
UartReader uart(serial_port);
CharacterPosition pos = {PLAYER_X, PLAYER_Y};
const char *bg_file = "background_dark_inverted.txt";
bool need_redraw = false;
while (true) {
need_redraw = false;
UartEvent uart_event = uart.poll();
if (uart_event == UartEvent::MessageUpdate) {
need_redraw = true;
}
if (uart_event == UartEvent::Triggered) {
// start crawl frame for x time
player_state.start_crawl();
need_redraw = true;
}
// Check if crawl duration expired
player_state.update();
if (animation.tick(speed)) {
need_redraw = true;
}
if (need_redraw) {
draw_mask(bg_file, animation.get_shift(), uart.get_message());
CharacterFrame player_frame = player_state.get_character_frame();
CharacterPosition draw_pos = get_aligned_frame_position(pos, player_frame);
draw_character(draw_pos.x, draw_pos.y, player_frame);
// alternate between frame 0 and 1 when not crawling
if (player_state.get_state() != PlayerState::Crawl1) {
player_state.toggle_walk_frame();
}
ThisThread::sleep_for(50ms);
}
ThisThread::sleep_for(25ms);
}
}

View File

@@ -0,0 +1,6 @@
// src/render/loop.h
#pragma once
// Runs the render loop: reads UART, animates, and draws output
void render_loop(int speed);

View File

@@ -0,0 +1,33 @@
// src/render/player.cpp
#include "player.h"
#include "../assets/character_frames.h"
#include <cstdio>
void draw_character(int x, int y, CharacterFrame frame) {
int frame_index = static_cast<int>(frame);
if (frame_index < 0 || frame_index >= CHARACTER_FRAME_COUNT)
frame_index = 0; // fallback safety
const char **character = PLAYER_FRAMES[frame_index];
int character_height = 0;
switch (frame) {
case CharacterFrame::Walk1:
character_height = CHARACTER_HEIGHT_1;
break;
case CharacterFrame::Walk2:
character_height = CHARACTER_HEIGHT_2;
break;
case CharacterFrame::Crawl1:
character_height = CHARACTER_HEIGHT_3;
break;
default:
character_height = CHARACTER_HEIGHT_1;
break;
}
for (int i = 0; i < character_height; i++) {
printf("\033[%d;%dH%s", y + i + 1, x + 1, character[i]);
}
fflush(stdout);
}

View File

@@ -0,0 +1,6 @@
// src/render/player.h
#pragma once
#include "../assets/character_frames.h"
// Draw the player object starting at given (x, y)
void draw_character(int x, int y, CharacterFrame frame);

View File

@@ -0,0 +1,25 @@
// src/render/player_positioning.cpp
#include "player_positioning.h"
#include "../assets/background_frame.h"
#include <cstdio>
// Convert a pivot coordinate (bottom-left) to the top-left draw position
CharacterPosition get_aligned_frame_position(CharacterPosition base, CharacterFrame frame) {
int frame_index = static_cast<int>(frame);
if (frame_index < 0 || frame_index >= CHARACTER_FRAME_COUNT)
frame_index = 0;
int character_height = 0;
if (frame_index == 0)
character_height = CHARACTER_HEIGHT_1;
else if (frame_index == 1)
character_height = CHARACTER_HEIGHT_2;
else
character_height = CHARACTER_HEIGHT_3;
CharacterPosition draw_pos;
draw_pos.x = base.x;
draw_pos.y = (VIEW_HEIGHT - base.y) - character_height;
return draw_pos;
}

View File

@@ -0,0 +1,12 @@
// src/render/player_positioning.h
#pragma once
#include "../assets/background_frame.h"
#include "../assets/character_frames.h"
struct CharacterPosition {
int x;
int y;
};
// Calculates drawing position relative to bottom-left pivot
CharacterPosition get_aligned_frame_position(CharacterPosition base, CharacterFrame frame);