アイコンやフォントの使用問題は常に頭の痛い問題でした。ですが、実は割と自由に使えるライセンスの素材が、Google 先生により公開されていたりします。それが Google Fonts です。https://fonts.google.com/こちらを使用しておけば、だいたいは事足りるので大変重宝してい ...
C# 安全装置とプリプロセッサ
C# は本当に便利で、実行速度を気にしなくて良い場合は、ホイホイとプログラムを書き進める事が出来ます。その反面、オブジェクト取得で null が返ってきたときなどは、やはり正当性判定を行う事になります。さて、私が C# でプログラムを作っているときに、こんな事例に出会 ...
内藤時浩のプロジェクト管理法
今回は私のメイン業務についてのお話です。プロジェクト管理は私自身は仕様策定と進捗確認に専念して、開発担当の皆さんには実務に注力してもらってます。開発担当諸氏自身に管理を委託する事はまずありません。また管理の私は、開発担当諸氏から状況を細かく聞くようにして ...
Z80 数値の加算と減算
Z80 には10進数を仮想的に扱うための命令 DAA があります。これは、数値演算後の結果を、無理矢理10進数的に補正するという命令です。例えば 0x12 + 0x99 とすると、通常は結果が 0xAB になりますが、直後に DAA を実行すると 0x11 CF=1 となります。これは 12 + 99 = 111 と ...
PC-8001 キーボード入力
PC-8001 はキーボードの状態の確認はとてもシンプルです。このシンプルさ故にゲームはとても作りやすいです。キーボードの状態確認はポートの 0x00 から 0x09 を IN するだけです。何もキーが押されていなければ、bit = 1 となっていますが、押されていると bit = 0 で返りま ...
PC-8001 アトリビュートの構造
アトリビュートエリアPC-8001で色を付ける方法はかなり独特です。まずは下記の図を見て頂けますでしょうか。この図が PC-8001 の表示領域の構造となります。1行は80文字ですが、その後方に40バイトのアトリビュートエリアがくっついています。そのため、次の行は 120バイト先 ...
PC-8001 セミグラフィック
PC-8001 にはセミグラフィックというグラフィック機能があります。正確にはキャラクタコード 0-255 を 2x4 ドットの組み合わせとして置き換える事で実現しています。このセミグラフィックをどう扱うのか、今回は解説していきます。 2進数のビットがドットになっているまずは ...
PC-8001 テープロードから自動起動
ゲームを録り溜めていくと、そのうちテープに記録した構造を忘れて焦る事が多々あります。少なくとも私はそうです。そのため、そんな事が起きないように、カセットポンで mon<ret> L<ret> と入力するだけで、勝手にロードして勝手に実行する IPLもどきを作成して、ゲームプロ ...
Z80 スタックに纏わる話
Z80 アセンブラにとって、高速化は命題となります。その中で2バイトをまとめて処理出来る push / pop は使い方によってはかなりの高速化が期待出来るため、本来の使い方以外の使用方法がいくつも開発されてきました。今回はそんなスタック(以下、SP と略す)に纏わるお話で ...
PCG8100 サウンドドライバの実装
サウンドドライバを作成するサウンドドライバの構造と、PCG8100 からの発音の仕組みが分かりましたので、今回は実際にフローチャートに則ってサウンドドライバを作成してみました。これがサンプルサウンドドライバのワークエリアです。 MML:.ADDRES equ 0 ...
PCG8100 から発音させる
カウンタ値PC-8001 の周辺機器である PCG8100 に搭載されている発音チップ 8253 は、発音したい周波数をそのまま設定はできません。カウンタ値という値を設定する事になります。このカウンタ値は分周比から計算して、各音程毎にテーブル化しておきます。音程は有名なところで ...
Z80 サウンドドライバの構造
サウンドドライバに求められる機能これから数回に分けて、Z80等のアセンブラでのサウンドドライバの作り方について解説していきます。最初は理屈から、…という事で、まずはゲーム内で演奏されるサウンドドライバに求められる機能ですが、私は以下の優先度で考えています。※ ...