Just a Blog

[수리 작업] 8Bitdo N30 아케이드 스틱에 Zero Delay 보드 적용 본문

Game

[수리 작업] 8Bitdo N30 아케이드 스틱에 Zero Delay 보드 적용

wehong 2020. 5. 25. 12:00

8Bitdo N30 아케이드 스틱에 저렴한 Zero Delay 보드를 적용하는 작업을 했다. 혹자는 왜 그런 이상한 작업을 했냐고 물어볼 것 같다. N30 아케이드 스틱은 기성품이고 Zero Delay 보드는 알리익스프레스에서 1만원 정도면 구매할 수 있는 DIY 부품이니까.


1. 작업 이유

N30 아케이드 스틱에 산와 레버나 버튼을 적용해 봐도 불만족스러운 부분이 있다. PC를 포함해 닌텐도스위치나 안드로이드 기기를 무선으로 연결할 수 있는 점은 장점이 될 수 있겠지만, 이상하게도 입력이 바로 적용되는 것 같지 않아 답답했다. MiSTer 기기에 보통 8Bitdo M30 컨트로러를 붙여 사용하는데 M30 컨트롤러는 입력 지연이 매우 작게 느껴져 만족하면서 사용하고 있는데, 간혹 아케이드 스틱을 사용해 보고 싶어 N30 아케이드 스틱을 붙여보면 M30 컨트롤러에 비해 지연이 느껴저 매우 불편했다.

Zero Delay 보드가 이름처럼 입력 지연이 제로일 것이라고 생각하지는 않는다. 정밀하게 측정을 해 본 것은 아니지만 이 보드를 적용한 자작 스틱을 사용해 보니 N30 아케이드 스틱보다 좀 더 나은 것 같다고 느꼈다. 즉, Zero Delay 보드가 절대적으로 지연이 적다고 할 수는 없겠지만 N30 아케이드 스틱보다는 지연이 적어 보인다.


2. 작업 방향

작업 중 '그냥 기존 방식으로 사용할래'라고 생각될 수 있으므로, 기존의 구성을 최대한 살려두는 방향으로 진행했다.



3. 진행

버튼 8개를 연결하는 작업은 큰 어려움이 없었다.

USB 케이블 구성도, N30 아케이드 스틱에 구멍을 막아 놓은 부분이 있어 그 부분을 활용했다.

N30 아케이드 스틱에 Zero Delay 보드를 적용하면서 처음 부딪히게 된 난관은 두 개였다.

(1) Zero Delay 보드의 레버 연결 5pin은 산와 버튼용이라고 표시되어 있지만, GND 대신 Vdd가 배치되어 레버 방향이 뒤집힌다


< Zero Delay 보드 핀아웃 (출처: FocusAttack) >


< 산와 레버 5핀 레이아웃 (출처: idw.xyz) >


Vdd 대신 GND에 연결했으면 산와 레버는 그냥 연결될텐데, Zero Delay 보드를 왜 이렇게 만들었는지 모르겠다(아마도 보드 전체에 GND 보드 Vdd 영역이 더 넓게 배치된 점과 관련이 있지 않나 싶다). Vdd 핀을 Vdd와 끊고 GND에 연결시켜도 되겠지만 그것도 복잡하니, 다른 네 개(UP, DOWN, LEFT, RIGHT)의 선에서 반대 방향을 서로 바꾸어(UP을 DOWN과 연결, LEFT를 RIGHT와 연결) 결합시켰다.

(2) N30 아케이드 스틱의 Select, Turbo 버튼은 아케이드 버튼이 아니다

N30 아케이드 스틱의 내부를 뜯어 보면 Select 버튼, Pair 버튼, Turbo 버튼, X-Input/D-Input 스위치, D-Pad/XY 스위치 입력부가 별도의 PCB로 되어 있으며, Select, Pair, Turbo 버튼은 아케이드 버튼이 아닌 접합식 버튼이다. 쉽게 얘기하면 게임보이의 A, B 버튼과 작동방식이 동일하다는 것이며, Zero Delay 보드의 2핀 버튼 커넥터에 바로 연결할 수 없다는 의미이다.

이를 위해서 Select 버튼 부 PCB에서 Select 버튼을 입력을 받을 수 있도록 전선을 따 왔다. Turbo 버튼 부분도 선을 따서 Zero Delay 보드의 Turbo 단자에 연결해 보았는데, 일단 연결하면서 동작이 이상했고 어차피 Turbo 설정을 지우기 위한 Clear 버튼이 또 있어야 하므로(Zero Delay 보드는 Clear 버튼 단자가 따로 있다) 그것은 그냥 붙이지 않기로 결정했다.


4. 결과

일단 윈도우10의 컨트롤러 설정에서 각 버튼과 레버 입력을 확인했다. 하지만 정작 Steam 게임의 설정에서는 Start, Select 버튼이 고유하게 인식되지 않았고 ABXY를 제외한 버튼들도 인식은 되지만 특정 버튼이 아닌(LB, LT, RB, RT 등이 아닌) 별도의 버튼 값으로 인식되었다.

Comments