P6 はじめました 投稿者:Ackieee 投稿日:2010/04/17(Sat) 12:16 No.3077 | |
|
こんにちは,Ackieee と申します。
twitter のタイムラインでは Hashi さんはじめ P6er の皆さまには大変お世話になっております。
厨二の夏からの PC-6001 ユーザーで,高校生の頃に 66SR へと渡り歩き,大卒を卒業して上京する手前までメイン マシンとして使っていました (サブ機は X68000) 。
現在,P6 一式は卒業した高校に寄贈済みですが,66SR 一式は実家に送致し保管してあります。この 66SR を先日帰省した際に荷造りして,こっちに送るよう手配してきました。来月ぐらいにお米や夏野菜などと一緒に手元に届く見込みです。 http://twitpic.com/1bf5h8
また,66SR 着荷に先立ち,オークションで PC-6001 初代機を手に入れ,約 20 年振りに P6er として返り咲くことができました (そこの人,足し算しない) 。 http://twitpic.com/1fjb1w
皆様のおかげで,着実に厨二へと逆戻りを続けています。せっかくなので何か作ってみようと,EXAS BASIC コンパイラ ROM を吸い出してノート PC に納め,会社の業後にプチプチやりはじめました。
早く 20 年間のブランクを埋めて,夢の P6 充生活を手に入れたいと考えています。皆様今後ともよろしくお願いいたします。 |
| Re: P6 はじめました Bernie - 2010/04/17(Sat) 23:14 No.3078 | |
|
|
おお!66SRも初代機も良品ですね。素晴らしい。
特に66SRは専用モニタが故障してしまう事が多く、なかなか完動品を入手するのも難しいですしね…。
> せっかくなので何か作ってみようと,EXAS BASIC コンパイラ ROM を吸い出してノート PC に納め,会社の業後にプチプチやりはじめました。 コレハ キタイセザルヲ エナイ…(*´Д`)ハァハァ
|
| Re: P6 はじめました Hashi - 2010/04/18(Sun) 00:16 No.3079 | |
|
|
Ackieeeさんキター!!
> 厨二の夏からの PC-6001 ユーザーで,高校生の頃に 66SR へと渡り歩き, > 大卒を卒業して上京する手前までメイン マシンとして使っていました > (サブ機は X68000) 。
メインが66SRで、サブがX68Kとか! 発掘お疲れ様であります。 お米や夏野菜と一緒に66SRが届くのは、66SRも野菜などと一緒な有機物 みたいでほほえましいです。 …新作!? 複数の人が新作を作っているという噂を聞いているので、今年はたくさん 来るのかーッ!? |
| Re: P6 はじめました Ackieee - 2010/05/03(Mon) 01:36 No.3083 | |
|
|
Ackieee デスヨ。
続報です。実家から,お米や筍の水煮と一緒に PC-6601SR 本体が着荷しましたよ。 http://twitpic.com/1k7utw http://twitpic.com/1k7za6
専用 TV モニタ (PC-TV151) も梱包したのに,本体の箱しか届かなかったので,電話してみたら,古い TV だったので捨てようとしていたとのこと。うわーあぶねぇ。
Hashiさん > コレハ キタイセザルヲ エナイ…(*´Д`)ハァハァ Bernieさん > …新作!?
ヤバ,期待させた。なんか皆さん 6 月に向けて着々と進めておられるご様子で,すごいなーと感心してます。
作ってるのはゲームなのですが,正直なところ,ゲーム製作ってやったことが無いので,やり方が合ってるかどうかわかりません。それどころか,最近の開発手法がどういうものかもわからないので,まずは,
1) I/O誌の新機械語モニタを Bernie さんの OCR で入力して PC6001VW に持ってく 2) チラシの裏にアセンブラで書いた Hello プログラムをハンド アセンブル 3) 機械語モニタで打ち込みして SAVE 4) EXEC ... 動いた!
ができることから確認しました。そこからかよ,って感じですが。
そうこうしているうちに,ZASM というので Z80 のクロスアセンブルができることがわかったり,触ってるうちに誤ってモニタ モードを起動してしまって,なにこれスゴーイ! 機械語モニタいらなかったじゃーん! loadmem とかステップ実行とか便利すぐる! とか。← いまここ
で,現在の手法は,メインの部分を EXAS BASIC コンパイラ用に N60 BASIC で書いて,各ルーチンをアセンブラで書いてます。
1) アルゴリズムを C 言語っぽく記述 2) 1) をハンドコンパイルしながら秀丸で Z80 アセンブラ記述 3) ZASM でアセンブルして HEX コードに 4) HEX2BIN でバイナリ化 (複数 ORG に対応するため一旦 HEX に) 5) Bz で バイナリを ROM ファイルに貼り付け 6) PC6001VW を起動して EXEC ナントカ
といった感じです。ランタイムをリンクするまでは EXAS BASIC コンパイラ ROM 内ライブラリが必要なので,ここは思い切って ROM 版ソフトとして,戦士の ROM 仕様を使わせていただいています。電源が入ると,ROM2 の中身を &H6000 〜 に転送してます。&H7000 〜 を仮装マップとかワークエリアに使ってます。ああ,なんて贅沢。
教則本は,こないだ実家で見つけてきた「PC-6001 PC-6001mkII わかるマシン語入門」(新星出版社) と Web にある Z80 関係の資料だけです。Techknow もあったはずだけど,見つけられませんでした。
まずは部品作りからで,EXAS から呼び出せる俺スプライト ルーチンっぽいものはできました。現在は,メインを書きながら,横っちょで 3x5 フォント用文字列の出力ルーチンを製作中 (スコア表示など用) 。まだまだ道は長いかもです。6 月までにどれぐらいできるのか?
そんな感じなんですが,なんか,やり方が根本的に間違ってるよーとか,無駄なことをしているとか,あれば,是非是非ご指摘ください。 |
| Re: P6 はじめました Ackieee - 2010/05/03(Mon) 02:47 No.3086 | |
|
|
おうわ,BernieさんとHashiさんのコメントが逆でした。ごめんなさい。 |
| Re: P6 はじめました Hashi - 2010/05/04(Tue) 01:30 No.3087 | |
|
|
P6開発環境については、色々とやってらっしゃる方が多いので、 情報提供をお願いします。 のりさんとかBernieさんとかTiny野郎さんとかbookwormさんとか KAWさんとかとか。 あ、bookwormさんのサイトで、開発環境についてちょっと触れられて いたような気がします。
> まずは部品作りからで,EXAS から呼び出せる俺スプライト ルーチンっぽい > ものはできました。現在は,メインを書きながら,横っちょで 3x5 フォント > 用文字列の出力ルーチンを製作中 (スコア表示など用) 。まだまだ道は長い > かもです。6 月までにどれぐらいできるのか?
wktk! |
| Re: P6 はじめました Ackieee - 2010/05/05(Wed) 16:00 No.3092 | |
|
|
こんちは,Ackieee です。
今回作りはじめたものを,できた部分から公開していって, 作る作る鷺にならないよう自分にプレッシャーをかけたいと 思っていたところ,Bernie さんのご厚意で,うpろだを ご貸与いただけました。ありがとうございます。
まず,最初に作った,俺スプライト ルーチンを置きました。 ゲーム内のマイ キャラ表示に特化しています。 呼び出し用の BASIC プログラムとソースも入ってます。
http://bernie.hp.infoseek.co.jp/cgi-bin/upload/117.zip
(うpろだ上の ZIP ファイル名がマカダミアのアレっぽい ですが,全然関係ないです。)
PC6001VW 3.03 の PC-6001,mk2,66SR で動作確認しました。 任意の P6 を mode 2, page 2 で起動し, MySprite_test[mode2-page2].p6 を CLOAD して RUN してください。 すぐにマイ キャラが表示されます。
カーソル キーの右で右に,左で左に動きます。 そのほかのカーソル入力では,その場で足踏みします。 ただそれだけのものです。
ああ,笑うがいいさ。 |
| Re: P6 はじめました Ackieee - 2010/05/05(Wed) 16:11 No.3093 | |
|
|
ふがふがっっ うpろだのサイト (Infoseek) が Referer を見ているのか, 直リンを踏むと 403 になりました。
場所は,皆様ご存知かと思いますが,Bernie さんのサイトの P6Develop にある「現役P6プログラマ プログラム公開用BBS」 です。 |
| Re: P6 はじめました bookworm - 2010/05/05(Wed) 16:35 No.3094 | |
|
|
独力でそこまでたどり着ける方なら、もはや何も付け加えることは無いように思います。 既に色々作っておられるようですし、むしろ教えを請いたいくらいです。
強いて言うならば…Z80バイナリを出力するアセンブラは ZASM 以外にも色々ありますので、 あれこれ試してみるとか。P6で何か作る際に有用な定番ツール類もあるといいですね。 後はメモリマップとかI/Oの詳細とか、拡張機器のあれこれとかでしょうか。 (かくいう私は未だにキー入力のまともなやり方すら知りません。) なお、Z80をサポートした C 環境もありますよ。
バイナリからエミュレータあるいは実機への持って行き方ですが、 エミュレータによってはテープイメージへの出力などもサポートされています。 凝り出すとCLOADでマシン語直読みのような変態ローダーを仕込むようになります(笑)。
>「PC-6001 PC-6001mkII わかるマシン語入門」(新星出版社) 私もこれですね。巻末の命令解説はすりきれるほど読みました。
しかし、自力で環境構築できないで挫折される方も結構いそうですね。 当時のBASICなら得意、という方でもBASICリファレンスがなかったり、 あったとしても EXEC &H1058 ってなんだっけ?みたいなことになるのは残念です。
と書いたところでスプライトルーチンが来たようですね。 頭のプロペラが回って空を飛ぶのかと、スペースバーを連打してしまいました。ワハハ. ソースで気になる点が。 srl l ;2で割る srl h となっていますが、これは正しく動かないと思います。 Bernieさんの所の触手も面白そうですね。多関節は扱ってみたいテーマだなあ…。 |
| Re: P6 はじめました Bernie - 2010/05/05(Wed) 16:47 No.3095 | |
|
|
ウットイ、キタキタキタキタ━━━(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)━━━━!!!! 本気だ、本気でやる気だ!(*´Д`)ハァハァ これは期待せざるを得ない。
P6で何か作るときは、キャラクタデータの取り込みが結構な手間になりますよね。バイナリの手起こしだと修正する時間も馬鹿にならないし…。 キャラクタのフォーマットなど、P6デベロパーは各人バラバラに作っている感じですが、その内フォーマとか摺り合わせ出来たら良いかも知れません。
Bookwormさんの所ではN60SC4の色滲み用の切り出しツールを公開していますが、自分のところでも独自のN60SC3、N62SC3用のツールを使っていたりします。5,6年前から作り始めて、まだ仕様が固まらないので未公開状態なんですけどね…(^^;
|
| Re: P6 はじめました KAW - 2010/05/06(Thu) 00:46 No.3096 | |
|
|
う、ちょっと掲示板を見てから寝ようと思った矢先に...。
私もZASMと秀丸を使ってます。 私の場合、コマンドを撃つのが面倒なので、以下のようなバッチファイル を作ってエクスプローラの右クリックメニューに登録しています。 このバッチファイルにABC.ASMファイルを放り込むと、ABC.BINファイルに アセンブルした結果のバイナリファイルが出力されます。 PAUSEを入れているのはアセンブルが成功したか確認するため。
@D:\wtools\Program\zasm\ZASM -C%~n1.BIN -Z %~n1%~x1 @PAUSE
出来上がったバイナリファイルを、PC-6001VWのモニタモードのbatコマンド で読み込ませてます。けど、戦士のROMだとちょっと違うかも?
Excelを使っているようでしたら、ROMファイルの組み立てもExcelマクロ を作って実行した方が早いような気がします。
|
| Re: P6 はじめました JOT - 2010/05/06(Thu) 03:21 No.3098 | |
|
|
私もZASM使ってましたが、Vista様で使うとUSモードになってしまいアレだったので、Bookwormさんのサイトを参考にASに乗り換えました。 局所ラベルとか強力なマクロとか非常に便利なんですけど、多機能すぎて全然使いこなせてません(^^; |
| Re: P6 はじめました TINY野郎 - 2010/05/06(Thu) 21:11 No.3101 | |
|
|
お邪魔します。 皆さまの開発環境、参考になります。
私の場合は、ZASMで開発をしております。 ASは多機能で素晴らしいと思いますが、 ZASMのお手軽さが、私には合っているようです。
ちなみに、グラフィックデータの取り込みツールは、 何年も前にperlで書いたものを今でも使っていたりします。 C#で作りなおしたりもしたのですが、 DOS窓でサクっと終わるのが好きなのかもしれません。
そういうわけで、基本的にマウスから手を離し、 エディタ、DOS窓、PC6001VWを ガシガシ切り替えながら開発をしているのですが、 このとき、ALT+TABでウインドウを切り替えるたびに、 PC6001VWがバイナリエディットモードになってしまうので、 ちょっとだけ戸惑ったりします(^^; |
| Re: P6 はじめました Bernie - 2010/05/07(Fri) 22:38 No.3104 | |
|
|
> このとき、ALT+TABでウインドウを切り替えるたびに、PC6001VWがバイナリエディットモードになってしまう 速攻直しますた〜(゜∀゜)ノ |
| Re: P6 はじめました TINY野郎 - 2010/05/08(Sat) 01:24 No.3105 | |
|
|
>Bernieさん 素早いご対応、本当にありがとうございます。 開発効率が格段にアップいたしました。 ますます頑張ってまいります。 |
| Re: P6 はじめました Ackieee - 2010/05/08(Sat) 18:30 No.3108 | |
|
|
P6のすごい方々にアドバイスいただけててガクブルしてます。
■ bookworm さん
ありがとうございます。さっそく AS を試してみます。 私も C で直接書ければ楽ちんかもなーと思って調べてて
・SDCC (Free - GPL) http://sdcc.sourceforge.net/
・HI-TECH C (Free - 要 CP/M) http://www.htsoft.com/ http://www.os2site.com/dec/rainbow/cpm/c/
・LSI−C80 (10万円!) http://www.lsi-j.co.jp/hard/product/lsic80/
・GCC toolchain for Z80 (実体なし ?) http://sourceforge.net/projects/z80gcc/
この 4 本が見つかりました。無料でいけそうなのは上の2 つで ... って,これの実証をされていたサイトをよく見たら bookworm さんの所でした。
Z80 バイナリができるまでのてかずが結構多いようですが, 次回作ぐらいで使ってみたいなーと考えてます。
LSI-C は,PC98 を使っていた頃に 86 試食版 (スモールセット専用) にお世話になりました。可能な限り引数をレジスタ渡ししてくれる ようなので,どんなコードが生成されるのか興味津々なのですが, じゅうまんえんなので,手は出せないと思います。
> 当時のBASICなら得意、という方でもBASICリファレンスがなかったり、 > あったとしても EXEC &H1058 ってなんだっけ?みたいなことになるのは残念です。
ありましたねー。キーバッファ クリア。リストに組み込むとマシン語を 使ってる気分になれました。カーソル位置への文字列表示の BIOS ルーチンなんかをよく使ったのですが,アドレスさえ思い出せません。 ロスト テクノロジーです。Techknow に書いてあったのかなぁ。
> ソースで気になる点が。 > srl l ;2で割る > srl h > となっていますが、これは正しく動かないと思います。
お恥ずかしい。その部分は,regHL = int (regHL / 2) の割り算を やろうとしていて,
98E7 CB3D srl l ;2で割る 98E9 CB3C srl h 98EB D2F098 jp nc, no_borrow ;continue 98EE CBFD set 7, l 98F0 no_borrow:
ここまで続いてるんです。regH と regL とを独立して 1/2 倍していて, もし regH でキャリーが出たら regL の先頭ビットを立てています。 rr の,キャリー フラグも含めた 9 ビット ローテートの存在を 知らなかったため,こんなへなちょこコードを書いてました。
望ましいコードは,
srl h rr l
だけですね。なおします。
■ bernie さん
うpろだのご提供ありがとうございます。
> ウットイ、キタキタキタキタ━━━(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)━━━━!!!! > 本気だ、本気でやる気だ!(*´Д`)ハァハァ
薗田さんも既に P6 ウットイの製作宣言をされていましたが, 私も 4 月 1 日にウソ画を出しちゃった責任を取って製作する ことにしました。ウソ画 ↓ http://twitpic.com/1djz67 http://twitpic.com/1c830f
キャラクタの取り込みは,ソースと一緒に入っている Excel シートを使いました。Excel 2007 から,4 色以上の条件付き 書式が使えるようになったので,SC3 のキャラが再現できました。
ウットイのロゴなどは,ウソ画から Bernie さんのツールで VRAM データにして,そのままブロック転送して ROM に持って 行ってます。謝謝。
|
| Re: P6 はじめました bookworm - 2010/05/08(Sat) 20:13 No.3109 | |
|
|
あああ、理解しました。 チラっと見ただけで偉そうに言うものじゃないですね。申し訳ないです。猛省。
AS は自分のサイトで取り上げておきながら、毎回愚痴りながら使っています。 実はアセンブラ乗り換えを機にP6関連ページを作り直すつもりだったのですが 乗り換え先がイマイチだったので出戻り中なのです。 こんなに落ち着きが無くて大丈夫なのか私。
某パズルゲーム制作中ですが、ロジックの部分は高級言語向きだとつくづく思いました。 インデックスレジスタがこれほど頼もしく見える日が来るとは…。 10万円コースは厳しいですが、手になじむ環境が見つかると良いですね。 新作大いに期待しております。 |
| Re: P6 はじめました Ackieee - 2010/05/09(Sun) 07:51 No.3110 | |
|
|
■ KAW さん
ああ,なるほど。編集済み ASM ファイルを右クリックして [アセンブル] みたいなのを選択するとコマンド プロンプト ウィンドウが上がって,アセンブル結果を表示して停まる わけですね。かっちょいい。
私は,ZASM.EXE が入ったフォルダと開発フォルダのショート カットを各々デスクトップに置いていて,その中の EXE ファイルと ASM ファイルとを CMD.EXE ウィンドウにぽいぽい ドロップして,コマンド ラインを作ってます。 あとは,秀丸でソース コードを編集するたびに,上下キーで アセンブル コマンドをヒストリ呼び出し。かなり原始的です。
メガ ROM ファイルは,128KB のダミーのバイナリ ファイルが あらかじめ作ってあります (今編集しているのがどのページか がわかるよう,8 KB ずつ 00 11 22 ... FF で埋めてます) 。
それに対して,さっきのアセンブルでできあがった BINファイルを, Bz で任意のページにコピペしてます。わりと普通。
メガ ROM ファイルの編集は,PC6001VW の起動中でも可能で, PC6001VW の仮想電源をオフにしたあと,再びオンにすれば 書き変わった ROM が刺さった状態で仮想マシンが起動します。
> Excelを使っているようでしたら、ROMファイルの組み立てもExcelマクロ > を作って実行した方が早いような気がします。
たしかにそうですねー。Excel からバイナリって書けるのかな。 今は,16 進で書いたパターンをコピペでテキスト出力して, HEX2BIN でバイナリ化するか,秀丸の正規表現置換でアセンブラの db, dw, equ の疑似命令を貼り付けてます。少なくとも,この 疑似命令をはさむぐらいは Excel 単体でいけそうですね。
■ JOT さん
Vista だと US モードに。なるほど。
私は,ほかにも,ファイル名が DOS の,8+3 文字 (英字は大文字 のみ) の縛りでアセンブルできなくてはまりました。
あと,BASIC からの呼び出し先参照のために -s オプションで シンボル テーブルを出力したら,シンボルが 8 文字で切られて どれが何なのか判別できなかったり。
でも,それ以外は今のところ全然問題なしです。 |
| Re: P6 はじめました Ackieee - 2010/05/09(Sun) 18:21 No.3111 | |
|
|
■ TINY野郎 さん
> ちなみに、グラフィックデータの取り込みツールは、 > 何年も前にperlで書いたものを今でも使っていたりします。
私も,最初は perl + ImageMagick で BMP 構造解析をやって VRAM ファイルを作ろうとしてたのですが,なんと,Bernie さん のところに既にそのためのツールがあるじゃないですか。 http://bernie.hp.infoseek.co.jp/develop/bmp2p6g.html
変換の元絵作りには,JASC の Paint Shop Pro 3 を使って います。15年前のソフトですが,ローレゾ画を描くには最強の ツールだと思ってます。(↓機能制限なしの Share Ware 版) http://www.giffer.com/public/win/pwgrphcs/Files/PSP311.ZIP
これを起動して,[File] - [Open] で,テンプレ BMP http://bernie.hp.infoseek.co.jp/develop/p6tools/n60_sc3_color.zip
を読みこんだ後,[Colors] - [Save Palette ...] でパレット 情報をファイルに保存します。
次に,取り込みたいグラフィック ファイルを開いて,[Colors] - [Load Palette ...] でさきほど保存したパレット情報を 読み込みます (先に目的の色の組み合わせまで減色しておいた 方が仕上がりが良いです) 。
これを BMP 方式で保存して,Bernie さんの BMP2P6G.exe に 通してます。
> DOS窓でサクっと終わるのが好きなのかもしれません。
DOS 窓とか,キーボード only でサクッと。わかります。 IDE 上で,右手マウス,左手キーボード,みたいな感じで 開発を進めてる人を社内で見かけると,FPS のプロプレイヤー を視るような羨望のまなざしを向けてしまいますぜ。 真似できません。
■ bookworm さん
> チラっと見ただけで偉そうに言うものじゃないですね。申し訳ないです。猛省。
とんでもない。
> srl l ;2で割る > srl h
ここにしかコメントがなかったらそう読まれるのは当然で, 普段のコード レビューで「あー,そこは○○のつもりでした。」 に対して「ならば最初からそうコメントしなさい。」と 言ってるのが自分にそのままふりかかってきた感じです。 うひー。
|
| Re: P6 はじめました KAW - 2010/05/09(Sun) 23:04 No.3112 | |
|
| Re: P6 はじめました Ackieee - 2010/06/13(Sun) 19:55 No.3141 | |
|
|
■ KAWさん
あわわわわふぉめんなさーい。 気付かず一か月以上の放置プレイでした。
なるほど,Binary ファイルを開く際にバイナリ形式が選べるんですね。 配列の添え字が 1 オリジンというのがちょっと慣れないですが, Excel おそるべし。
Z80 のニーモニック コードと対応するバイナリ値を表にすれば, Excel マクロでアセンブラとか作れそう (誰得) 。
|
|