devkitPRO, PAlib 컴파일 가능한 닌텐도DS(NDS) 개발 환경 구축하기

닌텐도 DS용 어플리케이션(홈브루homebrew 라고 한다)을 개발하기 위해서는 devkitPRO와 PAlib을 설치할 필요가 있다.

devkitPRO는 개발한 homebrew를 관련 라이브러리를 이용해 컴파일하는 기능을 하며, PAlib는 보다 개발을 쉽고 빠르게 하기 위한 API를 제공한다. devkitPRO를 설치하면 devkitARM 등과 같이 특정 플랫폼을 위한 컴파일러와 libnds, libmirko 등과 같은 관련 라이브러리들이 설치된다.

물론 devkitPRO와 PAlib 은 충분히 강력하기는 하지만 아직도 계속 개발중인 프로그램인지라 역시 좀 부족한 면이 없지않다. 필요한 API가 없으면 직접 devkitARM과 PAlib 소스를 수정해서 컴파일해야 하는 일도 많다.

일반적인 경우라면 PAlib과 libnds의 라이브러리가 바이너리 상태로 제공되기 때문에 문제가 없지만, 본인은 Microphone 을 이용해서 프로그램을 개발할 일이 있었고 실제 libnds 를 수정해서 컴파일 해야 했다. 그런데 이 작업이 생각만큼 잘 이루어지지 않았다. 각종 삽질 끝에 보니 devkitARM, PAlib, 그리고 libnds 의 버전이 미묘하게 달라서 생기는 문제였다.

혹시라도 NDS homebrew 를 개발하는 분 중에 libnds와 PAlib을 다시 컴파일해야 하는 분들을 위한 짤막한 지침을 제공하도록 하겠다.

<윈도우 환경에 설치>

1. devkitPRO 최신판(updater 1.4.4)을 받아서 모든 패키지를 다 설치한다. 빼고 넣고 하지 말 것.

2. devkitPRO를 설치하면 devkitARM도 함께 설치되는데, 이 때 설치되는 r21 버전은 PAlib와 충돌을 일으킨다. 따라서 r20 버전으로 다운그레이드 시켜주어야 한다. devkitARM r20 을 다운받아서 devkitPRO 디렉토리에 덮어쓴다.

3. 이제 PAlib을 설치해야 한다. 버전을 맞추기 위해 PAlib070717 버전을 설치한다. 이 때 PAlib 이 설치되면서 추가적인 소스들이 libnds 폴더에 덮어씌워진다.

4. libnds를 컴파일 가능하게 만들기 위해 소스를 다운받아야 한다. libnds20070503-src 를 새로 설치한다.

5. 콘솔(WInKey+R을 누르고 cmd, 엔터)을 띄운 다음 libnds 가 설치된 디렉토리(c:\devkitPRO\libnds)로 이동하여 make 를 타이핑하여 컴파일하고, 다시 PAlib가 설치된 디렉토리(c:\devkitPRO\PAlib)로 이동하여 build.bat 를 실행하면 PAlib가 컴파일 된다. 이로서 모든 세팅이 완료된다. PAlib template에서 make를 이용하여 컴파일하면 제대로 컴파일 되는 것을 확인할 수 있을 것이다.

암기은행 차기 버전 개발중입니다.

암기 은행의 기능 개선을 요구하시는 분들이 많아, 바쁜 시간이나마 짬짬이 차기 버전을 개발하고 있습니다.

subversion + trac 을 적용해서 프로젝트로 관리하느라 조금 고생을 했네요.

거의 1년만에 코드를 보려니 잘 읽히지가 않아서 걱정입니다. ^^; 현재는 산만하게 흩어져 있는 “옵션”을 하나의 메뉴로 모으는 작업을 진행하고 있습니다. 이 작업이 완료되면 다른 중요한 구현 사항들을 하나씩 구현할 수 있으리라 생각됩니다.

아마도 차기 버전에서는 이전 버전 mmk 파일을 좀 더 확장한 파일 포맷을 사용할 것 같습니다. 물론 하위 호환성은 지원되며, 예전 파일들은 자동으로 새로운 형식의 mmk 파일로 컨버팅 하도록 할 예정입니다.

개발 완료 시기는 언제가 될거라고 딱 잘라 말하기는 힘듭니다만, 과거의 경험상 버그 없는 안정 버전이 나오게 되었을 시점에 공개할 예정입니다.

현재 PDA가 망가지는 바람에 테스트 머신이 PPC2003 기종밖에는 없습니다. WM5.0에서도 크게 문제없이 돌아가리라고는 생각합니다만, 아마 블랙잭 등의 smartphone에서는 제대로 동작하지 않을 것 같군요. 이런 호환성 부분은 기본적인 사항이 모두 구현된 다음에 들어가도록 하겠습니다.

감사합니다. 모두들 즐거운 2008년 되시기 바랍니다. ^^