Times Table for NDS

From KBase

Jump to: navigation, search

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 는 별도 페이지로 정리한다.

== Techniques ==TAG Heuer Replica Watches

[edit] Image Drawing

  • PNG 파일을 GPN 파일로 변환하여 화면에 표시할 수 있도록 한다

[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 만

Image:timestable_menu.png - Image:timestable_play.png - Image:timestable_quiz.png

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
Personal tools
Wiki Help (mediawiki.org)