Times Table for NDS
From KBase
Main_Page > NDS_Homebrew_Tutorial / 방명록
Contents |
[edit] Introduction
6살 난 딸래미 승원이가 NDS 가지고 두뇌훈련을 재미있게 하고 있는데 계산 문제에서 덧셈, 뺄셈은 곧잘 하는데 곱셈은 못한다. 그래서 x 0, x 1 정도를 가르쳐 주고 어려운 곱셈은 대신 해주었다. 그러다가 x 3, x 4 를 하는 법을 가르쳐 주었더니 역시 이제 좀 한다.
차라리 구구단을 가르치면 어떨까? 생각하다가 NDS Homebrew 로 만들어 올리면 승원이 뿐 아니라 초등학교 입학 전 정도의 애들에게 도움이 될 것 같아서 한 번 만들어 보기로 한다.
[edit] Storyboard
Times Table Storyboard - Storyboard 는 별도 페이지로 정리한다.
[edit] Techniques
[edit] Image Drawing
- PNG 파일을 GPN 파일로 변환하여 화면에 표시할 수 있도록 한다
- png2gpn - NDS Development Trial 에서 사용한 PNG Drawing 기법
[edit] Text Drawing
- 한글/영문 출력을 위해 폰트 출력 엔진을 포함한다
- png2fnt - 폰트 생성 및 출력에 대한 기법
[edit] Graphics Mode
- Double buffering
- Main/Sub 에 모두 MODE_5_2D 를 사용하고 ext_rot_bg (Extended rotation background) 에 그린다.
- Offscreen memory 에 drawing 을 하고 flush 시에 screen buffer 로 옮기는 방법을 사용한다.
[edit] Scenes
- Scene 이라는 단위로 화면을 구성할 수 있도록 한다.
- Button class 를 만들어 화면에서 쉽게 버튼 처리를 할 수 있도록 한다.
- Touch 입력을 받을 수 있는 구조를 만든다
- Event Driven 구조를 만들고 Key Event 나 Touch Event 를 전달한다.
- Event 는 각 Scene 이 받게 하며 기본 구현은 버튼에 대한 처리를 하는 것이다.
- 각 Scene 에서는 눌린 버튼의 index 만 전달받아서 필요한 일을 한다.
[edit] Not Done Yet
- Sound play 가능하도록 한다
[edit] Screen Shots & Downloads
- 2007.05.27
- flush 하는 양을 최소로 줄여 Graphics 의 성능을 높인다.
- PlayScene 을 구현한다. 여기서는 구구단표를 보여 준다.
- QuizScene 버튼들의 좌표를 변경하고 힌트 버튼을 추가한다
- Media:ndsdev_070528.zip - 모든 소스
- Media:timestable.nds.070528.zip - timestable.nds 만
Old timestable screenshots and downloads
[edit] References
- http://www.pinknoise.demon.co.uk/ARMinstrs/ARMinstrs.html#Multiplication
- Alpha blending 을 할 때 shift 만을 사용하는 코드보다 곱셈을 사용하는 코드가 얼마나 느린지 알아보기 위해 검색을 해 봤다. Shift 는 1S cycle 걸리고 곱셈은 곱하는 수에 따라 1S + 2I 혹은 1S + 3I cycle 걸린단다. 이 문서에 나온 설명처럼 S 와 I 를 같다고 생각해 보면 대충 3~4 배 느리단 소리가 된다. 하지만 shift 를 쓰는 코드는 회사거니 곱셈을 쓰자 ^^
| Range of Rs | Number of cycles |
|---|---|
| &0 - &1 | 1S + 1I |
| &2 - &7 | 1S + 2I |
| &8 - &1F | 1S + 3I |
| &20 - &7F | 1S + 4I |




