2008/12/30 今年も終わりか
![]() とうとう今年の日記がトップページだけで完結する始末に。来年はもうちょっとがんばります。 うーんと、今年はどんなだったっけ。前半はもんもんしてたけど後半は打って変わってどきどきわくわくな感じ?この調子だと来年はもっとテンション高くなるかもよ。不景気だけど。 自転車、結構乗ってます。さすがに気温が一桁になると無理!なんだけど、 駒沢公園のサイクリングコースをちょろっと回って帰ってくるコースがお気に入り。 ここんとこお土日は毎週行ってる気がする。昨日も今日もなんとなく行っちゃってるし。 写真は今日の駒沢公園。中央広場は只今工事中。 XNAやってます。新作ゲームを鋭意制作中。描画システムに続きゲームシステムが固まりつつあるところ。ようやく完成形が見えてきた!来年の早い内に公開できればよいのだが。 後は、株価大暴落!って同じくらいのサプライズなこともあるけど、まだまだヒミツ。 2008/09/18 ドラゴンボールDS発売!
![]() ドラゴンボールDS/バンダイナムコゲームス 本日発売!!CMもチェック!合唱篇CMにグッとくきた同世代に是非。 自分が関わったタイトルでこんなに沢山CM投入されたのは無かったので、しみじみ感動。 やっぱ「鳥山さんすご〜い」って、ちがうか! ブレイブストーリー、ドラゴンボールと版権モノが続いたところで、オリジナルものがやりたいかなと思い始めつつも、次期プロジェクトはなんじゃらほい、な今日この頃。 2008/09/01 オッス! ひさしぶり!
![]() ドラゴンボールDS/バンダイナムコゲームス 9月18日発売予定!予約受付中!売切御免! 公式サイト 電撃の記事1 電撃の記事2 とっくにマスターアップしてたんですけれども。DSのお仕事。初の任天堂ハードの仕事。 アップ休暇と夏休みを連続でまるまる2週間のオフも終わりっす。 前半は近場を自転車でぷらぷらしたりオリンピックをぼーっと見たりしつつ。 後半になって、XNAで作りかけのゲームの続きでもと360を動かしてみるもののイマイチ身が入らない。最近しばらく抱えていた迷いごとが原因なのだが、ちょっとした発想の転換で急激に吹っ切れてスッキリできた。逆に変な妄想が暴走して今更の中二病気味。 とにもかくにも、中期的な目標、 ・XNAでゲーム作ろう ・生活習慣を改善しよう ・発想の転換で見えてきたステキ未来像を実現しよう の三本立てでお送りしまーす。 2008/02/26 合成テクスチャ完成
さて、合成テクスチャですが、実際に使おうとしたところ、
マイナス記号(ハイフン)が必要だろうということになって、追加するついでに、 ちゃんと全部の組み合わせを調べるプログラムを書いてみた。 未使用ドットの組み合わせ分が数えられてないので正確ではないですが。 以下の16進の16文字の場合、 ![]() 651通りあって、例えばこんな感じ。 ![]() それにハイフンを追加した17文字だと、 ![]() 108通り。例えば、 ![]() さらにプラス記号を入れてみたら解なしだった。 プラスはまあ無くてもいいけど、小数点は入れたいということでいろいろ試してみたところ、 縦2ドットのものだけ解が見つかった。 以下、18文字目に追加して合成不可だった文字たち。 ![]() 縦2ドットの小数点を加えた18文字の解は・・・ ![]() なんと1通り。
その切り出し位置はこんな感じ。 ![]() よって、唯一存在したこのパターンを四つ足の獣人「ケンタウロス」と命名する! 2008/02/20 東京タワー
![]() 今日はRYTHEMのニューシングル「首すじライン」の発売日です。 RYTHEMのライブに行ってきました。初生RYTHEM。 東京タワーの大展望台です。 会場は狭いけど近いし座れたのでよかった。 ホウキ雲、万華鏡キラキラ、首すじライン、ピカソの休日、アイシカタ。 最後の曲で少しうるうるしてしまいました。 めずらしく正しい有休の使い方だったと思います。 2008/02/17 発明した!
さて、これはなんでしょう? これ、8x8のテクスチャなんです。何のテクスチャ? 数字表示用テクスチャなんです。デバッグ用の。 使い方は、以下のように3x5のサイズで切り出します。 テクスチャはリピートありでポイントサンプルするのがミソです。 ![]() 以下の16進数字全てが表示可能になります。 ![]() 数字表示に必要な最低テクスチャサイズを考えていて到達した一つの結論であります。 現世代ハードではたいした意味はないけど、VRAMが少ないハードでは有効かも。チープな現役ハードもまだまだあるわけで。 さらに、アスキーコード全てを表現可能な最小テクスチャサイズを求めてみるのも面白いかもしれない。 2008/02/10 PENGO TRIBUTE 詳解
さて、各部を解説していきたい。ついてこれる奴だけついて来い!
・CPU Microchip PIC16F88/20MHz。メジャーな8ビットマイコンを採用。全てアセンブラで記述。 プログラム領域は2ページ4Kワード、でギリギリ状態。幕間デモとかネームエントリーとか入れる余裕はまったく無くなった。サイズを減らすためにサブルーチン化をやりすぎると、スタック8段をすぐにオーバーして突然動かなくなる。CALLの深さに注意しながらサブルーチン化を行なった。 入出力ピンはポートB0〜7をデータバス用として、その他制御用にポートA0〜6を使用。 水平走査線数を数えるためにタイマー割り込みを使用。 ・表示システム スクリーンは32x32個のキャラクターで構成される。 1キャラクターは8x8ドット3プレーン、1ドット8色。パレットなし。 各キャラクターは1バイトで指定。よってキャラクターの種類は256種類。 RAMのアドレスマップは以下。
キャラクターROMは32Kバイト。同時に使える256個のキャラクターデータが5ページ分は入るが、タイトル用とゲーム用の2ページ分しか使用していない。 BMPファイルからROMバイナリを生成するプログラムも作成。こういうのはC#で書くと超楽。 同期信号は、VESA規格に合わせて、640x480@60Hz(VESA STD) H:31.469kHz V:59.940Hz に近い信号を生成している。 RAMのアクセススピードは55nsで、20MHzの1周期は50nsなので、アクセスに2クロック必要になる。もう少し速いクロックを使用すれば1クロックで間に合って、いろいろ余裕ができてドット比1:1も実現できたかもしれない。 ・走査線同期手法 1フレーム内の更新はVブランク期間では間に合わない。 ダブルバッファにするメモリもハードリソースもない。 なので、キャラクターを書き変えるときは水平走査の位置を調べて、書き変え中に走査線をまたがないように、水平走査線の通過待ちをしている。これでティアリングを回避できる。 ・CPLDの処理 1、同期信号を生成し、逐次RAMからデータを読み出し出力する。 画面は単純なビットマップ構成ではなく、キャラクター面構成になっているので、 1度目にキャラクター番号を読み、2度目にそのキャラクタービットマップデータを読む必要があるため、RAMのアクセススピード55ns、ドットクロック20MHzでは横320ドット程度が限界だった。640x480の解像度は、RAM容量やRAMアドレッシング用のバス幅の関係で断念した。なので、水平同期信号は31.5kHzのまま、2ライン同じものを表示している。 1キャラクターは8x8ドットで、横8ドットが1バイトのデータとして8バイト連続して並び、それが256キャラクター分並んでいる。そしてその256キャラクター分がRGB3チャンネル分並んでいる。 キャラクターデータをRGB各1バイトRAMから読み出してドットクロックに合わせてRGB1ビットずつ出力する部分が95108に入らなくなったため、9572側にその処理を移した。 95108側はギリギリのところで合成されている。ずーっと入らなくて苦労していた部分である。 9572では色データを再構成する処理の他に、ジョイスティック読み込み、サブCPUコマンド送信、キャラクターROM制御などを行なっている。 2、CPUからのRAM読み書きリクエストに応じる。 CPUはまずCPLDにアドレスを書き込む。これは非同期に行なえる。 次に読み込みの場合、RWを読み込みにしてリクエストフラグを立てる。データがCPU側に出力されたらレディフラグが立つのでデータを読み込む。リクエストフラグを下げる。 書き込みの場合はCPUはデータを出力したままRWを書き込みにしリクエストフラグを立てる。CPLDがデータをRAMに書き込んだらレディフラグが立つ。リクエストフラグを下げる。 CPLD内部ではドットクロックに合わせて逐次RAMから読み出しているスキに、CPUからのリクエスト応じて読み書きしなければならない。ビデオデータの読み出し側が待つわけにはいかない。 CPLDはキャラクターデータを横8ドット分まとめて処理するので、その期間をフェイズに分けるとかろうじて読みか書きのどちらか1回だけ実行可能なスキができる。その空いたフェーズにCPUのリクエストを調べて読み書きの処理を行なっている。 ・音声発生システム サブCPUでは音声を生成している。 ROMからPCMデータをストリーミングしたチャンネルが1つと、矩形波で線形減衰する波形をシーケンス再生するチャンネル2つの計3チャンネルをミックスして出力している。 PCMはモノラルで量子化ビットは符号なし8ビット、サンプリング周波数は22050/11050/8269/5500Hzの4種類。音のタイプによってサンプリング周波数を変えている。低い音ほど低いサンプリング周波数にして容量を稼いでいる。ROM容量は128Kバイト。効果音数は13音で128Kバイトの容量をきっちり使い果たしている。 ポップコーン(BGM)はシーケンスデータから矩形波を生成して鳴らしている。シーケンスデータは自分の耳コピーなのでまったくもって自信がない。つくづく音感がないことに絶望した!出力も8ビットで、ラダー抵抗でD/A変換。その後386で増幅。ボリュームとスピーカに接続されている。 ・筐体 今回どうしてもご覧のごついジョイスティックが使いたかったため、ケースを選択する余地が無くなった。ジョイスティックの深さ分の高さを持つケースなどほとんどなかったのである。唯一存在した高さ75mmのケースを採用した。実物を手にしたときは、けっこうでけえとか思ったりした。ケースの加工は、アルミ板をドリル、リーマー、ヤスリでひたすら削る削る削る。ハンドニブラの出番は残念ながら今回もなかった。ここでジョイスティックとスピーカが干渉する設計ミスが発生。スピーカを予定していたものより一回り小さいものにすることで回避した。 ・アプリケーションソフトウェア ゲームはペンゴである。題材としては最適。見た目は違うけど中身は同じものを作るよりは、中身は違うけど見た目は同じものを作ろうと思った。移植する感覚か。なので、まったく同じものではないという意味でもタイトルに「TRIBUTE」を追加した。 以下、オリジナルとの相違点を中心に解説。 オリジナルはスプライトを搭載しているのでその辺のシステム変更は大きい。全てをキャラクター単位で表現しなければならない。 オリジナルのペンゴは縦画面。横画面になってもゲーム性に影響はないだろう。 オリジナル操作は4方向1ボタン。ボタンでアイスブロックを押す、壊す、壁を揺らす。本ゲームでは ボタンを排除して、ボタン操作を対象物方向への移動操作で代用した。ペンゴの向きはゲーム性に関係ないので、全体のゲーム性は大きく変わってはいないだろう。 デモ画面、リザルト画面、幕間デモ、ネームエントリー画面はCPUプログラム容量の関係で割愛した。 滑るブロックと敵のコリジョンはオリジナルに比べて相当甘い。半キャラずれは当たりになっているから、気持ちよく敵を潰しまくれるようになっている。 敵の卵まわりの使用がオリジナルといろいろ違う。卵の入っているブロックを壊しても卵が割れる絵は出ない。また、卵から生まれている最中でもブロックで潰すことができてしまう。 オリジナルでは最後の1匹は逃げ出すが、本ゲームでは逃げない。 1UPなし。 敵のAIもあまり凝ることができなくて残念な部分ではある。 ・まとめ アセンブラのコーディングは面白い面もありつつ、キツイ部分もあったりして。ゲーム機製作プロジェクトは当分いいわって感じ。次にやるときは順当にスプライトエンジン(ラインバッファ)の実現がテーマになると思われ。また長い構想期間に入るとしよう。 さて、これでようやくモニタをXBOX360に繋ぎなおせるということでもあるわけであります。 久しぶりに火を入れてみようかな。 2008/02/04 PENGO TRIBUTE INSIDE
引き続き内部画像を公開。
![]() ![]() 右上の画像にマウスカーソルを置くと部品名が出ます。 ![]() ![]() RAMは裏面に表面実装。ジャンパー飛びまくりなところが泣かす。 ![]() ![]() 巨大なジョイスティックがケースの大半を占める。 2008/02/03 PENGO TRIBUTE 動画
すったもんだで動画の撮影に成功した!
・画面と本体と右手 カメラを左手で持ちながら撮影。 ・画面 モニタは21インチのトリニトロン管を使用。 2008/02/02 PENGO TRIBUTE
自作ゲーム機「PENGO TRIBUTE」スクリーンショット。
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ★ ハードウェアスペック ★
只今動作中の動画を撮影中! 2008/02/01 完成!
構想数年、製作期間9ヶ月の長きにわたるプロジェクトが今ここに完了した!
画面写真を貼っときます・・・。 ![]() あれ?どっかで見たことあるような気もするよーというあなた・・・いい歳です。 詳細は明日の日記で! 2008/01/03 HYPER寝正月
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
COPYRIGHT (C) 2008 YO1 KOMORI ALL RIGHTS RESERVED |