08 NDS 홈브루(Homebrew) - KKAMAGUI NDS Shell

원문 : http://kkamagui.springnote.com/pages/566470


들어가기 전에...

0.시작하면서...

 NDS 사용자라면 문쉘(MoonShell)을 모르는 사람이 없을 것이다. 스킨 기능과 동영상 재생기능, MP3 Play기능 및 파일 보기 기능 등등~ 상당히 많은 기능들을 포함하고 있는 무시무시한 쉘이다. 시간 날때마다 문쉘의 소스를 뒤져보고 있지만, 어떻게 이렇게 복잡한 소스를 관리하는지 의문이 들 정도로 소스가 빼곡히 들어 차있다.

 KKAMAGUI NDS Shell은 문쉘의 기능에서 필요한 기능만 추려내고 내가 필요한 기능을 넣어서 사용하기위한 간단한 NDS용 쉘(Shell) 프로그램이다. 문쉘이 비하면 아직 기능이 많이 부족하지만, 시간 날때마다 짬짬히 기능을 추가하고 있으니 언젠가는 문쉘처럼 될 수 있을 것이라 생각한다. ^^;;;

 그럼 이제부터 KKAMAGUI NDS Shell에 대해서 알아보자.


1.프로그램 기능

 오늘(2007/11/01 05:38:07)까지 구현된 기능은 아래와 같다.

  • 듀얼 스크린 기능 : R 키를 통해 상하 스크린을 플립할 수 있는 기능. A키를 이용하여 Program Manager를 이동시켜 두 화면 모두 프로그램을 실행할 수 있음
  • 파일 브라우징 기능 및 텍스트 뷰어 기능: File & Text Viewer를 이용하여 파일 리스트를 표시하고 L 키와 파일 리스트의 항목을 클릭함으로써 파일을 볼 수 있는 기능
  • 한글 출력 기능 : 윈도우 타이틀 및 텍스트 뷰어에 한글을 출력하는 기능. 유니코드는 아직 미지원
  • 달력 기능 : 현재 날짜와 시간을 표시하는 달력 기능
  • 리셋 기능 : 홈브루를 종료하고 Firmware로 이동하는 기능. 자세한 내용은 06 소프트웨어 리셋 라이브러리(Software Reset Library)의 문서 참고

2.프로그램 컴파일 및 링크 방법

 KKAMAGUI NDS Shell은 FAT Library, Window Library, Reset Library를 사용한다. 각각의 library에 대한 내용은 아래를 참고하여 설치하면 된다.

  • FAT Library : libfat는 devkitPro를 사용하면 기본으로 깔려있기 때문에 굳이 손댈 필요는 없음. 다만 링크 후에 실행하기위해서는DLDI 패치를 수행해야 함. 새로 libfat를 컴파일해서 DLDI를 하는 불편함을 줄이고 싶은 사람은 01 libfat 업그레이드 문서를 참고
  • Window Library : 자작한 윈도우 라이브러리. NDS에서 MFC와 같은 스타일의 윈도우 프로그래밍을 하기위해서 만듬. 02 NDS 윈도우 시스템(Windows System) 문서를 참고
  • Reset Library : 문쉘(MoonShell)의 Reset.MSE 플러그인을 분석해서 만든 소프트웨어 리셋 라이브러리. 06 소프트웨어 리셋 라이브러리(Software Reset Library) 문서를 참고

 위의 라이브러리중 하나라도 빠지면 컴파일 또는 링크가 되지 않으므로 빠짐없이 설치하도록 하자.


3.소스 구성

 KKAMAGUI NDS Shell의 대부분의 소스는 윈도우 라이브러리(Window Library)의 기본 윈도우와 리스트 윈도우, 스킨 윈도우를 상속받아서 커스터마이징(Customizing)하는 형태로 만들어졌다. 거의 윈도우 라이브러리를 테스트하기위한 프로젝트라고 해도 과언이 아닌데, 소스를 전부 설명하기는 어려우므로 첨부에 있는 소스 파일을 참고하도록 하자.

 윈도우 라이브러리 사용에 대한 자세한 내용은 추후에 별도의 문서로 올릴 예정이니, 구조만 참고하면 될 듯하다. ^^;;;


4.사용방법 및 실행화면

 버튼별 역할은 아래와 같다.

  • R 버튼:

    • 스크린 전환 기능. 상하 LCD를 바꿔서 모든 스크린을 터치로 제어 가능하게 만듬
  • L 버튼:

    • File & Text Viewer에서 파일 or 디렉토리 선택 모드로 전환
    • 선택 모드 사용 시 리스트의 항목 중에 터치 스크린으로 클릭된 부분이 붉은 색으로 변하고 터치를 때면 해당 항목의 파일이 Text Viewer로 표시되거나 해당 디렉토리로 이동
  • 화면 터치:

    • 윈도우 타이틀을 터치하는 경우 윈도우 이동
    • 닫기 버튼인 경우 윈도우 닫기. 리스트 윈도우의 경우 스크롤 또는 항목 선택
    • Text Viewer의 경우 스크롤
  • A 버튼:

    • Program Manager 표시
    • 화면 전환이 일어나서 Program Manager를 표시해야 하거나 Program Manager를 닫은 경우 다시 화면 가운데 표시

 아래는 실행화면이다.

 KNS1.PNGKNS2.pngKNS3.png

<실행화면>


5.마치면서...

 몇가지 기능밖에 없는 허접한 쉘(Shell)이지만 NDS에서 쉘을 만들려고 고민하는 사람들에게는 좋은 예제라 생각한다. 앞으로 MP3 Play 정도는 추가할 예정인데, 어떻게 될지 모르겠다. ^^;;;;


6.첨부




이 글은 스프링노트에서 작성되었습니다.

+ Recent posts