
오픈소스 프로젝트 revib는 PlayStation PAL판 게임 Vib-Ribbon을 C++로 디컴파일했으며, 이 소스로 만든 실행 파일 네 개가 디스크 원본과 바이트 단위로 일치한다고 밝혔다. 빌드하려면 게임 디스크의 파일이 필요하며, 저장소에는 게임 파일이 포함되지 않는다.
프로젝트는 로더 SCES_028.73, 메뉴·옵션·결과 화면을 담은 MAIN_T.EXE, 키오스크(데모) 버전 MAIN_K.EXE, 게임 본체 MAIN_G.EXE를 재빌드한다. 게임은 C++로 작성됐으며, 소스에는 명명된 멤버를 가진 클래스와 게임이 사용한 SGI STL 3.2, 원래 소스 파일 구성이 담겼다. 빌드에는 egcs 2.91.66(egcs 1.1.2)을 사용하고, 게임의 컴파일러가 GCC 2.95처럼 동작하도록 C++ 컴파일러를 한 곳 수정했다. 자세한 내용은 컴파일러 설명에 있다.
게임 자체 코드 중 Effect::operator=, Gameplay::Update, Gameplay::AddEvent, Glue::Update와 NumberVoice.cpp의 정적 초기화 함수 등 다섯 함수는 아직 어셈블리로 남아 있다. 대응하는 C++ 코드는 NON_MATCHING 아래에 있으며, 차이점도 기록돼 있다. Sony의 PSY-Q 그래픽·사운드·CD 라이브러리는 어셈블리로 유지되고, 게임에서 호출하지 않는 헤더의 디버그 문구 등 일부 사용되지 않는 문자열과 데이터 블록은 원본 실행 파일에서 가져온다.
빌드 환경은 Linux 또는 WSL 2이며, 프로젝트는 Ubuntu 24.04에서 시험됐다. make, binutils-mips-linux-gnu, Python 3, python3-venv가 필요하다. 원본 실행 파일은 직접 보유한 게임 디스크에서 추출해 iso/에 넣어야 한다. 저장소의 make는 타이틀을 빌드하고 확인하며, 각 검사 명령은 빌드 결과물의 SHA-1이 .sha 파일에 기록된 원본 값과 같으면 OK를 출력한다.
tools/mod/에는 디스크 이미지에서 파일을 나열·추출하고, 같은 크기의 파일을 다시 기록하면서 섹터의 EDC/ECC를 계산하는 psxdisc.py와 게임 데이터 형식용 도구가 포함돼 있다. pak.py는 FILES.PAK 아카이브를 다루고, tmd.py는 .TMD 선 모델의 PNG 미리보기를 만들며, anm.py는 .ANM 동영상과 .ANC 카메라 데이터를 처리한다. 디버그 메뉴는 게임에 남아 있지만 이를 여는 기능은 없으며, debug-menu 브랜치는 첫 번째 컨트롤러의 선택 버튼으로 메뉴를 여는 방법과 설명을 제공한다.
프로젝트는 비공식 작업이며 Sony Interactive Entertainment나 NanaOn-Sha와 제휴하지 않았다. 디스크 이미지에 작업할 때는 항상 복사본을 사용하라고 안내한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요