chip8の研究 その3


概要

pongのアセンブラのソースからコンパイルしてシミュレータを起動した。

写真

成果物

アセンブラソース

  LD  VA  2
  LD  VB  12
  LD  VC  63
  LD  VD  12
  LD  I,  Paddle
  DRW  VA  VB  6
  DRW  VC  VD  6
  LD  VE  0
  CALL  Draw_Score
  LD  V6  3
  LD  V8  2
Big_Loop  LD  V0  96
  LD  DT  V0
DT_loop  LD  V0  DT
  SE  V0  0
  JP  DT_Loop
  RND  V7  23
  ADD  V7  8
  LD  V9  255
  LD  I,  Ball
  DRW  V6  V7  1
Padl_Loop  LD  I,  Paddle
  DRW  VA  VB  6
  DRW  VC  VD  6
  LD  V0  1
  SKNP  V0
  ADD  VB  254
  LD  V0  4
  SKNP  V0
  ADD  VB  2
  LD  V0  31
  AND  VB  V0
  DRW  VA  VB  6
  LD  V0  12
  SKNP  V0
  ADD  VD  254
  LD  V0  13
  SKNP  V0
  ADD  VD  2
  LD  V0  31
  AND  VD  V0
  DRW  VC  VD  6
  LD  I,  Ball
  DRW  V6  V7  1
  ADD  V6  V8
  ADD  V7  V9
  LD  V0  63
  AND  V6  V0
  LD  V1  31
  AND  V7  V1
  SNE  V6  2
  JP  Left_Side
  SNE  V6  63
  JP  Right_Side
Ball_Loop  SNE  V7  31
  LD  V9  255
  SNE  V7  0
  LD  V9  1
  DRW  V6  V7  1
  JP  Padl_loop
Left_Side  LD  V8  2
  LD  V3  1
  LD  V0  V7
  SUB  V0  VB
  JP  Pad_Coll
Right_Side  LD  V8  254
  LD  V3  10
  LD  V0  V7
  SUB  V0  VD
Pad_Coll  SE  VF  1
  JP  Ball_Lost
  LD  V1  2
  SUB  V0  V1 
  SE  VF  1
  JP  Ball_Top
  SUB  V0  V1  
  SE  VF  1  
  JP  Pad_Hit
  SUB  V0  V1
  SE  VF  1
  JP  Ball_Bot
Ball_Lost  LD  V0  32
  LD  ST  V0
  CALL  Draw_Score
  ADD  VE  V3
  CALL  Draw_Score
  LD  V6  62
  SE  V3  1
  LD  V6  3
  LD  V8  254
  SE  V3  1  
  LD  V8  2
  JP  Big_Loop
Ball_Top  ADD  V9  255
  SNE  V9  254
  LD  V9  255
  JP  Pad_Hit
Ball_Bot  ADD  V9  1
  SNE  V9  2
  LD  V9  1
Pad_Hit  LD  V0  4
  LD  ST  V0
  ADD  V6  1 
  SNE  V6  64 
  ADD  V6  254
  JP  Ball_Loop
Draw_Score  LD  I,  Score
  LD  B  VE
  LD  V2  I
  LD  F  V1
  LD  V4  20
  LD  V5  0 
  DRW  V4  V5  5
  ADD  V4  21
  LD  F  V2
  DRW  V4  V5  5
  RET
Paddle  data  128
  data  128
  data  128
  data  128
  data  128
  data  128
Ball  data  128
  data  0
Score  data  0
  data  0
  data  0
  data  0

beepについて

beepを鳴らす。

  ld  v0  4
  ld  st  v0
end  jp  end

以上。