プチコンまとめArchive

プチコン3号への要望

パンくずリスト

このページの最終更新 : 2020/06/06 (土) 11:41:44
公式アーカイブのリンク: http://wiki.hosiken.jp/petc3gou/html/Demand.html

初代プチコンでもすごい衝撃だったのに、もはや想像を絶するほど色々できるようになってしまったプチコン3号。

それでも人間の欲望は止まりません。プチコン3号、もしくはBIG、プチコン4以降で、こんなこといいな できたらいいなと思うネタがあったら、ここに書き連ねていってください。

要望一覧

編集機能

  • 旧プチコン同様、LISTに[LIST ラベル]も[LIST 行番号]も、両方が使えるように
  • ブレーク行の表示 LIST BREAK
  • カーソルで選択中の行が飛び出て見える
  • WiiU/Wiiと連携して、USBキーボードで入力
    • BIGはUSBで入力可能
  • DSのポケモンタイピングのキーボード使用
    • New3DS,3DSがBluetooth対応ではないので,使用できない(将来新型3DSがBluetoothに対応していれば,対応する可能性はある。また、拡張スライドパットのように後付け部品が実装されれば可能性はある。)
  • 漢字入力機能(3DSに内蔵されている標準のテキスト入力画面で漢字変換して、プログラムエディタに挿入できる)
  • Visual Studio(C#,VB,VC++)の #REGION ~ #ENDREGION (#pragma region~#pragma endregion) (Wikiのregionみたいな)
    • IF - ENDIFみたいなやつを折りたためるようにってこと?
  • 自動保存
    • 望まずにファイルを上書きする危険性
      • 確認画面が出ればその危険性は無くなる
      • 作業が強制的に中断されるので不快感が出る可能性
  • 独立画面の文字が小さくて読めない。大きくしてもまだ小さい(Big版ユーザ)
  • 置き換えをUndo1回で全部戻せるように

ファイル可搬性

  • わざわざバックアップを取らずにSAVEするオプション(これが使えるとプログラム内のSAVEや容量削減に便利)
    • 上書きされる危険性
    • ユーザーが決められるようになればその問題はなくなる
  • ファイル管理で別のプロジェクトにコピーしたあと削除する"ファイル移動"
    • もっとも自力で実装すればいいんだけどさ
  • 簡易セーブ(L押しながらSAVE)で他プロジェクトにも保存できるように
  • ゲーム機が無いときでもPC,タブレットなどで編集可能(ただし実行はできない)

制御構文

  • SWITCHCASE
  • IF 条件式 GOSUB @ラベル
  • DOWHILE
  • ON ERROR
    • もしくはTRYCATCH
  • DIALOGでのURLを入力したらタッチで3DS本体のインターネットブラウザに飛ぶようにしてほしい
  • 末尾再帰

  1. DEF FACT_LOOP(N,ACC)
  2.  IF N==0 THEN RETURN ACC ELSE TAIL_CALL FACT_LOOP(N-1,ACC*N)
  3.  ’RETURNの代わりにTAIL_CALLと書く
  4. END
  5. DEF FACT(N)
  6.  DIM ACC=1
  7.  TAIL_JUMP FACT_LOOP
  8.  ’N=5、ACC=1という環境を保持したままFACT_LOOPの先頭にジャンプ
  9. END
  10. ? FACT(5)
  • デフォルトで「RESTORE」と書くと、一番先頭のDATAにポインタが来る仕様(昔のマイコンはこれが可能だった)
  • 実行モードでもGOTO,GOSUBの使用を可能に(これも昔のマイコンで可能だった)変数はリセットか、実行の直前に書いた代入式が実行されればよい。

命令

  • 構造体
    • HOGE->PIYO = "unyu" みたいにメンバーを参照
    • いわゆる連想配列?
    • JSON配列を使えるように
  1. VAR JSON
  2. STARTJSON
  3.  ”column0”:123,
  4.  ”column1”:122,
  5.  ”column2”:282
  6. ENDJSON
  7. JSON = JSON_PUT() ’STARTJSON~ENDJSON間のデータを変数に格納
  • JSONライブラリ公開されてるよ。(URさん作)公開キーは…ググって()
  • 列挙体
  • DEFのネスト
    • モジュール機能で済む
  • DEF内でGOSUBRETURN
    • DEF内のローカル変数が正常に使えること
    • DEFからのリターンとの区別のためにRETURN GOSUBと記述
  • DEFでも引数を省略できるようにする
  • スロット番号相対指定表記
    • 絶対指定で足りない?
    • もしくは自分自身のスロット番号の取得
      • 自分自身のスロット番号の取得はできる。
  • 配列リテラル
  • 多次元配列にPUSH
    • 同じ形、同じ要素数の1次元配列を用意してそれに操作してそれを多次元配列に反映すればいいと思う
    • 関数の引数で配列のポインタ渡しができるのを応用すればREDIMを自前で実装するのも可能なものの…
      • 1次元DEF REDIM(X):DIM A[X]:RETURN A:END
      • 2次元DEF REDIM(X,Y):DIM A[X,Y]:RETURN A:END
  • LOADEXECのプロジェクト指定の制限を撤廃(現状は SMILEボタンから実行した場合 OR SYSプロジェクトを指定した場合 だけしかできない)
  • 特定の名前のファイルなら、ダイアログ無しでSAVEできるようにする。オートセーブ的なゲームでいちいちセーブするかを確認されるのは面倒。
    • それでウィルスとかばらまかれたら色々と面倒
    • DATリソースなら問題ないかもしれない
    • ファイル名よりファイル作成者が操作するプログラムと操作されるファイルで一致する場合にダイアログ無しも選べるようにするのはどうでしょう。ウィルス化を防ぐ意味合いもあるのでsmileboomによる実装が必須ですが。
  • 実行画面限定でいいので、プロジェクトの作成とデフォルトプロジェクト設定をする命令がほしい。
  • 非同期なIO。LOADは読みこみが完了したらコールバックを呼ぶようにする。
  • qsort命令
    • そこにDEFがあるじゃろ?
  • mkIIにあったKEYBOARD関数で仮想キーコードを返す
  • READ OUT 変数という書き方を許容してほしい。INPUTも同じく。
    • 「変数に値が入るのは代入またはOUT構文」という規則を徹底して、習得するときにつまづきにくくするため。
演算子
  • POWではなく ^ で累乗計算
  • MODではなく % で剰余計算
    • そうすると変数のサフィックスである"%"(整数型)を変更しなければならない
  • += -= *= /= %= &= |= ^=などの複合代入演算子
  • hoge++ ++hoge hoge-- --hogeといった形のインクリメント・デクリメント
  • ポインター型
    • それならヌルポでクラッシュしないようにエラー検知欲しい
システム変数
  • 音量設定を取得する
    • 関数名は,例えば SP_VOL=SOUNDVOL()
  • 3Dつまみの値を取得する
    • 関数の名前は,たとえば VOL=3DVOL()
      • 関数の初めに数字は使用できません
      • XON 3DSみたいな特例として実装されればワンちゃん
      • VOL=GET3DVOL()
  • 3DSのユーザー情報を取得する(ユーザー名や誕生日など)
    • 多少面倒だけど、本体ニックネームならローカルプレイ用の命令を駆使すれば取得できるよ。
  • HARDWARE変数を更に拡張してLLかどうかも判定出来るようにして欲しい。
    • 例えば,H=HARDWARE(1)でLLかどうかの判定ができる
    • さらに,H=HARDWARE(2)でamibo対応かがわかる
    • あと、H=HARDWARE(3)で2DSかどうかわかるようにしてほしい
  • ファンクションキー等が押されたかどうか判定する変数
    • touchをループで走らせておくことで可能
    • 自前実装ではキー同士の隙間などの対応が厳密さを欠くこと、前作(mkII)にあったことを踏まえると標準の機能として希望。
    • ちなみに、ファンクションキーの内容自体は KEY n OUT txt$ または KEY(n) で取得可能
関数
  • コンソール画面の文字の向きを取得する関数
    • A=ATTR()的な?それともA=CHKATTR(X,Y)的な?
      • ついでにCHKCOLOR X,Y OUT A,Bもほしい。
  • ファイルタイプの識別。FILETYPE()みたいな。
    • 現在はPRGかTXTか、またGRPかDATかの識別ができない。
      • 拡張子で静的に判別する方法なら大体いけそう
    • DATファイルの次元の識別
      • これがなくエラートラップもないため、DATファイルを扱う限り「エラーで止まらないプログラム」を作ることが不可能になっている。
      • EXECで読み出し可能っていう都市伝説が・・・(シンタックスエラーで止まらないとは言ってない)←ver3.6.3でできないことを確認
  • split関数(区切り文字を指定して1つの文字列を文字列配列に分ける)
    • そこにdefがあるじゃろ?
    • 速度面で劣るほか、JavaScript等の他言語で実装される程度には汎用的な処理なので、組み込み関数として希望。
  • FORMAT$の様な可変長引数の関数をDEFで定義可能に。引数の部分は配列で渡されるみたいな。
  • 同じ関数名で異なる引数の数や型の関数(オーバロード)をDEFで定義可能に。組み込み関数はこれをやっている。(DIALOG関数やATAN関数など)
    • 同じ引数の数で型だけ検知したいならDEF内で検知することはできる

グラフィック

  • 漢字も 3DS 内蔵のフォントでグラフィック画面に描きたい。
  • コンソールの文字色を16色固定ではなく、可変に。(COLOR命令で RGB() が使えるか、0~15の配色をパレット的に設定できる。)
  • GCOPYとかのコピーモード拡充。透明色のみコピーする、コピー先の透明色部分にのみ書き込む、乗算、加算、GCOLORと乗算してコピー、拡大縮小
  • コンソール画面の1ドット単位でのスクロール
  • スプライトの乗算合成。
  • 3D立体視の奥行き方向への強さをもっと強くしてほしい。逆に手前方向へは控えめでいい。
    • 後方互換性ぇ・・・
    • オプションで手前・奥の割合を変更できるようにするとか

サウンド

  • MMLで短周期ノイズを出せるようにしたい。
    • 自分で定義することは可能ですが。
  • FC仕様のノイズとGB仕様ノイズを使いたい。
  • TALKで喋るのをグラフィックなどと簡単に同期
  • 再生中のBGMの拍カウント(再生した音長単位数)と拍位置(0 - 1.0)の取得
    • 全体の拍数も取得できると良い
  • BGMを任意の位置から再生
  • TALK命令の無くなった機能いろいろ復活させる。
    • 声色をあと何種類か追加。
      • プチコンmkIIでは、音声合成エンジンとして、トモダチコレクションなどでも採用されているRuby Talkが使われていたが、Galatea Talkにエンジンが変わった。これに伴い、話者の設定、抑揚や音程などの設定ができなくなり、男声で単純にしゃべるだけとなった。
  • 3DSを閉じてもイヤホンで聴けるようにしたい。

その他

  • マルチスレッド
    • 3DSはマルチスレッドに対応しているのでプチコン3号も対応して欲しい。
    • THREADCREATE命令で、DEFで登録した関数を並列処理させるみたいな。
  • ダウンロードプレイ
    • プチコン3号をもたない3DSでもプレイ可能
    • プログラムしない人がプレイできる環境は作り手のやる気、プログラムに興味を持つきっかけになるものです。
  • 一度登録して公開キーを出した後、同じファイル名を上書きすれば、同じ公開キーが続けて使える(ニンテンドードリーム公式公開キーでは、これを行っている)
    • 上書きの危険性
    • 4で実装
  • 作成者でファイルを並び替え
    • ついでにプログラム名や更新日で並び替えられると便利。(これは実現)
  • @付きのファイルを隠しファイルにする
  • スマイルボタンに複数のソフトを登録出来て相互に切り替えられたら便利
    • 複数のプログラムから選択するためのスマイルツールを自作すれば一応可能。
  • リストの編集機能(折り返し表示、複数のプログラムや行のコピペ)およびプログラムのシェア方法(SEND・RECV・QRは廃止してサーバアップ方式に)は3号のままで、基本的機能(SPANIMなど)はmkIIと同じ、すなわち3号の下位ソフトである「プチコン2.5」の発売
  • Type mismatchエラー時にどの型が欲しかったのかを表示(MIN(x)Type mismatch (MIN 1:array required) のように)
  • ダイレクトモードで何も入力せずにインラインヘルプを表示した場合は最後にエラーを発生させたステートメントのヘルプを表示
  • 手書き文字認識
  • 小中学生向きのプチコン初心者講座を、ネット・本とも充実。
  • DIALOG命令で文字の色や背景色などを変えられるようにする
  • キーボードの種類を変更する命令。KEYTYPE 1
    • mkIIのPNLTYPE相当かな。
  • SMILEツールのスロット4からもスロット0~3のCOMMON DEFが呼べるようにする。
    • スロット4で実行したプログラムが他スロットのライブラリを使った場合にエラーになるため。
  • スプライトやBGの色を白めに変更できるようにする。(SPCOLORやBGCOLORなどで)
  • プチコン4の公開キーをDLできるようにしてほしい(というか互換性がほしい)
  • DIALOGの文字入力で仮名等も使えるように

インタプリタ、コンパイラ系

  • JITコンパイラの搭載(一度しか実行されない部分を最適化する) ※JIT = Just In Time

アップデートで実装されたもの

プチコン3.6.0で実装されたもの

  • CHKMML関数の追加。
    • CHKMML関数へMML文字列を渡すことによって、正しいMML構文であるかをチェックできる。
  1. PRINT CHKMML(”ABCDEFGX”) ’けっか:0(ただしくない)
  2. PRINT CHKMML(”@52L24CDEF_A”) ’けっか:1(ただしい)

プチコン3.5.0で実装されたもの

そもそもV3.5.0はプチコンBIGとの調整アプデなので無し

プチコン3.3.0で実装されたもの

  • グラフィック画面の1ドット単位でのスクロール
    • GOFS [絶対X座標],[絶対Y座標]<,絶対Z座標>

プチコン3.2.0で実装されたもの

  • 1つのNNIDで投稿フォルダをもっと多くする
    • 課金制のゴールド会員で実装。
  • TALK命令の無くなった機能いろいろ復活させる。
    • 喋る速さ、高さの変更。
  • エラー表の内容が少なすぎる。
    • 3.2.0の説明書で"ほぼ"全ての説明が表記されている。
  • 「美咲フォント」を標準搭載して、漢字を表示可能に。
    • JIS第1水準相当の漢字をコンソールキャラクタとして追加。(フォントは美咲フォントを使用)
  • スプライトの加算合成

プチコン3.1.0で実装されたもの

  • ELSEIF文
  • mkII まででの GPUTCHR の強化版として、グラフィック画面に文字列を描画する命令 GPRINT が欲しい。
    • GPUTCHR が実装され、文字列および文字コードの指定で描画できるようになった。