読者です 読者をやめる 読者になる 読者になる

プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

プチコン作品一覧

プチコン プチコン3号

プチコン3号作品

●7650
パックマンDLCを使ったパズルゲーム
http://d.hatena.ne.jp/eidaht/20160612/1465755564

●MISSILE DEFENSE for プチコン3号
ミサイルコマンド風ゲームのプチコン3号移植。
http://d.hatena.ne.jp/eidaht/20141223/1419341732

ゲームブックドルアーガの塔」アドベンチャーシート for プチコン3号
ゲームブックドルアーガの塔」のアドベンチャーシート。
http://d.hatena.ne.jp/eidaht/20160313/1457835356

●EDSMILE ツール
スマイルボタンに登録して使う便利ツール。
http://d.hatena.ne.jp/eidaht/20160207/1454810930

●漢字入力プログラム EDKANJIPNL
漢字入力を行うプログラム。
http://d.hatena.ne.jp/eidaht/20160225/1456356091

●スター○ォーズ風タイトル表示デモ
mkIIで作ってた奥の方にスクロールしていくタイトルデモが高速かつ立体視3DSで。
http://d.hatena.ne.jp/eidaht/20141130/1417357718

●文字列関連操作ライブラリ
文字列等を操作する関数を集めたライブラリ。
http://d.hatena.ne.jp/eidaht/20151213/1450016205

正規表現ライブラリ
正規表現を実現するライブラリ。
http://d.hatena.ne.jp/eidaht/20150105/1420484771
http://d.hatena.ne.jp/eidaht/20150108/1420728132(正規表現ライブラリ使い方)

●EDBF Brainfu*kコンパイラ
Brainfu*kソースを実行可能なSMILE BASICソースにコンパイルする。
http://d.hatena.ne.jp/eidaht/20141207/1417943515


■3号プログラミング覚え書きまとめ
3号プログラミング覚え書き(1) 変数編
3号プログラミング覚え書き(2) DEF編
3号プログラミング覚え書き(3) 文字列編
3号プログラミング覚え書き(4) 数値編
3号プログラミング覚え書き(5) 配列編
3号プログラミング覚え書き(6) スマイルボタン編

■SMILE BASIC 小技 まとめ
SMILE BASIC 小技(1)
SMILE BASIC 小技(2)
SMILE BASIC 小技(3)
SMILE BASIC 小技(4)
SMILE BASIC 小技(5)
SMILE BASIC 小技(6)
SMILE BASIC 小技(7)
SMILE BASIC 小技(8)


プチコンmkII作品

●2048 (勝手移植版)
2014年初頭に旋風を巻き起こしたパズルゲーム2048のプチコン勝手移植版。
QRコード

●クイズ 1ミニットショック
2人対戦可能なクイズゲーム
概要、QRコード等

プチコンポーザー
スーパーファミコンのソフト「マリオペイント」の一機能である「コンポーザー」のアイデアを源流とする音楽作成・演奏ソフト。
遊び方 QRコード サンプル動画

●MISSILE DEFFENSE ミサイルコマンド風ゲーム。
 最新版 動画 QRコード

●140文字プログラム 140文字以内でできた超ショートプログラム
140文字プログラム集+α QRコード

 140文字プログラム集その1 リストと解説
 140文字プログラム集その2 リストと解説
 140文字プログラム集その3 リストと解説
 140文字プログラム集その4 リストと解説
 140文字プログラム集その5 リストと解説
 140文字プログラム集その6 リストと解説
 140文字プログラム集その7 リストと解説
 140文字プログラム集その8 リストと解説
 収録作:(1) 140スキー、140ゴルフ、140スロット
     (2)140タッチ、140ショット、140ジャンケン
     (3)140ペイント、140ペイント改、140ベーダ、140ランチャ、
       140ランチャ(RECV編)、140コンフィグ
     (4)140スノー、140ピラミッド、140ザカリテ、140ザオリク、140UFO
     (5)140STAR、140PAI、140コラッツ
     (6)140シュウォッチ、140テンカウント、140にじみフォント
     (7)140エディタ、140フィボナッチ、140ペルシア絨毯模様
     (8)140曜日計算、140アナログ時計、140コムソート


●タートルグラフィックス LOGO風タートルグラフィックス。
 V0.4 QRコードと解説
 V0.3 解説
 V0.2 解説
 V0.1 解説 図形サンプル

●MINOR MINER パズルゲームPITMAN移植作品。
 最新版 QRコードと解説

●8x8フォントエディタ 8x8ピクセルフォントエディタ。
 最新版 QRコードと解説 ひらがな/カタカナ混在表示サンプル

●簡易テキストエディタ ショートテキストエディタ
 V0.12 QRコードと解説

バイナリエディタ バイナリデータエディタ。
 最新版 QRコードと解説

●フライングゲッツ ミニアクションゲーム。
 最新版 QRコードと動画

●レトロレーシング ミニレースゲーム。
 最新版 QRコードと画像

●プチグマ プチコン暗号プログラム。
 最新版 QRコードと解説

●対戦ゲーム ミニ対戦ゲーム。
 最新版 リストと解説

●Brainfu*k for プチコン 難読プログラム言語Brainfu*kインタプリタ
 最新版 リスト QRコード


<<以下、開発中の作品。>>

ジャイラス風シューティング
ジャイラス風シューティング製作中 - プチコンで遊ぼう!

●16進データ入力プログラム MON
16進データ入力を効率的に入力するための16進データ専用エディタ。
製作中:16進データ入力プログラム「MON」 - プチコンで遊ぼう!

●ロングテキストエディタ LTEDIT
プチコンのプログラムソース入力を目的とした長文編集可能なテキストエディタ。(開発凍結中)
製作中:ロングテキストエディタのデモ - プチコンで遊ぼう!

<<お知らせ>>

◆公開しているプログラムは、特に記載のない限り、Apacheライセンス2.0として公開しています。
好きなようにお使いください。


<<以下、自分用メモ>>

■PCとのデータ交換 プチコン3号用
◆ぷっちコンバーター
http://plaza.rakuten.co.jp/route21/diary/?ctgy=22
3号→PC 単方向 画像でテキストを渡す


■PCによる入力支援 プチコンmkII用

プチコン用画像コンバータ DSPCBMP
プチコン MkII プログラム
あおごん@さん作

◆PTCUtilites
PTCUtilities
micono @さん作

◆PetitEditor
http://www2.u-netsurf.ne.jp/~ozawa/petitcom/petiteditor.html
Gust Notch?@さん作

プチコン文法チェッカ
プチコン文法チェッカー
Actorbug@さん作


プチコン作品のリストへのリンク

プチコン3号作品データベース (Google Docs)
https://docs.google.com/spreadsheets/d/1ihBdTe0w3GRSE-NgzqTo7i0XtMvLKqWTZ6xuVmsHiJ4/edit#gid=0
OBONO@さん管理

プチコン3号作品データベース出張所
http://ptcm3db.chobi.net/
OBONO@さん管理


プチコンmkII作品データベース (Google Docs)
https://docs.google.com/spreadsheet/lv?key=0AqLEdMVWXjvPdEFKam1zSm45Ry1FeVlETDJBdmF5b1E&type=view&gid=0&f=true&sortcolid=-1&sortasc=true&rowsperpage=500
OBONO@さん管理

3号プログラミング 覚え書き(7) クリップボード編

プチコン3号のエディターでアンドゥできなくなるのは4103文字以上の文字列をペーストしようとした時

 クリップボードに入っている文字列が4102文字までの時は、ペーストしてもアンドゥできる。

 

 

計算式評価ライブラリEVALLIB

プチコン3号

計算式を評価するいわいるEVALを実現するライブラリを作成中です。

ファイル名: EVALLIB

公開キー: S2NXCNKE C3E8N4JP 434X4X2D

公開日: 2016/07/05 2016/07/03 2016/07/02

バージョン: 0.03 0.02 0.01

v0.03 ()を含めたバグ修正、前置の+-を使えるようにした
v0.02 演算優先度のバグ修正、デバッグ機能の強化
v0.01 初公開

現在のV0.03は、カッコありの四則演算のみ。
関数を含む式の評価ができることが目標。
そのためには、構文解析部分を再帰下降パーサーに書き換えないとダメなようです。

最初は見ないで作ってみようと思ったけど、ちょっと無理だったので以下を参考にした。
http://www.gg.e-mansion.com/~kkatoh/program/novel2/novel208.html

BGMCHKの挙動

プチコン3号

旧3DSLLかつプチコン3号 Ver3.3.1で以下を確認。

134番のBGMが終わってから、135番のBGMを流すつもりで以下のように処理を書くと、

BGMPLAY 134
WHILE BGMCHK():WEND
BGMPLAY 135

なぜかループがすぐ終了し、135番は演奏されない。

BGMPLAYを発行してからタイムラグがあるのかもしれない。

BGMPLAY 134
WHILE BGMCHK():VSYNC 1:WEND
BGMPLAY 135

だと大丈夫。134番の演奏が終わってから135番が演奏された。

BGMPLAY 134
WHILE BGMCHK():FOR I=1 TO 29:NEXT:WEND
BGMPLAY 135

でも大体問題ない。

BGMPLAY 134
WHILE BGMCHK():FOR I=1 TO 28:NEXT:WEND
BGMPLAY 135

だと大体ダメで135番が演奏されない。


しかし、WHILEループを除いて、

BGMPLAY 134
BGMPLAY 135

とすると、人間の耳には135番だけ演奏されているように聞こえる。

謎である。

パズル 7650 (パックマンDLC必要)

プチコン3号

パックマンDLCを使ったパズル7650。
なんか見たことあるような?いや気のせいですw

ファイル名: ED7650

公開キー: C33NY3AP E23N33D4

公開日: 2016/06/27 2016/06/12

バージョン: 1.10 1.00

v1.10 DLCがない場合の対応を少し修正
v1.00 初公開

必要DLCPACMAN
DLCがない場合は、スプライト等が代用品に置き換わります)

【遊び方】

1)十字キーでタイルをスライドし、同じ絵柄同士を合体させていきます。

2)同じ絵柄同士を合体させると得点になり、より得点の高い絵柄に変わります。

3)これを繰り返して7650点のタイル作成を目指してください。
(7650点を獲得してもゲームは続きます。)

4)A,B,X,Yボタンのいずれかを押すとメニューを表示し、リトライを選ぶと最初からやり直すことができます。

5)ハイスコアは、メニューからEXIT GAMEを選んだ時に保存されます。


【その他】

「7650」という数字にこじつけたかっただけなので、「パックマンの内容とかけはなれている」などの批判は受け付けませんw

ちなみにmkIIの時も似た(w)ゲームを作っていました。
http://d.hatena.ne.jp/eidaht/20140608/1402249061

SMILE BASIC 小技(9)

プチコン3号

PRGINSで動的にコードを追加する方法。

PRGINSで他のスロットにコードを追加した後にUSEを実行すると、追加したコードを実行することができる。
PRGINS毎にUSEを使えば、何度でもコードを追加できる。

例:

VAR DQ$=CHR$(34)
PRGEDIT 3
PRGDEL -1

PRGINS "DEF A"
PRGINS " ?"+DQ$+"A"+DQ$
PRGINS "END"

USE 3
CALL "3:A"

PRGINS "DEF B"
PRGINS " ?"+DQ$+"B"+DQ$
PRGINS "END"

USE 3
CALL "3:B"

USEが2度現れているが、問題なく実行できる。

これを応用する例としては、ツール系のプログラムで設定ファイルにコードを書いて追加するとか、ユーザーに入力させたコードを実行する等が考えられる。

ただし、一般的な注意として、最初にプログラムを実行したスロットをPRG系命令で編集することはできないので気を付ける必要がある。

SMILE BASIC 小技(8)

プチコン3号

BGのキャラ定義の一部がキャラクターコードに対応していることと、BGGETを使うと非常に簡単に自作キーボードを作ることができる。

具体的には、

TOUCH OUT STTM, TX, TY
G=BGGET(レイヤー番号,TX,TY,1)

とすると、GにBGのキャラ番号がとれる。
BGの32〜95番には、同一アスキーコードの英数字記号が割り当てられているので、これを使って処理する。

簡易キーボードの例:

前半部分で文字を並べているが、この文字のレイアウトを変えても、判定部分は一切変える必要がない。


実用例としては、この小技を使って、拙作のゲームブックドルアーガの塔アドベンチャーシートで、数値入力用パネルを実装している。
ゲームブック「ドルアーガの塔」アドベンチャーシート for プチコン3号 (β2版)


また、上記の小技を使って簡単なゲームを作ってみた。
OSE! Catch The Gyoku
キー【EBNECE3E】
遊び方:
 「玉」をタッチでつかまえてください。
 ただし、人質になっているキングとクイーンを間違えてタッチしたり、画面外に逃げられると負けになります。

バイナリファイル調査その(2)

プチコン3号

型変換調査
(1)

VAR A#[10]
A#[0]=1.5
A#[1]=2.5
SAVE "DAT:BINDATA",A#
VAR B%[0]
LOAD "DAT:BINDATA",B%
?"LEN=";LEN(B%)
?B%[0]
?B%[1]
?B%[2]
?B%[3]

とすると、

LEN=10
1
2
0
0

と表示される。

(2)

VAR A%[10]
A%[0]=1
A%[1]=2
SAVE "DAT:BINDATA",A%
VAR B#[0]
LOAD "DAT:BINDATA",B#
?"LEN=";LEN(B#)
?B#[0]
?B#[1]
?B#[2]
?B#[3]

とすると、

LEN=10
1
2
0
0

と表示される。

つまり、直接的にバイナリとして読み込まれるわけではなく、
LOAD時に、SAVE時の型として一度読み込まれてから、その後に変数に代入されていることがわかる。

バイナリファイル調査その(1)

プチコン3号

バイナリファイルサイズ調査
(1)

VAR A[1]
a[0]=1
SAVE "DAT:BINTEST",A

とすると、36バイトのファイルが作成された。

(2)

VAR A#[2]
A#[0]=1
A#[1]=2
SAVE "DAT:BINTEST",A#

だと44バイト。

(3)

VAR A%[1]
A%[0]=1
SAVE "DAT:BINTEST",A%

だと32バイト。

(4)

VAR A%[2]
A%[0]=1
A%[1]=2
SAVE "DAT:BINTEST",A%

だと36バイト。

よって、
ヘッダー28バイト+(倍精度小数なら8バイト、整数なら4バイト)*個数
の大きさと思われる。


#ヘッダーが読み取れたら、GRPファイルかそうじゃないか判別できると思って調査しはじめたけど、今のところヘッダーを読み取る方法はない。

PRGINSしたコードを呼び出すことができるか

プチコン3号

昨日、いろいろ試していた結果。
あるスロットから他のスロットにPRGINSでコードを追加して、追加したコードを呼び出すことができるか、という研究。

PRGEDIT 3
FUNCNM$="_ABC"
IF !CHKCALL(FUNCNM$) THEN
 PRGINS "COMMON DEF "+FUNCNM$+"()"
 PRGINS " RETURN 1"
 PRGINS "END"
ENDIF
USE 3

PRINT CALL(FUNCNM$)  '1が表示される

ポイントは、PRGINSをした後でUSEを実行していること。
おそらく、USEでそのスロットがコンパイルされるようだ。
(その証拠にUSE 3をPRGINSより前に入れると、Undefined functionエラーになる)

第4回大喜利で入賞したLOWERDASHもこの考え方で、起動時にコードを追加している。
が、USEは何回でも呼び出せるので、プログラム中で必要な時にどんどんコードを追加するという使い方ができると思う。
現在作成中の構造体ライブラリには一部にこの考え方を使おうかと思う。