Just a Blog

[MiSTer FPGA] SNAC 어댑터 구입 및 소감 본문

Game

[MiSTer FPGA] SNAC 어댑터 구입 및 소감

wehong 2021. 5. 18. 09:56

그동안 구입을 고려해 왔던 SNAC 어댑터를 구입했다.

 

 

SNAC은 'Serial Native Accessory Converter'의 약자로서, MiSTer의 User I/O 포트(USB 커넥터 형태이지만 신호 라인만 사용)를 통해 게임 콘솔의 컨트롤러 입력신호를 시리얼로 변환해 전달하는 컨버터이다. 쉽게 말하면 (XBox 컨트롤러 등의) USB 컨트롤러 대신 (슈퍼패미컴 등의) 오리지널 컨트롤러의 신호를 MiSTer에 연결해 주는 장치이다.

 

 

장점은 세 가지 정도가 있을 것 같다. 첫째로, 게임 콘솔 별 오리지널 컨트롤러를 사용할 수 있어 실기를 플레이 하는 느낌을 좀 더 느낄 수 있다. 둘째로, USB 연결 방식이 아닌 컨트롤러 입력 전기 신호를 시리얼로 직접 전달하는 방식이라서 입력 지연이 적어질 것을 기대할 수 있다(이 장점은 USB polling rate 조절이 가능하게 되어 반론이 있을 수 있겠지만, 개인적으로는 여전히 장점이라고 본다). 셋째로, CRT에서 플레이 할 경우 Zapper 등의 건(gun) 컨트롤러를 MiSTer에 사용할 수 있는 유일한 방법이라는 것이다.

 

개인적인 구매동기는, USB 컨트롤러를 사용하는 것 보다 좀더 입력 지연이 나아질까하는 기대 때문이었다. MiSTer에서 설정 파일 수정이나 스크립트를 통해 USB polling rate를 1kHz까지 늘릴 수는 있는데, 그 품질에 대해 정보가 없었고(최저 지연 수준은 개인이 측정한 자료가 있으나, 평균값이나 최고값은 알 수 없었다) 개인적으로 Linux가 그런 미세한 타이머 컨트롤이 되는지에 대한 의구심을 갖고 있었다(최근에서야 겨우 근래의 Linux의 kernel에 나노 초(nano second) 수준의 hi-resolution timer가 고안된 것을 알게 되었는데, 그 타이머가 얼마나 정확한지는 아직도 잘 모르겠다).

 

구매는 misterfpga.co.uk에서 했다. MisterAddons에 더 작은 모듈을 판매하는 것으로 알고 있지만 MisterAddons에서는 각 컨트롤러 별 어댑터를 판매하지 않아, 그것을 구매할 수 있는 misterfpga.co.uk에서 구매했다. 컨트롤러 어댑터는 NES, 슈퍼패미컴/SNES, 메가드라이브/Genesis, PC엔진으로 4개를 함께 구매했다.

 

 

개인적으로 사용하고 있는 IO 보드의 버전이 MisterAddons에서 판매한 6.0이므로 메가드라이브/Genesis 어댑터로 6버튼 메가드라이브 컨트롤러를 사용할 수 없는데, 나중에 개별로 구매하면 배송비가 만만치 않을 것 같아 일단 구매했다.

 

1. 슈퍼패미컴/SNES 연결 사용소감

misterfpga.co.uk에서 판매하는 SNES용 컨트롤러 어댑터가 너무 빡빡해서 나중에 컨트롤러를 뺄 때 불편했다. 그리고 SNAC 어댑터의 USB 포트와 SNES 컨트롤러 어댑터의 USB 포트 방향이 알맞게 되어 있지 않아, 한 쪽이 정면이면 다른 쪽은 뒤집혀야 하도록 되어 있는 것도 아쉬웠다.

 

 

SNAC 입력 설정은 코어의 OSD 설정에서 쉽게 조정할 수 있었다. 컨트롤 입력은 잘 되었는데, 사실 USB 컨트롤러를 사용할 때에 비해 큰 차이를 느끼기는 힘들었다.

반면에 SNES 코어가 이상해 지는 것을 경험할 수 있었다. '슈퍼마리오 월드' 특정 스테이지에서 스타를 먹었는데 갑자기 게임이 느려지는 (이제까지 본 적 없는) 현상이 발생하기도 했으며, '스타폭스'는 오리지널이나 USB 컨트롤러 사용 시에 비해 게임 전체가 느려진 것 같은 느낌을 받았다. 뭔가 충돌이 난 것 같은 현상들이었는데, 아직 원인을 알 수 없다.

 

 

 

2. PC엔진 연결 사용 소감

다행히 슈퍼패미컴/SNES 연결에 비해 큰 문제는 없었다. 연결 설정도 쉬웠고 플레이도 쾌적했다.

하지만 역시 USB 컨트롤러 연결해 비해 큰 차이점을 느낄 수 없었다. 차이점을 굳이 찾아 본다면, 터보 스위치를 켰을 때 연사가 성능이 더 좋게 느껴진다는 것 정도.

 

 

 

3. NES 연결 사용 소감

싸구려 NES 복각 컨트롤러를 구매했는데 붙여 보았는데 잘 되었다. '슈퍼마리오3'를 플레이 했는데 두드러진 차이점은 없었지만 쾌적한 느낌이었다.

 

4. 메가드라이브/Genesis 커넥터

메가드라이브/Genesis를 사용하려면 IO 보드를 6.1로 바꾸거나 어딘가에 처 박혀 있는 3버튼 패드를 꺼내야 하는데, 향후 기회가 되면 테스트 해 보려고 한다.

 

5. 불편한 점

(1) USB 장치 연결 필수

알고 있던 점이기는 하지만, SNAC 연결로 컨트롤러를 사용할 때 USB 컨트롤러 또는 키보드 연결이 되어야 OSD 메뉴 조작이 가능하다. 각 게임 컨트롤러는 MiSTer의 공통 컨트롤러가 아니고 User I/O 포트를 통한 신호를 Linux 파트에서 바로 알 수 없기 때문에 상황이 이해는 된다. 하지만 USB 컨트롤러를 반드시 연결해야 한다면 SNAC 연결 없이 그냥 USB 컨트롤러로 플레이 하는게 빠르고 편해 보인다. 특히 양쪽 인풋랙이 크게 차이가 없다면.

 

 

(2) USB 커넥터 방향

SNAC은 USB 커넥터의 데이터 라인을 이용해 시리얼 데이터를 처리하는데, 모두 알다시피 USB A타입 커넥터는 방향이 있다. 그리고 SNAC 연결의 구성품인 USB 연장 케이블, SNAC 어댑터, 컨트롤러 어댑터 모두 USB A타입 커넥터를 가지고 있다. 문제는 이것이 거의 동일한 방향으로 구성되어 있어 각 구성품 간에 방향이 뒤틀리고 선이 꼬인다.

 

 

(3) 드러나 있는 회로

misterfpga.co.uk나 MisterAddons에서 판매하는 제품을 사실 일반 컨슈머 제품이라고 보기는 어렵고, 소비자가 어느 정도 기술적 지식이 있는 사람이라고 가정하는 바가 없지는 않다. 그렇다 보니 제품을 예쁘고 안전하게 패키징해서 팔지는 않는데 SNAC 관련 컴포넌트들도 예외가 아닌 것 같다. 회로가 그대로 드러나 있는데, 만지면서 조금 신경이 쓰인다.

SNAC 어댑터의 경우 점퍼도 빠질 것 같고 동작 중에 어디를 잡아야 할지 잘 모르겠으며, 컨트롤러 어댑터의 경우 컨트롤러 라인이 외부에 그냥 노출되어 전도성 물건을 근처에 놔두면 안 될 것 같다.

 

 

6. 총평

사실 잠깐의 플레이로는 그 느낌을 알기 쉽지 않을 것 같다. 입력 지연을 최소화하기 위한 또 다른 접근 방법인 LLAPI와의 비교를 떠나, 어떤 측정에서는 USB polling rate 1kHz 조정이 SNAC 보다 더 지연이 작다고 주장하기도 했다.

 

개인적 의견이지만, 어떤 입력 방식의 지연(latency)을 평가할 때 최소(min) 입력 지연 값보다 최대(max) 입력 지연 값이나 최대와 최소의 차(max - min)를 측정하는 것이 의미있다고 본다. 아무리 10ms라는 작은 최소 지연값 가진 입력장치가 있다고 해도 그것이 가끔 한번씩 200ms 지연이 발생한다면 사용하지 못할 것이기 때문이다(초당 60 프레임의 그래픽 갱신을 보이는 게임이 가끔 초당 28 프레임의 갱신을 보이면 최적화가 잘 된 게임이라고 볼 수 없는 것과 비슷하다). 반면에 최대 지연값이 16ms으로 측정된 장치가 있다면 그 장치는 16ms 입력 지연이 있는 장치로 봐도 무방할 것이다.

개인적으로 현대의 OS에서 시스템 타이머가 정확한 간격으로 동작할 수 있는지 잘 모르겠다. 그것이 가능하다면 USB polling rate 조정도 좋은 방법이 될 것이다. 즉, 1.00ms마다 OS 시스템 타이머가 울리고 그 때 USB 데이터 값을 polling 해서 읽어 와 그 값을 외부로 보내고 스립하는데, 정확히 다음 1.00ms에 또 OS 시스템 타이머가 울린다면 전혀 문제가 없다. 하지만, 다음 타이머 울림이 조금 늦어 1.50ms 후에 울린다거나 다음 타이머 울림까지 1ms 안에서 데이터 처리를 끝내지 해당 시간에 데이터를 전송해 주지 못한다면 문제가 발생할 것이다.

SNAC의 데이터 전송은 그런 점에서 장점이 있을 것 같다. 실기와 동일하게, 일정 주기로 동일하게 돌고 있는 콘솔 시스템 프로그램이 일정 주기로 하드웨어에서 신호를 읽어 갈 것이기 때문이다.

이런 개인적 생각에서 SNAC 연결이 USB 연결보다 좀 더 균일하고 안정적으로 MiSTer에 입력 정보를 줄 것이라고 생각한다. 다만 SNES 코어에서 겪었던 이상한 증상은 좀 더 살펴봐야 겠다.

SNAC 모듈의 외양적인 모습을 보면 현재의 구성품은 좀 더 최적화될 필요가 있어 보이기는 한다. User I/O 핀을 사용하다보니 외부로 연결선이 하나 더 생기게 되고, SNAC 어댑터 외에 각 컨트롤러 별로 별도의 컨트롤러 어댑터를 연결해야 하니 선이 길어진다.

 

Comments