blob: 7c5d576d3b67af1f354f28f74482d48315862e78 [file] [log] [blame] [view] [edit]
# Building & Running On 32Blit <!-- omit in toc -->
These instructions assume a basic familiarity with the Linux command-line and with compiling software from source.
- [Prerequisites](#prerequisites)
- [Examples](#examples)
- [Building An Example](#building-an-example)
- [Uploading An Example](#uploading-an-example)
- [Via mass-storage mode](#via-mass-storage-mode)
- [With make](#with-make)
- [With the 32blit tool](#with-the-32blit-tool)
- [Your Own Projects](#your-own-projects)
- [Running games](#running-games)
- [Launching](#launching)
- [Exiting](#exiting)
- [Troubleshooting](#troubleshooting)
- [Flasher Can't Find 32Blit Port](#flasher-cant-find-32blit-port)
- [CMake Errors](#cmake-errors)
# Prerequisites
Make sure you've prepared your 32Blit by following the instructions in:
* [Building & Flashing The 32Blit Firmware](32Blit-Firmware.md#building--flashing-the-32blit-firmware)
You should also make sure you have a cross-compile environment set up on your computer, refer to the relevant documentation below:
* [Windows](Windows-WSL.md)
* [Linux](Linux.md)
* [macOS](macOS.md)
* [ChromeOS](ChromeOS.md)
## Examples
### Building An Example
To build an example for 32blit using `arm-none-eabi-gcc` you must prepare the Makefile with CMake using the provided toolchain file.
From the root of the repository:
```
mkdir build.stm32
cd build.stm32
cmake .. -DCMAKE_TOOLCHAIN_FILE=../32blit.toolchain
```
And then run `make examplename` to build an example.
The result of the build will be a `.blit`, `.bin`, `.hex` and `.elf` file in the relevant example directory.
For example you might type `make raycaster` which will give you `examples/raycaster/raycaster.blit`.
### Uploading An Example
#### Via mass-storage mode
If your 32blit is connected to your computer with a USB cable, you can switch into mass-storage mode and copy files over as if it were a USB storage device.
![press the Home button](resources/enter-mass-storage-mode.png)
A "USB Drive" device should pop up, and the text "Mass Storage Mode (MSC Mounted)" will show on your 32blit's screen.
Once you're done copying files, eject the drive and your 32blit should resume.
#### With make
With your device out of DFU mode (displaying the game list), you can now run:
```
make [example-name].flash
```
For example you can:
```
make logo.flash
```
To build, flash and run the `logo` example.
#### With the 32blit tool
Alternatively, you can use the tool to flash a game directly:
```
32blit install filename.blit
```
Or save it to your SD card:
```
32blit install filename.blit /
```
(If `32blit` is not found you can use `python3 -m ttblit` instead)
## Your Own Projects
You can build a project based on the boilerplate (https://github.com/32blit/32blit-boilerplate) by running:
```
mkdir build.stm32
cd build.stm32
cmake .. -D32BLIT_DIR="/path/to/32blit/repo" -DCMAKE_TOOLCHAIN_FILE=/path/to/32blit/repo/32blit.toolchain
make
```
## Running games
### Launching
Just select the game you want to launch from the menu screen and press A.
### Exiting
You can either press Menu and select "Exit Game" or long-press Menu to exit.
![long press menu to exit a game](resources/exit-game.png)
# Troubleshooting
### Flasher Can't Find 32Blit Port
If `make example.flash` fails with `Unable to find 32Blit`, re-run `cmake` with `-DFLASH_PORT=[PORT PATH]`.
Port-detection does not work if your device is in DFU mode. Either reset it to get it out, or it it's stuck in DFU mode (or just boots into a black screen), you may need to reflash the firmware.
### CMake Errors
If you see `cannot create target because another target with the same name already exists` you've probably run `cmake ..` in the wrong directory (the project directory rather than the build directory), you should remove all but your project files and `cmake ..` again from the build directory.