SSブログ
English Version
ポケコン ブログトップ
前の5件 | -

ポケコン(PC-G850V)の周辺機器接続端子キャップ [ポケコン]

 3Dプリンタのフィラメントを交換したついでにポケコン(PC-G850V)の周辺機器接続端子のキャップを作ってみました(無くしたわけではありません)。

 実物をよく見てみると左右非対称だったんですね。本体に装着した時にロックする突起部分に袴をはかせて強度を上げたかったのですがきちんと閉まらなくなるので面取りのみ行いました。まぁあまり力が加わらない部分なので大丈夫だと思います。

 いつものように最初に現物をサイズ計測してCADに入力、試し印字して現物合せし、要修正部分をフィードバック後、再度出力してきちんとハマるようになりました。

 CADでの設計は下図の通りです。

PC-G850Vの周辺機器接続端子のキャップ


 ポケコン本体に装着した時の写真も付けておきます。側面がツルツルしているのはラフトを敷かずに出力しているからです。

本体に装着した様子


★2020/02/17 追記 {
 上記のモデリングは現物に合わせるように行いましたが、もっと小型になるように改善してみました。
 下図の右側が改善したものです。

接続端子のキャップ(右側が改善版)
}

★2020/02/18 追記 {
 改善版の装着写真も貼っておきます。
 取り外し用のギャップを下側にし、コンパクトになって見た目もすっきりですね^^

改善版装着写真
}

 必要な人はほとんどいないと思いますがSTLファイルは下記をクリックすればダウンロードできます。商用目的以外であれば使用可能とします。

G850InterfaceCapV002.zip
★2020/02/17 追記 初版と改善版の2つのSTLファイルをアーカイブしました。

nice!(0)  コメント(0) 

ポケコン(PC-G850V)でGAME言語(その6)LifeGame2 [ポケコン]

 今回ポケコン(PC-G850V)に移植したGAME言語のインタプリタ及びコンパイラの動作確認として、前回の記事「ポケコン(PC-G850V)でGAME言語(その5)LifeGame」でライプゲームを動かしてみました。

 この時は動作確認ということもあり、キャラクタベースで、かつ処理の最適化は考慮していませんでした。
 今回はグラフィック機能を使い1キャラクタを4分割することで解像度を縦横それぞれ2倍にしてライフゲームを動かしてみました。
 データ量が4倍になるのでGAME言語のソースも高速化を考慮し変更しています。

 PC-G850でグラフィック表示するためにはIOCS(BIOS)コールの一つであるパターン表示(BFD0H)をコールするか、I/Oを直に制御するかのどちらかになりますが、今回はIOCSコールを使用しました。

 パターン表示処理への引数はレジスタ経由で

 B:パターン長、D:行位置、E:カラム位置、HL:パターンアドレス

なのでGAME言語からの直接コールではなく、アセンブラ経由でコールしています。

 引数の位置情報はキャラクタ表示時のキャラクタ位置で書込み開始がキャラクタの左端の位置からになるので、1文字分より少ない書込みでは隙間が空いてしまいます。
 このため、書込みは1文字単位(8bit x 6)とし、4ピクセル分なので16通りのビットパターンを持たせました。

 今回作成したライフゲームが動作中のサンプル画面が下図です。前回のものと比べると表示領域がかなり広くなりました。^^

GAME言語でライフゲーム(グラフィック版)


 アセンブラのソースは次のとおりで1回のコールでキャラクタサイズでの一行分画面全体(2020/01/23変更)の表示処理を行っています。

PC-G850Vでライフゲーム(アセンブリ言語)
;+++++++++++++++++++++++++++++++++++++++ ; PC-G850V Graphic routine test ; set screen with LifeGame's status table ; Ver0.03 2020/01/24 by skyriver ; display all screen with one call ;+++++++++++++++++++++++++++++++++++++++ GPRINT EQU 0BFD0H ; B:count, D:line, E:col, HL:pattern adr CWIDX EQU 20 ; display col CWIDY EQU 6 ; display line TWIDX EQU 24 ; char par line DOTX EQU 6 ; X dots par char DOTY EQU 8 ; Y dots par char DIVX EQU 2 ; X division of char DIVY EQU 2 ; Y division of char ORG 03000H JR PROC WRPOS: DS 2 ; display posiotion(LOW:col, HIGH:line) STSTBL: DS 2 ; status table address PATFLG: DS 1 ; pattern flag 0:normal, 1:special DS 1 ; dummy PATADR: DS 2 ; pattern adr save work WRTTL: LD DE,0*256 + CWIDX LD HL,TITLE0 LD B,TITLE1 - TITLE0 CALL GPRINT LD DE,1*256 + CWIDX LD HL,TITLE1 LD B,TITLE1 - TITLE0 JP GPRINT PROC: LD HL,PAT0 LD A,(PATFLG) OR A JR Z,L010 LD HL,SPAT0 L010: LD (PATADR),HL LD HL,(STSTBL) LD C,CWIDY ; line counter L020: PUSH HL LD DE,CWIDX * DIVX ADD HL,DE EX DE,HL POP HL LD B,CWIDX ; char counter L030: PUSH BC LD A,(HL) INC HL ADD A,A ADD A,(HL) INC HL ADD A,A EX DE,HL ADD A,(HL) INC HL ADD A,A ADD A,(HL) INC HL EX DE,HL PUSH DE PUSH HL ADD A,A ; *2 LD E,A ADD A,A ; *4 ADD A,E ; *6 LD E,A LD D,0 LD HL,(PATADR) ADD HL,DE LD DE,(WRPOS) LD A,E INC A LD (WRPOS),A LD B,DOTX CALL GPRINT POP HL POP DE POP BC DJNZ L030 LD HL,(WRPOS) LD L,0 ; clear Write x-pos INC H LD (WRPOS),HL EX DE,HL ; HL:next ststbl adr DEC C JR NZ,L020 RET ; Title pattern data TITLE0: DB 000H,000H,040H,040H,0C0H,078H DB 026H,011H,00EH,000H,0C0H,008H DB 000H,020H,0A0H,078H,024H,022H DB 082H,044H,020H,020H,020H,0C0H TITLE1: DB 000H,008H,00CH,006H,005H,004H DB 008H,008H,004H,003H,004H,008H DB 008H,066H,085H,068H,008H,0E8H DB 0A7H,0EAH,00AH,069H,049H,0E4H ; pixel bit assign ; +--+--+ ; | 8| 4| ; +--+--+ ; | 2| 1| ; +--+--+ ; pixel pattern(normal) PAT0: DB 000H,044H,000H,000H,044H,000H PAT1: DB 000H,044H,000H,0F0H,0F4H,0F0H PAT2: DB 0F0H,0F4H,0F0H,000H,044H,000H PAT3: DB 0F0H,0F4H,0F0H,0F0H,0F4H,0F0H PAT4: DB 000H,044H,000H,00FH,04FH,00FH PAT5: DB 000H,044H,000H,0FFH,0FFH,0FFH PAT6: DB 0F0H,0F4H,0F0H,00FH,04FH,00FH PAT7: DB 0F0H,0F4H,0F0H,0FFH,0FFH,0FFH PAT8: DB 00FH,04FH,00FH,000H,044H,000H PAT9: DB 00FH,04FH,00FH,0F0H,0F4H,0F0H PATA: DB 0FFH,0FFH,0FFH,000H,044H,000H PATB: DB 0FFH,0FFH,0FFH,0F0H,0F4H,0F0H PATC: DB 00FH,04FH,00FH,00FH,04FH,00FH PATD: DB 00FH,04FH,00FH,0FFH,0FFH,0FFH PATE: DB 0FFH,0FFH,0FFH,00FH,04FH,00FH PATF: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ; pixel pattern(special) SPAT0: DB 000H,044H,000H,000H,044H,000H SPAT1: DB 000H,044H,000H,0F0H,0B4H,0F0H SPAT2: DB 0F0H,0B4H,0F0H,000H,044H,000H SPAT3: DB 0F0H,0B4H,0F0H,0F0H,0B4H,0F0H SPAT4: DB 000H,044H,000H,00FH,04BH,00FH SPAT5: DB 000H,044H,000H,0FFH,0BBH,0FFH SPAT6: DB 0F0H,0B4H,0F0H,00FH,04BH,00FH SPAT7: DB 0F0H,0B4H,0F0H,0FFH,0BBH,0FFH SPAT8: DB 00FH,04BH,00FH,000H,044H,000H SPAT9: DB 00FH,04BH,00FH,0F0H,0B4H,0F0H SPATA: DB 0FFH,0BBH,0FFH,000H,044H,000H SPATB: DB 0FFH,0BBH,0FFH,0F0H,0B4H,0F0H SPATC: DB 00FH,04BH,00FH,00FH,04BH,00FH SPATD: DB 00FH,04BH,00FH,0FFH,0BBH,0FFH SPATE: DB 0FFH,0BBH,0FFH,00FH,04BH,00FH SPATF: DB 0FFH,0BBH,0FFH,0FFH,0BBH,0FFH ENDADR: ; End Address END
★2020/01/23 変更 画面全体表示 & タイトル表示追加。
    タイトルは適当に作ったこれ⇒
★2020/01/24 変更 MAX更新時のパターン追加

 また、GAME言語のソースは下記になります。ループ内では乗算及び除算の計算回数を少なくする等の変更を行いました。

 ソースサイズが小型で小メモリの環境向きであることもGAME言語の特徴ですね。

PC-G850Vでライフゲーム(GAME言語)
1' Life Game V0.02 2020/01/24 by skyriver 10 X=20*2 Y=6*2 W=$102 20 Q=&+1 R=5 U=0 S=Q+R+1 CNT=X*Y+S 30 M=0 L=$3000 40 "Seed(Ret:def)" F=? ;=F=0 F=777 50 '=F >=$104 >=$300A 60 W(0)=$0215 "Max" 70 W(0)=$0415 "Gen" 80 !=2000 100 @ 102 P=0 T=T+1 L:6)=0 110 ;=T>M M=T L:6)=1 W(0)=$0314 ?(4)=M 112 W(0)=$0514 ?(4)=T 114 L(1)=0 L(2)=S >=$3000 K=S 120 B=0,Y-1 130 A=0,X-1 140 ;=K:0)<>0 P=P+1 !=1000 150 K=K+1 160 @=A+1 180 @=B+1 200 I=0,X*Y-1 210 Z=CNT:I) CNT:I)=0 220 ;=(Z<2)+(Z>3) S:I)=0 230 ;=Z=3 S:I)=1 240 @=I+1 250 ;=V>5 !=2000 V=0 #=300 260 !=3000 270 ;=P=H V=V+1 #=300 280 H=P V=0 300 @=(0) 1000' count up around cell 1010 F=X*B+A CNT:F)=CNT:F)-1 1020 E=B-1,B+1 1030 G=E ;=E<0 G=Y-1 1040 ;=G=Y G=0 1050 G=G*X 1060 D=A-1,A+1 1070 F=D ;=F<0 F=X-1 1080 ;=F=X F=0 1090 F=F+G 1100 CNT:F)=CNT:F)+1 1110 @=D+1 1120 @=E+1 1130 ] 2000' clear 2010 T=0 I=X*Y-1 @ S:I)=0 CNT:I)=0 I=I-1 @=(I<0) 2020 I=0,X*Y/20 2030 F=('X/2)+(X/4) B=('Y/2)+(Y/4) S:X*B+F)=1 2040 @=I+1 2050 ] 3000' check FixPattern P <- count 3010 Q:U)=P P=0 U=U+1 ;=U>R U=0 3020 I=0,R P=P+Q:I) @=I+1 3030 ]
★2020/01/23 変更 タイトル表示対応
★2020/01/24 変更 乱数seed設定追加(Returnでデフォルト値)

 尚、GAME言語のインタプリタやコンパイラ等は「ポケコン(PC-G850V)でGAME言語」からダウンロードできます。

 Twitterにポストした動画付きメッセージを貼っておきます。


★2020/01/21 追記 {
 Twitterにアップした動画は編集ミスやtypoが・・・・orz
 編集時に何とかしようと思うと後が大変なので録画時に気合を入れてミスをなくすのがbetterですね(自分への教訓)
}
★2020/01/23 追記 {
 今回のLifeGameのプログラムはソースエンド位置を保持する'&'の値の次のアドレスからテーブル用ワークとして使っています。
 ビデオ内では実施していませんでしたが、ソース先頭アドレスである'='の設定だけでは'&'はアップデートされないため、'&'をアップデートするための == コマンドを行ってからプログラム実行するようにしてください。
}

 以下は今回作成したライフゲームの自動起動HEXファイルの作成についての個人的なメモ書きです。

 GAMEソースの開始アドレス(=空エリア)は0C00Hからで次のようにメモリに配置した。

No.startendcontents
10C02H0D6DHassembled object
20D70H134AHcompiled object
31350H1716Hwork area


 更にGAME内に下記のパッチを入れ、コンパイルしたプログラムが自動起動するようにした。
・0406 21 0C 00 -> 21 4F 13  change '=' and '&' value
・0420 21 8D 0A -> C3 70 0D  jump to compiled object

 GAMEインタプリタを含む自動起動HEXファイルは以下からダウンロードできます。
 ※使用メモリ領域は 0100H-1716H で、G100で起動します。

 注意:インタプリタに上記のパッチを入れているので通常のGAME言語インタプリタを使用する場合は再度インタプリタのダウンロード(もしくは上記のパッチを元に戻す)が必要です。

lifeAuto20200124.zip

★2020/01/24 変更 {
 ・いつも同じパターンだとつまらないので起動時に乱数のseed入力追加
 ・MAX記録時のドット表示を別パターン化
GAME言語でライフゲーム(2020/01/24版)
}
★2020/01/26 追記
 起動時の乱数初期値を987で入力すると途中で面白い模様のパターンになるのを発見w


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(1) 

ポケコン(PC-G850V)でGAME言語(その5)LifeGame [ポケコン]

 前回の「ポケコン(PC-G850V)でGAME言語(その4)GAME高速化」で書いたようにポケコン(PC-G850V)に移植したGAME言語のインタプリタの動作も速くなり、環境的には一段落したので定番のライフゲームを動かしてみました。

 グラフィックを使えば細かくできるでしょうが、GAMEコンパイラの動作確認の意味合いも込めてまずはキャラクタベースで動かしました。

 短い周期の定常パターンであれば検出したら乱数で新しい種パターンを自動生成するようにしていますが、LCD画面が狭いのでそのうちに長い周期の定常パターンになってしまいます・・・

 動作確認目的なのでソースは綺麗に整理してはいませんが下記の通りです。
 結果として今回ポケコンに移植したGAME言語のインタプリタ及びコンパイラで問題の検出はありませんでした。

PC-G850Vでライフゲーム(GAME言語)
1' Life Game V0.01 2020/01/19 by skyriver 10 X=20 Y=6 W=$102 >=$104 12 '=21583 M=0 20 Q=&+1 R=5 U=0 S=Q+R+1 CNT=X*Y+S 30 !=2000 100 @ 102 P=0 W(0)=$15 T=T+1 "Gen" 110 W(0)=$0114 ?(4)=T ;=T>M M=T 112 W(0)=$0315 "Max" 114 W(0)=$0414 ?(4)=M W(0)=0 120 B=0,Y-1 130 A=0,X-1 140 Z="." ;=S:X*B+A)<>0 Z=$87 P=P+1 !=1000 150 $=Z 160 @=A+1 170 / 180 @=B+1 200 I=0,X*Y-1 210 Z=CNT:I) CNT:I)=0 220 ;=(Z<2)+(Z>3) S:I)=0 230 ;=Z=3 S:I)=1 240 @=I+1 250 ;=(V>5)+(P=0) !=2000 V=0 #=300 260 !=3000 270 ;=P=H V=V+1 #=300 280 H=P V=0 300 @=(0) 1000' count up around cell 1010 E=B-1,B+1 1020 G=%((E+Y)/Y)*X 1030 D=A-1,A+1 1040 F=%((D+X)/X)+G 1050 CNT:F)=CNT:F)+1 1060 @=D+1+(E=B) 1070 @=E+1 1080 ] 2000' clear 2010 T=0 I=X*Y-1 @ S:I)=0 CNT:I)=0 I=I-1 @=(I<0) 2020 I=0,X*Y/10 2030 F=('X/2)+(X/4) B=('Y/2)+(Y/4) S:X*B+F)=1 2040 @=I+1 2050 ] 3000'check FixPattern P <- count 3010 Q:U)=P P=0 U=U+1 ;=U>R U=0 3020 I=0,R P=P+Q:I) @=I+1 3030 ]


 Twitterにポストした動画付きメッセージを貼っておきます。

★2020/01/20 追記 {
 尚、GAME言語のインタプリタやコンパイラ等は「ポケコン(PC-G850V)でGAME言語」からダウンロードできます。

 下記の動画では次の操作を行っています。
  1. GAMEソースのロード
     エミュレータなので一瞬で終了していますが、パソコン側にあるライフゲームのGAME言語のソースをシリアル通信でTEXTエディタ領域にロードする。
  2. TEXTエディタ内データの変換
     GAMEインタプリタを起動し、ロードしたTEXTエディタ内のソースデータを4E00Hに置いておいた変換ツールにより、GAME言語のソースに変換する(変換後のソースは0C00Hからにセーブ)
  3. 変換ソースの確認
     変換したソースをリスト表示して確認する。
  4. コンパイル
     変換したソースを3400Hに配置しておいたコンパイラでコンパイルする。
  5. 実行
     コンパイルしたオブジェクトを実行する。
}


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 

ポケコン(PC-G850V)でGAME言語(その4)GAME高速化 [ポケコン]

 前回記事の「ポケコン(PC-G850V)でGAME言語(その3)GAMEコンパイラ」の最後の方に書いたように、ベンチマーク測定の結果、GAMEコンパイラはそれなりの速度ですがインタプリタはかなり遅い結果でした。

 気になったので原因を調査しました。結果、やはりキーセンス処理で時間が掛かっていたようです。

 今回のキーセンスセンス処理ではG850のIOCS(BIOS)処理であるリアルタイムキー入力(0BE53H)を使用しています。
 ネット情報ではIOCSのコールの中ではキーマトリックス回路にセンスビットを出力する度に0.2msのソフトタイマを実行しているようです。

 また、キー入力があった(Cy:1)場合に、Aレジスタで帰ってくるキーマトリックスデータを自前の処理でデコードし有効なキーが押されているか確認しています。この処理も通常のキー入力バッファ内のキャラクタ数を確認するような処理よりは重くなります(でもこの処理はキーが押されている間だけなので影響は少ない)。

 一方、GAMEインタプリタではキーセンス処理をコールするところが次の2ヶ所ありました。
  1. ソースのステートメント解析部
    予期せぬループ状態になった場合にBREAKできるように、ステートメントを解析する度にキーセンス処理をコールしている。
  2. 文字列出力部
    文字列出力後にキーセンス処理をコールしている。

 後者はあまり影響ないのですが、前者のコールは頻繁に発生するので前述のような今回の実装では実行速度に大きな影響が出ていました。
(因みにGAMEコンパイラは高速化のために後者だけコールしています)

 対策として上記 i のケースでのキーセンス処理を間引いてコールすることにしました。
 間引き数と実行時間の関係は下記の通りです。

No.コール比率ベンチマーク実行時間[sec]
1/1553(9m13s)
1/16113(1m53s)
1/3298(1m38s)
1/6491(1m31s)
1/12887(1m27s)
1/25685(1m25s)


 この結果から間引き率は1/64としました。

★2010/01/17 追記 {
 上表に1/128と1/256を追記。256ではブレークキー('TAB')の感度低下が感じられた。
 Ver0.02dで1/128に変更しました。
}

 今回高速化したGAME言語のインタプリタは「ポケコン(PC-G850V)でGAME言語」のページからダウンロードできます。

 今回の変更でバージョンを 0.02c としました。

 また、ベンチマーク結果は「MSX-DOS上でのGAME言語のベンチマーク」の記事にまとめています。

GAME言語起動画面


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 

ポケコン(PC-G850V)でGAME言語(その3)GAMEコンパイラ [ポケコン]

 前回の「ポケコン(PC-G850V)でGAME言語(その2)」で書いたようにポケコン(G850V)環境でTEXTエディタで編集している内容をGAME言語のソースにコンバートするツールができたので今回はポケコンでGAMEコンパイラを動かしてみました。

 TK-80BS用のGAMEインタプリタは開始アドレスが 8600H ですが、ポケコン(G850)はメモリの後半が ROM なのでインタプリタの開始アドレスを 0400H に変更しています(インタプリタ本体及びワークエリアはそのまま平行移動)。

 従ってGAMEコンパイラを動かすためにはコンパイルの際、埋め込まれるインタプリタ内処理とワークエリアのアドレスを変更する必要があります。
 GAMEコンパイラのソースを眺めてみると $8xxx(xは[0-9,A-F])の部分を

0400H - 8600H

の値を加算したものに変更すれば動きそうです。

 手作業で変更するのは面倒なので変換ツールを作り、一括変換しました。
 変換時のログが下記になります。コンパイラソースの行カウント値、行番号、変更前データ、変更後データを表示しています。

GAMEコンパイラ内のインタプリタ関連アドレス変換ログ
C:\src\G850V\comp>perl cnvcomp.pl <GAMECOM.GAM >GAMEC.GAM

    7    65 : $8D06 -> $0B06
   15   220 : $8603 -> $0403
   15   220 : $8603 -> $0403
   25   380 : $8C83 -> $0A83
   31   440 : $8B58 -> $0958
   33   460 : $8B85 -> $0985
   34   470 : $8D52 -> $0B52
   75  2420 : $8785 -> $0585
   78  2510 : $8C26 -> $0A26
   80  2610 : $8C32 -> $0A32
   81  2620 : $8C31 -> $0A31
   83  2710 : $8C31 -> $0A31
   85  2810 : $8B9C -> $099C
   95  3210 : $8A03 -> $0803
   96  3220 : $8A0F -> $080F
   97  3230 : $8A2C -> $082C
  111  3610 : $8A03 -> $0803
  140  4620 : $889E -> $069E
  144  4720 : $8D4E -> $0B4E
  145  4750 : $8C96 -> $0A96
  148  4800 : $8A5B -> $085B
  149  4810 : $8872 -> $0672
  150  4820 : $8881 -> $0681
  151  4830 : $8904 -> $0704
  190  5740 : $8A03 -> $0803
C:\src\G850V\comp>


 このような処理はGAME言語では荷が重いのでperlを使いました。ソースは以下の通りで使い捨てツールなので凝った作りにはしていません。

GAMEコンパイラ内アドレス変換ツール(perl)
#!/usr/bin/perl # convert GAME compiler to any offset # ver 0.01 2010/01/15 skyriver use strict; use warnings; my $OrgStart = 0x8600; my $NewStart = 0x0400; # set here new start address my $Ofst = $NewStart - $OrgStart; my $LinCnt; # line counter my $LinNo; main(); sub main { my ($ln,$find,$change); while( <> ) { chomp(); $LinCnt++; $ln = $_; if( $ln =~ /^(\d+)/ ) { $LinNo = $1; while ( $ln =~ /\$(8[0-9,A-F]{3})/ ) { $find = $1; $change = eval( "0x" . $find ) + $Ofst; $change = sprintf( "%04X", $change ); printf( STDERR "\n%5d %5s : \$%s -> \$%s", $LinCnt, $LinNo, $find, $change ); $ln =~ s/\$$find/\$$change/; } printf( "%s\n", $ln ); } } }


★2020/01/16 追記 Twitterにポストしたメッセージを貼っておきます。


 「MSX-DOS上でのGAME言語のベンチマーク」の記事でベンチマークに今回のポケコンでのGAMEインタプリタとコンパイラの結果を追記しました。
 G850V(Z-80:8MHz)でのGAMEインタプリタは予想に反してかなり遅い結果で、同じコードが動いているPic24CPM ボード(Z-80:16MHz)のCP/M-80でのGAME80インタプリタの10倍程度遅いです。

 インタプリタ自体は同じコードなのでキーセンス処理が原因かと思い、キー入力チェック無しにリターンするようにしましたが変化はなく、現時点では原因不明です。

 今回移植したGAMEコンパイラの結果も追記していますが、コンパイラの方はクロック相応の速度が出ているようです。

 GAMEコンパイラを同梱したファイルは「ポケコン(PC-G850V)でGAME言語」のページで公開しています。

 GAMEコンパイラのソースを公開していいのか不明(GAME本体のソースも同様)なのでコンパイル後のHEXファイルのみ付けていますが、「3チップ構成Pic24CPMマイコン(その7)GAMEコンパイラ」の記事を参照すればGAMEコンパイラのソースを入手できます。


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
前の5件 | - ポケコン ブログトップ