選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

113 行
1.4KB

  1. .include "skirmish.inc"
  2. .export INPUT_READ
  3. .importzp input_flags
  4. .importzp last_input_flags
  5. .importzp temp0
  6. .importzp temp1
  7. .segment "CODE"
  8. INPUT_READ:
  9. lda #0
  10. sta temp0
  11. lda $DC00
  12. sta temp1
  13. lda temp1
  14. and #$01
  15. bne :+
  16. lda temp0
  17. ora #INPUT_UP
  18. sta temp0
  19. :
  20. lda temp1
  21. and #$02
  22. bne :+
  23. lda temp0
  24. ora #INPUT_DOWN
  25. sta temp0
  26. :
  27. lda temp1
  28. and #$04
  29. bne :+
  30. lda temp0
  31. ora #INPUT_LEFT
  32. sta temp0
  33. :
  34. lda temp1
  35. and #$08
  36. bne :+
  37. lda temp0
  38. ora #INPUT_RIGHT
  39. sta temp0
  40. :
  41. lda temp1
  42. and #$10
  43. bne :+
  44. lda temp0
  45. ora #INPUT_FIRE
  46. sta temp0
  47. :
  48. jsr $FFE4
  49. beq keyboard_done
  50. cmp #'W'
  51. bne :+
  52. lda temp0
  53. ora #INPUT_UP
  54. sta temp0
  55. :
  56. cmp #'S'
  57. bne :+
  58. lda temp0
  59. ora #INPUT_DOWN
  60. sta temp0
  61. :
  62. cmp #'A'
  63. bne :+
  64. lda temp0
  65. ora #INPUT_LEFT
  66. sta temp0
  67. :
  68. cmp #'D'
  69. bne :+
  70. lda temp0
  71. ora #INPUT_RIGHT
  72. sta temp0
  73. :
  74. cmp #'Q'
  75. bne :+
  76. lda temp0
  77. ora #INPUT_NEXT
  78. sta temp0
  79. :
  80. cmp #' '
  81. bne :+
  82. lda temp0
  83. ora #INPUT_WAIT
  84. sta temp0
  85. :
  86. cmp #'E'
  87. bne :+
  88. lda temp0
  89. ora #INPUT_WAIT
  90. sta temp0
  91. :
  92. cmp #'R'
  93. bne keyboard_done
  94. lda temp0
  95. ora #INPUT_RESTART
  96. sta temp0
  97. keyboard_done:
  98. lda last_input_flags
  99. eor #$FF
  100. and temp0
  101. sta input_flags
  102. lda temp0
  103. sta last_input_flags
  104. rts

Powered by TurnKey Linux.