그림책 사용자가 점점 늘어 가는 듯 합니다. 일단 버그리포팅이 많아 지는군요. 어쨌건 앞으로의 개발 일정에 대한 얘기를 좀 밝힐까 합니다.
1. 그림 출력 부분과 그림 로딩 부분의 쓰레드 분리 - PSP 쓰레드를 사용하는 방안. 뮤텍스를 지원하지 안음. 세마포를 지원함. 프로그램 시작과 동시에 쓰레드를 만들고 종료시까지 유지. 시스템 부하가 적음. 개발이 좀 더 복잡함. - SDL 쓰레드를 사용하는 방안. 쓰레드를 필요할때 그때 그때 생성하고 종료함. 그림파일의 이동이 잦을 시 PSP 쓰레드보다 느림(pspcomics가 SDL 쓰레드를 사용함). 개발이 용이함. 두가지 방안 중에서 어느것으로 할지 아직은 미정.
2. 그림 출력화면에 시계, 배터리 정보, 페이지 정보를 출력. - 조금 곤란한 문제에 봉착함. 그림파일 출력 중에 글자를 출력하려면 SDL_ttf를 사용해야 하는데 속도가 느림. 일반 텍스트 출력은 배경이 검게 변함. - SDL_ttf를 사용하게 되면 파일 탐색 화면도 SDL_ttf 로 통일하는게 좋을 듯. 이 문제 역시 현재 미정.
3. FAT16 문제. FAT16인듯 한 사용자의 리포팅이 다수. MicroSD 외의 미디어는 FAT32가 가능하므로 FAT32를 사용하도록 홍보(?). 추후 FAT16도 지원할 것인지 결정 할 계획
4. mp3 플레이어 추가. 현재 미정. IRShell을 사용하는 사용자가 생각보다 적은 듯. 일단 본인도 불편해서 미사용. 긍정적으로 고려 중.
5. 이미지 확대 축소. 긍적적으로 고려 중.
6. 본인의 사용 환경과 다른 경우에 대한 디버깅이 매우 어려움. 버그가 재현이 되어야 디버깅이 쉽게 이루어지지만 본인의 PSP에서는 잘되는 경우 순수하게 감으로 디버깅 해야함. 일단은 그때그때 해결해 나갈 계획.
7. UTF-8 다국어 문자 출력 라이브러리 개발 계획. 현재 한글 라이브러리는 루리웹에 공개된 코드. EUCKR만 지원함. 한글자체의 숫자도 부족하고 일본어, 한문 출력은 불가능.
8. Text 모드에서 선그리기, 박스그리기, 메세지박스 등의 기본적인 드로잉 라이브러리 개발 계획 중. 현재로선 그저 막연히...
- 덧 붙임 - 정리하고 보니 할게 너무 많군요. 대충 봐도 하나씩 개발하다보면 몇 달은 걸릴 듯 합니다. 언젠간 완성 되겠죠. 그나저나 저와 다른 환경에서 발생하는 버그의 디버깅이 너무 어렵군요.
그림책 0.95-4 Alpha 릴리즈 했습니다. 배포판 파일 형식을 tar.gz 파일이 불편하여 zip 으로 바꾸었습니다.
* 주요기능 - 한글 정상 출력 (FAT32만 지원) - zip 으로 압축 된 그림 보기 (일반 이미지 파일은 지원하지 않습니다) - 마지막으로 디스플레이된 위치를 기억했다가 재 실행시 저장된 위치부터 보여주기 - 파일 탐색 기능 - 다음 페이지 프리캐싱 기능 (apb.ini 파일을 직접 편집하셔야 합니다) - 그림 이동 속도 조절 기능 (apb.ini 파일을 직접 편집하셔야 합니다) - 사용자 버튼 설정 (apb.ini 파일을 직접 편집하셔야 합니다) - 그림보기에서 1페이지 앞뒤로, 10페이지 앞뒤로, 100페이지 앞뒤로 이동 가능 - 파일선택에서 1파일 아래위로, 10파일 아래위로 이동 가능
* 사용키는 개인 설정에 따라 다릅니다. ************ 기본 설정 ************* * 이미지 탐색 중 SELECT : 파일 탐색으로 이동 Left / Right : 이전/다음 이동 Up / Down : 이전 10장/다음 10장 이동 [] / O : 이전/다음 이동
* 파일 탐색 중 Up / Down : 위/아래 이동 O : 파일선택 ************ 기본 설정 *************
* done - 사용자 버튼 설정 (apb.ini 파일을 직접 편집하셔야 합니다) - 파일 탐색시 zip 파일만 리스트에 표시 - 파일시스템 또는 파일오픈 관련 에러메세지를 정확히 출력하도록 수정 - 짧은 파일이름에서 확장자가 잘리던 문제 수정 - % 문자가 출력되지 않던 문제 수정
* to do - 그림보기에서 페이지 카운트 (ex 128/1024) (2순위) - 그림보기에서 시계, 배터리 정보 (3순위) - 그림을 보여주는 기능과 그림을 메모리로 로드하는 기능을 각 쓰레드로 분리 할 계획 - 메모리스틱을 읽는 중 그림 이동이 되지 않는 불편함을 개선할 방침 (1순위) - mp3 플레이 지원 (솔직히 할까 말까 고민중 - IRshell로 멀티태스킹이 된다고 하던데...)
* 개발자는 실행에 대한 책임은 일체 없습니다. 신중히 판단하시고 사용하시길 바랍니다. * 기본적으로 3.71에서 개발하고 테스트 하고 있습니다만 다른 버전도 가능하리라 봅니다. * 소스와 바이너리가 같이 있습니다. * 메모리스틱의 PSP/GAME/APB 디렉토리에서 실행해야합니다. * 소스코드의 라이센스는 GPL을 따릅니다.
- 덧붙임 -
프로그램 파일을 직접 자신의 다른 블로그 또는 다른 사이트에 업로드하여 배포하시는 것은 자제 하시기 바랍니다. 링크를 이용해 주시길 바라며 파일이 아닌 현재 블로그로 링크하시기 바랍니다.
- 다시 덧 붙임 - 같은 이름으로 파일을 올리니까 자동으로 다운로드 링크가 안나오네요. 거참 ... 번번히 실수하고 있습니다.
그림책 0.95-1 Alpha 릴리즈 했습니다. 변화된 기능은 버튼을 각자 정의하여 쓸 수 있다는 겁니다. 꼴랑 버튼 몇개 안되지만 개인마다 취향이 다르므로 넣어봤습니다. 참고로 0.95 대 버전에서 간단한 기능을 몇개 구현하고 0.96으로 넘어가려고 합니다.
* 주요기능 - 한글 정상 출력 (FAT32만 지원) - zip 으로 압축 된 그림 보기 (일반 이미지 파일은 지원하지 않습니다) - 마지막으로 디스플레이된 위치를 기억했다가 재 실행시 저장된 위치부터 보여주기 - 파일 탐색 기능 - 다음 페이지 프리캐싱 기능 (apb.ini 파일을 직접 편집하셔야 합니다) - 그림 이동 속도 조절 기능 (apb.ini 파일을 직접 편집하셔야 합니다) - 그림보기에서 1페이지 앞뒤로, 10페이지 앞뒤로, 100페이지 앞뒤로 이동 가능 - 파일선택에서 1파일 아래위로, 10파일 아래위로 이동 가능
* 사용키는 개인 설정에 따라 다릅니다.
* done - 사용자 버튼 설정 (apb.ini 파일을 직접 편집하셔야 합니다)
* to do - 그림보기에서 페이지 카운트 (ex 128/1024) (2순위) - 그림보기에서 시계, 배터리 정보 (3순위) - 그림을 보여주는 기능과 그림을 메모리로 로드하는 기능을 각 쓰레드로 분리 할 계획 - 메모리스틱을 읽는 중 그림 이동이 되지 않는 불편함을 개선할 방침 (1순위) - mp3 플레이 지원 (솔직히 할까 말까 고민중 - IRshell로 멀티태스킹이 된다고 하던데...)
* 개발자는 실행에 대한 책임은 일체 없습니다. 신중히 판단하시고 사용하시길 바랍니다. * 기본적으로 3.71에서 개발하고 테스트 하고 있습니다만 다른 버전도 가능하리라 봅니다. * 소스와 바이너리가 같이 있습니다. * 메모리스틱의 PSP/GAME/APB 디렉토리에서 실행해야합니다. * 소스코드의 라이센스는 GPL을 따릅니다.
그림책 0.94a 가 나왔습니다. 이전 버전과 달라진 점은 한글을 정상적으로 출력한다는 것입니다. 그 외 파일탐색에서 X 버튼을 제거한것 하나 있습니다. 많은 버그가 있을거라 생각됩니다만... 사용해보신분은 버그 리포팅 부탁합니다. 한글은 FAT32에서만 지원 됩니다. 요즘은 FAT12나 FAT16은 찾아보기도 힘든 추세라서 과감히 제거해버렸습니다.
* 주요기능 - 한글이름 정상 출력 (FAT32만 지원) - zip 으로 압축 된 그림보기 - 마지막 위치 기억. 재 실행시 저장된 위치부터 보여주기 - 파일 탐색기능 - 다음 페이지 프리캐싱 기능 (apb.ini 파일을 직접 편집하셔야 합니다.) - 그림 이동 속도 조절 기능 (apb.ini 파일을 직접 편집하셔야 합니다.) - 1페이지 앞뒤로, 10페이지 앞뒤로, 100페이지 앞뒤로 이동 가능
* 주의 사항 아시는 분은 아시겠지만 한글 파일이름의 출력은 정상적으로 합니다만 같은 길이의 한글 파일들이 여럿 있을 경우 각각 파일을 구분해내지는 못 합니다.
예를 들어 "홍길동.zip", "성춘향.zip" 두개의 파일 중에서 하나를 선택할 경우 실제로 어느 파일이 선택 될지는 알 수 없습니다. 중간에 스페이스를 붙이거나 뒤에 숫자를 붙여서 반드시 구분할 수 있는 영문 문자를 삽입해주어야만 합니다.
이것은 PSPSDK의 근본적인 문제로 단순 TXT 파일이라면 FAT을 통해서 직접 읽어 낼 수 있으나 Zip 파일의 경우 zlib 라는 라이브러리로 컨트롤 하게 되는데 이놈이 파일 이름을 파라메타로 받도록 되어있어 도저히 손 댈 수가 없습니다.
한글 파일이라도 숫자나 공백등을 넣어주어 구분할 수 있도록 하시기 바랍니다.
* 파일 선택화면에서 사용키 Up/Down : 위/아래로 O : 파일 선택 X(종료) 버튼은 제거하였습니다. Home 버튼을 이용하시기 바랍니다.
* 그림보기 화면에서 사용키 <- 또는 [] / -> 또는 O : 이전 / 다음 그림 Up/Down : 10개 이전/다음 그림 LT/RT : 100개 이전/다음 그림 X : 파일 선택으로 돌아가기 아나로그 패드 : 그림 이동
* done - 한글 파일명 정상 출력 (FAT32만 지원) - 2기가 이상 디스크 위치이동시 종료되는 버그 수정 - 파일 탐색시 X 버튼을 누르면 프로그램이 멈추는 버그 수정 - 그림책 사용중 슬립 모드로 들어갔다가 나와서 파일 탐색을 할 경우 종료되는 버그 수정
* to do - 버튼 사용자 정의 (1순위) - 그림보기에서 페이지 카운트 (ex 128/1024) (3순위) - 그림보기에서 시계, 배터리 정보 (4순위) - 그림을 보여주는 기능과 그림을 메모리로 로드하는 기능을 각 쓰레드로 분리 할 계획 - 메모리스틱을 읽는 중 그림 이동이 되지 않는 불편함을 개선할 방침 (2순위) - mp3 플레이 지원 (솔직히 할까 말까 고민중 - IRshell로 멀티태스킹이 된다고 하던데...)
* 개발자는 실행에 대한 책임은 일체 없습니다. 신중히 판단하시고 사용하시길 바랍니다. * 기본적으로 3.71에서 개발하고 테스트 하고 있습니다만 다른 버전도 가능하리라 봅니다. * 소스와 바이너리가 같이 있습니다. * 메모리스틱의 PSP/GAME/APB 디렉토리에서 실행해야합니다. * 소스코드의 라이센스는 GPL을 따릅니다.
PSP의 sceIoDread 함수의 버그? 로 인하여 다국어 문자셋을 얻어올 수 없는 문제때문에 FAT 에 직접 접근하여 한글 파일명을 얻어와야만 했다. 개발하면서 문자셋 때문에 꽤나 애 먹었었다.
FAT 관련 자료는 인터넷에 꽤나 많이 널려 있으니 각자 찾아보길 바란다.
********************************************************************* 대부분의 메모리스틱이 1G 이상이고 FAT32를 사용하고 있으므로 FAT32 만을 지원한다. FAT12와 FAT16은 앞으로도 지원하지 않을 계획이다. *********************************************************************
내부적으로 숨겨진 자료형에 대해서는 굳이 알 필요가 없으며 필요하다면 자료를 찾아보도록 하라. 아래에 있는 file_t 구조체에 파일에 대한 정보를 담아 온다.
평소하던대로 중간중간에 디버그용 printf 를 넣어놓고 감으로 디버깅을 해왔었다. 맨날 하던 짓이지 왠만한 버그는 잡을 수 있었지만 그래도 가끔은 속썩이는 것들이 있다. 결국 PSPLink 를 깔고 GUI 디버그 툴을 설치하고 말았다.
원래 툴이 좋다는 것이야 잘 알지만 이것을 사용하는 것을 별로 안좋아하는데다가 평소 밥벌이로 죽자사자 하다보니 그리 필요로 하지도 않게 되었지만 생소한 크로스컴파일러의 불편함 때문에 결국 사용한다.
이 글은 PSP 프로그래밍에서 디버깅 때문에 고생하는 사람들이 있으면 도움이 될 것이다.
1. ps2dev.org 에 가서 PSPLink v2.0 을 다운받는다.
2. 다운 받은 파일을 풀면 v1.5 또는 v1.5_nocorrupt 가 있다. 해당 디렉토리 안에 있는 두개의 디렉토리를 ms0:/PSP/GAME150/ 으로 복사한다.
3. ms0:/PSP/GAME150/ 안에 복사한 디렉토리 중 한 곳에 psplink.ini 파일을 아래와 같이 편집한다. usbmass=0 usbhost=1 sioshell=0 kprintf=0 wifi=0 wifishell=0 usbshell=1 usbgdb=1 conshell=0 이것은 PSP를 USB B-type 으로 연결하여 USB shell로 GDBServer를 사용하겠다는 것이다.
4. PC에서 USB 드라이버를 설치해야 한다. 드라이버의 위치는 압출을 풀었을때 pc\windows\driver 안에 있다.
5. PC에서 usbhostfs_pc 를 빌드한다. usbhostfs_pc 의 경우 Cygwin 에서 빌드 해주어야 하는데 pc\usbhostfs_pc 디렉토리에 소스와 Makefile 이 있으니 Cygwin에서 해당 디렉토리로 이동하여 make 해주자. 만약 빌드가 제대로 되지 않는 경우 Cygwin 쉘에서 export BUILD_WIN32=1 를 해주고 다시 make 한다. 싫다면 Makefile 를 직접 손대도 된다. 컴파일 하기 위해선 pc\windows\lib 디렉토리도 반드시 필요하니 드라이버 설치후 삭제하지 않도록 한다.
6. PSP에서 PSPLink를 실행한다. 화면에 메세지 하나 달랑 뿌려지고 아무 동작도 없다.
7. Cygwin에서 usbhostfs_pc를 실행한다.
8. 터미널 프로그램 아무거나 사용해서 telnet 127.0.0.1 10000 으로 접속한다. host0:/> 가 나오면 PSPLink 가 성공적으로 동작 한 것이다. 터미널에서 디버깅 작업을 시작 할 수 있지만 GUI 툴인 psp-insight 를 설치하는 것이 좋다. 텔넷으로 접속후 elf 가 있는 디렉토리로 이동 후 debug xxx.elf 로 실행하면 GDBServer 가 실행된다.
9. psp-insight 의 설치는 PSPSDK 설치 과정에서 psptoolchain 에 마지막 과정에 들어 있다. 하지만 psptoolchain 안에 script 디렉토리 안에 008-insight.sh 을 수정해 주어야 한다. 파일을 열어서 쉘 스크립트가 시작하자 마자 실행되는 exit 를 제거해주고 toolchain 을 설치한다. 이미 설치되어 있다면 psp-insight 만 개별적으로 설치해주어도 된다. 이때는 psp용 패치를 직접 해주어야만 한다.
10. psp-insight 를 실행하고 GDBServer 127.0.0.1 10001 로 접속하면 소스레벨의 디버깅이 가능하다.
* 주요기능 - zip 으로 압축 된 그림보기 - 마지막 위치 기억. 재 실행시 기억된 위치부터 보여주기 - 파일 탐색기능 (디렉토리와 사이즈가 0 byte 보다 큰 zip파일만 보여줌) - 다음 페이지 프리캐싱 기능 (apb.ini 파일을 직접 편집하셔야 합니다.) - 그림 이동 속도 조절 기능 (apb.ini 파일을 직접 편집하셔야 합니다.) - 1페이지 앞뒤로, 10페이지 앞뒤로, 100페이지 앞뒤로 이동 가능
* 파일 선택화면에서 사용키 Up/Down : 위/아래로 O : 파일 선택
* 그림보기 화면에서 사용키 <- 또는 [] / -> 또는 O : 이전 / 다음 그림 Up/Down : 10개 이전/다음 그림 LT/RT : 100개 이전/다음 그림 X : 파일 선택으로 돌아가기 아나로그 패드 : 그림 이동
* done - 북마크 기능 추가 (관련 버그 패치)
* to do - 버튼 사용자 정의 - 그림보기에서 페이지 카운트 (ex 128/1024) - 그림보기에서 시계, 배터리 정보 (현재 고려 중) - 한글 파일명 (작업 중) - 그림을 보여주는 기능과 그림을 메모리로 로드하는 기능을 각 쓰레드로 분리 할 계획 - 메모리스틱을 읽는 중 그림 이동이 되지 않는 불편함을 개선할 방침 - 한글 파일명을 완료한 후에 우선 작업 할 계획
* 개발자는 실행에 대한 책임은 일체 없습니다. 신중히 판단하시고 사용하시길 바랍니다. * 3.71 에서 저 혼자 테스트 하고 있습니다. ㅋㅋ * 소스와 바이너리가 같이 있습니다. * 메모리스틱의 PSP/GAME/APB 디렉토리에서 실행해야합니다. * 소스는 라이센스는 GPL을 따릅니다.