1. aFBA

소스코드 : https://github.com/Cpasjuste/libafba

바이너리 : http://android.mydedibox.fr/afba/aFBA.apk

aFBA는 여러 안드로이드 아케이드 에뮬레이터 중에서도 Tiger Arcade나 다른 아케이드 에뮬레이터를 제치고 가장 최적화된 에뮬레이터로 꼽히는 에뮬레이터입니다.

사실 아케이드 에뮬레이터의 본좌는 Mame입니다. 하지만 안드로이드용 mame는 속도가 아직까지는 별로더군요. Mamedroid 외에더 mamedroid reloaded란 것도 나왔지만 롬 호환성만 좋아졌을뿐 aFBA에 비하면 그렇게 성능이 좋지 못합니다. aFBA는 아케이드 에뮬레이터 중에서 Final Burn이란 에뮬레이터를 기반으로 하는데 cps1,2 pgm, neogeo같이 그럭저럭 잔뼈 굵은(pgm이 메이저 급이었던가요?)기판은 지원하지만 마이너한 기판은 가차없이 미지원입니다. 이를 기반으로 했기에 aFBA도 마찬가지로 일부 메이저 기판만 지원합니다. 하지만 성능은 우월합니다. 넥서스원에서도 메탈슬러그3를 무사히 돌려서 게임이 가능했으니까요. MetalSlug3가 오래된 게임이기는 하지만 Mamedroid에서는 게임플레이가 도저히 못해 먹을 수준이었지만 aFBA는 아주 훌륭했습니다.

 TigerArcade와의 비교에도 aFBA가 압승이더군요. 지원기판수도 비슷한데다가 타이거 에뮬레이터는 구하기도 어려운편이라 그냥 이렇게 사장되어가는 분위기입니다. 심지어 aFBA는 오픈소스라 사라질 염려도 없습니다. 한때 나마 유료로 판매했던 neoDroid도 이거에 밀리더군요. 아마도 aFBA는 소스코드가 있는한 계속적인 업데이트도 가능하리라 보는데 최근 업데이트가 없는듯 합니다. 그도그럴것이 cps나 네오지오나 새로운 게임은 나오지도 않는데다가 킷캣에서도 민망할정도로 잘 돌아가고 있어서 커밋할 필요성을 못느껴서 그런듯합니다. 롬셋이 급변하지 않는이상 12년 버전인 1.6이 장수할 것 같네요. 

전체적인 인터페이스도 다른 에뮬레이터에 비하면 환상적입니다. 너무깔끔해서 에뮬레이터가 아니라 어느 웹페이질 보는 듯합니다. Tiger시리즈가 투박한 인터페이스를 자랑한거에 비하면 거의 깔끔하게잘 만들었습니다.


만약 속도가 느리다면 게임내에서 한번 뒤로를 누른 다음 위쪽 도구 상자중에서 두 번째 버튼을 터치 그리고 none을 고르시면 확실히 성능이 나아짐을 보입니다. 사실 이것은 브라운관 느낌이 나도록 하는 필터가 작동하면 서 생긴 일종의 프레임 하락인데 게임하면서 굳이 필요없는 필터를 제외함으로써 프레임의 이득을 보고자 하는 것입니다. 필터가 빠짐으로써 게임이 약간 깨끗해 보이는 효과도 얻을 수 있습니다. 만약 원한다면 더 깔끔하게 보이게 하는 필터를 적용해도 좋습니다. 다만, 이때는 성능이 좀 좋아야 히겠지요.


지원게임은 MAME가 지원하는 게임이면 됩니다. 다만, 기판이 CPS1,2 NeoGeo, PGM 그리고 이들보다 이전의 물건인 경우 정도만 가능합니다. Finalburn지원 리스트를 보시는 것이 더 빠르겠군요.





다음 포스팅에는 포켓몬스터 6세대를 스마트폰으로 가능 하게한 drastic과 nds4droid에 대한 포스팅을 해보도록 하겠습니다.

,

Android-x86은 초창기에는 그래픽도 가속이 안되고 호환되는 프로그램도 상당히 적었으며 어떤경우에는 비정상 작동으로 작동이 중지되기 하는 말 그대로 테스트 그 이상 그 이하도 안 되는 OS였습니다. 1.6때 말그대로 그냥 돌아가는 것이 신기한 그런 OS였는데 2.3부터 그래픽가속을 시도하더니 4.2 젤리빈에 들어오면서 리눅스와 동일한 KMS도 지원하기 시작했습니다. 4.4킷캣인 지금은 일단 가속이 지원만 된다면야 네이티브로 빠르게 동작하는 안드로이드를 볼 수 있습니다.

문제는 가속이 지원되는 카드가 생각보다는 적다는 것입니다. 초창기 인텔(i915)만 지원하던 때보다야 낫지만 지금도 그렇게 네이티브 해상도를 만들어 내지는 못합니다. 심지어 radeon모듈에서 지원하는 카드의 경우 일부 칩셋에서 정상적으로 동작되지 못하는 현상이 발생하기도 합니다. KMS를 끌경우 부팅은 되지만 화면이 나오지를 않고 KMS를 켜면 화면은 나오나 심하게 깜빡거려서 쓸 수 없는 상태가 됩니다. 문제는 바로 여기서 터진다고 봅니다.

어쨌건 그래픽가속이 되는 순간 해당 x86머신은 안드로이드가 정상적으로 작동하면서 지금까지 만들어져왔던 수많은 모바일 페이지와 모바일 앱을 이용할 수 있게 됩니다. Genymotion같은 가상화 도구 없이 안드로이드 단독 네이티브 OS로써 말이지요.

앱호환성도 많이 개선되었습니다. MX플레이어의경우 x86용 코덱을 따로 제공해주고 있습니다. 이것을 이용함으로써 소프트디코딩도 완벽해집니다. 참고로 x86은 하드웨어 코덱이 그냥 없다고 보는 것이 좋습니다. 가속도 지원이 잘 안 되는 판군에 GPU영상 가속은 그냥 없는 셈 치셔야지요.

그리고 만약 x86바이너리가 지원이 안 되어도 인텔이 ARM호환 라이브러리(libhoudini)를 만들어서 x86기반 스마트폰에 테스트 겸 샘플 겸 넣었기 때문에 이것을 이용하면 ARM바이너리도 실행이 가능해 집니다. 일부 앱은 여전히 작동이 안 됩니다만(대표적인 것이 Unity3D엔진을 이용한 모바일 게임입니다.) 앵그리버드 같은 NDK를 직접 이용한 앱은 거의 잘 작동합니다. 같은 Unity3D라도 아스팔트는 잘 작동하는 것을 보면 게임마다 조금 다를지도 모릅니다.

하지만 libhoudini는 인텔에 저작권이 있으므로 함부로 배포해서는 안 됩니다. 오로지 인텔의 공인된 롬만이 해당 라이브러리를 이용할 수 있습니다. Buildroid나 Genymotion의 경우에는 이 라이브러리를 따로 가상 시스템에 적용하는 것으로 저작권을 피해갔습니다. Gapps와 비슷한 경우이지요. 하지만 이 라이브러리도 안드로이드 버전이 올라갈 때마다 호환성 체크를 해야만 하며 인텔이 2.3진저브레드용 이후로는 제공을 안 하는 것으로 보입니다. 4.0시절에는 2.3호환패치를 따로 적용해야만 이 라이브러리가 작동했던 것으로 알고 있습니다. 지금은 패치가 기본 적용되어 배포됩니다만 여전히 불편하게 따로 적용해야만 하는 것은 동일합니다.

일단 제 예상입니다만 대부분의 안드로이드 어플은 C를 사용하지 않고 오로지 JAVA만을 사용합니다. JAVA만의 어플은 분명 잘 작동할 겁니다. 그건 JAVA의 특성상 바이트코드는 동일하고 자바VM만 포팅되면 어디서든 잘 작동하니까요.

하지만 대부분 게임류나 그래픽작업용 어플은 C가 필수적으로 들어가서 칩셋 호환성 패치가 필요합니다. libhoudini가 어디까지나 강력한 x86칩셋의 힘을 이용했기에 정상적으로 되는 것처럼 보이지 성능이 조금만 떨어져도 엄청 기어가는 모습을 보이곤 합니다. 기본적으로 강력하니까 그냥 묻어버리는 수준인 겁니다. 그도 그럴 것이 바이너리를 번역하는 과정이 필요한데 이게 아무리 빨라봐야 네이티브 작동에 1/2정도로 떨굴 수 밖에 없을 겁니다.

일단 센트리노1.2GHz 2GB메모리 노트북에 작동시켜본 결과 가속이 안 잡혀서 화려한 효과가 들어가는 순간 답답한 화면만이 나옵니다. 하지만 이 정도면 그래도 그럭저럭 인터넷 쇼핑도 가능할 것으로 보입니다. 까놓고 말해서 OSX나 PC용 리눅스보다 안드로이드가 인터넷쇼핑하기에는 100배 낫습니다. 은행도 물론이고요. 브라우저 호환안 된다고 칭얼대봐야 들어먹지도 않는 시절때와 비교하면 많이 발전했네요. 그 와중에 nProtect는 왜 설치하라고 하는 것일 까요. OSX나 리눅스는 윈도나 안드로이드에 비하면 엄청 튼튼하게 만들어진 OS인데 (안드로이드는 프레임워크 버그로 인해 허구한날 보안이 뚫리고 합니다. GingerBreak같은 것이 대표적입니다.)nProtect를 설치함으로써 이 보안이 도리어 박살 나는 것은 아닐지 조심스럽게 고민해 봅니다.

만약 은행업무나 인터넷쇼핑이 필요하다면 가상머신을 이용해서 안드로이드를 돌려보는 것도 나쁘지는 않겠네요. 굳이 그래픽가속 필요없다면 Virtualbox용으로 만들어진 이미지로 바로 구동하면 OSX나 리눅스데스크탑에서도 얼마든지 결제까지 끝낼 수 있습니다. 하지만 모바일 게임은 Genymotion도 그닥 빠르지는 않네요. 쓸만은 하지만 그래도 약간은 모자라 보입니다. 게다가 Genymotion 실행을 막는 게임도 나왔으니 도리어 게임에 쥐약이 될 수 도 있습니다. 그러니까 게임을 제외한 나머지로는 사용 가능이라고 합격점 주고 싶네요.

,

안드로이드에서 데비안을 쓸 수 있게 하는 어플이 있습니다.

https://play.google.com/store/apps/details?id=com.cuntubuntu&hl=ko

이름은 Debian noroot

어? 왜 noroot가 붙었지? 라고 하시는 분이 있을 것이라 생각되어 한가지 말씀드립니다. 사실 안드로이드에서 리눅스 배포판을 쓰고자 하는 시도는 계속 있어왔습니다. 처음 성공한 것이 chroot를 이용해서 안드로이드에서 arm버전 배포판을 SDCARD에 설치. 커널을 제외한 나머지 라이브러리를 이용하는 방식이었습니다. 특징으로는 X를 설치해도 VNC등의 원격조작을 사용하지 않으면 GUI를 쓸 수 없었다는 것입니다.

이 방법은 chroot를 이용하기 때문에 당연히 안드로이드가 루팅이 되어야만 했고 시스템에 몇몇 프로그램이 돌아가야만 했습니다. 특히 네트워크 관련은 당연히 설치되어있어야 GUI고 SSH고 사용할 수 있었습니다.

하지만 이 어플을 이용한 방식은 조금 다릅니다. SDL을 이용해서 GUI를 바로 안드로이드 화면에 뿌립니다. 즉, 게임 등에서 자주 사용하는 그래픽 라이브러리를 데스크탑 구현에 쓰는 것입니다. 이전에는 우분투를 쓰게 해주었다는데 워낙 우분투가 버벅거려서 데비안으로 바꿔버렸다는 후문이 있습니다. VNC로 GUI하던 방법에서는 워낙 VNC가 느려서 우분투를 이용하든 데비안을 이용하든 사용자경험은 거기서 거기였는데 SDL로 바뀌면서 차이가 생긴 듯 합니다. 아무튼 데비안+XFCE 환경이 설치되며 일단 아쉽게도 사운드는 지원되지 않습니다. 이런 방식을 이용한 프로그램이 따로 이용되고 있는 듯 한데 이것을 이용하는 몇 가지 방법을 알려드리고자 합니다.

1. 오래된 스마트폰 웹서버로 사용하기

오래된 스마트폰은 루팅을 하던지 그냥 쓰던지 상관은 없습니다만 SDL을 사용하면서 GUI로 서버관리가 가능해 졌습니다. 아파치와 PHP를 설치하고 mariaDB를 설치하여 DB를 이용할 수 있게 함으로써 웹서비스에 필수인 3가지는 설치가 바로 됩니다. 여기에 SSH를 설치하면 외부에서 커맨드를 이용해서 관리도 가능해집니다.

즉, 이런 식으로 사용하시면 됩니다.

1) 스마트폰에 Debian noroot 설치 및 실행하여 Debian 환경 구성

2) Debian 진입 후에 루트터미널 실행(XFCE환경이므로 메뉴를 누른뒤에 Application일 터치하면 Root Terminal을 실행할 수 있습니다.)

3) apt-get install ssh apache php5 mariadb

4) 위의 명령어로 ssh와 apache, php5, mariadb 설치

5) ssh를 위해 사용자 설정하기
adduser [사용자이름]

6) /etc/sudoers 를 수정하여 [사용자이름]이 바로 sudo 명령어를 쓸 수 있게 하십시오. 맨 아래줄에

[사용자이름] ALL=(ALL) ALL

이라고 적어주시면 됩니다.

7) 스마트폰의 꺼지지 않게 충전기를 꽂아둘 것. 와이파이가 꺼지지 않도록 설정할 것.

8) 이제 마음대로 웹서버를 굴려봅시다.

2. Gimp를 실행하여 타블렛 비스무리하게 사용하기

1) 문제는 너무 화면이 작은 것입니다. 하지만 근성이 있다면 할 수 있습니다.

2) Root Terminal 실행 후 apt-get gimp 명령

3) 메뉴에서 Gimp실행 참 쉽죠?

3. 리눅스용 게임 즐겨보기

1)물론 x86전용은 안 되고 3D게임도 잘 안 됩니다. 그냥 2D 게임을 한 번 즐겨봅시다.

4. Octave를 이용한 계산하기

Octave는 오픈소스로 만들어진 Matlab클론입니다. Matlab이 궁하신 분들은 Octave를 사용하여 계산이 가능합니다.

1) Root Terminal 실행

2)apt-get install qtoctave

3)QTOctave 실행 물론 그래프로 출력까지 가능합니다.


Debian이 설치됨으로써 가능한 것이 정말 많습니다. 안드로이드폰을 다 썼다고 버리지 마시고 한번 기타 다른 용도로 활용해보시길 추천드립니다. 한번 약정 다 된 스마트폰에 새로운 숨결을 불어 넣어주자고요.

,

안드로이드에대한 첫 포스팅입니다. 첫 글부터 조금은 꺼림칙한 이야기를 해야할 것 같습니다.

안드로이드는 아시다시피 점유율1위의 스마트폰OS입니다. 이정도로 성공 할 수 있던 비결은 유저커스터마이징이 자유로웠기 때문이기도 합니다. iOS의 경우에는 오로지 애플이 만들어 놓은것만 쓸 수 있었지만 안드로이드는 오픈소스임을 십분 활용해 조금씩 유저커밋이 이루어졌습니다. 그러다 커스텀롬이란놈이 등장하게되지요. 제조사들과 통신사들의 입맛에 맞춰 마구 헝클어진 시스템을 갈아엎고 AOSP에 가까우면서 각종 유저편의기능들이 추가된 물건이 등장하면서 사람들은 환호했습니다. 그 대표선상에 섰던것이 바로 CyanogenMOD입니다. 제일 두드러졌던 진저브레드시절에도 신기한 기능들이 가득있었지요. 노티바를 아래에 만든다던가 락화면을 없앤다던가. 일단 모든 커스텀롬의 아버지라 불리며 대부분 커스텀롬들은 바로 이 CyanogenMOD를 기반으로 만들어졌습니다. 그리고 무료봉사로 개발자들은 이 CyanogenMOD팀에 커밋을 했습니다. 

그렇게 CyanogenMOD는 킷캣시절까지 계속 만들어왔습니다. 그런데 어느날 CyanogenMOD팀은 상용화를 발표하고 Cyanogen.co라는 회사를 차렸습니다. 그리고 몇몇앱의 소스를 내렸다고 하더군요. 

사람들은 아니 특히 xda개발자들은 분노했습니다. 오픈소스가 상용화되는건 자주 있는 일입니다. 하지만 닫혀진 소스의 일부는 봉사에 의해 커밋된경우가 많아서 CyanogenMOD를 떠나고자 한 사람들이 모여서 대체할만한 롬을 찾게 됩니다. 그게 omni입니다.그래서인지 요새는 omni기반으로 롬이 쏟아져 나오는듯 합니다. Omni도 나쁘지는 않습니다. 다만 과거의 데자뷰가 느껴지는것은 어쩔 수 없더군요.

Openoffice.org의 권한이 오라클에 넘어갔을때 기존 개발자들은 반발했고 이들은 새로운 프로젝트를 만들고 운영하기 시작했습니다. 이게 지금 우분투에 들어가는 LibreOffice입니다. 처음썼을때의 느낌은 오픈오피스에 무언가 빼먹은 느낌? 그런 느낌이 들더군요. 필요한건 다 있기는 한데 무언가 빠진것 같은 애매한 느낌이 들었습니다. 아마도 자바가 빠지면서 해당 기능이 사라지자 느낀 위화감이었을겁니다. omni도 써본결과 비슷했습니다. 무언가 빠진느낌. AOSP에 약간 더 첨가한느낌 그뿐이었습니다. 괘씸하기는 하지만 CyanogenMOD가 더 쓸만해보이더군요. 

하지만 omni는 가벼움을 무기로 삼는듯합니다. 아마도 CyanogenMOD수준의 커스텀기능은 없을지도 모릅니다. 다른롬도 개발되고 있으니 상관은 없겠지만 CyanogenMOD를 버리긴 제가너무 오랬동안 사용해왔던것 같습니다. 개발자들이 떠난 프로젝트는 망하기 마련입니다. 오픈오피스가 그러했기에 제 생각에는 CyanogenMOD보다는 omni를 밀어주는게 당연한 척도로 보입니다. 어떻게 해서든 omni를 적응해야 롬질이 자유로워질것 같습니다.

추가... 만약 커스텀롬 특유의 기능을 쓰려면 xposed framework를 설치하고 gravitybox를 설치하면 된다고 합니다. AOSP에 설치하는게 제일좋다고 하는데 omni는 커스텀된곳이 적으니 크게 충돌걱정없을 것 같습니다.

omni에 xposed framework를 설치해 봤는데 충돌은 없습니다(넥서스7) gravitybox도 설치했는데 시계가 두개가 뜬다거나 하는것 빼면 잘 돌아갑니다.시계가 겹치는것은 gravitybox에서 시계를 없애면 됩니다.

omni에 날개가 달린것 같군요. 아니 이럴거면 그냥 루팅된 스톡롬에 xposed framework설치하는게 나았으려나?

,