プチコンまとめArchive

投稿プログラム : プチコンバータ バージョン 0.8.3

パンくずリスト

このページの最終更新 : 2021/04/07 (水) 16:17:26

2020年1月6日投稿 / 2020年2月29日更新 / 投稿者 : りょうTanpo (元うつりきまぐれ) / タグ : 投稿プログラム ツール 変換 プチコンバータ

概要

これはプチコン3号・プチコンBIGのために作られたプログラムを、プチコン4で動作するように変換するツールです。置き換えが必要な命令にプレフィックスをつけた独自命令を定義して、変換時にプレフィックスを付加して独自命令を参照するというやり方をとっています。

主に次のことができます。

  • プチコン4のレイヤーを使って 3DS や TV/GamePad の2画面をエミュレート
  • XSCREENDISPLAY などのスクリーン関連の命令を置き換え
  • SPBG 系の命令も、動作をエミュレートした独自命令に置き換え
  • MIC 系命令を置き換え (無音)
  • ボタンビットやタッチ座標、アニメーション種類やスプライトアトリビュートを変換
  • MML の変換

プチコンバータで移植されたプログラムを実行する際もプチコンバータのプロジェクトが必要です。

把握した範囲でのバグは修正していますが、まだ動作しないプログラムもあります。もしエラーが発生したり、挙動が違ったりしたとき、またツールやヘッダプログラムそのものに間違いを見つけたときは 不具合報告 をお願いします。

動作確認済みの作品?

v0.8.1 の使用方法

GUI ライブラリは実装中で、プロジェクトには入っていません。色ビット数やアンチエイリアスなどのオプションはツールで指定できないので、変換したプログラムの冒頭を一部修正する形となります。

プロジェクト PETITC 内にある SIMPLE.PRG が自動変換ツールです。ツールといっても画面はなく、特定のスロットのプログラムをすぐに変換して起動するだけのものです。

TOPMENUから実行

  1. まず変換ツール SIMPLE.PRG をスマイルツールに登録する。
  2. TOPMENU からプチコン3号のプログラムをそのまま実行する。
  3. たいていエラーで停止するので、プロンプトが表示されている状態でスマイルツールを起動する。

変換プログラムをスマイルツールとして起動

  1. まず変換ツール SIMPLE.PRG をスマイルツールに登録する。
  2. 変換したいファイルのあるプロジェクトに移動して、変換したいファイルを読み込む。どのスロットでも可。
  3. 読み込んだスロットにいる状態でスマイルツールを起動する。

メインプログラムとして起動

通常のプログラムとして SIMPLE.PRG を起動する際は、先にスロット 5 に変換したいプログラムを読み込んでください。スロット 5 の内容は変換後上書きされます。

v0.7.7 以前の使用方法

ここに書いてあるのは最新のバージョンの情報ではありません。

+  ...

スクリーンショット・動画

公開キー

プチコン4用の公開キーです。トップメニューの「作品を見る」から公開キーを入力すると、作品をダウンロードできます。

プチコンバータ v0.8.3
44AAD23Q3


プチコンバータ v0.7.7
4NJA5X3WD

更新履歴

v0.8.3 - 2020/03/04

  • 色変換モード 0 の GLOAD が機能していなかった問題を修正。
  • XON MOTIONXOFF MOTION に正式対応。
  • プチコン3号の SYS/SBGED を試しに同梱してみた。
  • その他細かな修正

v0.8.2 - 2020/03/01

  • コンソール表示に関する修正。
  • 0.8.0 以降でスロット指定のない EXEC がエラーになる問題を修正。
  • DATA 0 のない BGMSETD がエラーになる問題を修正。
  • 最後に編集していたスロットが 0 以外の場合に、TOPMENU から起動する方法でスマイルツールがスロット 0 を参照しなかった問題を修正。
  • MPSTART MPEND MPSEND MPRECV MPSTAT MPNAME$ MPGET MPSET MPCOUNT MPHOST MPLOCAL を追加。これらはダミーなので動作しません。

v0.8.1 - 2020/02/29

  • SPDEF を配列で使用する際なぜか READ する問題を修正 (コピペからのミス)

v0.8.0 - 2020/02/29

  • 内部ソースコードを一新。以前とのランタイムライブラリの互換性はありません。
  • GUI ツールをいったん削除。暫定的にスロットに変換したいプログラムを読み込んでから起動する形となります。なにかいい UI ライブラリないかなぁ
  • MML の動的変換を実装。次の処理を行います。
    • 指定できない音長を、近い値に修正。
    • シャープ・フラットや音長や付点の並び順を修正。
    • 2個以上のシャープやフラットを絶対音程指定に変換。
    • 音色 @144-@151@216-@223 に移動。
    • Q コマンドの値を4倍に修正。
    • マクロ定義を冒頭に移動。
  • ACCEL GYROA GYROV GYROSYNC のエラーを修正。ただしジャイロセンサーが内部で無効にされているバグがあり現在動作しません。
  • COLOR の背景色に対応。
  • 表示要素の重なり順に関する修正。
  • TRUEFALSE を定数に変更。

v0.7.7 - 2020/01/11

  • FILES に文字列配列のみを指定した場合にエラーになる問題を修正。
  • SPDEF の修正。

v0.7.6 - 2020/01/11

  • メインメニューに「サブプログラムとして起動」を追加。プチコンバータをサブプログラムとして起動します。スマイルツールに PETITC/MAIN.PRG が設定されているときのみ利用できます。
  • サブプログラムとして起動されている場合は、右上のバージョン表記の左に SUB と表示されるようになりました。

v0.7.5 - 2020/01/11

  • 書き出しファイル名にプレフィックスを付加するように変更。
  • サブプログラムとして起動した場合は元のプロジェクトに保存するように変更。

v0.7.4 - 2020/01/11

  • 画面回転オプションがエラーになる問題を修正。

v0.7.3 - 2020/01/11

  • CALL BG がエラーになる問題を修正。
  • CALLIDX が番号を補正しない問題を修正。
  • SPPAGE 5SPPAGE 4 と同じ場所を参照する問題を修正。
  • BG チップ番号計算を修正。
  • XSCREEN 時に GCLS されないよう変更。

v0.7.2 - 2020/01/10

  • PRINT に関する修正。
  • 変換オプション「New 3DS」「Wii U」「上画面のみ」「下画面のみ」を新たに追加。
    システム変数 HARDWARE の値を変更して New 3DS あるいは Wii U 用のプログラムを動作させたり、2画面モードの際にどちらか1画面のみを表示させることができます。

v0.7.1 - 2020/01/10

  • PRINT に関する修正。
  • 下画面コンソール表示が著しく遅い問題を修正。
  • SPHITRC のスプライト番号が一部のケースで補正されない問題を修正。
  • CSRX CSRY が下画面でエラーになる問題を修正。
  • LINPUT のセミコロンが PRINT と同じように独自命令に変換され、エラーになる問題を修正。

v0.7.0 - 2020/01/09

  • ツールのメニューをキーボードで操作可能に。
  • 境界色の指定がない GPAINT がエラーになる問題を修正。
  • 下画面コンソールをテキストスクリーンからスプライト実装に変更。
  • CSRZ を追加。
  • SPDEFOUT 引数が5つの場合に値を返さない問題を修正。
  • ファイル名をP3DEF.LIB から PETITC.LIB に変更しました。またツール本体は MAIN.PRG です。

v0.6.6 - 2020/01/08

  • 10以上の引数が渡された SPANIM および BGANIM が無視される問題を修正。現時点で暫定的に32まで対応。

v0.6.5 - 2020/01/08

  • MICSTART MICSTOP MICDATA MICSAVE MICPOS MICSIZE を実装。
  • 本来のプロジェクト以外で実行している際 LOAD などにプロジェクト名が含まれたパスを指定したときも二重に本来のプロジェクト名を付加してしまう問題を修正。

v0.6.4 - 2020/01/08

  • CONTROLLER VIBRATE RGB 実装
  • BGSAVE の typo を修正
  • XSCREEN 6 の typo を修正
  • プロジェクト選択でワークスペースを選択しようとするとメインメニューに戻る問題を修正
  • DIALOG の特殊モードに対応
  • 識別子の直後にスペースを挟まず ? を記述するとエラーになる問題を修正
  1. CLS?

v0.6.3 - 2020/01/07

  • USE でファイル名を指定できるように
  • SPHITSPSPHITRC の結果が -1 のときもスプライト番号を補正計算してしまう問題を修正
  • LOCATE の引数を省略したとき現在の位置を参照していない問題を修正

v0.6.2 - 2020/01/07

  • メニューで「キャンセル」または B ボタンで戻ろうとした際に挙動がおかしくなることがある問題を修正 ( 急に「書き出しますか?」ダイアログが表示されるなど )
  • 書き出しの際、実際には文法エラーではないのに文法エラーが出て保存できない問題を修正

v0.6.1 - 2020/01/07

  • EXEC で実行したプログラムが画面等の環境を初期化してしまう問題を修正。
  • VISIBLE を実装。
  • . がエラーになる問題を修正。
  • SPPAGEBGPAGE が機能していない

v0.6.0 - 2020/01/07

  • ツールが新しくなりました。
  • 変換オプションを追加。画面の回転やアンチエイリアス設定を変更できます。
  • 文法エラーの際プログレスバーが止まったまま固まる問題を修正。
  • FILES の出力を修正。
  • OPTION STRICT 時に XONXOFF がエラーになる問題を修正。変換されたプログラムでは XONXOFF は削除されます。
  • OPTION TOOL がエラーになる問題を修正。変換後のプログラムでは削除されます。
  • EFCWET を実装。

v0.5.4 - 2020/01/07

  • XSCREEN で2画面から1画面になる際に余計な内部スプライトが残っていた問題を修正。

v0.5.3 - 2020/01/07

  • SPCHROUT 引数が5つの場合に値を返さない問題を修正。
  • INKEY$ RENAME DELETE CHKFILE を実装。

v0.5.2 - 2020/01/06

  • サブプログラムとして起動した場合はどのプロジェクトにいてもテスト中に SAVE できるように変更。
  • 定数を DATA に記述するとエラーになる問題を修正。
  • 3号/BIG・4間でのスプライト番号補正に関する修正。
  • GLOADGSAVE での物理色変換に対応。
  • ツールのコメントに記述されていた誤ったバージョンを修正。

v0.5.1 - 2020/01/06

  • スプラッシュスクリーンを追加。
  • ツールのメニューで B ボタンに相当するタッチ・マウスの操作を追加。
  • サブプログラムとして起動されたときに正しく動作するように修正。
  • SPCOL SPCOLVEC SPHITSP SPHITRC SPHITINFO を実装。

不具合情報

バージョン 0.8.0 現在

  • SPCLIP BGCLIP が何もしない。
  • 上画面の背景色が反映されない。
  • BGANIM の XY アニメーションが上下左右反対の動きをする。( BGOFS では問題なし )
  • ジャイロセンサーが反応しない。
  • GRP3 のリソース変換処理に間違いがある (GRP3 を GRPC と typo している)

不具合報告

変換したプログラムが動作しなかったり、ツールやヘッダプログラム内に間違いがあったりした場合はこちらにお願いします。

下から最新のコメントとなります。

  • みうぃき : PC8001エミュを変換した際に、2つ問題点がありました。それらを対策したら、動き始めました。(1).3号と4号で、FILESの出力の仕様が違う(4号だと、"DAT:"などがつくが、3号だと " "か"*"がつく。先頭の1文字を捨ててファイル名を取り出していた処理を4文字捨てるように修正)。(2). XON の後ろの機能名がそのまま残り、未定義変数扱いになる(単純にコメントアウト)。 (2020/01/06 (月) 23:42:53)
  • うつりきまぐれ : ありがとうございます。ver. 0.5.5 で修正します。 (2020/01/07 (火) 08:14:40)
  • うつりきまぐれ : 0.6.0 として修正しました (2020/01/07 (火) 16:04:00)
  • みうぃき : P3DEF.PRG 4453行目、P3DISP_SET6SCREENMODE 5 となっていますが、TYPOで、おそらくはP3DISP_SETXSCREENMODE 6が正しい? (2020/01/07 (火) 23:27:59)
  • みうぃき : SAVEで、"GRP:xxx"でSAVEGしたい時に、すでに"DAT:xxx"というファイルが存在する場合、SAVEG "DAT:xxx" で保存しようとして、エラーになる。SAVEのときは、"GRP:"を"DAT:"に変えないようにするべきか。 (2020/01/08 (水) 00:15:33)
  • うつりきまぐれ : 0.6.4 で修正します。 (2020/01/08 (水) 15:13:25)
  • sou51 : Twitterの方でもリプ飛ばしましたが、GPAINT用の関数で引数3個のときも4個目を参照している箇所がありエラーとなります。0.6.6だと2189行目のBCOLOR32=DEFARG(3)という部分。多分この行削除で大丈夫だと思います (2020/01/09 (木) 10:35:11)
  • うつりきまぐれ : ありがとうございます、修正します。 (2020/01/09 (木) 10:48:55)
  • takumi : NaさんのNewリズミカルおもちつきSPを使ってみだですが……起動毎に大量のセーブを求められます。ファイル名はP3OUTPUT.PRGです。曲洗濯でも毎回出ます。改善方法はありますか (2020/01/09 (木) 17:55:14)
  • うつりきまぐれ : ありがとうございます、修正します。 (2020/01/09 (木) 18:53:54)
  • うつりきまぐれ : すみません、誤送信 (2020/01/09 (木) 18:54:31)
  • うつりきまぐれ : > takumi さん EXEC の時に毎回出ます。改善できないか考えてみます (2020/01/09 (木) 18:55:32)
  • Na : 曲選択でも毎回出るってことはPRGNAME$が取得できてないとか? (2020/01/09 (木) 21:34:25)
  • みうぃき : (1). DEF P3CON_UPDATECURSOR DISP 関数内で、5168行目のLOCATE がOut of range in 4:5168(LOCATE:2)で止まる。5167行目でのCURSORX, CURSORYの値は、41, 0 となっています。(2). LINPT "xxx"; 変数 の場合の ; が P3CON_SEMICOLON に変換されてしまっている。PETITC.LIBの225行目を、IF CODE4$"INPUT" || CODE4$"LINPUT" THEN にすれば、回避できそう。 (2020/01/09 (木) 22:20:24)
  • うつりきまぐれ : Twitter でも受けております、修正いたします。 (2020/01/09 (木) 22:37:29)
  • tskumi : >Naさん そうかもしれません。あと、お餅エディタはエラーを吐きます。エラー文は (2020/01/10 (金) 17:24:20)
  • アルセ : 変換すると画面がチカチカします。 (2020/11/17 (火) 22:11:48)
  • アルセ : ↑の追記 画面というか文字がチカチカしています。スプライトに異常はないのですが... (2020/11/17 (火) 22:14:09)

コメント欄

コメントと要望はこちらにどうぞ。バグ報告はここではなくすぐ上にお願いします。

下から最新のコメントとなります。

  • サル : プチコンmarkIIも対応して欲しいです。 (2020/01/07 (火) 10:56:36)
  • Na : ↑プチコンmkII at 3号をプチコンバータで変換すればできそうです。ただmkIIat3号のプロジェクト内のファイルが多くてどれをコンバートすればいいかわからなくなるのでそのうち改善します (2020/01/07 (火) 15:33:53)
  • うつりきまぐれ : あとで試してみます。あと EXEC で実行するプログラムもコンバートされます (2020/01/07 (火) 22:27:35)
  • Na : E​X​E​Cで実行するプログラムもコンバートされる、というのはEXECをした瞬間そのスロットに入ってるプログラムをコンバートしはじめるってことですか? (2020/01/08 (水) 18:13:43)
  • Na : つまりEXECで実行するファイルはコンバートしておく必要がないってことですかね? (2020/01/08 (水) 18:14:41)
  • Na : あ、mkIIat3号の今のバージョンは中途半端にVERSIONで3号/4の判別をして処理しているところがあったりして不具合が起きると思います。できるだけはやくver3.0出すのでちょとお待ちください (2020/01/08 (水) 18:31:00)
  • takimi : 今度Musics Kingを変換しようと思うんですが…ほしけんさんの漢字ライブラリはさすがに無理なんでしょうか(まだやってないので全く分からない) (2020/01/08 (水) 23:22:00)
  • うつりきまぐれ : > Na さん はい。コンバートするのは最初のファイルだけでよいです。 (2020/01/09 (木) 10:47:25)
  • うつりきまぐれ : > takimi さん 漢字ライブラリは多分動くと思います。昨日動作確認したような気もするんですが覚えてないので、今日改めて動作確認します。 (2020/01/09 (木) 10:48:32)
  • tskumi : ありがとうございます。 (2020/01/09 (木) 16:25:10)
  • Na : ↑3 既にコンバートしたファイルをEXECしたらエラーですか? 1回EXECしてコンバートされたスロットをもう一回EXECしたらどうなるんでしょうか (2020/01/09 (木) 20:13:06)
  • Na : mkIIのやつをエミュレータからコンバータに作り替えようと思ってたんですが、...長くなるので続き (2020/01/09 (木) 20:16:32)
  • うつりきまぐれ : 既にコンバートしたファイルは判別されてそのまま実行してくれるはずです。 (2020/01/09 (木) 21:14:17)
  • Na : VERSIONやHARDWAREとかのシステム変数ってどうなってますか? (2020/01/09 (木) 21:43:35)
  • うつりきまぐれ : 現時点では VERSION=&H03060300 HARDWARE=0 固定になってます。そのうち変更できるようにします (2020/01/09 (木) 22:36:02)
  • うつりきまぐれ : ERR系とMP系以外のシステム変数はだいたい対応してたような気がします。 (2020/01/09 (木) 22:36:35)
  • Na : HARDWARE=0 固定よりもHARDWARE=1固定の方がいいのでは?(Old3DSで処理落ちを防止するためにHARDWARE=0の時だけ特別な処理をするプログラムがあるので) (2020/01/09 (木) 22:50:00)
  • Na : あとBIG専用プログラムがHARDWARE=2じゃないとENDする、みたいなこともあるかと (2020/01/09 (木) 22:51:27)
  • うつりきまぐれ : わかりました。変更できるようにします。 (2020/01/10 (金) 07:33:39)
  • takumi : プチコン通信の題材はこれにしようかな...(ネタ切れてる) (2020/01/11 (土) 14:58:21)
  • 名無し : MPは通信のを1P用画面、2P用画面…という感じに画面分割する形式ですか? (2020/02/09 (日) 18:21:04)
  • うつりきまぐれ : MPはまだ対応してません…。近々対応しようと思ってますが画面分割等のシステムについてはまだまったく考えていませんでした、 (2020/02/09 (日) 20:53:09)
  • HTV04 : どうやら、SB4のMMLは "V"コマンドと "@V"コマンドを切り替えました。 これはMMLコンバーターに実装されていますか? (2020/04/28 (火) 08:10:03)
  • うつりきまぐれ (utrmagure) : まだ実装されていません。まだ作業に時間がかかりますが、修正します。 (2020/04/30 (木) 09:43:33)
  • HTV04 : コメントに返信してくれてありがとう! ほんの少し前に、Na_triumによってより多くの変更が見つかりました:https://new.smilebasicsource.com/pages/734 (2020/05/04 (月) 08:24:47)
  • うつりきまぐれ : 遅い返信すみません!参考にします。ありがとうございます。 (2020/05/06 (水) 09:58:55)
  • Na : 日本語で説明したやつありますよ http://petitverse.hosiken.jp/community/petitcom/topic/?read=1474&ukey=0 (2020/05/06 (水) 10:13:11)
  • うつりきまぐれ : あっ ほんとだ、ありがとうございます (2020/05/11 (月) 14:27:03)
  • うつりきまぐれ : ↑8 メインとサブで画面分割対応するかもしれません。その他色々作業してるので気長にお待ち下さい (2020/05/24 (日) 21:45:47)
  • アルセ(元[名無し]) : ↑うつりきまぐれさん»返信ありがとうございます。名無しとして質問していたアルセです。画面分割って、1pがメインで2p以降はサブになる感じですよね?あと画面分割か、メインの画面のみにするか選べるように出来ますか?ご返信お待ちしております。 (2020/06/15 (月) 02:35:08)
  • りょうたんぽ : 元うつりです。画面分割はその通りです。3DS 2台分まで対応します。画面分割とメインのみの選択……というのは、ひょっとしてBIGについての話でしょうか?BIGは画面分割機能の予定はありません、3DSのワイヤレス通信は同じ、あるいは別のプログラムを別の3DSで動かすということなので画面分割で、という感じです。ちなみに、いまは完全に新しいバージョンとしてコードを書き直しています。 (2020/06/15 (月) 15:39:20)
  • 名無しさん : BIGに対応したら普通にうれしい (2020/06/15 (月) 17:34:35)
  • アルセ : ↑りょうたんぽさん»返信ありがとうございます。[メインの画面のみ]というのは、1pの画面のみ表示することも出来るのかということです。説明が分かりづらくてすみませんでした。 (2020/06/19 (金) 01:04:41)
  • りょうたんぽ : こちらこそすみません、3DSの1Pのみ、ということですね?できるようにしておきます。 (2020/06/23 (火) 08:39:37)
  • アルセ : すみません、「アンチエイリアス」ってなんのことですか? (2020/11/17 (火) 22:17:10)
  • りょうTanpo : ドットのギザギザを目立たないようにするものです。ドットがにじむように見えます。プチコンバータでは画面のサイズが一定ではないため、プチコン4の解像度 (1280x720) に対するスケール率も変わるのですが、それが整数でない0.75とかになると、プログラムで書いた1ドットが特定の場所によって2x2=4ドットに見えたり、逆に1より大きい (エミュレータの画面が1280x720よりデカい) と消滅したりすることがあります。なので、プチコン4のXSCREENのアンチエイリアスを設定する引数を使って、その差を均一にすることができます。 (2020/11/20 (金) 17:55:14)
  • りょうTanpo : あと最近プチコンバータの新版に関する作業がなかなかできていないです。ごめんなさい! (2020/11/20 (金) 17:56:15)
  • アルセ : ↑りょうTanpoさん»分かりました。返信遅れてすみません。 (2020/12/25 (金) 01:55:16)