Skip to content

Commit

Permalink
フラッシュへプログラムの保存が出来るように
Browse files Browse the repository at this point in the history
FSAVE, FLOAD, FCLEARコマンドの追加
  • Loading branch information
MakotoKurauchi committed Dec 31, 2014
1 parent 9329307 commit d87fd96
Show file tree
Hide file tree
Showing 4 changed files with 256 additions and 97 deletions.
8 changes: 8 additions & 0 deletions README.md
Expand Up @@ -85,6 +85,14 @@ Basic でゲームを作るための Arduino 用ライブラリです。
ファイル番号は-32767~32767の整数になります。
SDカードには`ファイル番号.BAS`として保存されます。

###フラッシュコマンド
|表記|機能|
|:-----------|:------------|
|FSAVE|プログラムをデータフラッシュに保存します|
|FLOAD|プログラムをデータフラッシュから読み込みます|
|FCLEAR|フラッシュに保存されたプログラムをクリアします|
`FSAVE`を行うと起動時にフラッシュからプログラムを読み込むようになります。SDカードのプログラムから起動したいときには`FCLEAR`を行ってください。

###コマンド
|表記|機能|
|:-----------|:------------|
Expand Down
34 changes: 22 additions & 12 deletions examples/tinyboy/tinyboy.ino
Expand Up @@ -7,6 +7,7 @@
#include "tngame.h"
#include <SD.h>
#include <SPI.h>
#include <EEPROM.h>

TNGame game ;

Expand Down Expand Up @@ -54,7 +55,7 @@ unsigned char vbuf[64];

unsigned int counter;

void test(unsigned char *buf){
void vreg(unsigned char *buf){
for(int i=0;i<sizeof(vbuf)/sizeof(vbuf[0]);i++){
vbuf[i] = buf[i];
}
Expand Down Expand Up @@ -85,6 +86,7 @@ void setup(void){
int i,loaded=0;
char cmd[10];

// ピン設定
for(i=0;i<sizeof(BtnSst)/sizeof(BtnSst[0]);i++){
pinMode(BtnSst[i],INPUT_PULLUP);
}
Expand All @@ -99,33 +101,41 @@ void setup(void){
pinMode(SDCS,OUTPUT);
pinMode(SRCS,OUTPUT);

// シリアル開始
Serial.begin(9600);

// TNGAMEライブラリを初期化
if ( !game.init(8,8,30,SDCS) ) { // 画像サイズX、画像サイズY、フレームレート、SDカードのCSピン番号
Serial.println("Initialize error.");
while(1);
}
game.set_vfunc(test); // 画面データを受け取る関数を登録
game.set_vfunc(vreg); // 画面データを受け取る関数を登録
game.set_inkey(BTN_UP,BTN_DOWN,BTN_LEFT,BTN_RIGHT,BTN_A,BTN_B); // 入力ボタンを登録

// 表示用割り込み関数登録
attachIntervalTimerHandler(display);

// 電源ランプ点灯
digitalWrite(LED, HIGH);

// Basicコマンド
for(i=0;i<sizeof(BtnSst)/sizeof(BtnSst[0]);i++){ // 起動時に押されていたら対応するファイルを読み込む
if(! digitalRead(BtnSst[i])){
sprintf(cmd,"load %d",i+1);
game.command(cmd);
loaded = 1;
break;
}
if(EEPROM.read(EEPROM_BOOT)==1){ // 起動対象(EEPROM or SD)
if(digitalRead(BTN_A)==0 && digitalRead(BTN_B)==0){ // 起動時にABボタンが押されていたら
game.command("fclear"); // フラッシュをクリアする
}else{
game.command("fload"); // フラッシュからロードする
}
}else{
for(i=0;i<sizeof(BtnSst)/sizeof(BtnSst[0]);i++){ // 起動時に押されているボタンに対応するファイルを読み込む
if(! digitalRead(BtnSst[i])){
sprintf(cmd,"load %d",i+1);
game.command(cmd);
loaded = 1;
break;
}
}
if(!loaded) game.command("load 0"); // デフォルトの読み込みファイル
}
if(!loaded) game.command("load 0"); // デフォルトの読み込みファイル

game.command("run"); // 実行する
}

Expand Down

0 comments on commit d87fd96

Please sign in to comment.