03 NDS 홈브루(Homebrew) - Advanced KKAMAGUI Notepad

 

들어가기 전에...

64비트 멀티코어 OS 원리와 구조

0.2007/09/28 추가

 

0.시작하면서...

 처음 NDS 홈브루를 개발하면서 libfat의 능력 및 libnds의 테스트 용으로 간단한 메모장 프로그램인 KKAMAGUI Notepad를 개발하였다(자세한 내용은 00 KKAMAGUI Notepad 참조). 테스트 결과 libfat가 약간 불안함을 발견하였고, 터치스크린의 경우 튀는 문제가 발생하였다.

 하지만 분석 결과 튀는 순간이 처음 터치스크린을 찍는 부분과 터치스크린에서 펜을 때어낼 때임을 발견하였고 이를 버퍼와 범위 체크를 통해 어느정도 완화시켜서 그렇게 큰 문제는 되지 않았다.

 그후 5개월이 지난 지금... NDS에 대한 분석이 진행되면서 ARM7 코드도 같이 삽입하고 테스트 할 수 있게 되어 터치스크린 문제를 해결하고 기존에 부족했던 기능을 추가하여 새롭게 업그레이드를 했다. 그것이 바로 Advanced KKAMAGUI Notepad이다.

 

1.터치스크린(Touch Screen) 튐 현상 해결

 터치스크린의 튐 현상은 libnds의 고질적인 문제였다. 여러 홈브루를 테스트해봐도 터치가 튀는 현상을 발견할 수 있다. 이 부분을 해결하려면 ARM7 코드를 손을 대어야 했는데, 결국 해냈다( 장하다 KKAMAGUI @0@)/~~).

 자세한 내용은 참고. 터치스크린(Touch Screen)의 튐 현상 해결방안 문서를 참고하도록 하자.

 

2.파워 컨트롤(Power Control) 기능 추가

 기존의 KAMAGUI Notepad는 NDS가 접혔을 때... 즉 폴딩(Folding) 되었을 때 LCD를 끄는 처리만 되어있었다. 다른 게임들을 보면 알겠지만 NDS의 LED가 깜빡이면서 대기중인 것을 표시한다. Advanced KKAMAGUI Notepad 또한 그 기능을 추가하여 폴딩 되었을때 LED를 깜빡이도록 했다.

 

3.사운드(Sound) 기능 추가

 해당 버튼을 클릭하면 사운드가 출력되도록 하여 약간의 즐거움을 추가했다. 사운드 출력에 대한 내용은 08 사운드(Sound) 제어 와 참고. 롬 파일에 데이터(사운드, 이미지 등등) 파일 포함 방법 문서를 참고하자.

 

4.기타

  • 화면 색깔을 약간 바꾸고 직선 그리는 알고리즘을 이상한 알고리즘에서 Bresenham 알고리즘으로 변경했다. 대각선 같은 경우 기존의 알고리즘보다 훨씬 더 자연스럽다. 알고리즘에 대한 자세한 내용은 http://tong.nate.com/lovebridge/33470715를 참고하자.
  • 새 메모를 남기는 화면에서 "지우개" 버튼을 클릭하면 "연필"로 바뀌어서 클릭하면 연필 모드가 된다는 것을 추가했다.

 나머지 기능들은 거의 동일하니 00 KKAMAGUI Notepad를 참고하도록 하자.

 

5.화면 및 실행방법

 롬파일을 DLDI 패치하여 메모리에 담은 다음 실행하면 된다. 아래는 실행한 화면이다.

메인 화면
연필로 그리기 화면

 좌측에 보면 연필로 표시된 것을 확인할 수 있다.

 

6.마치며...

 이제야 NDS에 대해서 좀 알 것 같다. 3월에 처음 홈브루를 개발하면서 막연한 지식으로 덤벼들었는데, 요즘 상세하게 분석하고 Notepad에 추가 기능까지 넣고나니 약간 감이 잡히는 듯....

 역시 NDS 최고~ >ㅁ<)/~~!!

 

7.첨부

 

+ Recent posts