라즈베리파이나 오래된 PC를 에뮬레이터 머신으로 만들어줄 수 있는 Lakka란 프로젝트가 있습니다. RetroArch란 온갖 게임콘솔과 아케이드를 에뮬레이터 해주는 프로그램을 이용한 것인데요. 다른 것은 모두 배제하고 최소한의 OS(Libreelec 기반)와 RetroArch만 올려서 만든 배포판입니다.



http://www.lakka.tv/


2017년 현재 RetroArch는 상당한 수준의 인터페이스와 엄청난 지원 범위를 자랑하고 있어서 오래된 PC나 저렴한 라즈베리파이에 게임패드를 연결한 다음 Lakka만 올려서 게임기로 만드는 경우가 늘고 있습니다.




그런데말입니다.

RetroArch의 PSP코어(통칭 lr-ppsspp라고 합니다.)가 옵션이 상당히 부실합니다. PPSSPP의 소스코드를 이용해서 에뮬레이팅은 상당수준이지만 PPSSPP자체가 아직 완전하지 않아서 게임마다 설정을 다르게 줘야하고 이런 저런 삽질을 동원해야하는데 RetroArch는 다른 콘솔머신도 지원해야하다보니 크게 신경을 못 쓰는 것이 현실입니다.


즉, 통합 에뮬레이터로는 훌륭하지만 특정 기기의 성능은 그리 좋지 못하다는 의미지요. 특히 PSP의 명작이라 할 수 있는 DJMAX시리즈의 경우에는 링크디스크나 IO문제로 PPSSPP의 많은 설정과 기능을 요구합니다. 하지만 RetroArch의 PSP코어에는 이런 기능이 없습니다. 그래서 RetroArch의 PSP게임을 굴리면 완벽하게 돌아가지가 않지요. 게다가 RetroArch는 Adhoc을 이용한 온라인 기능도 부실합니다.


그래서 생각한것이 아에 RetroArch같은 통합에뮬레이터 시스템이 아닌 PPSSPP만 올려서 PSP 전용콘솔머신을 하나 만들자!라고 생각했습니다. 그래서 삽질을 시작했습니다. PSP게임외에 다른 콘솔은 Lakka에서도 아무 문제없이 굴러가니까 그 쪽은 그냥 Lakka를 쓰면 될테니까요.


PPSSPP 그 자체도 인터페이스는 상당히 편리하게 되어있고 패드만으로도 모든 옵션을 선택할 수 있게 잘 만들어져 있습니다.


다른 에뮬레이터와 다르게 상당히 예쁘게 잘 만들어져 있다. 디자인이 현대적이라고 해야할까.


그래서 이참에 백라이트 나간 노트북을 부셔서(!) 콘솔머신을 하나 만들기로 했습니다.

그래서 다음과 같은 계획을 하나 짰습니다.



1. 하드웨어는 백라이트 나간 오래된 노트북으로 하고 이것을 TV에 연결해서 쓸 수 있도록 한다.


2. 게임은 PPSSPP만을 올려서 PSP게임만 지원하게 한다.


3. 컨트롤러는 오로지 게임패드로 (다행히 PPSSPP가 게임패드만으로 굴릴 수 있다.)


4. FTP서버를 하나 만들어서 게임을 FTP로 전송할 수 있게 한다. (SMB도 생각했지만 FTP가 더 안정적이었습니다.


5. 라이브모드만 지원하되 Persistent모드로 만들어서 넣자. (설정 저장을 위해)


6. 어차피 나만 쓸 거 보안은 신경 끄자.



여기서 제일 중요하게 여긴것은 1번과 6번입니다. 사실 보안까지 신경쓰기 시작하면 취미로 하는 것이 일거리가 되기 때문에 처음부터 신경을 껐습니다.


세로로 세우기 위해서 다이소 도마꽂이에 꽂았는데 딱 맞는다. 도마꽂이가 랩톱 세우는데 최고였다.


그렇게 오늘 저의 게임기가 되어주실 노트북은 인텔 코어2듀오 콘로 2.4GHz 메모리 2GB 저장용량 250GB의 제품입니다. GPU는 자그마치 인텔 내장 그래픽. 백라이트가 나가서 액정을 그냥 떼버렸고 안테나는 외부에 노출 시켰습니다.


어차피 TV뒤쪽 공간에 밀어넣을 예정이니 모양은 상관없습니다.


그리고 상세한 제작 과정은 다음과 같습니다.


1. OS는 Customize(https://github.com/kamilion/customizer) 로 우분투 Mini-remix(http://www.ubuntu-mini-remix.org/)를 기반으로 한다.


1.1 Customizer를 리눅스 PC에 설치한다. (따로 설명하지 않겠습니다.)

1.2 Customizer-gui에서 ISO선택을 누르고 우분투 Mini-remix이미지를 선택한다.


1.3 소스 수정버튼을 누르고 한국서버를 선택한 다음 multiverse와 universe를 추가한다.


1.4 세팅 탭에서 위치(?)를 ko_KR.UTF8을 선택해서 한국어기반을 갖출 수 있도록 한다.

1.5 나머지는 터미널 버튼을 누른다음 명령으로 때운다. (sudo apt-get update 등등)


2. Customizer에서의 터미널 창에서 최대한 다른 것은 배제해야 하므로 다음 명령으로 기반만 갖춘다.


sudo apt-get install xorg alsa alsa-utils mesa-utils jstest-gtk fonts-nanum

sudo apt-get install --no-install-recommeds pulseaudio pulseaudio-utils slim wicd networkmanager openbox


이렇게 함으로서

소리가 나고(pulseaudio, alsa)

그래픽가속을 하고(xorg mesa)

네트워크에 접속을하며(wicd networkmanager)

최소한의 GUI세션에 접속을 할 수 있게 됩니다.(slim openbox)


물론 기반만 갖추었고 설정은 하나~~~도 안 했기 때문에 건드릴 것이 많지요.


3. PPSSPP는 그냥 PPA를 등록한다음 설치

sudo add-apt-repository ppa:ppsspp/stable
sudo apt-get update

sudo apt-get install ppsspp-qt


add-apt-repository에서 에러가 날 텐데요. PPA등록전에

sudo apt-get install python-software-properties software-properties-common


이 명령을 먼저 내려서 PPA등록용 스크립트들을 설치하도록 합시다. 왠지 쓸데없는 것이 설치된 듯하지만 귀찮은 것보단 이게 더 낫습니다.


4. 게임 이미지 전송용 FTP서버를 설치한다. 어떤 것을 설치해도 상관은 없지만 vsFTPD를 설치하겠습니다.


sudo apt-get install vsftpd


4.1 vsFTPd 설정

 sudo nano /etc/vsftpd.conf


다른 것은 기본값 혹은 마음대로 해도 되는데


write_enable=YES


이 옵션 만큼은 무조건 이렇게 해놓는다.


4.2 자신 있으면 SAMBA를 설치해도 되는데 나는 귀찮으니 PASS


5. slim을 설정해서 자동 로그온이 되도록 하자. slim은 데스크톱 관리자로 우분투의 lightdm보다 더 가볍고 세션 관리가 쉽기 때문에 선택


sudo nano /etc/slim.conf


제일 아래줄에 이렇게 적는다.

auto_login    yes
default_user  ubuntu


여기서 defulat_user는 Customizer에서 설정한 라이브유저 이름이다.(기본이 ubuntu라 그냥 여기서도 ubuntu)


6. openbox의 autostart를 만들어서 PPSSPP와 네트워크 관리자 등이 자동으로 실행되게 만들자.


sudo nano /etc/skel/.config/openbox/autostart


여기에 쉘스크립트 형태로 만들면 로그온 할때마다 자동으로 스크립트 형태로 실행된다.

sudo usermod -a -G audio $USER
sudo usermod -a -G video $USER
wicd-gtk &
start-pulse-audio-x11 &
xterm &
ppsspp --fullscreen
sudo shutdown -h now


다른 프로그램은 뒤에 &이 붙어있는데 (wicd-gtk는 무선랜 접속을 위함 만약 무선랜이 필요없으면 지워도 됨) ppsspp --fullscreen 뒤엔 없는 이유는 그 아래 명령어가 ppsspp가 종료될 때까지 실행되지 않도록 하기 위함이다.


보면 알겠지만 sudo shutdown -h now는 시스템 종료 명령어이다. 즉, PPSSPP의 실행이 끝나면 자동으로 시스템이 꺼진다는 것! 물론 xterm이나 wicd-gtk가 같이 실행되고 있으므로 Alt-Tab키를 눌러서 빠져 나올 수는 있다. 하지만 PPSSPP가 꺼지면 시스템 종료로 이어진다는 것!


7. 이제 라이브 ISO파일을 만들자!

터미널에 exit를 쳐서 빠져나오고

Customizer에서 ISO다시빌드 버튼을 누르면 시간이 지난뒤에 /home 폴더에 Ubuntu~~.iso파일이 하나 만들어졌을 것이다. 일단 궁금하니 VirtualBox나 Qemu같은 가상머신으로 테스트해보자. 부팅후에 PPSSPP가 실행되고 PPSSPP를 끄면 시스템이 꺼질 것이다. 이것이 잘 만들어졌다면 큰 그림은 완성


8. 이제 디스크를 준비합니다.

머신에 넣을 HDD를 USB to HDD기기로 USB장치로 인식되게 하셔야 합니다. (즉, 노트북에서 HDD를 꺼낸다음 연결합니다.) USB to SATA장비는 2만원에서 4만원 정도 합니다.


대충 이런형태의 물건이다. 저기 있는 SATA포트에 HDD를 연결하고 전원을 넣은다음 USB를 연결하면 PC가 외장하드로 인식한다.

Gparted를 실행!


보통은 /dev/sdb 혹은 제일 뒤쪽에 있는 것이 USB-HDD이니 해당 디스크를 선택한다.


그리고 파티션을 3개로 쪼개는데 포맷은 모두 ext4로 한다. 첫번째 파티션을 호환성을 위해 FAT32로 해도 상관은 없지만 ext4가 안정성은 더 높다.


예시로 든 것이므로 굳이 똑같이 따라할 필요는 없다. 다만 home-rw 파티션을 넉넉히 해주는 것이 중요하다. 게임 이미지가 저장될 공간이기 때문.


이 때 제일 처음 파티션은 ISO크기보다 약간 큰 정도면 되고(즉, ISO내의 내용물이 들어갈 자리) 두번째 파티션은 레이블을 casper-rw로 하고 40GB이상으로 잡는다. 나머지 파티션은 레이블을 home-rw로 하고 모든 용량을 투입하도록 하자.


2017. 5. 29 추가

파티션을 나눌 때 약 메모리 용량의 2배 크기 정도의 스왑파티션을 만들어두자. 가끔 메모리 부족으로 PPSSPP가 튕기는 경우가 있는데 PPSSPP가 종료되면 autostart 스크립트가 작동하면서 시스템이 종료되어버린다. 스왑을 잡아두면 이런 경우가 현저히 줄어들게 된다. 즉, 일종의 보험인 셈.


9. Unetbootin설치 및 실행


sudo apt-get install unetbootin

위 명령으로 unetbootin을 설치하고 실행하자. 아직 USB-HDD는 연결을 끊었다가 다시 연결하도록 하자.


위 스크린샷 처럼 Diskimage 라디오 버튼을 누르고 오른쪽의 ...버튼을 누른다음 아까 만든 ISO를 선택한다. 아래의 Drive는 제일 오른쪽 숫자가 1이 되는 장치를 선택한다.

(/dev/sdb1 혹은 /dev/sdc1 같이)


왜냐하면 아까 편집한 파티션의 제일 처음(아무런 레이블도 안 붙였던 ISO크기 정도의 파티션)이 바로 시스템 파티션이기 때문


그리고 Space used to preserve files across reboots라고 있는데 이것을 1MB라고 해 놓는다. 이 옵션이 바로 Persistent Live옵션의 필수다.


10. 아직 끝나지 않았다! 부트 옵션 수정!!!!!


USB-HDD내용물을 보면 1번 파티션에 ISO의 내용물이 거의 그대로 들어갔음을 알 수 있을 것이다. 여기서 몇가지 작업을 더 하도록 하자.


syslinux.cfg 파일을 관리자 권한으로 열자.


제일 위에 Timeout 100 이라고 쓰인 부분이 있다. 확 줄이자. 100초는 너무 길다. 한 5초?


그리고 부트옵션 중 Default 아래에

append  file=/cdrom/preseed/ubuntu.seed boot=casper

요렇게 써있는 부분이 있다.

여기에 몇가지 내용을 더 붙이자.


append  file=/cdrom/preseed/ubuntu.seed boot=casper lang=ko_KR keymap=kr net.ifnames=0 biosdevname=0

이렇게 해주면 무조건 한국어로케일로 부팅하게 된다. 그리고 무선랜의 인터페이스 이름이 wlan0로 만들어져서 다른 시스템에서도 wicd가 똑같이 작동 할 수 있게 된다.


그리고 casper-rw란 1MB짜리 파일이 보일 텐데 이건 그냥 삭제한다.


권한이 어쩌고 하면그냥 관리자 권한으로 밀어버리면 된다.


11. HDD를 다시 PC에 넣고 부팅


가상머신에서처럼 똑같이 작동한다면 시스템 구축에 성공한것이다. 이제 게임생활을 시작하자...가 아니라 네트워크 접속을 해서 게임 이미지를 밀어넣어야 할 시간이다.




12. 키보드를 이용해서 Alt-Tab키를 눌러 wicd-gtk를 띄우자. 일단 네트워크에 접속을 해야 뭘 밀어넣던지 말던지 할 것이 아닌가. (유선랜의 경우에는 별다른 문제없이 그냥 바로 접속 될것이다.)


네트워크에 접속이 완료되면 아래에 Wicd 창 아래에 IP주소가 뜬다. 이것을 가지고 다른 PC를 이용해서 FTP로 밀어넣으면 된다.


FTP프로그램은 파일질라가 제일 좋은데 다른 클라이언트들이 접속이 끊어지면 파일 전송도 같이 끊어버리는 반면 파일질라는 재접속을 해서라도 파일 전송을 끝내주기 때문에 굉장히 안정적입니다.


호스트에 게임머신의 IP를 넣고 사용자명에 아까 라이브 유저(기본값: ubuntu)를 적고 연결을 하면 그냥 연결이 됩니다. 왼쪽 로컬 사이트에서 PSP게임 이미지를 찾은 다음 그냥 업로드를 하면 끝입니다. 업로드 되는 곳은 /home/ubuntu(라이브유저이름)입니다.


13. 이제 실행해 볼까?


아쉽지만 소리 문제가 있을 수 있습니다. 난 HDMI를 통해 소리가 나오길 원했는데 엉뚱하게 노트북 스피커로 나오면(...)


Alt-Tab을 눌러서 xterm창을 띄웁시다.

pacmd set-card-profile 0 output:hdmi-stereo


이렇게 치면 HDMI로 소리가 나오게 될 겁니다. 우분투는 HDMI연결 여부를 확인하고 알아서 스위칭을 해주는데 이쪽은 그런 기능따윈 만들어 넣지도 않았으니 그냥 수동으로 해주는 것입니다.


게임패드를 USB포트에 연결하면 알아서 연결이 될 것이고 PPSSPP상에서 설정을 약간 하면 이후로는 키보드가 필요없을 것입니다. 가끔 게임 이미지 밀어넣을때정도?


이제 마음껏 게임을 해볼까요??후후...


개인적으로 XBOX패드보다는 PS패드가 이 시스템에는 더 잘 어울린다고 생각합니다.

PSP말고 다른 콘솔도 하고 싶으시다고요? 그럼 그냥 LAKKA쓰세요.

,

보통 우분투 사용자 분들은 PPA를 통해서 설치하는 것에 익숙합니다. 소스 컴파일 설치 같은 것은 정 PPA 이용이 안 될 경우나 본인만의 패치를 적용해야 할 경우(예: 3D 프린팅 프로그램 : Curahttp://moordev.tistory.com/111) 뿐이며 대부분은 누군가의 봉사로 제공되는 PPA를 적극적으로 이용하고 계실 겁니다.

2016.6월 오늘 PSP 에뮬레이터인 PPSSPP를 우분투에서 PPA를 통해 설치 중 에러가 나서 이를 해결하기 위해 한 삽질을 간단하게 적고자 합니다.


PPSSPP 공식 홈페이지에서는 리눅스용 바이너리 외에도 PPA를 따로 제공중이다.


PPSSPP 공식 홈페이지에서는 Linux 버전의 배포를 Builds 버전과 PPA를 통해 배포하고 있습니다. PPA 버전은 메뉴에 자동으로 등록되는 등 설치시에 편한 것이 많습니다.저야 당연히 PPA를 통해 설치 하였고 게임을 구동중에 ESC 키가 전혀 먹히지 않는 버그를 발견했습니다. 즉 게임 설정을 못하는 문제가 생긴 것이지요.

바로 버그 리포트를 날리려고 했는데 혹시나 하고 찾아보니 이미 누가 리포트를 한 상태였습니다. 그래서 unstable 버전으로 바꾸면 해당 패치가 적용된 버전으로 설치 되나 했더니 여전히 상태가 안 좋습니다.

그래서 살펴본 결과 이러한 내용을 알게 되었습니다.

- PPA 버전은 Dev 버전보다 늦게 올라옵니다. 즉 Dev-latest 버전을 다운로드 받아야 해당 패치가 적용되는 상황이었던 것이지요. 그래서 Linux Builds 항목에서 Dev-latest 버전을 다운로드 받아서 해보니(http://build.ppsspp.org/builds/) 버그 없이 깔끔합니다.

하지만 이렇게 써먹으면 메뉴에 등록된 PPSSPP를 못 쓰게 됩니다. 그렇다고 방법이 없는 것은 아닙니다. PPA버전을 설치하고 실행 파일을 Dev 버전으로 갈아치우면 됩니다. 

일단 PPA를 통해 PPSSPP를 설치합니다.

sudo add-apt-repository ppa:ppsspp/stable

sudo apt-get update

sudo apt-get install ppsspp-sdl


이렇게 PPA버전을 설치하고 Dev-latest버전을 다운로드 받습니다.

http://build.ppsspp.org/builds/Linux-Generic/amd64/ppssppbuildbot-org.ppsspp.ppsspp-dev-latest-linux-amd64-generic.tar.gz

(64비트)

http://build.ppsspp.org/builds/Linux-Generic/i386/ppssppbuildbot-org.ppsspp.ppsspp-dev-latest-linux-i386-generic.tar.gz

(32비트)


그리고 관리자 권한으로 탐색기 프로그램을 하나 열어둡시다.

sudo pcmanfm /usr/games

sudo nautilus /usr/games

sudo thunar /usr/games

sudo dolphin /usr/games

기타 등등... 자신의 배포판에 맞는 명령을 사용하세요.

그러면 ppsspp-sdl이란 실행파일이 있습니다. 이것을 우선 이름을 바꿔 .bak파일을 붙여줍니다.

그리고 아까 다운로드 받은 Dev버전에서 PPSSPPSDL 파일만 빼놓고 여기에 복사합니다.

/usr/games 내에 있는 ppsspp-sdl 파일을 이름을 바꿔 버리자

다른 것은 버리고 이것만 빼내면 된다.

그리고 PPSSPPSDL 이 파일의 이름을 ppsspp-sdl로 바꿔주시면 작업 끝


이제 버그 없이 게임이 돌아갑니다.

,

저번 포스팅에서는 NDS 에뮬레이터에 대해서 포스팅을 했습니다. 우리나라에 NDS가 들어오던 시절에 또 다른 휴대용 게임기가 있었지요. 바로  PSP입니다. 제가 처음 PSP란 놈을 봤을 때가 아마 2000번대였던 것으로 기억합니다. 1000번대가 나오던 시절에는 제 친구들과 주변인 모두 가난한 학생이었고 굳이 PSP를 사야겠다는 생각이 들 정도로 재미있는 게임은 없었습니다. 즉, 견인차 역할을 해주던 메인 타이틀이 없었던 것이지요. 


그러다가 한국에서 견인차 역할을 해준 대중적(?) 게임이 하나 등장하게 됩니다. 그 물건이 바로 DJMAX Portable입니다. 저번 NDS 에뮬레이터 이야기에서 포켓몬스터가 주류로 나왔다면 이번 PSP에서는 이것이 주류로 나올 것입니다. 몬스터 헌터나 페르소나 시리즈도 PSP의 견인차 역할을 하기는 했지만 제가 Djmax portable나오기 이후의 이야기인데다가 제가 처음 PSP란 놈을 본 것도 다 DJMAX Portable시리즈 때문에 PSP를 사 들고 나타난 놈이 있어서 이 게임을 테스트 게임으로 삼아야 할 것 같습니다.


우선 에뮬레이터 이야기 하기 전에 게임기 이야기를 마저 하자면 PSP도 NDS 마냥 지하철 한 칸에 여러 사람이 들고 있지는 않아도 최소한 지하철을 생각 없이 돌아보면 들고 있던 사람이 보이는 그런 수준으로 꽤 많이 팔린 게임기 입니다. DJMAX Portable 출시 이후로는 학생들도 심심찮게 들고 다니는 모습이 많이 보이더군요. 그 뒤에 판매량이 좋아지고 2000번대와 3000번대 등의 신제품들이 나오면서 PSP도 휴대용 게임기로서의 역할을 충실하게 하게 됩니다. 물론 스마트폰들이 등장하면서 NDS와 함께 보기 힘들어진 같은 운명을 걷게 되기는 합니다. 하지만 역시 NDS와 마찬가지로 게임들 자체는 상당히 재미있는 것들이 많아서 인기 있던 게임기라면 통과의례로 겪는 에뮬레이터들이 만들어지게 됩니다. 그러나 구조가 비교적 간단했던 NDS와는 다르게 PSP는 생각보다는 복잡했던 모양입니다. 애초에 기기 성능도 조금 더 높고 게임 데이터 양도 훨씬 더 많아서 그럴 수 있겠다는 생각도 들지만 각종 홈브류(게임기 제작 업체로 부터 인증받아 정식 판매되는 승인된 게임이나 프로그램이 아닌 개인이 만들어낸 게임과 프로그램)들이 개발되는 것과 비교해서 에뮬레이터 개발은 비교적 늦은 편입니다. 그러다 어느날 한 에뮬레이터가 등장하게 됩니다. 그 이름은 Jpcsp입니다.


Jpcsp의 초기 화면 여느 프로그램 마냥 간단한 화면이다. 그런데 일부 라이브러리가 인식이 안 되서 구동하는데 조금 애먹었다.


PPSSPP 이야기 한다면서 갑자기 왜 Jpcsp 이야기냐고 하시는 분이 있을 것 같아서 말씀드립니다. 사실 PPSSPP가 지금의 호환성과 성능을 갖추게 되기 전까지 PSP에뮬레이터는 이 물건이 전부였습니다. 그리고 이 Jpcsp가 갖고 있던 문제는 PPSSPP가 해결하는 수순으로 갔고요. Jpcsp가 없었다면 지금의 PPSSPP가 나왔을 것이란 생각은 하기가 어려울 수도 있습니다. 그리고 다른 PSP에뮬레이터가 있었기는 했지만 이 물건이 가장 호환성이 좋았습니다. 다른 에뮬레이터는 그저 홈브류 개발 및 테스트용으로 만들어져서 홈브류를 구동하는 수준이었습니다. 하지만 Jpcsp는 본격적으로 정식 판매되는 UMD를 지원한는 에뮬레이터였습니다.


그런데 Jpcsp는 초기 단계라서 그런 것인지 문제가 여기저기서 터져나왔습니다. 이를 해결 하기 위해 정말 많은 사람들이 머리를 싸맸습니다. 지금은 Jpcsp의 태생적으로 해결이 안되는 것도 있고 PPSSPP가 해결한 문제도 있습니다.


첫번째 문제는 오디오코덱 문제입니다. PSP는 소니의 코덱기술을 사용하고 있는데 이것이 저작권 및 특허가 걸려있어서 에뮬레이터 개발에 문제가 되는 것이었습니다. 어느 분들은 에뮬레이터인데 그냥 가져다가 쓰면 안 되냐는 사람도 있을 지도 모르겠지만 에뮬레이터는 불법이 아닙니다. 하지만 특허가 걸린 기술을 가져다가 마음대로 사용하면 그 프로그램 자체가 불법으로 낙인 찍힙니다. 아니면 로열티를 내야 하는데 소니가 에뮬레이터의 로열티를 받으면서 허용해 줄 것 같습니까? 그래서 Jpcsp는 한동안 소리없이 에뮬레이터를 작동시켰어야만 했습니다. 이후의 사운드포지(소니가 만든 프로그램입니다.)의 라이브러리를 이용해서 우회하는 방안을 통해 재생시키는 법을 이용했지만 소리는 나와도 거의 누더기마냥 돌아가는 방식이라 가뜩이나 떨어지는 성능에 성능을 더 떨어뜨리는 방법이었습니다. 게다가 리눅스나 MacOSX는 써먹지도 못하는 방식이었고요. 지금도 오디오 코덱은 해결이 안 된 것으로 알려져 있습니다. 그런데 PPSSPP는 우회 리버스 엔지니어링으로 해결했다고 하네요?


두번째 문제는 자바로 만들어진 것입니다. 자바로 만들어서 여러 OS를 한번에 지원해주지만 문제는 자바이기에 속도가 C나 C++로 만들어진것에 비해 상당히 떨어집니다. 이 문제가 아까의 오디오코덱문제와 합쳐져서 엮이면 극악의 성능으로 바뀝니다. 요즘이야 PC성능이 좋아서 이 마저도 씹을 수 있을 정도지만 기기의 최고 성능으로 끌어내야할 게임이란 소프트웨어가 성능이 떨어진다면 문제가 많은 것이지요. 그래서 사람들은 C나 C++로 개발해달라고 아우성이었지만 Jpcsp가 원래 자바로 만든 에뮬레이터라는 뭔가 상당히 Geek스러운 물건이라 굳이 C로 다시 만들 이유야 없었습니다. 잠시 PCSP라는 C++로 만들어진 물건도 나왔지만 이것은 호환성이 너무 떨어져서 그대로 묻혀버렸습니다.

Jpcsp에 비해 빠르지만 호환성이 너무 떨여저서 묻힌 에뮬레이터 PCSP 이마저도 PPSSPP의 등장으로 2012년 이후 업데이트 중단이다.

세번쨰 문제는 오픈소스가 아니라는 것입니다. JAR파일 형태로 배포하기 때문에 만약 개발자가 때려치면 이 에뮬레이터의 수명은 그대로 끝이 나게 됩니다. 에뮬레이터의 특징 상 누군가가 소스를 받아주지 않으면 그냥 사라지는 것입니다. 위의 PCSP도 소스코드에 대한 이야기는 없는 것으로 보아 오픈소스가 아닌 것으로 보입니다. 오픈소스라면 묻히더라도 나중에 누군가가 다시 발굴해서 써먹을 지도 모를 일이고 다른 프로그램에 일부로써 쓸 수도 있습니다. 하지만 에뮬레이터라면 묻힐 일이 거의 없기도 하지요.


이러한 기존 Jpcsp의 문제를 극복하고 해결한 에뮬레이터가 바로 이번에 주인공인 PPSSPP입니다.


PPSSPP의 타이틀화면 다른 에뮬레이터랑 다르게 화려한 편이다. 그리고 오픈소스라는 것을 강조하기 위해 GPL이라 찍혀있는 것이 선명하다.

이 물건은 앞의 Jpcsp와의 차이가 큰 물건입니다. 앞에서 말했던 성능문제를 C/C++로 개발함으로써 해결했고 오디오코덱을 리버스엔지니어링을 통해서 저작권 및 특허를 회피했으며(이는 처음부터가 그랬던 것은 아니고 업데이트 하면서 해결했습니다.) GPL을 적용해서 배포한 오픈소스 프로그램입니다. 한번에 Jpcsp의 문제를 전부 해결했습니다. 이 에뮬레이터가 나오면서 게임을 즐기기위해 Jpcsp를 돌렸던 사람들은 전부 PPSSPP로 넘어왔다고 합니다.Jpcsp는 게임을 즐기기 보다는 자바로 만들어진 것이라는 그 사실이 워낙 특이하고 재미있어서 나온 것이니 Jpcsp가 묻힐 일은 없지만, 대세가 아무래도 PPSSPP로 넘어갔다는 사실은 확실히 와 닿는 것 같습니다.


그리고 PPSSPP가 Jpcsp뿐만아니라 다른 에뮬레이터와 차이를 보이는 것이 하나 더 있는데 그것이 바로 Android버전의 계획입니다. 다른 에뮬레이터는 안드로이드 버전과 PC버전을 다른 프로젝트로 생각하는데 비해(DeSmuME와 nds4droid, PCSX와 PSX4droid, FinalburnAlpha와 aFBA의 관계와 비슷합니다.)PPSSPP는 안드로이드버전도 같은 프로젝트 내에서 개발합니다. 즉, PPSSPP의 PC버전이 0.9.8이면 안드로이드 버전도 동시에 0.9.8로 업데이트 되는 것입니다. DeSmuME의 업데이트 이후 시간이 지난 후에 nds4droid가 업데이트되는 것과는 차이가 납니다. 덕분에 안드로이드에서 PSP게임을 돌릴 수 있게 됨으로써 지하철에서 보기 힘들어진 PSP는 스마트폰에 의해 또 다시 밀리게 됩니다. 그런데 이미 팔릴만큼 팔렸고 더 이상 소프트웨어도 안 나오는 판국에 밀릴 것도 없기는 하지만 PSP용 게임이 다시금 수요가 생길 지도 모른다는 생각이 드네요.(그것이 거래량에 추가 될지는 미지수이기는 합니다.)


그러나 같은 프로젝트 내에서 같이 업데이트되는 안드로이드와 PC버전은 코드가 약간 다른 것인지 소프트웨어 호환면에서 약간 차이를 보입니다. 일부 게임의 경우 PC버전에서는 구동이 잘 되지만 안드로이드에서 구동이 안 된다는 사람들이 많으며 반대로 안드로이드에서는 구동이 잘 되는데 PC에서 안 된다는 게임도 있습니다. 이것이 Arm과 x86의 차이일지 아니면 코드가 다른 것인지는 조금 살펴봐야 알 것 같지만, (일부의 소스코드가 다른 듯 합니다.안드로이드에서 무사히 구동하게 위해 코드 최적화를 하면서 차이가 생긴 듯 합니다.) 오픈소스이니 잦은 업데이트로 해결 할 수 있을 것이라고 믿습니다.


안드로이드와 PC 모두 잘 돌아가는 대표적인 게임 DJMAX Portable 2


PC에서는 잘 돌아가는 반면 안드로이드에서는 돌아가지 않는 DJMAX Portable 3 같은 시리즈지만 구동면에서도 차이가 있다. 2015.5 지금은 안드로이드에서도 무지하게 잘 된다...

안드로이드 버전에서는 써본 결과 터치 인터페이스가 상당히 불편합니다. 원하는 곳으로 이동이 안 될때가 있고 액션 게임의 경우에는 컨트롤 미스로 게임을 던져 버리고 싶을 때도 있더군요. USB-OTG를 지원하는 스마트폰이라면 그냥 조이패드를 붙여서 개임을 하던가 아니면 알아서 적응을 해서 게임을 하는 수밖에는 없을 듯 합니다. 특히 PSP는 워낙 버튼이 많아서 NDS게임을 스마트폰에서 하는 것에 비해 답답한 면이 많습니다.(NDS게임에는 대개 액션보다는 터치 게임이 많은 것도 한몫 합니다.) 이는 PPSSPP의 잘못이 아니기는 하지만 개인적으로 전용 컨트롤러를 하나 만들고 싶게 하는 수준입니다. 일반 조이패드를 끼우고 지하철에서 할 수는 없는 노릇이니까요.


버튼수가 너무 많아서 터치 인터페이스 자체를 거의 덮을 지경. 컨트롤 미스라도 나면 정말 화가 머리끝까지 난다.


하지만 내 학생시절 부러워 했던 PSP를 지금의 스마프폰에서 굴릴 수 있게 된 점은 상당히 마음에 듭니다. 특히 DJMAX Portable시리즈를 입맛만 다시고 제대로 한 적은 없는데(대신 PC버전인 Trilogy는 열심히 했습니다.)이제야 할 수 있게 되었네요. 누군가 그랬습니다."최고의 게임기는 PC"라고 그랬지요. 이제 한 문장 더 추가되어야겠네요. "최고의 휴대용 게임기는 스마트폰입니다."

,