닌텐도 DS 게임은... 원래 닌텐도에서 발급하는 라이센스를 취득한뒤에 게임 제작을 할 수 있습니다.
(물론.. PSP나.. XBOX 다 그런 시스템입니다)

허나.. 개 개인이 그런 라이센스를 받는다는거 자체가 불가능한 일이고.. 하지만 뭔가 만들고 싶고..
그런 분들을 위한 툴입니다

해외에선 많이 알려진, 널리 사용하는 devkitPro를 사용하여 NDS 프로그래밍 하는 방법을 알려드리겠습니다.

1. 우선 http://www.devkitpro.org/downloads/ 사이트로 들어가셔서 최신 devkitPro를 다운로드 합니다.

사용자 삽입 이미지

1-1. 클릭하면 sourceforge 로 들어가서 최신 버젼을 다운로드 할 수 있음.
사용자 삽입 이미지

2. 이제 다운로드 한 최신 프로그램을 설치 합니다.
사용자 삽입 이미지

2-1. 첫번째것을 선택해서 next
사용자 삽입 이미지

2-2. 그냥 next
사용자 삽입 이미지

2-3. 뭘 설치할지 묻는 화면입니다.
사용자 삽입 이미지
각각..
 minmal system : 리눅스와 같이 ls, gcc 뭐 이런 명령어들을 명령프롬프트창(dos창)에서 사용할 수 있게 합니다.
 devkitARM : 닌텐도 DS는 ARM프로세서를 사용합니다. 당연히 설치 합니다. 이외 국산 게임기인 gp32 등을 만질수 있는 gcc 도 제공합니다.
 devkitPPC : PocketPC ... 즉.. PDA 같은 시스템입니다. 의외로.. 닌텐도 게임큐브나.. 닌텐도 wil 컴파일도 있습니다
 devkitPSP : 말그대로 PSP 컴파일 입니다. 이걸로 PSP 컴파일 할 수 있습니다.
 Programmer's Notepad : IDE 툴입니다. 우리는 Visual Studio를 사용할 것 이므로 패스..
 Insight : 음... 디버깅 툴이랍니다.. 설치 합시다.

2-4. 설치 디렉토리를 선택합니다. 그냥 디폴트값을 두고 next
사용자 삽입 이미지

2-5. 인터넷으로 설치 파일을 다운로드 하고 있습니다...
사용자 삽입 이미지

2-6. 다 다운로드하면 자동 설치 합니다. 끝나면 next..
사용자 삽입 이미지

2-7. 설치가 완료되었습니다.
사용자 삽입 이미지


3. 그냥 저 상태에서 컴파일 해도 되지만. 좀더 쉽게 프로그래밍 하기 위해 라이브러리를 다운로드 합시다.
  가장 유명한 라이브러리는 PAlib 입니다.
  http://forum.palib.info/ 으로 들어가셔서 라이브러리를 다운합니다.
  참고로 저 사이트엔 라이브러리에 관한 튜토리얼도 제공되니 필히 읽어 보시기 바랍니다.
  (한국어 버젼도 있습니다)
사용자 삽입 이미지

4. 다운로드는 c:\devitpro 즉, 아까 devkitpro를 설치한 디렉토리에 다운로드 합니다.
사용자 삽입 이미지

5. 다운로드 한 파일을 알집을 통해 '현재 폴더에 풀기'로 압축 풉니다.
사용자 삽입 이미지

6. visual studio 에서 컴파일 할 수 있게 http://www.thechip.net/images/PALibAppWizard.zip 의 파일을 c:\devkitpro 에 다운로드 합니다. 그리고 이건 해당 파일명 폴더로 압축풉니다.
사용자 삽입 이미지

7. 압축을 풀면 아래와 같은 파일이 있는데, 각각 Visual Studio 2005 express 버젼과 Visual Studio 2005 버젼입니다. 자신의 환경에 맞게 설치 합니다. VSExpress 경우 MSDN 사이트에서 무료로 다운로드 할 수 있습니다.
이 파일은.. 오우거 엔진의 VS 연동 파일을 개조 했다고 합니다 :)
사용자 삽입 이미지


8. 설치가 완료 됬습니다. 이제 Visual Studio 를 실행시켜 봅니다.
사용자 삽입 이미지

9. 새 프로젝트 생성을 보면 NintendoDS 가 있습니다 >_<
 경로명 주의 사항을 잘 읽어보시고 셋팅해줍니다.
사용자 삽입 이미지

10. 별 내용 없습니다. Finsh 누릅니다.
사용자 삽입 이미지

11. 원할한 디버깅을 위해 예뮬레이터를 연결합니다.
   Tool -> External Tools (도구 -> 외부도구) 를 클릭합니다.
사용자 삽입 이미지

12. 가장 아랫줄... (9번째 줄 일껍니다) 를 아래와 같이 셋팅합니다.
사용자 삽입 이미지

Command : C:\devkitPro\PAlib\Emulators\no$gba\NO$GBA.EXE
Arguments : $(TargetDir)\$(TargetName).sc.nds
Inital directory : $(TargetDir)

C:\devkitPro\PAlib\Emulators에 들어가면 NDS 예뮬 프로그램이 많습니다.
하지만 가장 괜찮은건 No$GBA 라는군요. 다른걸로 사용해도 무방합니다.
단, No$GBA 경우 생성되는 파일의 *.sc.nds 파일을 업로드 해야 제대로 실행됩니다.

13. 계속.. 외부도구에 쉽게 접근하기 위해 단축키를 설정합니다.
Tool -> Option (도구 -> 옵션) 으로 들어갑니다.
사용자 삽입 이미지

14. 키보드 설정에 Tools (도구) 쪽의 외부도구 9번 (NDS 설정이 9번째 라인이므로 9번입니다. 다른 라인에 하셨으면 그거 에 맞는 번호를 찾으셔야 합니다)에 빨간 박스 해놓은곳에 키를 직접 눌러 셋팅합니다.
사용자 삽입 이미지

15. 이제 디버깅을 해봅시다. 에러가 생겼네요 >_<
사용자 삽입 이미지

16. 뭐가 문제인지 찾아가 봅시다.

extern inline u16 PA_GetBmpWidth(void *bmpdata){
 BMP_Headers *Bmpinfo = (BMP_Headers*)(bmpdata+14);
 return Bmpinfo->Width;
}
에서 void *bmpdata 가 갑자기 BMP_Header * 로 붙어서 문제가 생긴거 같습니다.
PA_GetBmpWidth(void *bmpdata) -> PA_GetBmpWidth(BMP_Headers*bmpdata) 로 변경합니다.

한군데 더 그런곳이 있는데, 거기도 똑같이 변경합니다.
사용자 삽입 이미지
사용자 삽입 이미지

17. 또 문제가 생겼네요.. 이번엔 arm7 라이브러리가 없답니다. 그러면.. 복사해 주면 간단해지겠죠
아까 devkitpro 설치한 디렉토리로 가셔서 palib 의 lib 디렉토리를 devkitpro/msys 에 복사합니다.

사용자 삽입 이미지

당연히 합칩니다. >_<
사용자 삽입 이미지

18. 다시 디버깅 해봅시다. 파일이 3개나 나왔습니다. 이러면 성공입니다.
사용자 삽입 이미지

19. 이제 아까 설정한 키를 눌러서 예뮬을 돌려 봅니다. Hello world 가 나오면 성공입니다
사용자 삽입 이미지

  1. 김진영 2008.09.03 16:36

    감사합니다. 해봄.

    • 김진영 2008.09.03 16:16

      갑자기 visual ~~~로 들어가라니요??????

  2. 장미전쟁 2008.09.03 17:34 신고

    여기서 설명하는 NDS 개발은,
    윈도우 환경에서 C언어를 가능한 친숙하게 짜는(많은 사람들이 사용하는) Visual Studio C++ 2005를 사용해서
    NDS 개발 하는 방법에 대해 알려드리고 있습니다.

    http://www.microsoft.com/express/2005/download/default.aspx
    위 사이트 가셔서 express 버젼(express 2005 버젼)을 설치 하신 후에 계속 진행 하시면 될 듯 싶습니다.

  3. 2008.12.02 17:06

    #include <stdio.h>

    void main()
    {
    printf("Hello World.!\n");
    }
    이거 한 쓰기가 저렇게 힘든건가 ..
    void 를 왜 다른거로바꾸죠 ?;; 어지럽네 .. 2005 버전 은 버그 마니없나요 6.0 쓰는데 자꾸 버그걸려서 다운되네요 ..;

    • 장미전쟁 2008.12.03 12:36 신고

      void main() 과
      int main() 은
      마지막에 리턴해주냐 마냐 차이 입니다.
      int main() 하면 마지막에 return 0; (혹은 1)을 해줍니다.

      왜 이런 귀찮은 짓을 하냐면..
      .. 관습 ;;;; 이어서 일지도요..

      중간에 프로그램을 짜다가 에러 처리 할때
      return -1; 등을 해서
      굳이 exit(0); 과 같은 함수 안써도 쉽게 종료 처리 할 수 있죠.

      뭐 void main() 하고 에러 처리 할때
      return ; 하면 안되냐 하실지도 모르지만..
      에러가 한두개도 아니니;;;

      int main() 하는게 여러모로 편하다 보니 저런거 씁니다 ;;;

  4. 2008.12.02 17:15

    근데 저 printf 도 아니고 cout 도 아니고 pa 어쩌구 저쩌구는 어떤거죠 ?;
    c++ 컴파일러에서 제대로 적고 닌텐도 컴파일러에서 그걸 닌텐도 에 맞게 컴파일해준다는건가 ;; 아직은
    더 열심해야지 ㅠㅠ

    • 장미전쟁 2008.12.03 12:45 신고

      PA_ ~~는 PAlib 입니다.
      NDS는 임베이드 장비이기 때문에
      우리가 일반 PC에서 프로그래밍 하는 C함수 그대로 갖다 붙인다 해서 제대로 작동하라는 보장이 없습니다.
      (Java 는 Java vm만 있으면 상관없습니다)

      왜냐면 CPU가 다른걸 쓰니까 그렇죠

      PC에서 printf 는 확실히 콘솔창에 무언가를 출력하는겁니다만.
      printf 문을 분석하면 화면 어디에 받은 텍스트의 해당되는 픽셀을 찍는 루틴이 있습니다.
      그리고 이게 화면에 나오고요

      NDS의 경우.. 프로그래밍 할때
      printf .. 됩니다. 다만 NDS LCD 화면에 나오지 않고 테스터 할떄 콘솔창 띄어서 디버깅 할떄 나오죠.
      (콘솔창 띄울수나 있으려나...)

      NDS LCD에 화면을 글자를 출력하기 위해서는 비디오 메모리에 글자 모습을 하게끔 픽셀을 찍어 줘야(on) 합니다.
      우선 메모리에 폰트 올려야 하고 (PA_InitText)

      그런 메모리 잡고 ㄱ 이면 메모리 어딘가에 수식계산으로 위치 찾아가서 픽셀값 써주는 짓을 함수로 만든게
      (PA_OutputSimpleText) 이고
      이 함수들은 PAlib 이기에 앞에 PA 가 붙습니다.

  5. 0201ssw 2009.01.22 19:59

    감사합니다 >-<

  6. 2009.02.02 14:28

    wii 홈브류 설정방법도 가르켜주심 감사하겠습니다 ㅜ.ㅜ

  7. 미치겠네..;;; 2009.03.13 23:29

    아낫!!!! visual studio c++ 2005 express를 깔고서 위에있는 뭐 이상한 문서처럼 생긴거 깐후에

    visual studio c++ 2005 express에 들어가봐도 nintendo DS라는 말이 안나오네요.... 어떻게 해결방법좀..;;;;

사용자 삽입 이미지

졸업작품으로 만든 게임입니다.
원래 게임은 Wipi 휴대폰 이지만.. 여러 사정으로 NDS로 간략하게 만들었습니다.
게임 자체는 내용도 없고.. 벨런스 테스트도 안해서 형편없습니다..

그냥 제작하는 방법 파악정도가 목표였고 그 목표를 다했다고 생각합니다.

교육 하는 부분은.. 블랙켓(아이디어 팩토리)의 '이브' 교육하는걸 좀 모방했고요....
사운드 마지막에 우연히 넣는법을 알아서 어느정도 게임 프레임은 나오는거 같습니다.

실제 NDS는 올리지 않았습니다..(넣어서도 안되구요)
자세한건 게임 시작의 about 쪽을 봐주시기 바랍니다.

조작은.. 거의 터치 스크린으로 했습니다.
패드 조작도 넣긴 했는데 많이 하진 않았습니다 ;_;

  1. 극악 2008.10.25 03:40

    gba스테이션에서 보고 왔습니다~ 들어와보니 어디서 많이 본 블로그가 -_-;; rss등록 해놓은;;
    대단하신데요~ 저도 NDS로 만들어보고 싶은데^^; 실력이... 완성하셨으니 축하드립니다!!!

  2. Macapen 2008.12.03 13:26

    안녕하세요? 구글링 하다가 방문해봤는데 NDS용 게임을 만드셨다길래 너무 궁금하네요
    어떤 방식으로 개발하신건지 제가 알 수 있을까요?

    • 장미전쟁 2008.12.03 14:37 신고

      기본적인것은 Devkit 과 .net 2005로 프로그래밍 했습니다.
      자세한건 요 위에 "NDS 프로그래밍" 테그를 따라가시면 됩니다.

첫째날 - 인스톨 및 컴파일링

(2008년 2월부터 튜토리얼의 내용을 기반으로 아래와 같이 작성해 보겠습니다. ^^)

첫째날에는 닌텐도 DS 프로그래밍을 하기 위한 환경 셋팅과정과 컴파일 방법에 대해 소개한다.

아래와 같이 두부분을 포함한다.

  • NDS 프로그래밍을 위한 환경 셋팅 방법 (devkitPro, PAlib, emulatior..)
  • 기본 프로그램인 helloWorld 컴파일 방법

bluelancer 23/01/2008 15:13


인스톨링 (NDS 프로그램밍을 위한 환경 셋팅 요약)

  • 미리 알아야 될 내용
    • 프로그래밍 능력 (C 언어, C++.. 등등)
  • NDS 프로그래밍에 필요한 환경 셋팅
    • 운영체제 : MS 윈도우즈 환경
    • Nintendo DS (Lite)
      • NDSL 홈브루 : Passthrough 디바이스
      • 예) R4 Card + SD Memory(문쉘)
    • NDS 애물레이터

NDS (Lite) 하드웨어 요약

bluelancer.dnip.net_wikiimage_nds.jpg

  • 휴대용 게임기 : NDS 2004년도에 미국, 일본 판매
  • 하드웨어
    • 입출력 장치
      • 두얼 스크린(DS: Dual Screen) : 크기가 256 X 192 화소인 2개의 칼러 LCD 스크린
        • 터치 스크린(아래 화면): 스타일러스나 손가락을 사용하여 터치 입력

bluelancer.dnip.net_wikiimage_stylus.jpg

  • 왼쪽부분: D-패드 (방향키), 작은 파워버튼
    • 오른쪽부분: A, B, X 와 Y 버튼, 작은 선택과 시작 버튼
    • 어깨 부분: L 과 R 버튼
    • 스테레오 스피커 : 가상 서라운드 사운드 제공 (윗화면 양쪽에 위치)
    • 마이크로폰 : 아래화면 위쪽 중간에 위치

bluelancer.dnip.net_wikiimage_ndsl.jpg

  • NDSNDS Lite 비교
    • 더 얇고, 밝고, 가볍게 NDS 다시 디자인
    • 2006년 1월 26일 공표
    • 2007년 12월 까지 전세계적으로 NDSL 4597만개 판매 가장많이히 팔린 비디오 콘솔은??
    • NDSL 무게: 218 g / 7.69 oz (DS 보다 21% 가벼움)
    • NDSL 크기: 133 mm × 73.9 mm × 21.5 mm (DS 보다 42% 줄어듬)
    • 베터리 수명: 3시간 풀 차지후
      • 밝기단계 가장 낮은 경우: 15-19시간 지속
      • 밝기단계 가장 밝은 경우: 5-8시간 지속
    • 화면 밝기 : 4단계 밝기 조절 가능
  • NDS (Lite) 시스템 스펙
    • CPU : 67 MHz ARM9 과 33 MHz ARM7
    • Media : GBA cartridges & Nintendo DS Game Cards
    • System storage : 4 MB RAM
    • Connectivity: Wi-Fi and LAN
      • Speed: 1 Mbps or 2Mbps
      • supports wireless IEEE 802.11 (Wi-Fi) standards (10–30 m, depending on conditions)
      • online with the Nintendo Wi-Fi Connection service

 NDS 하드웨어 앞면

 NDS 하드웨어 뒷면

  • Passthrough 디바이스
    • the pass through의 목적 : the Game Boy Advance (GBA) cartridge slot 혹은 Nintendo DS (NDS) card slot을 통해 NDS 하드웨어 상에서 프로그램을 구동할 수 있도록 하기 위해 필요
      • The Slot-1 port : DS Flash Cartridge

bluelancer.dnip.net_wikiimage_slot1.jpg

  • The Slot-2 port : GBA Flash Cartridge

bluelancer.dnip.net_wikiimage_slot2.jpg

       
 

인스톨링 (NDS 프로그램밍을 위한 환경 셋팅)

 

MS 윈도우즈 환경에서 인스톨

  • devkitARM : devkitPro updater
    • devkitPro가 깔린 같은 위치에 인스톨
    • .Net framework : PAlib를 사용하기 위해서는 .Net framework 인스톨 해야함
    • 현재까지의 PAlib는 devkitARM release 21을 지원하지 않아 release 20 으로 다운그레이드하여 사용하여야만 함
  • 애뮬레이터

bluelancer.dnip.net_wikiimage_no_gba.jpg

  • No$GBA : 거의 대부분의 NDS를 애뮬레이터 가능, 3차원 과 Wifi 애뮬레이터 포함
  • Dualis : 홈브루 프로그램 지원, No$GBA보다 정확하지 않음
  • iDeaS : 3차원 및 사운드 지원 가능
  • DeSmuMe : 가장 빠른 애뮬레이터, 확대/회전 및 사운드 지원하지 않음
 

비주얼 C++ 2005 혹은 Express를 이용한 NDS 프로그래밍(PAlib) 컴파일링

  • 환경 변수 추가
    • DKP_HOME : devkit이 인스톨된 위치 (예: C:\devkitPro)

bluelancer.dnip.net_wikiimage_enva.jpg

bluelancer.dnip.net_wikiimage_wizard1.jpg

  • 비주얼 VC++ 2005 Express 버전 : VC8_Express_Setup.js 파일 더블 클릭

bluelancer.dnip.net_wikiimage_wizard2.jpg

  • 비주얼 VC++ 2005 정식 버전 : VC8_Setup.js 파일 더블 클릭 
 

비주얼 C를 이용한 NDS 첫번째 프로젝트 생성 방법

  • PAlib 프로젝트는 긴이름이나 공백을 인식하지 못함
    • 비주얼 스튜디오 프로젝트 생성 위치를 공백이 없이 변경
      • 메뉴위치: Tools =⇒ Options =⇒ Projects and Solution =⇒ General 선택

bluelancer.dnip.net_wikiimage_option.jpg

  • 비주얼 C++ 프로젝트 생성
    • 메뉴위치: File =⇒ New =⇒ New Project 선택

bluelancer.dnip.net_wikiimage_nproject.jpg

  • 위저드에 의해 생성된 파일들은 다음과 같음
    • logo.bmp → DS 로더에서 보여지는 응용프로그램의 로고
    • logo_wifi.bmp → WiFi를 사용할 때 보여지는 로고
    • main.cpp → 메인 프로그램 파일 (NDS 프로그래밍을 하기위해 작성하는 코드 부분)
    • Makefile → 비주얼 스튜디오를 최적화하기 위한 PALib makefile
    • ReadMe.txt → 프로그램 정보

bluelancer.dnip.net_wikiimage_files.jpg

  • NDS 관련 헤더추가
    • Tools → Options → Project & Solutions → VC++ Directories 메뉴 선택 후
    • Include 파일 메뉴 선택
      • <PALib 인스톨 폴더>\include\nds 추가
      • <PALib 인스톨 폴더>\libnds\include 추가
  • 프로젝트 빌드 (단축키 F7)

bluelancer.dnip.net_wikiimage_build.jpg

 

컴파일시 에러가 발생하는 경우 대처 방법

  • 컴파일 에러 발생 1: 형변환 에러가 날 경우

bluelancer.dnip.net_wikiimage_conversion.jpg

  • devkitPro\PAlib\include\nds\arm9\PA_Sound.h 파일에서 발생 =⇒ (u32*) 아래와 같이 추가

bluelancer.dnip.net_wikiimage_err1-1.jpg

bluelancer.dnip.net_wikiimage_err1-2.jpg

  • 컴파일 에러 발생 2: 파일 오픈 에러가 날 경우

bluelancer.dnip.net_wikiimage_open.jpg

  • C:\devkitPro\PAlib\lib\arm7\arm7.bin 파일 오픈 에러 발생
    • arm7.bin 파일을 현재 프로젝트 폴더에 추가

bluelancer.dnip.net_wikiimage_err2.jpg

 

NDS 애뮬레이터 비주얼 스튜디오에서 간편하게 사용하는 방법

  • 비주얼 스튜디오의 외부도구로 애뮬레이터 등록
    • Tools =⇒ External Tools 메뉴 선택
    • 새로운 외부도구로 추가함
      • 제목: No$GBA
      • 명령: NO$GBA.exe 실행파일 선택
      • 인수: (TargetDir)\$(TargetName).nds
    • 초기디렉토리: $(TargetDir)

bluelancer.dnip.net_wikiimage_tool1.jpg

  • 키보드 단축키 만들기
    • Tools =⇒ Options =⇒ Environment =⇒ Keyboard 선택

bluelancer.dnip.net_wikiimage_assign.jpg

  • 도구.외부명령어9 선택 후 Shift+F10 으로 할당

bluelancer.dnip.net_wikiimage_shortcut.jpg 

첫번째 NDS 프로그래밍 (HelloWorld)

  • 템플릿 파일의 메인 소스 코드
// PALib Template Application
// Includes
#include <PA9.h>       // Include for PA_Lib
int main()
{
	PA_Init();    // Initializes PA_Lib
	PA_InitVBL(); // Initializes a standard VBL

	PA_InitText(1, 2);
	PA_OutputSimpleText(1, 1, 2, "Hello World!");

	// Infinite loop to keep the program running
	while (1)
	{
		PA_WaitForVBL();
	}
	return 0;
}

코드 설명

  #include <PA9.h>       // Include for PA_Lib
  • PAlib 라이브러리 헤더를 포함시킴
  int main(int argc, char ** argv)
  • 프로그램 메인 함수
	PA_Init();    // Initializes PA_Lib
	PA_InitVBL(); // Initializes a standard VBL
  • PA_Init() =⇒ PL_Lib 라이브러리 초기화 수행하는 명령어
    • PA_InitVBL() =⇒ 표준 VBL를 초기화를 하는 명령어
      • VBL(Verticle Blanking Interrupt)
    • 초당 60 프레임 (fps: frame per second) 으로 화면을 뿌려주는 작업을 동기화하여 초기화함
      • VBL을 초기화하지 않으면 프로그램이 너무 빨리 수행되가나 전혀 수행되지 않을 수 있음
        • 예) 초당 100000 프레임으로 수행되어 플레이를 할 수 없을 수도 있음
	PA_InitText(1, 2);
	PA_OutputSimpleText(1, 1, 2, "Hello World!");
  • PA_InitText() =⇒ 화면 1(위쪽 화면)에 배경버퍼 2를 사용하여 텍스트 출력을 하도록 초기화
    • 첫번째 인수: 텍스트를 출력할 화면 설정(0 은 아래화면, 1은 윗쪽 화면)
  • 두번째 인수: 텍스트를 쓸 배경 레이어 설정 (4개의 배경레이어 제공)
    • 0은 맨윗쪽 배경레이어, 1은 그다음 레이어, ... , 3은 맨 아래 배경 레이어
  • PA_OutputSimpleText(1, 1, 2, “Hello World!”) =⇒ “Hello World!” 문자열을 윗족화면에 출력
    • 첫번째 인수: 출력 화면 선택 (0-1)
    • 두번째 인수: 문자열을 의 위치 수평(X) 지정 (0 부터 31 타일)
      • 문자의 위치는 8×8 픽셀로 구성된 타일 단위로 지정
    • 세번째 인수: 문자열을 의 위치 수직(Y) 지정 (0 부터 23 타일)
    • 네번째 인수: 출력할 문자열 지정
	// Infinite loop to keep the program running
	while (1)
	{
		PA_WaitForVBL();
	}
  • PA_WaitForVBL() =⇒ 무한 루프를 화면 변환률을 60 fps로 동기화하는 명령문

관련 자료

국내사이트

네이버 카페

================================================================================================

출처 : http://www.palib.info/wiki/doku.php?id=day1ko
지금 졸업작품이... wipi 모바일.. 이쪽 사정상 제안서를 쓰지도 못하게 하여 상용화 기회마져 안주더군요.
그래서 급히 nds devkit 플밍 전향하려고 자료를 찾다가 좋은곳이 있어 올립니다.

ps. 컴파일러 에러가 나는곳이 위의 튜토리얼과 약간 다르게 나와 당황스러웠습니다.
저의 경우.. PA_Draw.h  에서
extern ininle u16 PA_GetBmpWitdh(void *bmpdata)
{
    BMP_Headers *Bmpinfo = (BMP_Headers*)(bmpdata+14);
    return Bmpinfo->Witdh;
}

부분에서 에러가 나길래
함수의 extern ininle u16 PA_GetBmpWitdh(void *bmpdata) 부분을
extern ininle u16 PA_GetBmpWitdh(BMP_Headers *bmpdata)
수정하면서 해결하였습니다.

+ Recent posts