
Tilefinch는 333MHz CPU와 64MiB 메모리를 갖춘 Sony PSP에서 네트워킹부터 HTML·CSS 처리, JavaScript 실행, 화면 렌더링까지 기기 자체로 수행하는 실험용 웹 브라우저다. 제작자는 PSP-3000에서 웹 페이지와 360p 동영상, 일부 WebGL 게임을 실행했으며, 홈브루를 구동할 수 있는 기기와 메모리 스틱이 있는 이용자를 대상으로 배포한다.
프로젝트 저장소와 최신 릴리스에서 설치 파일과 문서를 확인할 수 있다. Tilefinch는 MIT 라이선스지만, 포함된 제3자 구성 요소에는 각각 별도 라이선스와 고지가 적용된다.
기능과 기기에서의 처리
Tilefinch는 실제 HTTPS 페이지를 열고 JavaScript, 제한된 WebAssembly와 WebSocket, 쿠키, 이미지, 모바일 레이아웃, TrueType 글꼴을 지원한다. 프록시나 보조 컴퓨터 없이 PSP에서 브라우저 기능을 처리한다. HTML 파서에는 Lexbor, JavaScript에는 QuickJS를 사용하며, 스타일·레이아웃·렌더링은 Tilefinch 자체 구현이다. 원본 C11로 작성한 계층은 스타일, 레이아웃, 페인트, 정책, 미디어와 PSP 인터페이스를 포함한다. Lexbor, QuickJS, curl, Mbed TLS, nghttp2, FreeType은 버전을 고정해 저장소에 포함했다. 제3자 라이선스 고지
브라우저에는 탭 5개, 북마크, 방문 기록, 주소·검색어 추천, 페이지 내 찾기, 선택 가능한 세션 복원과 비활성 탭 최대 한 개의 절전 기능이 있다. 광고 요청 차단과 화면 요소 숨김은 기본으로 켜져 있고, uBlock/EasyList 형식의 사용자 규칙과 사이트별 예외를 설정할 수 있다. 흔한 쿠키 동의 배너는 ‘수락’을 누르거나 동의 쿠키를 만들지 않고 숨긴다. 사이트별 예외도 둘 수 있다.
리더 모드는 글을 다시 배치하며, Basic view는 스크립트가 실패한 페이지에서 링크·표·간단한 검색 폼을 살린다. 기사를 저장하고, 매니페스트를 사용하는 소형 웹앱을 오프라인용으로 설치할 수도 있다. 설치된 앱은 아이콘과 이미 불러온 동일 출처 리소스를 보관하며, 업데이트·재설치·삭제가 가능하다. PSP 시스템 키보드 또는 Danzeff 방사형 키보드로 입력하고, 북마크와 방문 기록을 바탕으로 자동 완성할 수 있다.
미디어 기능은 YouTube의 경량 제공자와 호환되는 HTML <video>·<audio> 요소를 PSP 네이티브 플레이어로 연다. 공식 빌드는 PSP 펌웨어 디코더로 240p·360p Baseline/Main MP4와 AAC-LC를 사용하는 240p HLS를 재생한다. YouTube 라이브 스트림과 프리미어도 지원 대상으로 명시돼 있다. 탐색, 버퍼링 상태, 선호 오디오·자막 언어, 트랙 선택, 이어받기 다운로드, 오디오 전용 재생도 포함한다. 별도로 직접 빌드하는 디코더 추가 기능은 240p H.264 High를 지원하지만 공식 바이너리에는 들어 있지 않다.
게임용으로는 제한된 Canvas 2D와 WebGL 1, 이미지 자산 준비용 ImageBitmap, 사용자가 시작하는 PCM 게임 오디오, 페이지 전체 화면, PSP 조작부에 대응하는 표준 Gamepad API를 제공한다. 예제인 Treadline Arena는 캠페인, 봇 대전, 연습장과 적응형 음악이 들어간 3D WebGL 전차 게임이다.
화면 관련 기능에는 자동·강제 페이지 다크 모드, 밝고 어두운 브라우저 메뉴, 내려받을 수 있는 색상 테마, 페이지 글자 크기 조정, 번역된 메뉴가 있다. 아랍어 계열 글꼴 조형을 포함해 제한적인 오른쪽에서 왼쪽·왼쪽에서 오른쪽 혼합 배치를 지원한다. 일본어, 중국어, 한국어, 키릴 문자, 확장 라틴 문자, 아랍어, 히브리어, 힌디어, 컬러 이모지 글리프 팩은 선택적으로 설치할 수 있다. 홈 화면, 모음, 시계, 배터리·Wi-Fi 상태, 상황별 조작, PNG 스크린샷, 사진으로 기록할 수 있는 QR 진단 화면도 제공한다.
ARK-4를 사용하면 Sony 인터넷 브라우저 아이콘으로 Tilefinch를 실행하도록 선택할 수 있다. 이때 L을 누른 채 아이콘을 열면 원래 브라우저가 실행된다. 업데이트는 서명된 앱 내 업데이트와 A/B 슬롯, 시험 부팅, 자동 롤백, 사용자 승인, 서명된 이전 버전 선택 기능을 갖췄다. 실험적인 음성 검색은 선택형 모델과 필요할 때 실행하는 음성 엔진을 내려받아 사용한다. 기본값은 꺼짐이며 현재 느리고 정확도가 낮다.
PSP-3000에서는 333MHz MIPS CPU와 64MiB RAM을 대상으로 한다. 측정된 힙은 약 43MiB이며, 페이지와 음성 기능이 32MiB 한도를 공유한다. 480×272 화면에서 페이지와 브라우저 메뉴는 RGB565 표면을 쓰고 전체 화면 영상은 32비트 스캔아웃을 사용한다. 네트워크, HTML, CSS, JavaScript, 레이아웃과 렌더링은 모두 PSP에서 실행된다. 표현 계층은 증분식 유지형 디스플레이 목록과 제한된 RGB565 타일 캐시를 사용한다. HTTPS 인증서와 호스트 이름을 확인하고, 쿠키·리디렉션·캐시를 지원하며, 캡티브 포털용 Wi-Fi 로그인을 별도 흐름으로 격리한다.
Tilefinch 제작자는 JavaScript 모듈이 100개 넘는 chatgpt.com의 로그아웃 상태 채팅에서 클라이언트 측 하이드레이션과 스트리밍 답변이 PSP-3000에서 끝까지 실행된 사례를 소개한다. 이 사례에는 검증용 사전 파서, 범위를 좁힌 스타일 무효화, 프로파일 최적화 JavaScript 엔진이 사용됐다. 아키텍처 문서
DOM, JavaScript, CSS, 리소스, 레이아웃, 타일은 페이지당 24MiB 메모리 예산을 공유한다. 표와 반복문은 상한을 두며, 메모리 할당 거부도 복구 가능한 정상 경로로 처리하도록 설계했다. 스트리밍 HTML·CSS, 선행 로딩 탐색, 중단 후 이어지는 레이아웃, 화면에 보이는 리소스 우선 처리, 지연 로딩 부트스트랩 모듈, 컴파일된 스타일·스크립트의 제한 캐시를 통해 333MHz 코어에서 첫 화면을 빨리 표시하는 데 초점을 둔다.
호스트 컴퓨터와 PSP는 같은 레이아웃·래스터화 코드를 사용하며 RGB565 디더링 순서까지 일치시키는 것이 목표다. Chrome 참조 화면과 비교한 충실도 기준은 낮추지 않고 올리는 방식으로 관리한다고 설명한다. 화면 일치도 절차
영상은 원시 NAL 연결부와 제한된 H.264 복구 지점 재작성기가 PSP Media Engine에 데이터를 전달한다. 보호된 디코딩 표면 두 개를 사용해 색 변환과 화면 표시를 겹친다. 미디어 상태 기계 문서 사용자가 빌드하는 추가 기능은 CPU가 행을 재구성하는 동안 Media Engine에 CABAC, 디블로킹, 오디오와 색 변환을 맡겨 240p H.264 High를 디코딩한다. 공식 바이너리에는 포함되지 않는다. 640×360 프레임은 EDRAM에서 보호된 두 스트립으로 처리하고, GE가 픽셀별 CPU 작업 없이 쌍선형 확대를 한다. 기기 처리 한도 문서
미디어와 네트워킹은 순수 리듀서, epoch 토큰 서비스, 소비자 임대, 단계적 종료, 격리를 사용해 펌웨어나 작업이 사용 중인 메모리를 해제하지 않도록 설계했다. 아키텍처 문서 보안 기능으로는 HTTPS 우선 탐색, CORS, CSP 일부, SRI, 사설 네트워크 보호, 파티션을 고려한 리소스 권한, 쿠키 제어, 서명된 A/B 업데이트를 내세운다. 다만 같은 프로세스 안에서 실행되며 완전한 샌드박스는 아니다. 보안 모델
필요한 기기와 설치
테스트를 마친 기기는 PSP-3000이며, 홈브루를 실행할 수 있는 커스텀 펌웨어와 64MB 메모리 모드가 필요하다. PSP-2000과 PSP Go도 같은 메모리 모드를 갖춰 작동할 것으로 예상하지만 아직 적격성 검증을 마치지 않았다. RAM이 32MB인 PSP-1000은 대부분의 사이트가 더 많은 메모리를 필요로 해 지원하지 않는다. PSP-E1000(Street)은 메모리는 충분하지만 Wi-Fi가 없어 오프라인 라이브러리만 쓸 수 있으므로 적절한 대상이 아니라고 안내한다.
일상적인 브라우징과 업데이트에는 메모리 스틱 여유 공간 약 20MB가 필요하다. 선택형 글리프 팩은 각각 약 1MB, 컬러 이모지 팩은 약 5MB다. 선택한 언어 팩 외에도 페이지가 다른 문자 체계를 쓸 경우 설치된 팩을 최대 두 개까지 추가할 수 있다. 필요한 팩이 없으면 알림이 표시되며, 알림에서 설치를 선택하면 서명된 다운로드 크기를 먼저 보여주고 다시 확인을 요청한다. 음성 모델은 검증된 다운로드와 새 복사본이 함께 존재하는 동안 약 19MB가 더 필요하므로 음성 인식을 원하면 40MB 여유를 권한다.
PSP가 연결할 수 있는 Wi-Fi 네트워크도 필요하다. 최신 ARK-4 커스텀 펌웨어에서는 WPA2를 사용할 수 있다. 그렇지 않으면 기기 세대의 한계로 WPA(TKIP) 또는 개방형 네트워크만 연결된다. 대부분의 라우터는 WPA/TKIP 게스트 네트워크를 제공할 수 있다. 먼저 PSP 자체의 네트워크 설정에서 연결을 저장해야 한다.
수동 설치는 최신 Tilefinch 릴리스에서 PSP 설치 .zip을 내려받아 압축을 푼 뒤, TILEFINCH 폴더 전체를 메모리 스틱의 PSP/GAME/에 복사하는 방식이다. 실행 파일은 PSP/GAME/TILEFINCH/EBOOT.PBP에 있어야 하며, slot-a, slot-b, data, NOTICES도 그 옆에 둔다. PSP를 안전하게 분리한 다음 Game → Memory Stick에서 Tilefinch를 실행한다. 네트워크 연결을 아직 저장하지 않았다면 PSP 네트워크 설정에서 저장한다. 기본적으로 연결 프로필 1을 쓰며 Settings → Device & storage에서 다른 프로필을 고를 수 있다. 릴리스 페이지의 .tfum과 .tfup 파일은 수동 설치용이 아니라 Tilefinch의 서명된 앱 내 업데이트용이다. 언어·이모지·음성 구성 요소는 각 설정 화면에서 설치한다.
ARK-4의 XMB 리디렉션은 선택형 VSH 플러그인이다. PSP 펌웨어나 flash0을 수정하지 않고, 백그라운드에서 폴링하지 않으며 메모리 스틱에 쓰지 않는다고 설명한다. 먼저 Tilefinch를 PSP/GAME/TILEFINCH/에 일반 설치한다. 설치 압축 파일의 TILEFINCH/OPTIONAL/tilefinch_xmb.prx를 ms0:/SEPLUGINS/tilefinch_xmb.prx로 복사한 다음, ARK의 Custom Launcher 또는 Plugin Manager에서 VSH(XMB) 실행 수준에 플러그인을 설치하거나 활성화하고 VSH를 재시작하거나 PSP를 재부팅한다. ARK의 PLUGINS.TXT에 넣는 줄은 다음과 같다.
vsh, ms0:/SEPLUGINS/tilefinch_xmb.prx, on
내부 저장소를 쓰는 PSP Go에서는 두 경로의 ms0:을 ef0:으로 바꾼다. 인터넷 브라우저 아이콘을 열 때 L을 누르고 있으면 Sony 브라우저가 열린다. 이 리디렉션이 L을 사용하므로 이전 버전 안전 시작은 Game → Memory Stick에서 Tilefinch를 직접 실행할 때만 가능하다. Tilefinch가 없거나 전환에 실패하면 Sony 브라우저가 열린다. 원래 동작으로 되돌리려면 ARK Plugin Manager에서 플러그인을 끄고 VSH를 재시작한다. Tilefinch는 VSH 안에서 실행되는 코드가 아니라 일반 홈브루 앱이므로 종료하면 XMB가 다시 로드되고 Sony 또는 ARK 시작 화면이 보일 수 있다. 플러그인 파일을 교체한 뒤에는 PSP 전원을 완전히 끄고 콜드 부팅해야 한다. VSH 재시작만으로는 이전 NO_STOP 처리기가 메모리에 남을 수 있다. 리디렉션은 안정 버전 루트 실행 파일을 시작하므로 서명된 업데이트, 시험 부팅과 자동 롤백은 그대로 작동한다. ARK-4 플러그인 문서
공식 릴리스에는 자체 H.264·AAC 디코더가 재배포되지 않는다. 호환되는 Baseline/Main MP4와 HLS, 라이브 스트림은 계속 PSP 펌웨어를 사용한다. 240p High 프로파일 경로를 추가하려면 고정된 업스트림 소스에서 선택형 PSP 소프트웨어 디코더 안내에 따라 빌드한 다음 파일 세 개를 PSP/GAME/TILEFINCH/components/swdec/에 복사한다. 이 디렉터리는 앱 슬롯 밖에 있어 서명 업데이트 후에도 추가 기능이 유지된다. 업데이트 메타데이터에는 디코더 ABI가 기록된다. 이후 업데이트에서 ABI가 바뀌면 업데이트 화면에 Decoder rebuild needed라고 표시한다. 페이지가 디코더를 필요로 하는데 파일이 없거나 호환되지 않으면 플레이어가 일반적인 동영상 오류 대신 빌드 안내를 제공한다.
조작은 방향키로 링크·컨트롤 사이의 포커스를 옮기고, 아날로그 스틱으로 페이지 커서를 움직인다. 스틱을 화면 위·아래 가장자리에 대고 있으면 스크롤하며, 설정에서 직접 스크롤로 바꿀 수 있다. X는 포커스 항목을 실행하거나 커서 아래를 클릭하고, Circle은 뒤로 가거나 현재 로딩을 취소한다. Square는 새로고침하며 실험적 음성 기능이 켜져 있고 텍스트 필드에 있을 때는 음성 입력을 시작한다. Triangle은 브라우저 메뉴를 표시하거나 숨긴다. Start는 주소·검색창, Select는 홈·탭·페이지 도구·라이브러리·설정·도움말 및 진단·XMB 종료 메뉴를 연다. Start와 Select를 함께 누르고 있으면 페이지 JavaScript에 조작을 넘기며, 다시 길게 누르면 되찾는다. L/R은 페이지 위·아래 이동이다. 업데이트 설치 후 부팅할 때 L을 누르고 있으면 이전 버전으로 안전 시작한다. 주소창에 URL을 입력하면 해당 페이지로 이동하고, 그 밖의 입력은 검색한다.
언어, 업데이트와 개인정보
메뉴 언어는 Settings → Appearance → Language & emoji → Interface language에서 바꾼다. 좌우로 고르고 X를 눌러 설치한 뒤 Tilefinch를 재시작한다. 영어는 기본 포함이며 스페인어, 프랑스어, 독일어, 일본어, 러시아어, 우크라이나어, 중국어 간체, 한국어, 힌디어, 아랍어 번역을 내려받을 수 있다. 필요한 글리프 팩이 설치되지 않았다면 언어 선택 시 함께 내려받는다. 아직 번역되지 않은 고급 메시지는 영어로 남고, 다운로드에 실패해도 영어를 쓸 수 있다. 이 설정은 Tilefinch 메뉴만 바꾸며 웹사이트·게임·자막 문구는 번역하지 않는다. 영상·오디오·자막 선호 언어는 별도 설정이다.
기본 글꼴은 라틴 문자를 포함하며 일부 중국어·일본어·한국어·이모지 문자에는 작은 대체 글꼴을 쓴다. Settings → Appearance → Language & emoji에서 일본어, 중국어 간체·번체, 한국어, 키릴 문자(러시아어·우크라이나어 포함), 확장 라틴 문자, 아랍어, 히브리어, 데바나가리 문자(힌디어), 컬러 이모지 팩을 추가할 수 있다. 필요한 팩이 없으면 탐색 중 설치 제안을 받을 수도 있다. 해당 팩 다운로드를 확인하고 재시작하면 적용되며 Square를 눌러 설치된 팩을 제거할 수 있다. 팩은 글리프 범위를 늘릴 뿐 페이지 문장을 번역하지 않는다. 아랍어와 히브리어는 오른쪽에서 왼쪽으로 배치한다. 힌디어는 일반적인 음절과 인터페이스 결합 문자를 지원하지만 드문 결합 문자는 대체 글리프로 표시될 수 있다.
번역과 서명된 팩은 tilefinch-models에 있다. Tilefinch는 설치 전에 파일을 검증하고, 설치한 파일은 오프라인 사용을 위해 메모리 스틱에 둔다. 설치·삭제·누락 문자 알림은 언어 팩 안내에 설명돼 있다.
업데이트는 Settings → Updates에서 확인한다. 선택형 백그라운드 확인은 새 릴리스 정보를 최대 일주일에 한 번 확인하며 끌 수 있다. Tilefinch는 사용자가 요청하지 않으면 업데이트를 내려받거나 설치하지 않는다. Stable과 Beta 릴리스는 암호학적으로 서명되고 설치 전에 검증된다. 명시적으로 선택해야 하는 Developer 채널은 서명되지 않으며 사용자가 설정한 엔드포인트를 신뢰한다. 새 버전은 두 번째 슬롯에 설치돼 시험 부팅된다. 정상적으로 시작하지 못하면 실행기가 작동하던 버전으로 돌아가며, 부팅 때 L을 누르면 언제든 이전 버전을 시작한다. Stable 채널에서는 업데이트 화면에서 Square를 눌러 서명된 이전 릴리스를 선택할 수 있다. 이 버전도 비활성 슬롯에 설치되고 같은 시험 부팅을 거친다. 보안 업데이트 문서와 보안 정책에 상세 내용이 있다.
텔레메트리, 분석 도구, 계정은 없으며 브라우징 정보도 외부로 보내지 않는다고 프로젝트는 설명한다. 다만 YouTube 요청에는 결과와 오디오 트랙의 지역화를 위해 설정된 영상 언어를 보낸다. 기본값은 PSP 언어다. 쿠키는 메모리에만 저장돼 전원을 끄면 사라진다. 방문 기록은 기본적으로 꺼져 있고, 캐시·저장 페이지와 동영상·스크린샷·설정은 메모리 스틱에 둔다. Settings → Device & storage → Site data & storage에서 사이트별 저장 데이터를 확인·삭제하거나 모든 사이트의 HTTP 캐시, 쿠키, 로컬 저장소와 세션 저장소를 지울 수 있다.
사이트의 localStorage, sessionStorage, 출처별 비공개 파일 시스템은 RAM에 저장하며 사용자가 선택하지 않는 한 메모리 스틱에 쓰지 않는다. 사이트가 RAM 한도를 넘으면 해당 사이트 데이터를 메모리 스틱에 저장할지 묻고, 이번 세션 또는 항상 저장하는 선택과 필요한 용량을 표시한다. Permissions & controls → Site storage에서 사이트별 선택을 바꾸고, Site data & storage에서는 목록에 있는 사이트의 선택을 바꿀 수 있다.
재연결을 빠르게 하려고 서버가 발급한 수명이 짧은 TLS 재개 티켓을 기본적으로 data/tls-sessions.bin에 보관한다. 티켓은 인증 정보로 취급돼 발급한 사이트에만 보내며, Site data & storage → Clear HTTP caches에서 지울 수 있다. Settings → Privacy & security → TLS ticket saving을 끄면 부팅 사이에는 저장하지 않지만 같은 세션 안의 연결 재사용은 유지한다.
백그라운드 업데이트 확인을 켜면 GitHub 릴리스 API에 최대 주 1회 연결한다. 버전 번호만 비교하고 일반 HTTPS 요청 외에 식별 정보를 보내지 않으며 끌 수 있다. 업데이트·언어 팩·메뉴 번역처럼 사용자가 요청한 다운로드는 공개된 다운로드 호스트에 연결한다. Help & diagnostics → Check Wi-Fi sign-in은 사용자가 실행하거나 로그인 안내를 수락했을 때만 connectivitycheck.gstatic.com에 쿠키 없는 HTTP 요청을 한 번 보낸다. 로그인 페이지가 탐지되면 임시 쿠키와 저장 공간으로 열고, 페이지를 닫을 때 삭제한다.
시작 화면에서 기본 제공 YouTube 타일 위에 약 3분의 1초 동안 커서를 두면, X를 눌렀을 때 사이트가 준비돼 있도록 백그라운드 연결을 연다. 이 동작은 기본 타일에만 적용되며 북마크나 페이지가 제공한 주소에는 적용되지 않는다. 쿠키·자격 증명·리퍼러 없이 본문이 없는 요청 하나만 보내고, 사이트를 열기 전에는 콘텐츠를 가져오지 않는다. 이런 연결은 최대 하나만 유지하며 커서를 옮기거나 PSP가 절전 상태가 되면 닫는다. 음성 검색은 PSP에서 전부 처리해 오디오를 기기 밖으로 보내지 않는다.
한계와 보안
많은 사이트가 완벽하게 표시되지 않고 무거운 사이트는 아예 로드되지 않을 수 있다. 모든 웹 표준이나 API를 구현한 것도 아니다. 페이지가 메모리 한도를 넘으면 충돌하는 대신 성능을 낮추거나 로딩을 중단한다. 333MHz CPU에서 무거운 JavaScript 앱은 느리다. PSP-3000에서 chatgpt.com은 입력할 수 있기까지 약 40초가 걸리고, 짧은 답변을 보내도 결과를 받는 데 비슷한 시간이 든다. 이 수치는 기록된 세션에서 측정했으며 실제 네트워크 대기 시간은 양쪽 시간에 추가된다.
YouTube 지원은 서비스 변경에 영향을 받으며 때때로 작동이 깨져 업데이트로 고친다. Tilefinch는 YouTube Proof-of-Origin(PO) 토큰을 만들지 않으므로, 브라우징과 검색이 되더라도 해당 토큰이 필요한 동영상은 재생되지 않을 수 있다. 음성 검색은 실험 단계로 느리고 자주 틀리며 영어만 지원한다.
탭은 페이지 다섯 개 전체가 아니라 각 페이지의 방문 기록, URL, 포커스와 스크롤 위치를 제한적으로 기록한다. 탭을 바꾸면 공유 캐시를 통해 페이지를 다시 불러온다. 탭 전환 화면에는 이미 렌더링한 프레임에서 가져온 60×34 미리 보기 하나씩을 보관하며 전체 크기는 약 20KiB다. 기본값이 꺼진 선택형 Hibernate tab은 비활성 탭 한 개의 스냅샷만 메모리 스틱으로 옮긴다. 페이지 메모리를 저장하는 것은 아니며 해당 탭에 [Z]가 표시된다.
Cloudflare 관리형 보안 검사 뒤에 있는 사이트는 작동하지 않는다. WebGL은 일반적인 정점 색상·텍스처 셰이더를 위한 PSP GE의 제한된 기능만 제공하며 완전한 프로그래밍 가능 GPU가 아니다. 복잡한 셰이더, 투명 드로잉 버퍼, 오프스크린 프레임버퍼와 큰 장면은 처리하지 못할 수 있다. 이 경우 메모리나 프레임 시간을 무제한으로 소비하지 않도록 실패를 완화한다.
데스크톱 수준의 프로세스 샌드박스나 완전한 CSP는 없다. 응답 헤더 CSP, 리소스·프레이밍 정책 일부, 스크립트·스타일시트의 하위 리소스 무결성, 제한적인 iframe 샌드박스와 출처 경계는 적용하지만 출처를 별도 프로세스로 격리하지 않는다. 제작자는 민감한 계정이나 거래에 사용하지 말라고 안내한다. 보안 모델 문서는 보안 기본값, 호환성 설정, 위협 모델과 격리 한계를 설명한다.
문제 해결과 개발 문서
오작동이 있으면 먼저 문제 해결 안내를 확인한다. 버그 신고에는 PSP 모델과 커스텀 펌웨어(예: “PSP-3000, ARK-4”), Help & diagnostics → Version & system에 표시된 Tilefinch 버전, 사이트 또는 URL과 누른 버튼을 적는다. 충돌이 난 경우 메모리 스틱의 PSP/GAME/TILEFINCH/data/tilefinch-crash.txt를 첨부한다. 512바이트 크기의 0만 들어 있는 파일은 충돌 기록이 없다는 뜻이다. 메모리 스틱에 쉽게 접근할 수 없다면 Help & diagnostics → Diagnostic QR에서 같은 제한 로그를 QR 페이지로 표시해 사진으로 남길 수 있다. 보안 문제가 의심되면 SECURITY.md의 보호 범위와 신고 방법을 따른다.
데스크톱 실험 환경은 PSP 화면 크기와 메모리 프로필에 맞춰 같은 엔진을 빌드하고 시험한다. 첫 설정 시 해시가 고정된 의존성을 내려받으며, 호스트 빌드에는 libcurl 개발 헤더와 zlib가 필요하다. 원문에 제시된 명령은 다음과 같다.
cmake --preset release
cmake --build build-preset-release
ctest --test-dir build-preset-release
전체 절차는 개발 안내, 변경 제출 전 기대 사항은 기여 안내에 있다. 엔진은 파싱, 스타일, 레이아웃, 스크립팅과 타일 렌더링을 메모리 예산 안에서 처리하며, 할당 거부·잘못된 페이지·취소를 충돌이 아니라 정상 상황으로 다루도록 설계했다. 시스템 구성도, 메모리 계약과 생명주기 경계는 아키텍처 문서에, 문서 전체 지도는 docs/README.md에 있다. 엔지니어링 안내는 docs/engineering/에서 찾을 수 있다.
프로젝트는 최적화된 호스트 테스트 외에 sanitizer, 악성 입력, WPT, 화면 충실도와 PSP 크로스 빌드 검사, 실행 파일·핫 함수 크기 제한을 둔다고 설명한다. 엔지니어링 안내 성능·메모리 실험의 상세 기록은 공개 저장소가 아니라 로컬과 비공개 개발 아카이브에 보관하며, 공개 엔지니어링 문서는 현재 계약과 재현 가능한 검사를 설명한다. 엔지니어링을 평가하려는 독자에게는 아키텍처, 보안 모델, 미디어 생명주기와 네트워크 생명주기, 기기 검증 전략, 릴리스 절차를 순서대로 읽도록 안내한다.
이슈와 풀 리퀘스트를 받지만 여가 시간에 진행하는 프로젝트라 답변과 리뷰가 늦을 수 있다. 빌드·테스트 기대 사항은 CONTRIBUTING.md에 적혀 있다. 일상적인 사용은 사용자 안내에서 다룬다. 여기에는 PSP 키보드와 Danzeff 입력, 북마크·기록 자동 완성, Menu → Page tools의 페이지 내 찾기, 리더·Basic view와 오프라인 라이브러리, 저장 기사·동영상 다운로드, Gamepad API로 버튼 넘기기, 전체 화면·게임 오디오·직접 멀티플레이, 스크린샷, 로딩 실패 시 선택지, JavaScript·광고 차단·쿠키 배너·저장 공간의 사이트별 제어가 포함된다.
라이선스와 독립성
Tilefinch는 MIT 라이선스를 사용한다. 라이선스와 제3자 구성 요소별 고지를 참조하면 된다. 브라우저 다운로드에는 음향 모델이나 음성 사전이 포함되지 않는다. 앱에서 선택형 음성 구성 요소를 요청하면 서명된 패키지에 모델과 함께 Alpha Cephei 및 CMUdict 라이선스 파일이 들어간다. 브라우저 묶음에는 연결된 디코더가 요구하는 PocketSphinx 라이선스가 포함된다.
선택형 일본어, 중국어, 한국어, 키릴 문자, 확장 라틴 문자, 아랍어, 히브리어, 데바나가리 문자(힌디어), 컬러 이모지 팩도 기본 다운로드에는 포함되지 않는다. Noto 글꼴에서 생성하며 SIL Open Font License 전문과 원본 글꼴의 다이제스트를 담고, 사용자가 요청할 때만 내려받는다. Tilefinch는 PSP의 독점 펌웨어 글꼴을 읽지 않는다.
Tilefinch는 독립적인 비공식 홈브루 프로젝트이며 Sony Interactive Entertainment와 제휴·후원·승인 관계가 없다. PlayStation, PSP와 관련 상표는 각 소유자의 자산이다. 프로젝트에는 Sony 독점 SDK 자료, 펌웨어, 아트워크나 브랜딩이 포함되지 않는다.
Wikipedia 화면은 영어 “PlayStation Portable” 문서를 보여준다. Wikipedia 텍스트는 CC BY-SA 4.0 라이선스를 따른다. Wikipedia와 관련 표장은 브라우저 호환성을 식별하기 위해 표시했으며 Tilefinch는 Wikimedia Foundation과 제휴하지 않는다. 동영상 화면에는 Blender Foundation 저작권의 2008년 작품 Big Buck Bunny 장면이 사용됐으며 CC BY 3.0 라이선스가 적용된다. 영화와 크레딧은 Blender 오픈 영화 프로젝트에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요