原理图参考这个 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的支持