0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自作CPUAdvent Calendar 2022

Day 15

Kageki (TD4互換機) で早押しゲーム

Posted at

TD4の命令を実行できる自作CPU「Kageki」で早押しゲームを作ってみた。

今回の早押しゲーム

ビットの表記は最下位ビットを0とする0-originである。

  1. プレイヤー2人とスターター1人の計3人を用意する。(プレイするには、まず人脈♪)
  2. 入力ポートのビット1~3にそれぞれボタン (押すとHIGH、押さないとLOW) を接続する。
  3. プログラムを実行する。
  4. スターターが入力ポートのビット0に接続されたボタンを押す準備をする。
  5. 1人のプレイヤーが入力ポートのビット3に接続されたボタンを押す準備をする。
  6. もう1人のプレイヤーが入力ポートのビット2に接続されたボタンを押す準備をする。
  7. スターターが適当なタイミングでボタンを押し、押しっぱなしにする。
  8. プレイヤーは、スターターがボタンを押したら、素早くボタンを押す。
  9. 早くボタンを押した方のプレイヤーが勝利である。ただし、スターターがボタンを押すより早くプレイヤーがボタンを押した場合は、早くボタンを押した方のプレイヤーでない方のプレイヤーが勝利である。2人のプレイヤーが同時にボタンを押した場合は引き分けであり、勝利するプレイヤーは居ない。
  10. ビット3に接続されたボタンを押す方のプレイヤーが勝利した場合は、出力ポートのビット3がHIGHになる。ビット2に接続されたボタンを押す方のプレイヤーが勝利した場合は、出力ポートのビット2がHIGHになる。

プログラム

位置 機械語   アセンブリ言語
---------------------------------
0    00100000 START:  IN  A
1    00000100         ADD A, 0100
2    11100100         JNC NODRAW
3    11110011 DRAW:   JMP DRAW
4    00000100 NODRAW: ADD A, 0100
5    11101010         JNC NO3
6    00001110         ADD A, 1110
7    11101110         JNC WIN2
8    10111000 WIN3:   OUT 1000
9    11111001 END3:   JMP END3
A    00000100 NO3:    ADD A, 0100
B    11100000         JNC START
C    00001110         ADD A, 1110
D    11101000         JNC WIN3
E    10110100 WIN2:   OUT 0100
F    11111111 END2:   JMP END2
  • 0番地:入力の読み込み
  • 1~2番地:引き分けの判定
  • 3番地:引き分けで終了
  • 4~5番地:ビット3のプレイヤーが先にボタンを押したかの判定
  • 6~7番地:フライングの判定
  • 8~9番地:ビット3のプレイヤーが勝利で終了
  • A~B番地:ビット2のプレイヤーが先にボタンを押したかの判定
  • C~D番地:フライングの判定
  • E~F番地:ビット2のプレイヤーが勝利で終了

実行結果

入力ポートに Pmod BTN を接続して実行した。
なお、同モジュールのボタンは、端子を左向きにして上から見たとき、右上がビット1、左下がビット2、右下がビット3である。
そのため、ボタンの位置と出力ポートの状態を表すLEDの点灯位置は逆になっている。

関連記事 (他の作者様)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?