あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

raspberry pi multiboot 実験1

とりあえずmbedの成功例。

//  mbed(LPC1768)   gba serial port(color)
//  p1-0V           6-GND (blue)
//  p5-mosi         3-SI  (orange)
//  p6-miso         2-SO  (red)
//  p7-sck          5-SC  (green)

#include "mbed.h"

LocalFileSystem local("local");
Serial pc(USBTX, USBRX);
SPI spi(p5, p6, p7);

int main(void) 
{
    spi.format(16, 3);
    spi.frequency(100000);

    uint16_t w1, w2;
    uint32_t w, r;

    pc.printf("Looking for GBA\n");

    do
    {
        w  = 0x00006202;
        w1 = w >> 16;
        w2 = w & 0xffff;

        r  = spi.write(w1) << 16;
        r  = spi.write(w2) | r;

        pc.printf("r:0x%08x\n", r);
        wait(0.01);

    } while(r != 0x72026202);

    pc.printf("Found GBA!\n");
}

■実行ログ
GBAはブートが完了してタイトルロゴが表示されている状態。mbedのリセットボタンを押した後のログ。

Looking for GBA
r:0x00000000
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0xffffffff
r:0x00000000
r:0x72026202
Found GBA!

■ロジアナ
r:0x00000000
f:id:akkera102:20160519195004p:plain
r:0x72026202
f:id:akkera102:20160519195013p:plain
普通ですよねー。

Arduboy 実験34

写経しつつ、変数の名前やらコードを変えてるのでのんびりやってます。
今更、Basicの成り立ちを読んでみました。

細かい差異はあるが、当時のものは概ね以下のような仕様であった。

・単純変数はA~Zの26個のみ。
・配列は@のみ。
・データ型は2バイト整数のみ。
・グラフィックやスクリーンエディットの機能はない。

Tiny BASIC - Wikipedia

豊四季タイニーBASICの基本機能を備えたものを公開します。
機能は次の2点をのぞいてパロアルトタイニーBASICと共通です。

第1に、記述の省略形がありません。
第2に、強制的な中断に使うキーは、(中略)[ESC]です。

ということでマニュアルを割愛します。

豊四季タイニーBASICのリファレンスを公開 | 電脳伝説 Vintagechips


ちょうどタイミングよく、Arduinoに移植をされている方が情報を公開して頂いてます。
豊四季タイニーBASIC Arduino版のフリーエリアを増やす実験(1) - Qiita


実験(2)のフリーエリアを増やすには?という項目。
やっぱりそうなっちゃうよなーというのが正直な感想です。

+const char kw0[] PROGMEM = "GOTO";
+const char kw1[] PROGMEM = "GOSUB";

(中略)

+const char * const kwtbl[] PROGMEM = {
+  kw0, kw1, kw2,

(以下略)

gccはほんと仕事してほしいです。
僕はこの書き方が好きではないのでメモリが増えてもいい、というトレードオフをしてるけど、
今回はこちらを採用しそうです。


ちなみにゴールは、以下のfuractal.bas(セルオートマトン)を動かすことにしました。
んー、PSET, DIMはないので手直ししないといけないなあ。

10  CLS 3
20  NX=239:NY=80
30  DIM X(240),Y(240)
35  REM --------------------------------
40  X(120)=1
50  PSET(120,0),1
55  REM --------------------------------
60  FOR K=1 TO NY-1
70    FOR I=120-K TO 120+K
80      Y(I)=(X(I-1)+X(I+1)+X(I)) MOD 2
90      PSET(I,K),Y(I)*7
100   NEXT
110   FOR I=0 TO NX
120     X(I)=Y(I)
130   NEXT
140 NEXT
145 REM --------------------------------
150 END

Arduboy 実験32

次のお題はTiny Basicにします。本当は音関係をやりたかったのですが、
このところ本ばかり読んでいてつまらないので一旦お休みです。


豊四季タイニーBASIC確定版 | 電脳伝説 Vintagechips
タイニーBASICをCで書く : 鈴木 哲哉 : 本 : Amazon


ソースコードは整頓されててコメントも入っています。
前は資料集めで四苦八苦していたのに・・・。10年前に読みたかったです。


シリアル通信で編集できるようにして、フィボナッチとかラインテストできるといいなあ。
サンプルはGBA版のを流用予定です。

PocketC.H.I.P.(+PICO-8)

www.famitsu.com

Subtotal 	$ 49.00
Shipping 	$ 11.00

USD $ 60.00(6,643円 VISAカードにて購入)

Shipping June(6月) 2016.

買うしかないじゃないですか。やだもー
プロモーションの動画よりもこちらの開発現場風景の方がぐっときました。

arduboy 勝手にFAQ

KickStarter、pre-orderとはどういう意味?
KSとは、クラウドファンディングのホームページを指します。
Arduboyの作者Kevin Batesさんが出資者を募り、
7,221 backers(パトロンの数)、$433,038ものお金が集まりました。


作者はアメリカのポートランドから中国の深センに飛んで、
seeedstudioという会社とタッグを組みます。


この会社はArduinoの部品を作ったりしている有名な会社です。
mbed, raspberry pi, Arduinoあたりを触っているなら
名前を知っている方は多いと思います。


pre-orderはArduboyのホームページで注文したことをいいます。


■Arduboy の種類は?
・Arduboy 1.0
Tetris® MicroCard
・Arduboy dev kit


今ところ3種類です。dev kitは1.0の前に安価で販売して、開発者に使い勝手を
見てもらうために用意したものです。言わばベータ版。
1.0はフィードバッグをたくさんもらい、よりいい製品に仕上がっていると思います。


dev kitは役目を終えたのでもう販売されることはないかも。
ただ、作者はArduboy 1.1を開発する前に、新しいdev kitを作ると言っています。


テトリスタイプは画面を縦にして、部品は同じっぽいですけど
開発用には使えないかもしれないです。
情報全く出てこず。発送された話は今のところありません。


■ぷち炎上してない?
してます(ぉ。ぶっちゃけ何もかも初めてのことなので相当苦労されていると思います。
自分に置き換えて考えてみると、海外で8000個以上のArduboyを製造して、
配達ノウハウもないのに世界に送り届けるってどんだけ難易度高いのか・・・。
想像するだけで震え上がります。気長に待つのがいいと思いますよ。
KS自体、そういうところみたいですし・・・。


個人的にはグレて非行に走る一歩手前ですが。
まだですかい(>_<


■他のゲームはどうやって遊ぶの?
【Kickstarter】Arduboyレビュー、インストール手順、面白いゲーム紹介など - t-miyajima blog
容量的に1ゲーム分しか入りません。
将来はソースコードコンパイルして実行させる方法をやめて、ロムを書き込むだけにするようです。


コンパイルエラーになるのだけど?
開発者によって、ライブラリのバージョン(masterかstable)が違います。
差し替えてください。基本的にはmaster stableを使っている方が多いようです。


追記:今はArduino IDEからダウンロードできます。


■どんなゲームがあるの?
https://twitter.com/ArduboyGames/
https://www.youtube.com/channel/UC5PtrkZ9BaCrLIW8WXe2_XA
また、コミニティのゲーム項目を見てください。


■どうやって勉強するのがいいの?
ライブラリのソースコードを一通り見るのがいいと思います。


■開発言語、環境は?
C++Arduino IDE, codebenderなどがあるようです。


■VBLANKないけど?
僕も詳しく調べていないです。60fpsをキープして、
cpu使用率が100%越えなければいいかーというノリです。
画面が小さい分、スプライトを出しすぎると視認しにくくなりますし、
ecomdで背景+マスクビット込みスプライト表示で60fps出ているそうです。


■ライブラリ読んだけど、ほとんどハード的にやることなくない?
シンプルな1chip!と呼ぶべきところ・・・?
GB, GBAやっている方からみるとビックリすると思います。


■音については?
音圧ブザーが入っています。同時発音数2。
youtubeでどんなもんか実感して頂ければと思います。
合成処理を行えば6音 4音ぐらいいけるそうです。
team a.r.gさんはdemosceneSquawkライブラリ
使っていました。