'개발'에 해당되는 글 5건

  1. 2008/07/20 귀차니스트 음.. 일단 보고 있는데..
  2. 2008/06/04 귀차니스트 DevkitPro에 Freetype 라이브러리 설정하는 방법 (6)
  3. 2008/05/20 귀차니스트 라이브러리 지원이 빵빵하군요.
  4. 2008/05/18 귀차니스트 PSP 화면 출력 부분에...
  5. 2008/05/06 귀차니스트 PSP 개발에 대한 자료.. (2)

음.. 일단 보고 있는데..

Small Talk 2008/07/20 23:54 귀차니스트

  보호모드 진입을 위해서 IA32&64 문서를 보고 있군요. 그래도 대충 얻은게 여러가지가 있군요. 사실 보호모드 진입을 위해서 너무 많은 것이 필요하리라 생각하였는데, 예상외로 적은게 필요하더군요. 더불어 x64인 롱모드로 진입을 하려면 32비트 보호모드를 진입한 뒤, 페이징을 비활성화한 뒤, PAE를 활성화 하는 등의 작업을 마련하고 다시 페이징을 활성화 하면 되는 것을 알겠더군요. 물론 그게 실제 코드로 진행 되었을 때 쉬우리라는 보장은 없습니다^^;
  일단 GDT, LDT, IDT에 대해서는 그래도 어느정도 파악이 된 것 같습니다. 몇 가지 의심되는 것이 확인 된다면 바로 코드를 작성할 수 있겠군요. 그나저나 별도의 컴파일이 아닌 한 번의 컴파일로 코드 및 부트로더의 코드 생성을 원하는 데, nasm에서 masm으로 잠시 코드를 변환하여 링크를 걸어봤는데, 뭔지 모르게 약간 안 맞아들어가는 부분이 있군요. 그래도 어떻게 방법을 찾으면 있을것 같기는 합니다. 개인적으론 VS.net 이 IDE중에선 가장 편하기 때문에 VS.net으로 해보려고 하는데, 쩝쩝 아직 잘 되지 않습니다.
  자료를 더 살펴본 뒤, 진행된 결과를 올려보도록 하겠습니다^^.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/07/20 23:54 2008/07/20 23:54
TAG ,

댓글을 달아 주세요

  결국 어제에 이어 해결책을 찾기는 찾았습니다. 보통 PSP 프로그램을 보니 많은 프로그램이 자체  Raw폰트를 생성하여 한글이나 한문을 출력하더군요. 제가 첫 Freetype에 대한 글에도 적었다시피 그런예가 아닌 ttf 파일을 읽어 출력하는 방법으로 프로그램을 만들고 싶어했습니다.
  그리하여 어제 부터 제대로 시작한 삽질이 결국 끝을 보긴 봤군요. 아래는 설치방법입니다.

1. DevkitPro 설치

  http://kkamagui.tistory.com/437에 올라온 내용대로 DevkitPro를 설치해야 합니다. 왜냐하면 일단 개발툴이 있어야 하잖아요^^. 제가 볼 때는 PSP-SDK 같은것을 따로 개별적으로 설치하면서 삽질하느니 이 통합설치패키지를 설치하면서 시간을 줄이는 것이 더욱 좋을것 같습니다.

2. msysDTK-1.0.1.exe 설치

http://sourceforge.net/project/showfiles.php?group_id=2435에서 msysDTK-1.0.1.exe를 받아 설치합니다. 설치는 devkitpro를 c:\devkitpro로 설치하였다면 c:\devkitpro\msys 로 설치하시면 됩니다. 파일은 + 버튼을 눌러보면 숨겨진 파일들이 있을텐데 자세히 찾아보시면 있을 겁니다.

3. autoconf-2.61-MSYS-1.0.11-1.tar.bz2 설치

  http://sourceforge.net/project/showfiles.php?group_id=2435에서 autoconf-2.61-MSYS-1.0.11-1.tar.bz2를 받아 설치합니다. 파일을 받은 다음 bin, share 폴더 들이 존재하도록 하여 그 파일들만 msys 폴더 아래의 bin, share 폴더와 병합되도록 하시면 됩니다. 이 압축해제는 tar.bz2 파일에 모두 해당됩니다.

4. m4-1.4.7-MSYS.tar.bz2 설치

  http://sourceforge.net/project/showfiles.php?group_id=2435에서 m4-1.4.7-MSYS.tar.bz2를 받아 설치합니다.

5. binutils-2.18.50-20080109-2.tar.gz 설치

  http://sourceforge.net/project/showfiles.php?group_id=2435에서 binutils-2.18.50-20080109-2.tar.gz를 받아 설치합니다.

6. SVN 설치

http://synfig.org/Mingw_installation#Subversion에서 http://subversion.tigris.org/files/documents/15/36797/svn-1.4.3-setup.exe 파일을 받아 설치합니다. 포팅된 freetype2 라이브러리를 받기 위해선 위 툴이 필요합니다. 혹 기존 svn 프로그램이 있다면 생략해도 됩니다.

7. Freetype2 라이브러리 받기

  msys 프로그램을 실행합니다. msys 폴더 아래에 있습니다. 실행한 다음 아래의 명령을 입력합니다.
  svn co svn://svn.ps2dev.org/psp/trunk/freetype

8. Compile 하기

  위 명령으로 freetype 라이브러리를 받으면 freetype 폴더가 생성되고 그 안에 모든 파일을 받습니다. freetype 폴더 안으로 들어간 다음, 아래의 명령을 실행합니다.
  sh autogen.sh
  LDFLAGS="-L$(psp-config --pspsdk-path)/lib -lc -lpspuser" \
  ./configure --host psp --prefix=$(psp-config --psp-prefix)
  make
  make install

꼭 \ 를 붙여주셔야 합니다. 왜냐하면 libc 에 해당되는 의존성 문제가 해결되야 하기 때문에 그렇습니다.

9. Freetype 라이브러리 헤더 설정

  기존 설치경로로 생각을 한다면, C:\devkitPro\msys\home\FilePointer\freetype\include 에 존재하는 freetype 폴더와 ft2build.h 를 C:\devkitPro\devkitPSP\psp\sdk\include 로 복사합니다. 이렇게 되면 make 시 ft2build.h 를 자동 인클루드 하게 됩니다.

10. 예제 컴파일

FontLoader 샘플 컴파일, 0.1 버젼 혹은 0.2 버젼을 받은 다음 Sample\GU 폴더에 들어가 make 파일을 실행합니다. 그런 다음 PSP에 복사하고 ttf 파일도 복사하고 테스트를 해봅니다^^.


  약간 복잡하군요^^. 에구 의존성 문제 해결한다고 삽질을 좀 많이 했군요. 어제 새벽 2시쯤엔 거의 정신이 몽롱해지더랍니다. 그래도 좋은 결과가 나와서 다행이네요. 더 많은 삽질도 없구요. 그럼 모두 즐거운 개발되시길 바랍니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/04 22:35 2008/06/04 22:35

댓글을 달아 주세요

  1. kkamagui 2008/06/05 08:51  댓글주소  수정/삭제  댓글쓰기

    와우~ 드디어 해결했구나 @0@)/~
    훌륭하다~ ㅎㅎ 고생했으~ ㅋㅋ

  2. 베리베리 2008/07/27 14:07  댓글주소  수정/삭제  댓글쓰기

    감사합니다^^

  3. HwanSangHyang 2010/10/30 00:49  댓글주소  수정/삭제  댓글쓰기

    svn co svn://svn.ps2dev.org/psp/trunk/freetype
    sh: svn: command not found

    이렇게 뜨네요;;
    해결법좀 알려주세요;;

    we1ew@naver.com

    • 귀차니스트 2010/11/04 18:06  댓글주소  수정/삭제

      sh: svn command not found

      이 에러 문장이 의미하는 바가 svn 명령어를 찾을 수 없다 이런 의미 이니..
      svn을 먼저 설치하셔야 합니다^^

  어제 오늘 PSP로 만지작 만지작 거리면서 테스트 프로그램을 몇 개 만들어봤습니다. 그렇게 시간이 엄청 많은 것은 아니었고 어느정도 테스트를 해보았는데, 일단 텍스트 출력하는 것을 파일로 읽어서 출력하는 것, 선 그리는 것을 gu라이브러리가 아닌 메모리 직접 액세스로 그리는 방법을 구현해봤습니다.
  한 가지 궁금한 것은 보통 설명에서 sceIOpen 같은(?) 함수를 사용하여 파일을 조작하더군요. 그런데 혹시나 싶어 기본 라이브러리로 조작이 가능한지 궁금하여 테스트 해보았습니다.

printf.cpp (Language : cpp)
  1. int main::Run()
  2. {
  3.     char TempData[500] = {0,};
  4.     //FILE *fp = fopen("a.txt", "rb");
  5.     //fgets(TempData, 500, fp);
  6.     //fclose(fp);
  7.     std::ifstream File;
  8.     File.open( "a.txt" );
  9.     File.getline( TempData, 500 );
  10.     File.close();
  11.     pspDebugScreenPrintf(TempData);
  12.     sceKernelSleepThread();
  13.     return 0;
  14. }

  위와 같은 코드에서 적었듯이 FILE* 형태인 파일포인터를 이용한 방법도 제대로 출력이 되었고, C++ 에서 기본 제공하는 std::fstream으로도 파일리딩이 제대로 가능하더군요. 그림은 다시 테스트 중이라 아직 원하는 결과물을 보지 못했습니다.

abdefghijklmnopqrstuvwxyz


  라고 a.txt 에다 내용을 저장했습니다. 그럼 대충 추측이 가능하시죠^^; 뭐 제가 더 이상 말씀 드릴게 없을 것 같습니다.



  결과는 위와 같습니다. 이 것참 카메라가 없어서 폰카로 찍다보니 품질에 좌절감이 드는군요. 하나 살까 생각이 갑자기 드네요. 지름은 지름을 부른다는 말이 맞습니다.
  그런데 std::cout 에 대해서는 제대로 작동이 되지 않는 군요. 하긴 별로 사용하지 않으므로 그렇게 지원되냐 안되냐에 따라서 큰 문제가 되지는 않아 별 상관은 없습니다. 그래도 있으면 좋은데 없으니 필요할땐 불편하리라 생각합니다.



  위 그림은 예전 선 그리기 소스에서 작성했던 그림(?)입니다. 일단 더 차츰차츰 테스트 해서 필요한게 다 정의 되면 바로 프로그램 원하는 것으로 개발 들어가야 겠습니다^^; 그럼 오늘도 좋은 하루 되세요.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/05/20 23:41 2008/05/20 23:41

댓글을 달아 주세요

PSP 화면 출력 부분에...

PSP/PSP-Programming 2008/05/18 23:34 귀차니스트

  수, 목요일 야근을 조금 한 다음 체력회복을 위해서 약간 쉬었다가 주말 일요일 때 시간이 그래도 남고, 오랫동안 포스팅을 하지 않은 것 같아서 출력 부분에 대해서 손을 대봤습니다. 대충 다른 분께서 만드신 출력소스를 보니 0x04000000를 기본 베이스로 하여 메모리에 직접 데이터를 써넣는 방식이더군요.  그래서 제 소스에 대충 적용을 해보려고 핵심만 빼와서 코딩을 적용시킨 뒤, 컴파일 하고 실행을 하니 왠 걸 출력이 안됩니다 ㅜ_ㅜ
  대체 왜 그럴지 아직 감이 잡히는 부분이 없군요. 아예 출력 부분을 손을 대는 순간 메인 쓰레드가 뻗어버리는 것 같습니다. 프로그램이 XMB 메뉴로 종료되지 않는 것으로 보아선 그렇다고 생각할 수 밖에 없겠더군요. 오랫동안 실행 시키는 것 자체는 뭔가 잘못 건드려 고장낼 것만 같아 금방금방 끄게 되더군요^^;

main.cpp (Language : cpp)
  1. #define SCR_HEIGHT (512)
  2. int main::Run()
  3. {
  4.     volatile static u32* g_vram_base = (u32 *) 0x04000000;
  5.     int x = 0, y = 0;
  6.     int Color = 0xFF000000;
  7.     while(!m_IsExit){
  8.         *( g_vram_base + ( y * SCR_HEIGHT ) + x ) = Color++;
  9.         if( x == 512 )  {
  10.             x = 0;
  11.             y++;
  12.         }
  13.         if( y == 50)    {
  14.             y = 0;
  15.         }
  16.     }
  17.     return 0;
  18. }

수정버젼.cpp (Language : cpp)
  1. #define SCR_HEIGHT (512)
  2. volatile static u32* g_vram_base = (u32 *) 0x04000000;
  3. int main::Run()
  4. {
  5.     int x = 0, y = 0;
  6.     int Color = 0xFF000000;
  7.     while(!m_IsExit){
  8.         *( g_vram_base + ( y * SCR_HEIGHT ) + x++ ) = Color++;
  9.         if( x == 512 )  {
  10.             x = 0;
  11.             y++;
  12.         }
  13.         if( y == 50)    {
  14.             y = 0;
  15.         }
  16.     }
  17.     return 0;
  18. }

  혹시 문제점에 대해서 잘 아시는 분 계실까요?? 아는 형에게 물어보니 volatile 을 써보라고 해서 써보긴 했습니다. 아무래도 레지스터가 아닌 메모리에서만 데이터가 존재해야 하니 Memory-Mapped 방식이면 그래야 하겠다는 생긱이 무척 많이 들더군요. 그런데 추가를 해도 마찬가지였습니다.
  이 것참 난감합니다. 부분만 빼내와서 그럴까요?? 아니면 0xFF000000부분 에서 Alpha 값이 문제가 되는 것 일까요? 오늘은 자기 전까지 삽집을 해봐야 겠군요^^;
  추가 - 에구.. 제가 아직 회복이 덜 됐나 봅니다. 이거 코드를 잘 못 써놓고 왜 안되지 하고 있었군요. ㅠㅠ 이런 기초적인 실수를 하다니 민망합니다ㅠㅠ. 그런데 프로그램이 종료 안되는 것은 아직 뭔지 잘 모르겠군요^^;

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/05/18 23:34 2008/05/18 23:34
TAG ,

댓글을 달아 주세요

PSP 개발에 대한 자료..

PSP/PSP-Programming 2008/05/06 22:21 귀차니스트

  보통 PSP Programming에 대한 자료는 국내에 그렇게 많지 않다고 알려져 있는데, 알고보니 우리나라에서도 꽤나 쓸만한 자료가 올라와있었습니다. 더구나 급히 필요한 한글로 된 내용이 꽤 있더군요. 물론 영문도 있었지만 말이지요.
  일단 사이트는 다음과 같은 곳입니다.


  여기 사이트를 보는데 꽤나 괜찮다고 생각한 자료가 있었습니다. PSPSDK에 있는 샘플만 보다가 안그래도 Font 샘플 때문에 꽤나 시간을 잡아먹고 있었는데, 설명을 보고 있으니 어느정도 쉽게 이해가 가는 군요. 일단 아날로그로 선을 그리는 예제를 한 번 만들어 보아야 할 것 같습니다. Lines 샘플 + Controller 샘플을 조합하면 어느정도 쉽게 가능할 것 같습니다.

  추가 -   몇 분정도 소스 조합을 해보니 가능하군요. 그런데 VRAM 을 얻는 것을 보아하니. 에구 이거
           VRAM 관리 클래스를 만들어야 할 것 같습니다. 4메가 밖에 안되는데, 얻어오려면 Best fit, First Fit
           Worst Fit 등을 구현해야 할 것 같군요. 소스는 역시 Copy&Paste 조합이다보니..^^; 그렇군요.
             그나저나 아날로그 스틱으론 그리고. L 트리거로 화면을 지웁니다. 더블 버퍼링은 아직^^;


  나중에 폰트는 FreeType2 라이브러리를 이용하여 *.ttf, *.otf 파일들을 출력해보고 싶은데 아직은 살펴봐야 할게 많은 것 같습니다. 일단 오늘도 달려봐야 겠습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/05/06 22:21 2008/05/06 22:21
TAG ,

댓글을 달아 주세요

  1. 창현아빠 2008/05/11 21:48  댓글주소  수정/삭제  댓글쓰기

    ^^* (개발시작 <- 아뒤 쓰던 사람입니다. ㅋ)
    역시 전문적으로 하시는 분같이요 ^^
    잠시 아무것도 못하고 .. 일주일이 가버렸네요 ..
    시간내기도 어렵고 .. c는 잘 모르고 ㅋㅋ

    좋은 자료 잘 보겠습니다. ^^ 화이링!

    님 같은 분이 있어서 저희 같은 초보자들은 힘이 나네요 ^^

    • 귀차니스트 2008/05/12 23:33  댓글주소  수정/삭제

      그렇군요^^;
      감사합니다. 저도 잘 모르지만 이렇게 저렇게 해보고 있는게 도움이 되신다니 다행이군요.
      만들고 싶은 것을 만들 때 까지 열심히 해봐요^^;