| 103 | } |
| 104 | |
| 105 | static void UpdateOrigin(s32 chan) |
| 106 | { |
| 107 | PADStatus* origin; |
| 108 | u32 chanBit = PAD_CHAN0_BIT >> chan; |
| 109 | |
| 110 | origin = &Origin[chan]; |
| 111 | switch (AnalogMode & 0x00000700u) |
| 112 | { |
| 113 | case 0x00000000u: |
| 114 | case 0x00000500u: |
| 115 | case 0x00000600u: |
| 116 | case 0x00000700u: |
| 117 | origin->triggerLeft &= ~15; |
| 118 | origin->triggerRight &= ~15; |
| 119 | origin->analogA &= ~15; |
| 120 | origin->analogB &= ~15; |
| 121 | break; |
| 122 | case 0x00000100u: |
| 123 | origin->substickX &= ~15; |
| 124 | origin->substickY &= ~15; |
| 125 | origin->analogA &= ~15; |
| 126 | origin->analogB &= ~15; |
| 127 | break; |
| 128 | case 0x00000200u: |
| 129 | origin->substickX &= ~15; |
| 130 | origin->substickY &= ~15; |
| 131 | origin->triggerLeft &= ~15; |
| 132 | origin->triggerRight &= ~15; |
| 133 | break; |
| 134 | case 0x00000300u: |
| 135 | break; |
| 136 | case 0x00000400u: |
| 137 | break; |
| 138 | } |
| 139 | |
| 140 | origin->stickX -= 128; |
| 141 | origin->stickY -= 128; |
| 142 | origin->substickX -= 128; |
| 143 | origin->substickY -= 128; |
| 144 | |
| 145 | if (XPatchBits & chanBit) |
| 146 | { |
| 147 | if (64 < origin->stickX && (SIGetType(chan) & 0xffff0000) == SI_GC_CONTROLLER) |
| 148 | { |
| 149 | origin->stickX = 0; |
| 150 | } |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | static void PADOriginCallback(s32 chan, u32 error, OSContext* context) |
| 155 | { |
no test coverage detected