2012년 2월 7일 화요일

JoyMega - 메가드라이브 3버튼 패드

메가드라이브(이하 MD) 패드가 MSX (아타리 표준?) 조이스틱과 비슷해서,

개조해서 쓰시는 분이 많은 걸로 알고있어요.


저도 한..10년 전엔가 3버튼 패드 산걸로 지금껏 쓰고 있었는데용~



아래 홈페이지에 가봤더니, JoyMega라는게 있네요.

http://frs.badcoffee.info/hardware/joymega-en.html



아래 홈페이지 보시면, 3버튼, 6버튼 패드 컨트롤에 관한 내용이 좀더 자세하게 나옵니다.

http://segaretro.org/Control_Pad_(Mega_Drive)

http://applause.elfmimi.jp/md6bpad-e.html




아래는 MSX 조이스틱 포트의 핀배열이구요.


1 Up

2 Down

3 Left

4 Right

5 +5V

6 Trigger 1

7 Trigger 2

8 OUT

9 Ground




아래는 MD 3버튼 패드(Start 포함 4버튼)의 핀배열입니다.


1 Up

2 Down

3 Left

4 Right

5 +5V

6 A/B

7 Select

8 Ground

9 Start/C



둘을 비교해보면, 거의 비슷한데요. (7,8,9번의 핀 순서가 조금 다릅니다.)

MD는 트리거 버튼 입력 핀이 두개라서 MSX랑 동일한데,

대신 7번 핀의 Select 신호에 따라서 A,Start 또는 B,C 버튼 상태가 출력되도록 되어있습니다.

7핀 LOW  -> A 및 Start

7핀 HIGH -> B 및 C

이런식입니다.


만약 MD패드의 7,9번 핀을 개조하게 되면,

MSX에서 조이스틱을 읽을 때 8번 핀이 LOW로 출력이 되기 때문에 아래처럼 MD패드의 B,C 버튼이 동작합니다.

MSX 7핀 (트리거2) -> MD 9핀 (버튼C)

MSX 8핀 (LOW)   -> MD 8핀 (GND)

MSX 9핀 (GND)   -> 연결안함 (MD 7핀은 내부 풀업으로 HIGH로 동작함)



그럼, JoyMega 의 역할은 뭘까요?

MSX의 기존 BIOS 조이스틱 루틴과 충돌하지도 않고,

MD 패드의 4개 버튼을 쓸수도 있게 만드는 것입니다.


동작은 아래처럼 됩니다.

1. MSX BIOS에서는 조이스틱 값 체크 시, 8번핀 OUT을 항상 LOW로 출력

2. MD패드의 B,C 버튼이 MSX 조이스틱의 기본 1,2 트리거로 사용

3. MD패드의 A,Start 버튼은 MSX의 8번 OUT이 HIGH 상태에서 읽을 수 있음 (MSX BIOS 대신 별도 S/W가 필요)


사실 개조는 간단한데요.

74LS04 류의 인버터 하나만 있으면 됩니다.

1. MSX 7핀 -> MD 9핀, MSX 8핀 -> MD 7핀, MSX 9핀 -> MD 8핀

2. MD 7핀은 그대로 기판으로 연결하지 않고, 74LS04 를 이용해서 신호를 뒤집는다.


어제 밤에 납땜에서 테스트해봤는데, 잘 되더군요.

참고로 위의 JoyMega 관련 홈페이지에 가면, 패드 체크하는 프로그램 받을 수 있어요.




아주 간단하게 MD 3버튼(실제4버튼) 패드를 사용할 수 있게됩니다.

음... 그럼 추가된 2버튼을 어떻게 쓰냐고요?

기존 MSX 게임들은 당연히 2버튼 기준으로 되어있으니 활용처가 없구요.

새로 만드는 게임에서는 따로 코딩을 해서 JoyMega를 지원할 수 있겠습니다.

여기서 ASO도 포함됩니다. 버튼을 3개 쓰고 있어서요. ㅎ.ㅎㅋ



그럼, 6버튼(실제8버튼) 패드는 어떻게 쓸 수 있을까요?

요건 따로 사용법이 있더군요.

실제 MD에서도 6버튼은 SW 호환에 문제될수가 있어서, 3버튼 모드로 바꿀수가 있나보네요.


아래는 6버튼 패드를 사용하는 방법입니다.

TH out 이 7번핀 Select 를 의미하고, TL/TR은 트리거 핀, D0~D3은 방향키 입력 핀입니다.


Cycle TH out TR in TL in D3 in D2 in D1 in D0 in

1 HI C B Right Left Down Up

2 LO Start A 0 0 Down Up

3 HI C B Right Left Down Up

4 LO Start A 0 0 Down Up

5 HI C B Right Left Down Up

6 LO Start A 0 0 0 0

7 HI C B Mode X Y Z

8 LO Start A --- --- --- ---


보시면, Mode, X, Y, Z 네개 버튼이... 방향키 입력핀을 통해 읽히는걸 알수 있습니다.

대신 조건이 있죠.

Select 핀을 LOW/HIGH 3번 변경을 해줘야 읽을 수 있습니다.

그 전까진 그냥 방향키로만 읽을수 있고요.

홈페이지 설명을 보니, Select 핀 상태가 변한 후 1.5ms가 지나면 Cycle 이 초기화 된다고 하네요.

그러니까 빠르게 읽어야 나머지 4개 버튼 상태를 확인할 수 있겠습니다.


아직 JoyMega 8개 버튼 다 쓰는 게임을 본적이 없어서, 활용 가능성은 애매합니다. ㅎ.ㅎ;

누군가 Street Fighter 리메이크라도 한다면 쓸모있을까요?



2줄로 요약하면...

1. JoyMega 로 개조를 하면, 기존 MSX 게임에서는 B,C 버튼으로 동작한다.

2. SW 가 지원만 된다면, 8버튼 모두 MSX에서 사용이 가능하다.

입니다.


이번주 중에 6버튼 MD패드 몇개 사서 한번 테스트해보려고 합니다.

어제밤에 3버튼 패드 개조해보니, 잘 동작하더군요. ㅎ.ㅎ


일단 ASO에 JoyMega 처리 루틴 추가해보았습니다.

으흐... 잘되는군요. ㅎ.ㅎㅋ

옥션에서 6버튼 패드도 몇개 질렀는데, 오면 요것도 한번 개조해서 테스트해봐야겠습니다.



 

댓글 없음:

댓글 쓰기