Windows Tiger의 블로그

포켓몬스터 크리스탈 모바일 GB 서버 분석글 본문

게임

포켓몬스터 크리스탈 모바일 GB 서버 분석글

Windows Tiger 2018.02.17 13:59





Server본체

https://gameboy.datacenter.ne.jp/

닌텐도사의 멀티 어댑터 대응 소프트를 위한

데이터 베이스

현재는 서버 호스팅 기간이 만료되어서 접근불가능 상태이다.

(이하,ROOT://는 위 주소를 가리킨다)


ROOT://cgb/download.exe

요청 데이터를 다운로드하여 전송해 주는 배치파일

입력:name값으로 다운로드하고자 하는 데이터의 위치를 받는다

출력:반환값으로 다운로드하고자 하는 데이터의 바이러니 값을 http프로토콜로 전송해준다.

txt파일 용

(GET만 받는다)


ROOT://cgb/upload.exe

요정 데이터를 업로드 해주는 배치파일

입력:name값으로 업로드 되는 바이러니를 처리할 CGI 프로그램의 위치를 받음

출력:CGI프로그램에 받은 데이터를 입력하고

HTTP프로토콜로 성공함을 반환

cgi용

(POST만 받는다)

GET으로 호출받을경우 '401 Unauthorized'를 반환


ROOT://01/CGB-BXTJ/exchange/index.txt

<TEXT>"http://gameboy.datacenter.ne.jp/cgb/upload?name=/01/CGB-BXTJ/exchange/10upload.cgi\r\n

http://gameboy.datacenter.ne.jp/cgb/upload?name=/01/CGB-BXTJ/exchange/cancel.cgi\r\n"

</TEXT>


MTS(모바일 트레이드 시스템)의 이용가능 CGI의 리스트를 받아옴

(위는 추측)


ROOT://01/CGB-BXTJ/exchange/10upload.cgi

전송된 데이터(포켓몬)를 받아서 처리한다

ROOT://01/CGB-BXTJ/exchange/cancle.cgi

원래 사람이 MTS에서 포켓몬을 돌려받고자 할때 호출됨


ROOT://01/CGB-BXTJ/battle/index.txt

배틀타워 관련 루틴

자료 없음


ROOT://01/CGB-BXTJ/news/index.txt

<TEXT>"http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/meta.dat\r\n

http://gameboy.datacenter.ne.jp/cgb/upload?name=/01/CGB-BXTJ/news/10upload.cgi\r\n

http://gameboy.datacenter.ne.jp/cgb/upload?name=/01/CGB-BXTJ/news/nop.cgi\r\n

http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/menu.cgb\r\n"

</TEXT>

포켓몬 뉴스 시스템의 이용가능 커멘드의 리스트를 받아옴

ROOT://01/CGB-BXTJ/POKESTA/menu.cgb

포켓몬스타디움 배틀의 데이터의 메뉴를 받아옴

더미데이터로 남은 기능이라미구현되었을수도 있다.


ROOT://01/CGB-BXTJ/tamago/index.txt

<TEXT>"http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/tamagoXX.pkm\r\n

0ccc170a2e1447ad5eb778518ccca147b0a3bfffd1eae3d6f0a2ffff\r\n"

</TEXT>

이상한 알의 데이터의 주소를 받아옴



디랙터리 구조

/

/cgb

upload.exe

download.exe

/01

/CGB-BXTJ

/exchange

index.txt

10upload.cgi

cancel.cgi

/battle

index.txt

/news

index.txt

meta.dat

10upload.cgi

nop.cgi

menu.cgb

/POKESTA

menu.cgb

/tamago

index.txt

tamago00.pkm

tamago01.pkm

tamago02.pkm

tamago03.pkm

tamago04.pkm

tamago05.pkm

tamago06.pkm

......


외국인들이 만든 mobile.py란 시뮬레이터 코드 보고 개인적으로 분석한 것입니다.

cgi란게 찾아보니까 옛날 php나 xml같은거 없을때 썻던거라는건데 그냥 c언어인데

표준 입출력스트림이 키보드와 콘솔이 아니라 대신에 HTTP프로토콜이던거라고요.

그러므로 정확한 서버 구현은 매우 쉬울겁니다.


다만 어댑터 시뮬레이션이 문제지...

모바일어뎁터는 나무위키에는 서버는 2002년 종료되어서 MTS기능은 못써도

전화를 이용한 친구간 모바일 트레이드나 대전은 가능하다고 서술되어있는데요.


모바일 어댑터가 대응되는 통신방식이 2G통신방식으로 PDC, CDMAOne(또는 2000) 이렇게 두가지인데

둘다 일본내에서 서비스 종료를 해버려 3G로 갈아탔으므로 2018년 현재는 불가능 할겁니다....


대충 통신방식을 설명하자면 핸드폰을 가상모뎀으로 이용하는건데요. 우리가 피처폰으로 네이트온 접속하는걸 생각하면 이해가실겁니다.


결론: 프리서버를 만들려먼 서버가 아니라 어뎁터 에뮬레이터를 만드는게 더 힘듭니다.


여담으로 각종 에뮬레이터 적합성(?)

VBA: GB/GBC는 통신 에뮬레이션을 지원하지 않음

GBE: 모바일어뎁터 에뮬레이션이 에뮬레이터 내에 포함되어있지만 코드 내에서 아직은 서버와의 통신을 구현해두지 않았습니다.

단순히 404만 보내게 해둠

BGB: 링크기능으로 외부프로그램과 연결하게 할수있음. mobile.py는 이 에뮬레이터 대용 근데 저는 파이썬이 싫어서...


어차피 내가 할것도 아닌데


하여튼 6개월치 깨작깨작 분석정리글




0 Comments
댓글쓰기 폼