그림책에서 기능별 스레드를 분리하기 위해서 고민하던 중...

mutex 를 지원하지 않는다는 것을 알게 되었다.

(솔직히 난 gcc 를 컴파일러로 쓴다길래 당연히 pthread도 지원할 줄 알았다.)

그래도 다행이 semaphore 는 지원한다는 것이다.

결국 binary semaphore 를 이용해서 mutex 비스무리하게 만들어 낼 수 밖에 없다는 것이다.

문제는 semaphore를 take 하고 give 하는 순서를 정확히 잘 지켜서 프로그램을 만들어야

한다. semaphore 를 생성할때 Max 값을 1로 주었으니 별 문제는 없어 보인다만...

semaphore 를 생성하고 semaphore를 사용하는 thread 를 두개 생성한다.

thread 생성시 사용하는 함수를 정의한다.

각 쓰레드가 순서대로 sharedidx 값을 증가시키면서 값을 찍는 것을 볼 수 있을 것이다.
Posted by ryu2811

그림책 사용자가 점점 늘어 가는 듯 합니다. 일단 버그리포팅이 많아 지는군요.
어쨌건 앞으로의 개발 일정에 대한 얘기를 좀 밝힐까 합니다.

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 모드에서 선그리기, 박스그리기, 메세지박스 등의 기본적인 드로잉 라이브러리
   개발 계획 중. 현재로선 그저 막연히...

- 덧 붙임 -
정리하고 보니 할게 너무 많군요. 대충 봐도 하나씩 개발하다보면 몇 달은 걸릴 듯 합니다. 언젠간 완성 되겠죠. 그나저나 저와 다른 환경에서 발생하는 버그의 디버깅이 너무 어렵군요.

Posted by ryu2811
2008. 7. 9. 18:06

그림책 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을 따릅니다.

- 덧붙임 -
프로그램 파일을 직접 자신의 다른 블로그 또는 다른 사이트에 업로드하여 배포하시는 것은 자제 하시기 바랍니다. 링크를 이용해 주시길 바라며 파일이 아닌 현재 블로그로 링크하시기 바랍니다.

- 다시 덧 붙임 -
같은 이름으로 파일을 올리니까 자동으로 다운로드 링크가 안나오네요. 거참 ... 번번히 실수하고 있습니다.
Posted by ryu2811
2008. 7. 9. 18:05

그림책 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을 따릅니다.
Posted by ryu2811
2008. 7. 7. 00:11

그림책 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을 따릅니다.

Posted by ryu2811
FAT 접근 라이브러리 구현은 완료 되었으나 이것을 그림책에 붙이는 작업을 해야합니다.

음... 여기서 또 다른 문제에 봉착하게 되었는데요. 받아온 한글 파일이름으로 파일 열기를

시도하게 되면 파일이 안열린다는 것입니다.

문자셋의 문제인지 이 역시 PSPSDK의 문제인지 아직 모르겠습니다.

아~ 정말 그냥 되는 기능일거 같은데 막상 되는게 하나 없군요.

큰?? 작업은 끝났으니 조만간 그림책 새버전을 배포 할 수 있을거라 생각합니다.

그럼... 모두들 즐거운 하루 보내세요.

- 덧붙임 -

이전에 PSP에서 개발했던 분들과 이런 경험들을 공유 할 수 있는 공간이 있다면

작업 효율도 올라가고 정보공유도 되고 좋을텐데요. 저 나름대로 소스공개 정도는

하고 있지만 항상 뭔가 부족한 듯 아쉽습니다.
Posted by ryu2811
PSP의 sceIoDread 함수의 버그? 로 인하여 다국어 문자셋을 얻어올 수 없는 문제때문에
FAT 에 직접 접근하여 한글 파일명을 얻어와야만 했다. 개발하면서 문자셋 때문에 꽤나 애 먹었었다.

FAT 관련 자료는 인터넷에 꽤나 많이 널려 있으니 각자 찾아보길 바란다.

*********************************************************************
대부분의 메모리스틱이 1G 이상이고 FAT32를 사용하고 있으므로 FAT32 만을
지원한다.  FAT12와 FAT16은 앞으로도 지원하지 않을 계획이다.
*********************************************************************


소스코드는 아래에 있으며 라이센스는 GPL을 따른다.


Posted by ryu2811
2008. 6. 27. 12:12

평소하던대로 중간중간에 디버그용 printf 를 넣어놓고 감으로 디버깅을 해왔었다.
맨날 하던 짓이지 왠만한 버그는 잡을 수 있었지만 그래도 가끔은 속썩이는 것들이 있다.
결국 PSPLink 를 깔고 GUI 디버그 툴을 설치하고 말았다.

원래 툴이 좋다는 것이야 잘 알지만 이것을 사용하는 것을 별로 안좋아하는데다가
평소 밥벌이로 죽자사자 하다보니 그리 필요로 하지도 않게 되었지만 생소한
크로스컴파일러의 불편함 때문에 결국 사용한다.

이 글은 PSP 프로그래밍에서 디버깅 때문에 고생하는 사람들이 있으면 도움이 될 것이다.


Posted by ryu2811
2008. 6. 23. 16:28

* 주요기능
- 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을 따릅니다.

Posted by ryu2811
어찌하다보니 프로그램 하나 개발해놓고 공개까지 해버렸다.
어느정도 개발다 해놓고 보니 한글에 버그가 있단다. 아 젠장...
결국 대안을 찾긴 찾았고 지금 열심히?? 수정 중이다.
생업에 밀리지 않는다면 아무래도 일주일에서 열흘? 정도면 될거 같다.

- 덧붙임 -
혹~~~~~~ 시라도 그림책을 사용하시는 분이 있다면 한글 문제는 조금만 참아주세요.
한글 이외에 버그를 발견하시거든 알려주시면 감사하겠습니다. 바로 패치하겠습니다.
Posted by ryu2811
이전버튼 1 2 3 4 이전버튼