Mirror of CollapseOS
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

31 строка
618B

  1. #include "sms_pad.h"
  2. void pad_init(Pad *pad, Tristate *TH)
  3. {
  4. pad->pressed = 0xff;
  5. pad->TH = TH;
  6. }
  7. void pad_setbtn(Pad *pad, PAD_BTN btn, bool pressed)
  8. {
  9. if (pressed) {
  10. pad->pressed &= ~(1 << btn);
  11. } else {
  12. pad->pressed |= (1 << btn);
  13. }
  14. }
  15. uint8_t pad_rd(Pad *pad)
  16. {
  17. uint8_t res;
  18. if (*pad->TH == TRI_LOW) { // TH selected
  19. // A and START shifted in from bits 7:6 into 5:4
  20. res = (pad->pressed & 0xf) | ((pad->pressed & 0xc0) >> 2);
  21. } else {
  22. res = pad->pressed & 0x3f;
  23. }
  24. // Bits 7:6 are always high
  25. res |= 0b11000000;
  26. return res;
  27. }