-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6265bed
commit 37844a0
Showing
28 changed files
with
1,952 additions
and
1,952 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,97 +1,97 @@ | ||
CC = arm-linux-gnueabihf-gcc | ||
CXX = arm-linux-gnueabihf-g++ | ||
|
||
CPPFLAGS = -I . | ||
CFLAGS =-g -std=gnu99 -O1 -Wall | ||
CXXFLAGS = -g -std=gnu++11 -O1 -Wall | ||
LDFLAGS = -lrt -lpthread -pthread | ||
|
||
SOURCES = apoman.c mzapo_phys.c mzapo_parlcd.c update_peripherals.c text_fb.c map_from_template.c map_to_fb.c draw_shapes.c | ||
SOURCES += terminal_read.c pacman.c ghost.c | ||
SOURCES += font_prop14x16.c font_rom8x16.c | ||
SOURCES += map_circles.c map_conch.c map_star.c | ||
SOURCES += menu_utilities.c | ||
SOURCES += game.c | ||
TARGET_EXE = apoman | ||
TARGET_IP ?= 192.168.202.203 | ||
ifeq ($(TARGET_IP),) | ||
ifneq ($(filter debug run,$(MAKECMDGOALS)),) | ||
$(warning The target IP address is not set) | ||
$(warning Run as "TARGET_IP=192.168.202.xxx make run" or modify Makefile) | ||
#TARGET_IP ?= 192.168.202.203 | ||
endif | ||
endif | ||
TARGET_DIR ?= /tmp/$(shell whoami) | ||
TARGET_USER ?= root | ||
# for use from Eduroam network use TARGET_IP=localhost and enable next line | ||
#SSH_OPTIONS=-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "Port=2222" | ||
#SSH_OPTIONS=-i /opt/zynq/ssh-connect/mzapo-root-key | ||
# SSH_OPTIONS= -i ~/.ssh/mzapo-root-key -o '[email protected]' | ||
SSH_OPTIONS= -i ~/.ssh/mzapo-root-key -o '[email protected]' | ||
|
||
OBJECTS += $(filter %.o,$(SOURCES:%.c=%.o)) | ||
OBJECTS += $(filter %.o,$(SOURCES:%.cpp=%.o)) | ||
|
||
#$(warning OBJECTS=$(OBJECTS)) | ||
|
||
ifeq ($(filter %.cpp,$(SOURCES)),) | ||
LINKER = $(CC) | ||
LDFLAGS += $(CFLAGS) $(CPPFLAGS) | ||
else | ||
LINKER = $(CXX) | ||
LDFLAGS += $(CXXFLAGS) $(CPPFLAGS) | ||
endif | ||
|
||
%.o:%.c | ||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< | ||
|
||
%.o:%.cpp | ||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< | ||
|
||
all: $(TARGET_EXE) | ||
|
||
$(TARGET_EXE): $(OBJECTS) | ||
$(LINKER) $(LDFLAGS) -L. $^ -o $@ $(LDLIBS) | ||
|
||
.PHONY : dep all run copy-executable debug | ||
|
||
dep: depend | ||
|
||
depend: $(SOURCES) *.h | ||
echo '# autogenerated dependencies' > depend | ||
ifneq ($(filter %.c,$(SOURCES)),) | ||
$(CC) $(CFLAGS) $(CPPFLAGS) -w -E -M $(filter %.c,$(SOURCES)) \ | ||
>> depend | ||
endif | ||
ifneq ($(filter %.cpp,$(SOURCES)),) | ||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -w -E -M $(filter %.cpp,$(SOURCES)) \ | ||
>> depend | ||
endif | ||
|
||
clean: | ||
rm -f *.o *.a $(OBJECTS) $(TARGET_EXE) connect.gdb depend | ||
|
||
copy-executable: $(TARGET_EXE) | ||
ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) killall gdbserver 1>/dev/null 2>/dev/null || true | ||
ssh $(SSH_OPTIONS) $(TARGET_USER)@$(TARGET_IP) mkdir -p $(TARGET_DIR) | ||
scp $(SSH_OPTIONS) $(TARGET_EXE) $(TARGET_USER)@$(TARGET_IP):$(TARGET_DIR)/$(TARGET_EXE) | ||
|
||
run: copy-executable $(TARGET_EXE) | ||
ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) $(TARGET_DIR)/$(TARGET_EXE) | ||
|
||
ifneq ($(filter -o ProxyJump=,$(SSH_OPTIONS)),) | ||
SSH_GDB_PORT_FORWARD=-L 12345:127.0.0.1:12345 | ||
TARGET_GDB_PORT=127.0.0.1:12345 | ||
else | ||
TARGET_GDB_PORT=$(TARGET_IP):12345 | ||
endif | ||
|
||
debug: copy-executable $(TARGET_EXE) | ||
xterm -e ssh $(SSH_OPTIONS) $(SSH_GDB_PORT_FORWARD) -t $(TARGET_USER)@$(TARGET_IP) gdbserver :12345 $(TARGET_DIR)/$(TARGET_EXE) & | ||
sleep 2 | ||
echo >connect.gdb "target extended-remote $(TARGET_GDB_PORT)" | ||
echo >>connect.gdb "b main" | ||
echo >>connect.gdb "c" | ||
ddd --debugger gdb-multiarch -x connect.gdb $(TARGET_EXE) | ||
|
||
-include depend | ||
CC = arm-linux-gnueabihf-gcc | ||
CXX = arm-linux-gnueabihf-g++ | ||
|
||
CPPFLAGS = -I . | ||
CFLAGS =-g -std=gnu99 -O1 -Wall | ||
CXXFLAGS = -g -std=gnu++11 -O1 -Wall | ||
LDFLAGS = -lrt -lpthread -pthread | ||
|
||
SOURCES = apoman.c mzapo_phys.c mzapo_parlcd.c update_peripherals.c text_fb.c map_from_template.c map_to_fb.c draw_shapes.c | ||
SOURCES += terminal_read.c pacman.c ghost.c | ||
SOURCES += font_prop14x16.c font_rom8x16.c | ||
SOURCES += map_circles.c map_conch.c map_star.c | ||
SOURCES += menu_utilities.c | ||
SOURCES += game.c | ||
TARGET_EXE = apoman | ||
TARGET_IP ?= 192.168.202.203 | ||
ifeq ($(TARGET_IP),) | ||
ifneq ($(filter debug run,$(MAKECMDGOALS)),) | ||
$(warning The target IP address is not set) | ||
$(warning Run as "TARGET_IP=192.168.202.xxx make run" or modify Makefile) | ||
#TARGET_IP ?= 192.168.202.203 | ||
endif | ||
endif | ||
TARGET_DIR ?= /tmp/$(shell whoami) | ||
TARGET_USER ?= root | ||
# for use from Eduroam network use TARGET_IP=localhost and enable next line | ||
#SSH_OPTIONS=-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "Port=2222" | ||
#SSH_OPTIONS=-i /opt/zynq/ssh-connect/mzapo-root-key | ||
# SSH_OPTIONS= -i ~/.ssh/mzapo-root-key -o '[email protected]' | ||
SSH_OPTIONS= -i ~/.ssh/mzapo-root-key -o '[email protected]' | ||
|
||
OBJECTS += $(filter %.o,$(SOURCES:%.c=%.o)) | ||
OBJECTS += $(filter %.o,$(SOURCES:%.cpp=%.o)) | ||
|
||
#$(warning OBJECTS=$(OBJECTS)) | ||
|
||
ifeq ($(filter %.cpp,$(SOURCES)),) | ||
LINKER = $(CC) | ||
LDFLAGS += $(CFLAGS) $(CPPFLAGS) | ||
else | ||
LINKER = $(CXX) | ||
LDFLAGS += $(CXXFLAGS) $(CPPFLAGS) | ||
endif | ||
|
||
%.o:%.c | ||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< | ||
|
||
%.o:%.cpp | ||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< | ||
|
||
all: $(TARGET_EXE) | ||
|
||
$(TARGET_EXE): $(OBJECTS) | ||
$(LINKER) $(LDFLAGS) -L. $^ -o $@ $(LDLIBS) | ||
|
||
.PHONY : dep all run copy-executable debug | ||
|
||
dep: depend | ||
|
||
depend: $(SOURCES) *.h | ||
echo '# autogenerated dependencies' > depend | ||
ifneq ($(filter %.c,$(SOURCES)),) | ||
$(CC) $(CFLAGS) $(CPPFLAGS) -w -E -M $(filter %.c,$(SOURCES)) \ | ||
>> depend | ||
endif | ||
ifneq ($(filter %.cpp,$(SOURCES)),) | ||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -w -E -M $(filter %.cpp,$(SOURCES)) \ | ||
>> depend | ||
endif | ||
|
||
clean: | ||
rm -f *.o *.a $(OBJECTS) $(TARGET_EXE) connect.gdb depend | ||
|
||
copy-executable: $(TARGET_EXE) | ||
ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) killall gdbserver 1>/dev/null 2>/dev/null || true | ||
ssh $(SSH_OPTIONS) $(TARGET_USER)@$(TARGET_IP) mkdir -p $(TARGET_DIR) | ||
scp $(SSH_OPTIONS) $(TARGET_EXE) $(TARGET_USER)@$(TARGET_IP):$(TARGET_DIR)/$(TARGET_EXE) | ||
|
||
run: copy-executable $(TARGET_EXE) | ||
ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) $(TARGET_DIR)/$(TARGET_EXE) | ||
|
||
ifneq ($(filter -o ProxyJump=,$(SSH_OPTIONS)),) | ||
SSH_GDB_PORT_FORWARD=-L 12345:127.0.0.1:12345 | ||
TARGET_GDB_PORT=127.0.0.1:12345 | ||
else | ||
TARGET_GDB_PORT=$(TARGET_IP):12345 | ||
endif | ||
|
||
debug: copy-executable $(TARGET_EXE) | ||
xterm -e ssh $(SSH_OPTIONS) $(SSH_GDB_PORT_FORWARD) -t $(TARGET_USER)@$(TARGET_IP) gdbserver :12345 $(TARGET_DIR)/$(TARGET_EXE) & | ||
sleep 2 | ||
echo >connect.gdb "target extended-remote $(TARGET_GDB_PORT)" | ||
echo >>connect.gdb "b main" | ||
echo >>connect.gdb "c" | ||
ddd --debugger gdb-multiarch -x connect.gdb $(TARGET_EXE) | ||
|
||
-include depend |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,36 @@ | ||
# Semestrální práce na APO | ||
|
||
## Introdukce | ||
Cílem této semstrální práce je vytvořit hru Pac-Man, kterou bude možné hrát na desce MzAPO a ovládat pomocí okolních periferií. | ||
|
||
Průběh naší práce je možné sledovat v repozitáři: https://gitlab.fel.cvut.cz/kucerp28/apo\_semestralka | ||
|
||
## Použité periferie a jejich funkce | ||
|
||
- Výstupní řádka led bude při spuštěné hře indikovat počet životů pacmana | ||
- RGB led budou svítit zeleně jasem vypočítaným z počtu snězených kostiček, v případě režimu, kdy jsou duchové zranitelní bude blikat modře. | ||
- Vstupem hry bude terminál v raw režimu, který bude ovládat směr pacmana, respektive navigaci v textovém menu. | ||
- Po sklonční hry přípravek vypíše finální skóre a statistiky na terminál | ||
## Stavy | ||
|
||
### Inicializace hry | ||
|
||
Po spuštění hry se objeví textové menu, které bude možné ovládat pomocí kláves wsad ze sériového portu. Bude zde možnost vybrat mapu z nabídky, nastavit počet duchů a počet životů, se kterými pacman začíná. | ||
|
||
### Průběh hry | ||
|
||
Samotná hra se bude ovládat pomocí znaků wsad, stejně jako textové menu. Pacman pobíhá po desce s cílem sníst co nejvíce "penízků" a zároveň se nenechat sežrat duchy. Pokud sní speciální peníz, spustí se na určitou dobu mód, v kterém bude moci požírat duchy, za což získá další body. | ||
|
||
V průběhu hry je možno sledovat mód, ve kterém se hra nachází na tvaru duchů a stavu RGB LED. Počet zbývajících životů je indikován na výstupní led řádce jako počet shluků svítících led. | ||
|
||
### Závěr hry | ||
|
||
Hra může být ukončena 3 způsoby: | ||
- Výhrou Pacmana. V takovém případě se vypíše skóre hry na terminál a otevře se menu nastavení | ||
- Prohrou Pacmana. Ta vyvolá stejný proces jako výhra. | ||
- Přerušením hry pomocí stisknutí klávesy q. To hráče odkáže do spouštěcího menu. | ||
|
||
## Kompilace | ||
``` bash | ||
make TARGET_IP=192.168.202.xx run | ||
# Semestrální práce na APO | ||
|
||
## Introdukce | ||
Cílem této semstrální práce je vytvořit hru Pac-Man, kterou bude možné hrát na desce MzAPO a ovládat pomocí okolních periferií. | ||
|
||
Průběh naší práce je možné sledovat v repozitáři: https://gitlab.fel.cvut.cz/kucerp28/apo\_semestralka | ||
|
||
## Použité periferie a jejich funkce | ||
|
||
- Výstupní řádka led bude při spuštěné hře indikovat počet životů pacmana | ||
- RGB led budou svítit zeleně jasem vypočítaným z počtu snězených kostiček, v případě režimu, kdy jsou duchové zranitelní bude blikat modře. | ||
- Vstupem hry bude terminál v raw režimu, který bude ovládat směr pacmana, respektive navigaci v textovém menu. | ||
- Po sklonční hry přípravek vypíše finální skóre a statistiky na terminál | ||
## Stavy | ||
|
||
### Inicializace hry | ||
|
||
Po spuštění hry se objeví textové menu, které bude možné ovládat pomocí kláves wsad ze sériového portu. Bude zde možnost vybrat mapu z nabídky, nastavit počet duchů a počet životů, se kterými pacman začíná. | ||
|
||
### Průběh hry | ||
|
||
Samotná hra se bude ovládat pomocí znaků wsad, stejně jako textové menu. Pacman pobíhá po desce s cílem sníst co nejvíce "penízků" a zároveň se nenechat sežrat duchy. Pokud sní speciální peníz, spustí se na určitou dobu mód, v kterém bude moci požírat duchy, za což získá další body. | ||
|
||
V průběhu hry je možno sledovat mód, ve kterém se hra nachází na tvaru duchů a stavu RGB LED. Počet zbývajících životů je indikován na výstupní led řádce jako počet shluků svítících led. | ||
|
||
### Závěr hry | ||
|
||
Hra může být ukončena 3 způsoby: | ||
- Výhrou Pacmana. V takovém případě se vypíše skóre hry na terminál a otevře se menu nastavení | ||
- Prohrou Pacmana. Ta vyvolá stejný proces jako výhra. | ||
- Přerušením hry pomocí stisknutí klávesy q. To hráče odkáže do spouštěcího menu. | ||
|
||
## Kompilace | ||
``` bash | ||
make TARGET_IP=192.168.202.xx run | ||
``` |
Oops, something went wrong.