現在、MSX2でゲーム制作の実証テストを続けています。MSX2は Screen 5を指定した場合は、VRAM 128KBでは256x256ページを4枚持つことが出来ます。私はこの裏ページに事前に大量の画像データを配置しようと思いましたが、配置したデータの位置を定数データとしてまとめるのがとても大変だなあと。そこで、画像編集で複数のデータを集積した画像の範囲を指定するツールを作ろうと思い立ちました。その名も TextureRectarです。折角作ったのでフリーでソースコード付きで公開します。



  • 最初に
本ツールは元々は自分のために作成しました。一般に公開する気は最初はなかったのですが、意外と欲しいという人がいたので思い切って公開することにします。小さなバグは多数残っています。ただ、自分はツールを作りたかったのではなく、データの取りまとめを行いたかったので、データが出来た今は不要の長物となりました。そのため、本ツールに対しては私は今後修正を行いません。ソースコード付きで公開するのは、皆さんで改良して頂ければと思ったためです。

本ツールを使用した結果について、公開した内藤は責任を負えません。使用した結果については使用者が責を追うものとします。とは言え、本ツールの著作権放棄もするつもりはありませんので、使用する皆さん個人の中で使用を止めておいてください。勝手に転載とか公開なんて言語道断です。その点はご理解頂きたく存じます。

なお、本ツールを使用して出来上がったデータは、間違いなく皆さんの所有物です。それに対して内藤がとやかく言う事は一切ない事も、ここに断言しておきます。



  • 基本的な使い方
本ツールは最低でも FHD 解像度のモニタで起動する前提となっていますが、一応ギリギリ640x480の解像度でも使用できるようにはなっています。さて、最初にやる事は、このツールに画像を読み込ませる事です。File > Load Image... または [Ctrl]+[L] として、本ツールに画像を読み込ませてください。

マウスの左クリックからのドラッグで範囲指定です。赤い点線で範囲が指定されます。
赤い点線
範囲指定はグリッドの頂点に吸着されるようになっています。
吸着指定
細かく位置決めをする時は、メニューの Edit > Adsorption to gridのチェックを外します。また、吸着の強さは Adsorption Strengthで変更できます。デフォルトは Normalです。
吸着の強さ
指定した範囲を登録する場合は、そのまま [SPACE]キーを押します。右側のリストに現在の範囲が、仮の名前で登録されます。
登録直後
登録された情報はマウスで再編集が可能です。特に名前は Hoge と普通は使わない名称ですので、登録直後に名前変更を推奨します。リストを選択状態にすると、登録した範囲が白黒点線で表示され、その左上に名称が表示されます。
登録済みの状態
この範囲指定を必要なだけ繰り返して、最後に File > Save または [Ctrl]+[S] として保存します。セーブデータの内容は単純な XML形式です。
セーブデータ
このままでも使えるとは思いますが、その他の出力形式に対応するのが File > Export です。こちらで自分の好きな形式を作って出力して、自分の作っているゲームなどに組み込みます。



  • 編集領域
編集領域
メインウィンドウの左ペインが編集領域です。ここで範囲指定を行います。操作方法は以下となります。

マウス
左ドラッグ 範囲指定
右クリック 範囲サイズの微調整

キーボード
Space] 範囲指定の登録
[Ctrl]+[D] 範囲指定の解除
[Ctrl]+[G] グリッド表示のON/OFF
[+] 表示を拡大する
[-] 表示を縮小する

マウスクリック位置のグリッド吸着は、グリッド表示をOFFにすると効かなくなります。左ドラッグ中でも [Ctrl]+[G] は効きますので1ドット単位で調整したい場合は、そのショートカットをご活用ください。なお、完全に一致した範囲は再登録不能です。
※ マウス操作に関しては多少クセがあります。



  • リスト領域
登録リスト
メインウィンドウの右ペインがリスト領域です。ここでは登録済みのデータの再編集が出来ます。登録内容の変更は、編集したい場所でダブルクリックします。速いダブルクリックだと反応しないことがあります。カチッガチッと確実にダブルクリックしてください。数値入力後に enter すると、なぜか名前まで書き換わってしまうというバグがあります。数値入力後はカーソルを動かして確定するようにしてください^^;

数値直接入力では値のチェックはしていません。そのため、登録済みの別の範囲と完全に重なったDataとかも出来てしまいます。ご注意ください。

あと、登録情報の位置変更は左側の▲▼の移動ボタンを使います。項目移動させたいリストを選択状態にして、移動ボタンを押します。複数項目同時移動ができますので、そちらを使うと多少は便利ではないかと…。マウスのD&Dでリストの位置移動がベストな操作系とは思うのですが、ここは手抜きしています^^;;

不要な登録情報は対象を選択状態として [delete]キーを押します。
[冷凍] ニチレイ 具材たっぷり五目炒飯 500g×6袋
ニチレイフーズ
2022-07-20
※初めて見た時から美味そうだなあと目を付けてます…

  • File ファイル
Menu_File
New Project
初期化します…が、バグってて初期化されません^^;

Open Project
保存した配置データを読み込みます。画像との連動はしていません。あくまでも配置データだけをロードします。

Load Image
編集領域に表示する画像を読み込みます。配置情報は壊しません。これは、配置に問題が見つかった時に、別の画像編集で修正した後に、また本ツールで読み込ませるために、このような仕様としています。実際、自分がデータを作る際には、いくつか問題が見つかったので、画像だけの再読み込みはとても助かっていたりします。

Save
配置情報をプロジェクトファイルとして保存します。初めての時はファイル選択ダイアログが表示されます。また、キャプションのタイトル部分には、現在編集中のファイル名が表示されます。

Save As
名前を付けて保存です。上書きしたくない場合などに使用します。



  • Export
本ツールの目玉とも言える機能です。ダイアログの左下にプレビューがありますので、適当に設定を弄っていれば、どういう形式で出力されるかが一目瞭然です。簡単に機能説明します。
Exportダイアログ
Style
大まかな表示形式の指定です。アセンブラ系では Equ, Define Byte Define Word の3種類が、コンパイラ…というか C# 用として Readonly が用意されています。Capital Letters はラベルを全て大文字にします。NameSpaceは、通常は各ラベルに接頭語として機能しますが、AILZ80ASMのチェックをした場合は、まさにその名の通り、名前空間として出力します。AILZ80ASMのチェックは、Use Local Labelにチェックをすると使えるようになります。

Numeric
数値表現指定です。Dec が10進数、Hex が16進数です。16進数指定の場合は、表記についてのオプションが有効になります。$ABCD, 0ABCDH, 0xABCD がデフォルトで選択できます。ここにない表示を起動の場合は Yourself を選択すると、Prefix と Suffix が入力できるようになります。

Position Offset
通常は左上を 0,0 の起点としていますが、それをズラす指定です。例えば、MSX2 の Page.3 に配置の場合は、Y の値を 512とする事で、Page.3配置に対応となります。

Path
保存対象パスです。フォルダをD&Dする事でPathの指定をするか、右側の [...]ボタンを押して、フォルダ選択をします。

Filename
エクスポートするファイル名を指定します。自分で入力するか、出力対象ファイルを D&Dする事で名前を指定します。ファイル名を正しく設定できたら、Outputボタンが押せるようになります。これを押す事で指定形式でファイルが出力されます。



  • Edit 編集
Menu_Edit
New Registration
範囲の新規登録です。実際にはメニューから使うことはおそらくなくて、これは [Space] のショートカットを実装するためにメニューに書いてある程度です。ボタンとかならマウスで操作するとは思うんですけどね…

Deselect
範囲指定を解除します。これはリストの選択設定も解除しますのでご注意ください。ショートカットは [Ctrl]+[D] ですが、これは Photoshop の選択解除と同じショートカットです。

Adsorption to grid
吸着指定です。指定する度にチェックが変化します。

Adsorption Strength
吸着強さです。内部的には吸着判定半径となっています。Wide, Normal, Aarrow からの選択です。一般に、モニタサイズが4Kとか広ければ Wide、ノートPCのように狭ければ Aarrowを指定します。

Minimum Width / Minimum Height
範囲指定時の座標の最小単位を指定します。例えば、MSX2 Screen 5 の場合は X座標はバイト単位なので偶数である必要があります。そこで、この Minimum Widthを 2にしておくことで、万が一の奇数座標入力を防ぐことが出来ます。
※ リストの入力値編集ではこの指定には縛られません。



  • View 表示
View
Grid
グリッド表示の on/offです。onの時にグリッド吸着が有効となります。ショートカットの [Vtrl]+[G] で簡単に切り替えできます。

Grid Color
グリッドの色を指定します。指定は Black と White のみです。デフォルトで Blackです。

Grid Settings
グリッドの幅を設定します。4,8,16,32 の4種類から選択できます。デフォルトは 8です。

Zoom In / Zoom Out
編集領域の拡大表示率を指定します。元画像より縮小しての表示はできません。これは範囲指定のために1ドットの位置が曖昧になるのを防ぐためです。拡大率は10倍まで有効です。おそらくテンキーの [+][-] で切り替えるのがラクだと思います。

Background Color...
背景色を設定します。表示する画像によっては変更したほうが見やすいこともあるかと、メニューを用意していますが、自分的には全く使っていません^^;



  • Help ヘルプ
Aboutダイアログが表示されます。おそらく最も意味のないダイアログです…
About


  • ソースコード
Common.cs
使うとそれなりに便利な関数です…が、あまり量は含まれていないです。ここに記載の関数はネットから拾った内容となっています。

WindowsAPI.cs
Windowsツールを作成する際に、Windows API を直接叩きたい時に使ってるソースコードです。最近はこんなの使うの止めろとVSからご指摘が入るのですが…

MainForm.cs
メインフォームの本体です。2日という突貫で作ったので、中はわりとぐちゃぐちゃです^^;

DlgExport.cs
エクスポートダイアログのプログラム本体です。無限ループを防ぐフラグがあったりと、こちらもあまり良いコード内容とは思えません^^;;;



  • 最後に
こんな突貫で作ったツールではありますが、PS1のテクスチャを扱う時にあったら便利だったろうなとか、Unityのテスクチャを指定する際に使えるかもとか、いろいろ応用は出来そうな気はします。皆さんのお役に立てば幸いです。

…ツールのバグで皆さんが悲鳴を上げないように祈っております^^;;;;

ダウンロード
TextureRectar_202501142115.zip
55.2MB
※気軽に個室を作れるスグレモノ。値段も安い。国産(製造はおそらく中国ですが…