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

(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)
수정하면서 해결하였습니다.

윈도우에서 DevkitPSP 컴파일 방법

#1. PSP 개발툴 DevkitPSP 를 설치합니다.

http://www.devkitpro.org/ 여기서 최신버전을 받다 설치합니다.

#2. cygwin 을 받아서 설치합니다.

http://www.cygwin.com/  여기서 최신 버전을 받아 설치합니다.

위 두가지 모두 설치하면 아마 재부팅할꺼고..
(미리 cygwin 이 설치되어 있으신분은.. 재부팅안하겠죠)
재부팅하고 나면 바탕화면에 cygwin 아이콘이 생깁니다..

안생기시면.. C드라이브의 cygwin 디렉토리에 bash 쉘 로 들어가는

배치 파일이 있습니다.

그 파일을 에디터로 열어서..
set path=%path%;C:\devkitPro\devkitPSP;
set PSPSDK=C:\devkitPro\devkitPSP\psp\sdk;

bash --login -i


이렇게 수정하면 됩니다.

이제 cygwin bash 쉘로 들어가서

원하는 샘플을 make 하면 됩니다. ^^

C:\devkitPro\devkitPSP\psp\sdk\samples

이디렉토리에 psp 관련 예제가 있으니 개발할때 참조 하시면 됩니다..



출처: http://saint12.nafly.net/tts/249 

'콘솔 게임 프로그래밍 > PSP' 카테고리의 다른 글

와플 for PSP  (0) 2008.09.21
onscripter for PSP  (0) 2008.09.20
Devkit으로 PSP 컴파일하기  (0) 2008.06.12

소개

 NDSL과 NDS 개발 관련 자료 및 ARM에 대한 내용을 모아 놓은 페이지다.  NDS에 자작한 커널을 올려서 WIFI를 통해 웹서버를 구축하는 것이 목표이다.

 

  • 현재( 2007/09/03 04:03:44 ) 시분할 멀티 태스킹 커널 제작 완료. 04 NDS 커널(Kernel) 만들기 참고
  • 현재( 2007/09/28 01:39:45 ) NDS 노트패드 터치 스크린 문제 수정 완료. 아래 03 Advanced KKAMAGUI Notepad 참고
  • 현재( 2007/10/03 17:50:29 ) libfat에 폴더 및 파일 명이 UNICODE로 표시되지 않는 문제 발견

    • 고민 후에 조치 방안 결정( 아직은 미정 ) 

 

 

자작 홈브루(Homebrew) 및 라이브러리(Library)

 

 

개발 툴

 

 

NDS 개발 관련 문서

 

 

 

NDS 사용 관련 문서 및 툴

  • BatchDPG12KNew.zip : BatchDPG 1.2K 버전에 1.3 Beta 버전의 Library를 덮어 씌운것

 

 

 

 

ARM 개발 관련 문서

 

 

 

롬(ROM) 파일 분석 및 생성 과정 분석

 

 

참고 문서

 

 

 

참고 사이트

 

 

 

ToDo

  • Timer를 통한 Task Switching 과 User Call에 대한 Task Switching 처리 넣기 
    • User Call에 대한 Task Swiching은 Thumb 모드로 돌아올 수 있도록 Return Address + 1 만 해주면 될듯 한데... 나중에 테스트 해보자.
    • 일단 먼저 User Call 에서 Next Task를 복원부터 해보자. 저장은 잘 되어있으니 복원이 성공한다면 끝난 것이다.
  • DTCM, ITCM에 대한 정보 CP15 Cache에 대해서 보기
  • Shared RAM 사용법 넣기
  • libfat 유니코드 지원하도록 수정하기 

 

출처 : http://kkamagui.springnote.com/pages/339826
저기로 들어가서 봐야할거 같음.

 

이 포스트는 저의 네이버블로그에 있던 내용을 옮겨놓은 것입니다.
이동시 출처는 http://ratedr.tistory.com 으로 밝혀주시기 바랍니다.


이번 홈브류는 beup 0.3e입니다, 제목에 적어두었듯 공유기에 wifi접속해서
NDS로 'MSN메신저'를 사용할수 있게 해줍니다.
이건 굉장히 실용적인 홈브류입니다.
집에서는 물론이고, 공유기만 있다면 어디서든 (심지어 길거리에서도)
MSN을 할수 있습니다
....만 OTL
왜 OTL인지는 아래로 따라오세요~!

홈브류이름 :beup live 0.3e ver
 
 
필요한것들 : NDS(or NDSL), 홈브류 구동이 가능한 개발자용 기기,
                  무선인터넷 공유기
 
사용법       : 일단 당연히 압축을 풀고, 파일을 넣어야겠죠? 0.3e버전은
                  dldi패치가 필요하지 않습니다.(아마도...제 기억으로는)
                  아무 폴더나 파일을 옮기셨으면, 이제 사진을 보고 따라오세요.

다운로드 :

↑ CLICK HERE!



사용자 삽입 이미지
먼저 1이라 적어놓은 SSID를 터치하여 접속을 원하는 네트워크를 선택해주세요.
2라고 적힌 부분에 그 공유기가 할당해줄수 있는  IP주소를 입력하시면 됩니다,
IP주소만 제대로 입력하시면 게이트웨이나 서브넷 마스크는 자동으로 잡힙니다.
설정이 제대로 되었다면 3인 Use Custom을 눌러주세요.

사용자 삽입 이미지
설정이 올바르게 되었다면 위의 화면이 나올것입니다.
위화면으로 접속을 못한다면 이전 설정을 다시 한번 확인해주시기 바랍니다,
일단 접속이 되셨다면 offline을 원하는 상태로 고쳐주시고, 접속하시면 끝입니다.


안타깝게도 한글은 지원하지 않습니다, 대화를 원하는 상대를 터치하시면 대화창이 생깁니다.


아쉽지만 잉크대화로 만족하시길...
양쪽다 NDS로 접속했다면 형태야 어찌되었든 WIFI 픽토챗이 됩니다.

기타정보    : - PC를 켜지 않은 상태에서 접속이 가능한게 최대장점입니다만...
                    IP주소는 수동으로 입력해야 합니다.
                    (자동으로 된다는 분도 있더군요, 확인해보시기 바랍니다)

[퍼가실때는 출처를 밝혀주시기 바랍니다]
http://ratedr.tistory.com

+ Recent posts