new docs and new readme

This commit is contained in:
ZennDev1337 2023-10-11 17:42:27 +02:00
parent a54fa90edc
commit a2889273dd
1588 changed files with 3011 additions and 23670 deletions

162
README.md
View file

@ -25,14 +25,14 @@ git clone https://github.com/ZennDev1337/Rust-for-Arduboy
Install [PlatformIO Core](https://docs.platformio.org/en/latest/core/installation/methods/pypi.html) on your system.
I recommend the pip install if you don't want to configure a new path variable for pio.
Otherwise you will know how to do that.
Otherwise, you will know how to do that.
The rust-analyzer will complain about a missing test crate to fix this
add the following rule to the lsp settings :
```json
{
"rust-analyzer.checkOnSave.allTargets": false
"rust-analyzer.checkOnSave.allTargets": false
}
```
@ -47,7 +47,7 @@ normal Arduboy C project.
You can find the Docs here:
- [arduboy-rust Crate Docs](https://zenndev1337.github.io/Rust-for-Arduboy/)
- [arduboy-rust Crate Docs](https://zenndev1337.github.io/Rust-for-Arduboy/)
or you can use the following command to open the arduboy-rust Crate docs locally
@ -64,14 +64,14 @@ I will from time to time also upload my projects to the Example folder so you ha
## Usage of the run tool
**Both run scripts** (only works if you use the given folder structure)
**The run script** only work if you use the given folder structure!
requirements:
- Python3.11 or higher
- [PlatformIO Core](https://docs.platformio.org/en/latest/core/installation/methods/pypi.html) must be installed
- The Arduboy must be plugged in
- You are in the root directory of this project
- Python3.11 or higher
- [PlatformIO Core](https://docs.platformio.org/en/latest/core/installation/methods/pypi.html) must be installed
- The Arduboy must be plugged in
- You are in the root directory of this project
All builded `.hex` files are saved inside of `arduboy-rust/Wrapper-Project/build/<GAMENAME>.hex` after you uploaded them
to the Arduboy.
@ -81,43 +81,58 @@ To upload your own game to the Arduboy use:
Linux:
```bash
./run <Project_Name>
python ./run.py <Project_Name>
```
Windows:
```ps1
.\run.bat <Project_Name>
python .\run.py <Project_Name>
```
All commands:
```
Usage build and upload Project:
run.py list Get a list of all Projects
run.py new <Project-Name> Create a new game in the Project folder
run.py <Project-Name> For uploading a game
Usage FX-Data build and upload:
run.py fxbuild <Project-Name> Build your fxdata
run.py fxupload <Project-Name> Upload your fxdata
run.py fxall <Project-Name> Build and Upload your fxdata
and the game in one step
```
## List of all the Example Games:
### ZennDev1337 Games
- drboy
- drboy
### Rust Games
- snake
- rustacean
- snake
- rustacean
### The demo games / tutorials from the official Arduboy forum [Rewritten in Rust]
- [Make Your Own Arduboy Game: Part 1 - Setting Up Your Computer](https://community.arduboy.com/t/make-your-own-arduboy-game-part-1-setting-up-your-computer/7924/1)
- [demo2] [Make Your Own Arduboy Game: Part 2 - Printing Text](https://community.arduboy.com/t/make-your-own-arduboy-game-part-2-printing-text/7925)
- [demo3] [Make Your Own Arduboy Game: Part 3 - Storing Data & Loops](https://community.arduboy.com/t/make-your-own-arduboy-game-part-3-storing-data-loops/7926)
- [demo4] [Make Your Own Arduboy Game: Part 4 - Questions & Button Input](https://community.arduboy.com/t/make-your-own-arduboy-game-part-4-questions-button-input/7927)
- [demo5] [Make Your Own Arduboy Game: Part 5 - Your First Game!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-5-your-first-game/7928)
- [demo6] [Make Your Own Arduboy Game: Part 6 - Graphics!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-6-graphics/7929)
Link for the [ZennDev1337 Tile Converter](https://zenndev1337.github.io/Rust-for-Arduboy/tile-converter.html)
- [demo7] [Make Your Own Arduboy Game: Part 7 - Make Pong From Scratch!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-7-make-pong-from-scratch/7930)
- Prepare for
demo9 [Make Your Own Arduboy Game: Part 8 - Starting DinoSmasher](https://community.arduboy.com/t/make-your-own-arduboy-game-part-8-starting-dinosmasher/7932)
- [demo9] [Make Your Own Arduboy Game: Part 9 - Mapping DinoSmasher](https://community.arduboy.com/t/make-your-own-arduboy-game-part-9-mapping-dinosmasher/7931)
- [eeprom] [Help, Im struggling with EEPROM!](https://community.arduboy.com/t/help-im-struggling-with-eeprom/7178)
- [eeprom-byte] [Help, Im struggling with EEPROM!](https://community.arduboy.com/t/help-im-struggling-with-eeprom/7178)
- [progmem] Usage of the big 28'000 Bytes flash memory for Bitmaps Sound sequeces and Text.
- [tone] [ArduboyTonesTest](https://github.com/MLXXXp/ArduboyTones/blob/master/examples/ArduboyTonesTest/ArduboyTonesTest.ino)
- [Make Your Own Arduboy Game: Part 1 - Setting Up Your Computer](https://community.arduboy.com/t/make-your-own-arduboy-game-part-1-setting-up-your-computer/7924/1)
- [demo2] [Make Your Own Arduboy Game: Part 2 - Printing Text](https://community.arduboy.com/t/make-your-own-arduboy-game-part-2-printing-text/7925)
- [demo3] [Make Your Own Arduboy Game: Part 3 - Storing Data & Loops](https://community.arduboy.com/t/make-your-own-arduboy-game-part-3-storing-data-loops/7926)
- [demo4] [Make Your Own Arduboy Game: Part 4 - Questions & Button Input](https://community.arduboy.com/t/make-your-own-arduboy-game-part-4-questions-button-input/7927)
- [demo5] [Make Your Own Arduboy Game: Part 5 - Your First Game!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-5-your-first-game/7928)
- [demo6] [Make Your Own Arduboy Game: Part 6 - Graphics!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-6-graphics/7929)
Link for the [ZennDev1337 Tile Converter](https://zenndev1337.github.io/Rust-for-Arduboy/tile-converter.html)
- [demo7] [Make Your Own Arduboy Game: Part 7 - Make Pong From Scratch!](https://community.arduboy.com/t/make-your-own-arduboy-game-part-7-make-pong-from-scratch/7930)
- Prepare for
demo9 [Make Your Own Arduboy Game: Part 8 - Starting DinoSmasher](https://community.arduboy.com/t/make-your-own-arduboy-game-part-8-starting-dinosmasher/7932)
- [demo9] [Make Your Own Arduboy Game: Part 9 - Mapping DinoSmasher](https://community.arduboy.com/t/make-your-own-arduboy-game-part-9-mapping-dinosmasher/7931)
- [eeprom] [Help, Im struggling with EEPROM!](https://community.arduboy.com/t/help-im-struggling-with-eeprom/7178)
- [eeprom-byte] [Help, Im struggling with EEPROM!](https://community.arduboy.com/t/help-im-struggling-with-eeprom/7178)
- [progmem] Usage of the big 28'000 Bytes flash memory for Bitmaps Sound sequeces and Text.
- [tone] [ArduboyTonesTest](https://github.com/MLXXXp/ArduboyTones/blob/master/examples/ArduboyTonesTest/ArduboyTonesTest.ino)
## Usage of the FX Chip
@ -136,6 +151,7 @@ run Commands:
```
|Project_Dir
->fxdata
->fxdata.txt
->src
->lib.rs
>cargo.toml
@ -147,28 +163,28 @@ See the examples in `Examples/ArduboyFX`.
More information:
- [Arduboy-Python-Utilities by MrBlinky](https://github.com/MrBlinky/Arduboy-Python-Utilities)
- [Arduboy-Python-Utilities by MrBlinky](https://github.com/MrBlinky/Arduboy-Python-Utilities)
run Commands:
- `fxbuild` is used to build the fxdata.dat file.
- `fxupload` is used to upload the fxdata.dat file.
- `fxall` is used to build and upload the fxdata.dat file and build and upload the game all in one step.
- `fxbuild` is used to build the fxdata.dat file.
- `fxupload` is used to upload the fxdata.dat file.
- `fxall` is used to build and upload the fxdata.dat file and build and upload the game all in one step.
Linux:
```bash
./run fxbuild <Project_Name>
./run fxupload <Project_Name>
./run fxall <Project_Name>
python ./run.py fxbuild <Project_Name>
python ./run.py fxupload <Project_Name>
python ./run.py fxall <Project_Name>
```
Windows:
```ps1
.\run.bat fxbuild <Project_Name>
.\run.bat fxupload <Project_Name>
.\run.bat fxall <Project_Name>
python .\run.py fxbuild <Project_Name>
python .\run.py fxupload <Project_Name>
python .\run.py fxall <Project_Name>
```
### Convert the fxdata.h file to Rust
@ -179,76 +195,20 @@ Windows:
In the root of the repo use the command:
(Don't use "-" in the name because of a cargo feature that takes the "-" and mixes sometimes with a "\_". You will have
some weird behavior with the run tool.)
```bash
cargo new --vcs=none --lib ./Project/newproject
```
Then open the Cargo.toml in your new project and add the following dependencies and settings:
```toml
[lib]
crate-type = ["staticlib"]
[dependencies]
arduboy-rust = { path = "../../arduboy-rust" }
```
Next jump in your lib.rs file and add the following:
```rust
#![no_std]
#![allow(non_upper_case_globals)]
//Include the Arduboy Library
#[allow(unused_imports)]
use arduboy_rust::prelude::*;
#[allow(dead_code)]
const arduboy: Arduboy2 = Arduboy2::new();
// Progmem data
// dynamic ram variables
// The setup() function runs once when you turn your Arduboy on
#[no_mangle]
pub unsafe extern "C" fn setup() {
// put your setup code here, to run once:
}
// The loop() function repeats forever after setup() is done
#[no_mangle]
#[export_name = "loop"]
pub unsafe extern "C" fn loop_() {
// put your main code here, to run repeatedly:
}
```
Now the last step. Go in the Cargo.toml in the root directory and add your project:
```toml
[workspace]
members = [
#{All other Projects...}
"Project/newproject",
]
resolver = "2"
python ./run.py new <Project-Name>
```
To run and upload your game use the run tool
```bash
# Linux
./run newproject
python ./run.py <Project-Name>
```
```ps1
# Windows
.\run.bat newproject
python .\run.py <Project-Name>
```
## Creating and building an Arduboy crate [Outdated]
@ -273,10 +233,10 @@ that inspired me to try Rust on the Arduboy.
You can license it under either one of those licenses:
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
Whichever you may prefer.