Spooky Maze is simple game where ghost is located in the maze. The goal is to collect 100 coins. The ghost can find artifact "Walker" which allows him to pass throght the wall for limited period of time. The ghost can use dynamite to clear wall in the vicinity. The ghost can use also Teleport spell to move to random place in the maze. The Teleport spell requires some time to recharge. There are some not friendly spirits running around the maze, when collision occurs the ghost is teleported and loses five coins which are then send randomly back to the maze.
Binaries are available in GitHub Releases.
Binaries can be flashed by:
espflash write-bin 0x0 spooky-maze-esp-wrover-kit.bin
Recommendation: Open only sub-directory with specific target with specific toolchain in CLion, because only one toolchain is supported for resolving code dependencies. Opening whole workspace works, just some code dependencies might not be resolved. This is also limitation of cargo, which supports only one toolchain per build.
Install espflash
which is required to flash and monitor the app on Embedded Device:
cargo install espflash
cargo install cargo-espflash
Enter the directory with project and build it:
cd esp-wrover-kit
cargo build --release
The script builds all possible targets: support/ci/build-esp32-firmware.sh
Open subdirectory with target in VS Code with installed Wokwi Extension. Select Wokwi: Start Simulator
.
cd wasm
npm install
npm run serve
Open in web browser: https://localhost:8443.
Note: https is required for access to accelerometer data - https://w3c.github.io/deviceorientation/#security-and-privacy . It's possible to run the app without accelerometer on http.
Each directory contains implementation specific for the HW.
Overview:
Name | Chip | Display | Controls | PMU | GPIO Expander |
---|---|---|---|---|---|
esp-wrover-kit | esp32 | ili9341 | 6 push-button controls, separate PINs | ||
esp32-c3-devkit-rust | esp32-c3 | st7789 | icm42670 accelerometer | ||
esp32-c3-lcdkit | esp32-c3 | gc9a01 | rotary encoder | ||
esp32-c6-devkit | esp32-c6 | ili9341 | resistor ladder with push buttons | ||
esp32-s2-kaluga | esp32-s2 | ili9341 | resistor ladder with push buttons | ||
esp32-s3-box | esp32-s3 | ili9342c | icm42670 accelerometer | ||
esp32-s3-box-lite | esp32-s3 | st7789 | no controls | ||
esp32-s3-usb-otg | esp32-s3 | st7789 | 5 push-buttons on the board | ||
m5stack-core2 | esp32 | ili9341 | mpu6886 accelerometer | axp192 | |
m5stack-cores32 | esp32-s3 | ili9342c | bmi279 accelerometer | axp2101 | aw9523 |
m5stack-fire | esp32 | ili9342c | mpu9250 accelerometer |
Control: IMU
cd esp32-s3-box
cargo run --release --monitor
Control: IMU
cd esp32-c3-devkit-rust
cargo run --release --monitor
Control: keyboard
press arrows or W,A,S,D to move the character
press Enter to teleport
macOS prerequisites:
brew install SDL2
export LIBRARY_PATH="$LIBRARY_PATH:$(brew --prefix)/lib"
OpenSUSE Linux prerequisites:
sudo zypper install SDL2-devel
run:
cd desktop
cargo run
Control: buttons
cd esp32-s3-usb-otg
cargo run --release --monitor
HW: https://docs.makerfactory.io/m5stack/core/fire/
Control: MPU-9250, buttons
cd m5stack-fire
cargo run --release --monitor
cd m5stack-fire
./run-wokwi.sh
cd m5stack-fire
./run-wokwi.sh
Preview: install VS Code Wokwi plugin (private beta available on request)
cd m5stack-fire
cargo build --release --no-default-features --features "wokwi"
Press F1, select Wokwi: Start simulation
HW: https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit?variant=35960244109476
Control: MPU6886
cd m5stack-core2
cargo run --release --monitor
Control: buttons (partialy implemented based on of https://github.com/espressif/esp-bsp/blob/master/esp32_s2_kaluga_kit/esp32_s2_kaluga_kit.c#L59)
cd esp32-s2-kaluga
cargo run --release --monitor
Note for older version 1.2 - GPIO6 is used to control backlight.
Important: Requires espflash 2.x
- install with cargo install espflash --git https://github.com/esp-rs/espflash.git
Controls: not implemented
cd esp32-c6-devkit
cargo espflash flash --release --monitor
Control: 6 push buttons
cd esp-wrover-kit
cargo run --release --monitor
Following steps are useful for IDE integration, so that IDE can recognize which is your current target and fature set.
Check target
configurad in the file .cargo/config.toml
.
It should be one of following values:
target = "xtensa-esp32-none-elf"
target = "xtensa-esp32s2-none-elf"
target = "xtensa-esp32s3-none-elf"
target = "riscv32imac-unknown-none-elf"
If no value is selected, make sure to specify target on command line.
Check default features
in Cargo.toml
. Make sure that default set contains your board and display combinations.
If no value is selected, make sure to specify features on command line.