原理图参考这个 stm32_arduboy_V1.0
介绍视频参考这个: stm32_arduboy_V1.0游戏机 - 介绍
安装必要的软件包
$ sudo apt-get install build-essential git gdb-multiarch
从链接下载gcc,找gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 ,解压到/opt
从链接下载openocd,找xpack-openocd-0.11.0-5-linux-x64.tar.gz ,解压到/opt
以编译ARDUBREAKOUT为例
$ export PATH=$PATH:/your/path/gcc-arm-none-eabi-10.3-2021.10/bin
$ make APP_ARDUBREAKOUT=1
$ /your/path/xpack-openocd-0.12.0-1/bin/openocd -f config/jlink.cfg -f config/stm32f1x.cfg \
-c init -c "reset halt" -c wait_halt \
-c "flash write_image erase build/Arduboy2_stm32f103c8t6.bin 0x08000000" \
-c reset -c shutdown
$ /your/path/xpack-openocd-0.12.0-1/bin/openocd -f config/jlink.cfg -f config/stm32f1x.cfg
$ gdb-multiarch build/Arduboy2_stm32f103c8t6.elf
(gdb) tar ext:3333
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| BeepDemo | ![]() |
来源: 链接,commit 编译方法: make APP_BEEPDEMO=1 |
可正常运行 |
| Buttons | ![]() |
来源: 链接,commit 编译方法: make APP_BUTTONS=1 |
可正常运行 |
| FontDemo | ![]() |
来源: 链接,commit 编译方法: make APP_FONTDEMO=1 |
可正常运行 |
| HelloWorld | ![]() |
来源: 链接,commit 编译方法: make APP_HELLOWORLD=1 |
可正常运行 |
| RGBled | ![]() |
来源: 链接,commit 编译方法: make APP_RGBLED=1 |
可正常运行 |
| SetSystemEEPROM | ![]() |
来源: 链接,commit 编译方法: make APP_SETSYSTEMEEPROM=1 |
可正常运行 |
| PlayTune | ![]() |
来源: 链接,commit 编译方法: make APP_PLAYTUNE=1 |
可正常运行 |
| ID-51-EEPROM-TOOL | 来源: 链接,commit 编译方法: make APP_EEPROMTOOL=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| arduboy-rund-ino | ![]() |
来源: 链接,commit 编译方法: make APP_RUND=1 |
可正常运行 |
| arduboy-rund-ino/halloweend | ![]() |
来源: 链接,commit 编译方法: make APP_HALLOWEEND=1 |
可正常运行 |
| Ardynia | ![]() |
来源: 链接,commit 编译方法: make APP_ARDYNIA=1 |
可正常运行,走到图像边缘有bug 已经尝试修改但不一定对 |
| CastleBoy | ![]() |
来源: 链接,commit 编译方法: make APP_CASTLEBOY=1 |
可正常运行 |
| Mystic Balloon | ![]() |
来源: 链接,commit 编译方法: make APP_MYSTICBALLOON=1 |
可正常运行 |
| Epic Crates Of Mass Destruction | ![]() |
来源: 链接,commit 编译方法: make APP_ECOMD=1 |
可正常运行 |
| Helmets & Hordes | ![]() |
来源: 链接,commit 编译方法: make APP_HELMETSHORDES=1 |
不正常 |
| SanSan | ![]() |
来源: 链接 编译方法: make APP_SANSAN=1 |
可正常运行 会有图像错误 |
| Shadow Runner | ![]() |
来源: 链接,commit 编译方法: make APP_SHADOWRUNNER=1 |
可正常运行 |
| hollow | ![]() |
来源: 链接,commit 编译方法: make APP_HOLLOW=1 |
可正常运行 |
| Rooftop Rescue | ![]() |
来源: 链接,commit 编译方法: make APP_ROOFTOP=1 |
可正常运行,可能有bug |
| KONG | ![]() |
来源: 链接,commit 编译方法: make APP_KONG=1 |
不正常 |
| Chicken-Cross-Arduboy | ![]() |
来源: 链接,commit 编译方法: make APP_CHICKENX=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| PINBALL | ![]() |
来源: 链接,commit 编译方法: make APP_PINBALL=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| 03_tiny_2048 | ![]() |
来源: 链接,commit 编译方法: make APP_2048=1 |
可正常运行 |
| Ardu-man | ![]() |
来源: 链接,commit,PR 编译方法: make APP_ARDUMAN=1 |
可正常运行 |
| ArduBreakout | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUBREAKOUT=1 |
可正常运行 |
| Bomberboy | ![]() |
来源: 链接,commit 编译方法: make APP_BOMBERBOY=1 |
可正常运行 |
| Ardusweeper | ![]() |
来源: 链接,commit 编译方法: make APP_MINESWEEPER=1 |
可正常运行 |
| Flappy Ball | ![]() |
来源: 链接,commit 编译方法: make APP_FLAPPYBALL=1 |
可正常运行 |
| ArduboyTetris | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUBOYTETRIS=1 |
可正常运行 |
| Dark-And-Under | ![]() |
来源: 链接,commit 编译方法: make APP_DARKANDUNDER=1 |
可正常运行 |
| Bubble PoP | ![]() |
来源: 链接,commit 编译方法: make APP_BUBBLEPOP=1 |
可正常运行 |
| ID-20-Escaper-Droid | ![]() |
来源: 链接,commit 编译方法: make APP_ESCAPERDROID=1 |
可正常运行 |
| Blob Attack | ![]() |
来源: 链接,commit 编译方法: make APP_BLOBATTACK=1 |
可正常运行 |
| BEGEMMED | ![]() |
来源: 链接,commit 编译方法: make APP_BEGEMMED=1 |
可正常运行 |
| Reverse Mermaid Hockey | ![]() |
来源: 链接,commit 编译方法: make APP_RMH=1 |
可正常运行 |
| Trolly Fish | ![]() |
来源: 链接,commit 编译方法: make APP_TROLLYFISH=1 |
可正常运行 |
| petris | ![]() |
来源: 链接,commit 编译方法: make APP_PETRIS=1 |
可正常运行 |
| Minesweeper | ![]() |
来源: 链接,commit 编译方法: make APP_MINESWEEPER2=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| Mini Rogue | ![]() |
来源: 链接,commit 编译方法: make APP_MINIROGUE=1 |
可正常运行 |
| DICE of FATE | ![]() |
来源: 链接,commit 编译方法: make APP_DICEOFFATE=1 |
可正常运行 |
| Fantasy Rampage | ![]() |
来源: 链接,commit 编译方法: make APP_FANTASYRAMPAGE=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| MicroCity | ![]() |
来源: 链接,commit 编译方法: make APP_MICROCITY=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| ARDUVENTURE | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUVENTURE=1 |
可正常运行 |
| 应用/游戏名称 | 预览 | 来源/编译方法 | 备注 |
|---|---|---|---|
| Catacombs of the damned! | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUBOY3D=1 |
可正常运行 |
| VIRUS LQP-79 | ![]() |
来源: 链接,commit 编译方法: make APP_VIRUSLQP79=1 |
可正常运行 |
| Sirène | ![]() |
来源: 链接,commit 编译方法: make APP_SIRENE=1 |
不正常 |
| Outpost Defense | ![]() |
来源: 链接,commit 编译方法: make APP_OUTPOSTDEFENSE=1 |
可正常运行 |
| Sunfire | ![]() |
来源: 链接,commit 编译方法: make APP_SUNFIRE=1 |
可正常运行 |
| ArduboyArcodia | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUBOYARCODIA=1 |
可正常运行 |
| CosmicPods | ![]() |
来源: 链接,commit 编译方法: make APP_COSMICPODS=1 |
可正常运行 |
| Humanity Revenge Director's Cut | ![]() |
来源: 链接,commit 编译方法: make APP_HUMANITYREVENGEDC=1 |
可正常运行 |
| Night Raid | ![]() |
来源: 链接,commit 编译方法: make APP_NIGHTRAID=1 |
可正常运行 |
| Omega Chase | ![]() |
来源: 链接,commit 编译方法: make APP_OMEGACHASE=1 |
可正常运行 |
| SpaceFighter | ![]() |
来源: 链接,commit 编译方法: make APP_SPACEFIGHTER=1 |
可正常运行 |
| ArduBoy Jet Pac | ![]() |
来源: 链接,commit 编译方法: make APP_ARDUBOYJETPACK=1 |
可正常运行 |
| Glove | ![]() |
来源: 链接,commit 编译方法: make APP_GLOVE=1 |
可正常运行 |
| Evade | ![]() |
来源: 链接,commit 编译方法: make APP_EVADE=1 |
可正常运行 |
| STM32F103C8T6 | FUNC | JLINK | DESC |
|---|---|---|---|
| PA9 | USART1_TX | pin17 | TX |
| PA13 | SYS_JTMS-SWDIO | pin7 | SWDIO |
| PA14 | SYS_JTCK-SWCLK | pin9 | SWCLK |
| STM32F103C8T6 | FUNC | USB | DESC |
|---|---|---|---|
| PA11 | USB_DM | USB_DM | |
| PA12 | USB_DP | USB_DP | |
| PA8 | GPIO_Output | EN |
| STM32F103C8T6 | FUNC | Nor Flash PIN | DESC |
|---|---|---|---|
| PA4 | GPIO_Output | pin1 | CS |
| PA5 | SPI1_SCK | pin6 | CLK |
| PA6 | SPI1_MISO | pin2 | IO1/MISO |
| PA7 | SPI1_MOSI | pin5 | IO0/MOSI |
| STM32F103C8T6 | FUNC | IRQT17 PIN | DESC |
|---|---|---|---|
| PA0 | GPIO_Output | BL | |
| PA1 | GPIO_Output | pin4 | CS |
| PA15 | GPIO_Outout | pin5 | RST |
| PA3 | GPIO_Outout | pin6 | DC |
| PB13 | SPI2_SCK | pin7 | SCL |
| PB15 | SPI2_MOSI | pin8 | SDA |
| STM32F103C8T6 | FUNC | AT24C02 PIN | DESC |
|---|---|---|---|
| PB6 | I2C1_SCL | pin6 | SCL |
| PB7 | I2C1_SDA | pin5 | SDA |
| STM32F103C8T6 | FUNC | LED | DESC |
|---|---|---|---|
| PB0 | GPIO_Outout | RED | |
| PB1 | GPIO_Outout | GREEN | |
| PB2 | GPIO_Outout | BLUE |
| STM32F103C8T6 | FUNC | BTN | DESC |
|---|---|---|---|
| PB10 | GPIO_Input | Left | |
| PB11 | GPIO_Input | Right | |
| PB8 | GPIO_Input | Up | |
| PB9 | GPIO_Input | Down | |
| PC13 | GPIO_Input | A | |
| PC14 | GPIO_Input | B |
| STM32F103C8T6 | FUNC | speaker | DESC |
|---|---|---|---|
| PB4 | S_TIM3_CH1 | SPEAKER_1 | |
| PB3 | S_TIM2_CH2 | SPEAKER_2 |
| STM32F103C8T6 | FUNC | DESC | |
|---|---|---|---|
| PA2 | ADC1_EXTI15 |
产生频率和占空比可以调的PWM,用来输出音符对应的频率来驱动无源蜂鸣器。最高频率1MHZ,占空比分辨率1/500=0.2%
产生频率和占空比可以调的PWM,用来输出音符对应的频率来驱动无源蜂鸣器。最高频率1MHZ,占空比分辨率1/500=0.2%
产生周期可以配置的定时中断,定时的周期更具不同的音频方案,做不同的配置。 SND1_ARDUBOYPLAYTUNE 配置1KHZ,SND2_ARDUBOYTONES配置1KHZ,SND3_ATMLIB配置31.25KHZ。
产生周期可以配置的定时中断,定时的周期更具不同的音频方案,做不同的配置。 SND1_ARDUBOYPLAYTUNE 配置1KHZ,SND2_ARDUBOYTONES配置1KHZ,SND3_ATMLIB不配置。
不支持。现在使用的stm32f103c8t6的sram只有20KB,同时也不支持FSMC,无法搞一个loder的功能,所以当前版本不打算做多个游戏打包。
目前只能使用JLINK烧写单个游戏到单片机,要换另一个游戏就要重新烧录。
不支持。还没有做开发。
- 使用RP2040再做另外一个版本,这样就可以支持多个游戏打包。具体计划未定。
- 在当前平台好几个游戏有bug,尝试看看能不能在当前平台解决
- EEPROM的支持























































