おったくまえ!で行こう〜

オタクネタ、マニアックネタを書いていきます

マイコン

[ リスト | 詳細 ]

記事検索
検索

全1ページ

[1]

イメージ 1

前々回発表した、GMC-4用『数字読み取りゲーム(仮称)』ですが、mixiのコミュニティでルールの変更要望とその修正方法をご教授いただいたので、修正したものをここにver1.1として公開します。


■数字読み取りゲーム(仮称) ver1.1


【ルール】
※ver1.0からの変更箇所を太字で記述しています。

[RESET] → 1 → [RUN] で実行させると、一瞬間をおいて、7桁の数字が次々に表示されます。
その後、入力待ちになりますので、さきほど表示された7桁の数字を順番に入力してください。
7桁すべて合うと「ピロリロリン!」と効果音がなります。
1桁でも間違うとその時点で「ブッ!」とブザーが鳴り、再度同じ問題が出題されます。
以下、ゲームはえんえんと繰り返されます。

※7桁の中で同じ数字が続くこともあり、なかなか難しいでしょう。


【プログラム ver1.1】

Add 0 1 2 3 4 5 6 7 8 9 A B C D E F
-----------------------------------
00: A F 5 B 1 6 4 9 6 F 0 6 D F F 0
10: 2 E 0 8 A E C A 0 5 1 8 3 E C B
20: 1 D 7 F 1 9 E 0 A 0 0 F 3 1 F 2
30: A 0 F 3 1 1 7 C 0 F 4 8 B 1 D 7
40: F 2 A E 7 F 0 0 E 9 F 1 1
-----------------------------------


【改造方法】

・表示スピード:アドレス1C(1Cの値+1 ×0.1秒)。初期値3
・表示桁数:アドレス22,3F。初期値7
・実行前ににデータエリア50〜5Fの値を適当に変更しておくと、数値の出現パターンが変わります。

前回の、4ビットマイコンGMC-4用、『数字読み取りゲーム(仮称)』ver1.0の簡単なプログラム解説です。


【プログラム ver1.0】
※アドレス、命令コード、命令記号の順

00: E CAL RSTO
01: 0
02: 8 TIA <A>
03: A
04: E CAL TIMR
05: C
06: A TIY <F>
07: F
08: 5 MA
09: B AIY <1>
0A: 1
0B: 6 M+
0C: 4 AM
0D: 9 AIA <6>
0E: 6
0F: F JUMP <0C>
10: 0
11: C
12: D CIY <F>
13: F
14: F JUMP <08>
15: 0
16: 8
17: A TIY <0>
18: 0
19: 5 MA
1A: 1 AO
1B: 8 TIA <3>
1C: 3
1D: E CAL
1E: C TIMR
1F: B AIY <1>
20: 1
21: D CIY <7>
22: 7
23: F JUMP <19>
24: 1
25: 9
26: E CAL RSTO
27: 0
28: A TIY <0>
29: 0
2A: 0 KA
2B: F JUMP <31>
2C: 3
2D: 1
2E: F JUMP <2A>
2F: 2
30: A
31: 0 KA
32: F JUMP <31>
33: 3
34: 1
35: 1 AO
36: 7 M-
37: C CIA <0>
38: 0
39: F JUMP <48>
3A: 4
3B: 8
3C: B AIY <1>
3D: 1
3E: D CIY <7>
3F: 7
40: F JUMP <2A>
41: 2
42: A
43: E CAL ENDS
44: 7
45: F JUMP <00>
46: 0
47: 0
48: E CAL SHTS
49: 9
4A: F JUMP <00>
4B: 0
4C: 0


◆00〜05
ゲームが始まる前に数字LEDを消灯し、約1秒の間をあけます。

◆06〜16
乱数っぽい数を作ります。
アドレス50〜5Fに格納されている各数値を次のアドレスに格納されている数値に足しこんで、新しい数を作っています。(※アドレス50には4Fではなく5Fに格納されている数値を足しこんている)
できた数値を0〜9の範囲にまるめるため、6を足し桁あふれが生じるかチェックします。
桁あふれが生じたときは、数値がA〜Fだったということになるので、6を足すことでA〜F以外に変更された数字を再度格納しなおします。
この処理を、アドレス50〜5Fまで16桁分行っています。

◆17〜25
アドレス50〜56までの7桁分の数値を順に表示します。
アドレス1Cの値は次の数字を表示するまでの時間です(1Cの値+1 ×0.1秒)

◆26〜47
数字LEDを消灯し、プレイヤーのキー入力待ちに移行します。
ここでは、キーが押されていないのを確認してから、キー入力待ち処理に移行するようにしています。
ここの処理は7回ループされるため、この処理を入れておかないと、1桁目のキーを離すより早く2桁目以降のキー入力までもチェックされてしまうからです。
数値の正否チェック方法はアドレス50〜に格納されている数値からキー入力された数値を引いた値が0になるかどうかで判断します。
違っていればアドレス48以降のエラー処理に飛んだ後、プログラムの先頭に戻ります。
7桁すべて合っていた場合は効果音を鳴らして、プログラムの先頭に戻ります。

◆48〜4C
間違った時の処理


【感想】

今回、初めてのプログラミングでしたが、命令の少なさと、メモリの少なさに苦労しました。
レジスタは、A、B、Y、Z、A'、B'、Y',Z'とありますが、AとBの値を入れ替える「CH命令」は、同時にYとZをも入れ替えてしまうので使いどころがよくわからず、A、B、Y、Zと、A'、B'、Y',Z'の値をすべて入れ替える「CAL_CHNG命令」にいたってはその存在意義すらわからない始末。結局レジスタはAとYしか使っていません。
プログラムサイズも4Fまでに収めるのに苦労しましたが、アドレス50〜5Fもプログラム領域として使用可能のようですね。


【ゲームデザイン】

最初は『戦艦ヤマト砲撃ゲーム』という名前で作り出し、「味方観測機より敵艦の座標が知らされるので、その位置を正確に砲撃する。失敗すると、その間に逆に敵からの攻撃を受けてしまう」というストーリーだったのですが、それならば7桁全部入力し終わった後で、命中!ハズレ!の結果を出すようにしないと違和感があるよなぁ・・・と思えてき、結局、砲撃のストーリーは外して単に『数字読み取りゲーム(仮称)』になってしまいました(笑)

次はあるかなぁ〜??

イメージ 1

学研『大人の科学マガジン』vol.24付録の4ビットマイコン『GMC-4』でゲームを作ってみました。


■数字読み取りゲーム(仮称) ver1.0


【ルール】

[RESET] → 1 → [RUN] で実行させると、一瞬間をおいて、7桁の数字が次々に表示されます。
その後、入力待ちになりますので、さきほど表示された7桁の数字を順番に入力してください。
7桁すべて合うと「ピロリロリン!」と効果音がなります。
1桁でも間違うとその時点で「ブッ!」とブザーが鳴ります。
以下、ゲームはえんえんと繰り返されます。

※7桁の中で同じ数字が続くこともあり、なかなか難しいでしょう。


【改造】

ゲームスピードはアドレス1Cに格納されています。ここの数値を小さくすると表示速度がはやく、大きくするとゆっくりになります。初期値は3です。

桁数を変更したい場合は、アドレス22とアドレス3Fの両方の値を変更してください。

実行前ににデータエリア50〜5Fの値を適当に変更しておくと、数値の出現パターンが変わります。


【プログラム ver1.0】

Add 0 1 2 3 4 5 6 7 8 9 A B C D E F
-----------------------------------
00: E 0 8 A E C A F 5 B 1 6 4 9 6 F
10: 0 C D F F 0 8 A 0 5 1 8 3 E C B
20: 1 D 7 F 1 9 E 0 A 0 0 F 3 1 F 2
30: A 0 F 3 1 1 7 C 0 F 4 8 B 1 D 7
40: F 2 A E 7 F 0 0 E 9 F 0 0
-----------------------------------

(↑すみません、プロポーショナルフォントのせいで表示がずれて見にくくなってます)

解説等は後日・・・

全1ページ

[1]


[PR]お得情報

CMで話題のふるさと納税サイトさとふる
毎日お礼品ランキング更新中!
2019年のふるさと納税は≪12/31まで≫

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事