라즈베리파이를 이용한 레트로파이 게임기 만들기!!


1. 준비물 : 라즈베리파이, MicroSD카드, USB조이스틱


2. 레트로파이 및 사용 프로그램

 - 레트로파이 https://retropie.org.uk/download/ 에서 다운로드

 

 * 라즈베리파이제로&제로W는 Raspberry Pi 0/1 다운로드 사용

 * 라즈베리파이 2/3B/3b+는 Raspberry Pi 2/3 다운로드 사용

 - Win32DiskImager 

win32diskimager-1.0.0-install.7z.001

win32diskimager-1.0.0-install.7z.002


3. 레트로파이가 다운로드 완료되었으면 Win32DiskImager 로 SD 카드에 설치


4. 설치가 다되면 SD카드를 라즈베리파이에 꼽은 뒤 전원을 ON한다.


5. 부팅이 되면서 연결된 컨트롤러 여부를 판단하고 설정하는 메뉴뜨면 컨트롤러 버튼을 설정한다.


6. 5번까지 설정이 끝나면 다음과 같이 레트로파이 메인화면을 볼 수 있다.


7. 이제 접속을 위한 SSH 설정과 WIFI 설정을 한다.

 - 레트로파이 메인화면에서 컨트롤러 A버튼을 눌러 설정화면으로 들어간다.

 


8. SSH 설정 

 1) 레트로파이 설정화면에서 RASPI-CONFIG를 선택한다.

 2) 아래와 같은 목록이 나오면 5번 Inserfacing Options를 선택한다.

 

 4) 그 다음에 나오는 목록에서 SSH를 선택한뒤 Enable 여부를 Yes로 선택한다.

 


9. WIFI 설정

 1) 레트로파이 설정화면에서 WIFI를 선택한다.

 2) 아래와 같은 화면이 나오면 no를 선택한다.

  

 3) WIFI 설정 목록이 나오면 1번 Connect to WIFI network를 선택한다.

 

 4) 접속할 수 있는 WIFI AP 목록이 뜨고 사용할 AP를 선택한다.

 

 5) AP의 접속 비밀번호를 입력후 OK를 선택하면 아래와 같이 아이피가 설정된다.

 

 

 6) Exit를 선택해  WIFI 설정을 종료한다.


10. 9번까지의 설정이 완료되었으면 PC에서 \\아이피(ex:\\192.168.xxx.xxx)를 입력하여 레트로파이에 접속한다.


11. roms 폴더하위의 원하는 게임기별 폴더에 게임rom을 복사하여 추가한다.


12. 복사가 완료되었으면 레트로파이 메인화면에서 컨트롤러 start버튼을 눌러 에뮬을 재시작!


13. 재시작이 되면 레트로파이 메인화면에 각 게임기 목록이 보이고 게임기를 선택하면 게임 목록이 나와 게임을 플레이 할 수 있다.

Posted by Duritz
윈도우즈에서 파일을 에디팅후 유닉스로 옮길 경우 ^M 때문에 에러가 발생하는 경우가 있다.

특히나 sh 프로그램에서 변수값 입력후 뒤에 ^M이 붙어 에러가 발생한다. 

예를들자면

test.sh 이 있다.
이 쉘의 내용은 java -classpath /test/test.jar: Test 20110428 이라고 한다면
이것을 윈도우에서 에디팅 해서 유닉스에 넣어 vi 에디터로 볼경우
java -classpath /test/test.jar: Test 20110428^M 이렇게 나온다
그래서 변수값이 20110427^M으로 되여 문제가 발생한다.

이를 해결하는 방법은
1. sh을 에디팅할때 유닉스 vi로 첨부터 에디팅 한다.
2. 부득이하게 윈도우에서 했을 경우엔 vi test.sh 을 한후 :s /^M//g 라고 치면 ^M이 전부 공백으로 바뀐다.
 - :s 는 vi의 search 명령이다.
 - /a/b 는  a를 b로 바꾸라는건데 여기선 /^M/ 하였으니 ^M을 공백으로 바꾸라는 의미다
 - /g는 글로벌 옵션이다 sh 프로그램 전체를 뒤져서 전부 바꾸라는 의미가 된다.
 - 여기서 ^M은 키보드에 있는 ^와 M이 아니라 ctrl+v+m 이다. ^ 모양은 유닉스에서 ctrl+v 로 만들어 준다. 
Posted by Duritz
삭제 :  regsvr32 /u [dll or ocx file path]
등록 :  regsvr32 [dll or ocx file path]

'Program... > Develop Story' 카테고리의 다른 글

윈도우즈 -> 유닉스 파일 이동시 ^M 처리  (0) 2011.04.28
Posted by Duritz

I. 시작하기 전에
1. 현재 HTC 안드로이드폰에서만 작동하며 이후 버전은 다른 폰도 지원할 수도 있다.
  (이후 내용에 대해서는 여기서 다시 확인하기 바란다.)

II. VM을 다운로드하고 구성한다.
1. 여기에서 (맨위의 윈도우용) VirtualBox를 다운로드 한다.
   Link : http://www.virtualbox.org/wiki/Downloads
   Setup을 실행하고 next 버튼을 눌러서 설치한다.
2. VirtualBox를 열고 New를 누른다.
3. 새 VM에 원하는 이름을 지정한다.
   (간단한 설명을 위해 우리는 Linux로 지정했다.)
4. OS는 Linux를 선택하고 버전은 Ubuntu를 선택하고 next를 클릭한다.
5. Memory setting의 기본값을 그대로 두고 next를 클릭한다. (기본값은 384mbs)
6. Boot Disk 화면도 그대로 두어 부팅 하드 디스크와 새 하드 디스크 생성이 모두 선택되어진 채로 next를 클릭한다.
7. Linux 용량 설정 슬라이더가 나타날때까지 next를 클릭한다. 슬라이더를 8Gbs로 옮기고 next를 선택한다.
8. 완료되고 처음 시작했던 화면에 Linux Machine이 전원이 꺼진채로 다시 나타날때까지 next를 클릭한다.

III. VM에 Linux Ubuntu를 설치한다.
1. 여기에서 Ubuntu 9.1을 다운로드한다.
   Link1 : http://www.megaupload.com/?d=N0AYKU7N
   Link2 : ftp://ftp.kaist.ac.kr/ubuntu-cd/9.10/ubuntu-9.10-desktop-amd64.iso 64bit

2. 다운로드 되면 VirtualBox 프로그램상의 상단에서 Start 버튼을 클릭한다.
3. 모든 경고 창을 닫는다.
4. Devices > CD/DVD Devices > More CD/DVD Images 를 클릭하고 다운로드한 Ubuntu 이미지를 선택한다.
5. 이 없다?
6. 화면에 내용을 따라서 VM에 Ubuntu를 설치한다.
7. 설치가 완료되고 재시작한 후, Applications > Accessories > Terminal 로 가서 다음 내용을 입력하고 엔터키를 친다.:
   sudo apt-get install sun-java6-bin sun-java6-jre
   암호를 물어볼텐데 Ubuntu 설치시 생성했던 암호를 입력한다. (설치가 완료되기 전에 물어봤을 것이다.)
   그 다음 y/n 여부를 물어볼 것이고 y를 입력하고 엔터키를 친다.
   동의 내용과 조건들이 나타나면 키보드에서 오른쪽 방향키를 누르고 엔터키를 클릭해서 ok를 선택한다.
   그 다음 왼쪽 방향키를 누르고 엔터키를 입력하여 Yes를 선택한다.
*참고 - Ubuntu vm에서 키보드와 마우스를 사용하면 당신의 기본 컴퓨터에서는 작동하지 않을 것이다.
 다시 사용하려면 오른쪽 ctrl 버튼을 누른다.
* Java 파일 설치시 에러가 발생할 경우
  가상 Linux 상에서 다음 링크를 이용하여 수동으로 자바 파일을 다운로드 한다.
  Link1(Java6 Bin) : http://packages.debian.org/sid/i386/sun-java6-bin/download
  Link2(Java6 Jre) : http://packages.debian.org/sid/i386/sun-java6-jre/download
  그리고 나서 Ubuntu에서 Termial을 열고 다음 내용을 입력하고 엔터키를 친다.
  sudo dpkg -i sun-java6-jre_6.18-4_all.deb sun-java6-bin_6.18-4_i386.deb
  그러면 해결될 것이다.

IV. Android Rom Kitchen을 다운로드하고 설치한다.
!이 다음 내용은 VM의 Ubuntu 안에서 수행되어야 한다!
1. VM에 설치된 Ubuntu 상단의 Firefox 로고를 클릭한다.
2. url창에 다음 내용을 입력한다.
   theunlockr.com/2010/03/26/how-to-create-your-own-custom-rom-for-android-part-1-setting-up-the-kitchen
   (to navigate to this page from within the virtual machine)
3. 아래 링크의 첫 포스트에서 최신 kitchen 파일을 다운로드한다.
   (이 역시도 VM에 설치된 Ubuntu 안에서 실행한다. 그 이유는 이 파일을 Ubuntu 내에 설치하고자 함이다.
    기본 컴퓨터에 설치하는 것이 아니다.)
   Link : http://forum.xda-developers.com/showthread.php?t=633246
4. 다시 Ubuntu 상에서 방금 다운로드한 zip 파일을 찾아서 오른쪽 클릭후 'open with Archive Manager'를 클릭하고
   상단에서 Extract를 클릭한다.
5. Extract를 클릭하면 어디에 압축을 풀지 물어볼 것이다.
   Ubuntu 설치시 생성한 이름의 폴더를 더블 클릭한다.
   (내 사용자명은 theunlockr이었기 때문에 폴더명도 theunlockr이었다. 좌측의 'recently used'의 첫번째 폴더이다.)
   그리고나서 우하단의 Extract 버튼을 클릭한다.

V. Android ROM Kitchen을 실행한다.
1. Android ROM kitchen을 실행하기 위해서는 Ubuntu > Accessories > Terminal 상단에서 Applications를 클릭하고
   다음 내용을 입력한 후 엔터키를 친다.
   ./menu
2. 이제 간단한 텍스트 메뉴를 볼 수 있을 것이다.

VI. 당신만의 첫 custom ROM을 만들어보아라
 Hwo To : Create Your Own Custom ROM for Android, Part2 - Creating Your First Rom (다음편에....)

Posted by Duritz

이벤트 참여하기
이벤트 참여하기

Posted by Duritz

Posted by Duritz

http://theunlockr.com/2010/03/26/how-to-create-your-own-custom-rom-for-android-part-1-setting-up-the-kitchen/

http://theunlockr.com/2010/04/15/how-to-create-your-own-custom-rom-for-android-part-2-creating-your-first-rom/

슬슬 롬작업에 들어가 볼 예정이다...

하지만.. 이놈의 영어 울렁증... 뭐 대충 감은 온다...

발번역으로라도 해봐야할터... 주말에 달리는거야~~ ㅎㅎ

Posted by Duritz

HTC 디자이어 루팅 (Windows OS 기반)

 

Step 1. 골드카드 만들기

- 준비물 : 디자이어, 마이크로SD 카드, USB케이블, HTC Sync

              Java SDK http://java.sun.com/javase/downloads/widget/jdk6.jsp

              안드로이드 SDK http://developer.android.com/sdk/index.html

 

1) 디자이어 드라이버 설치를 위해 HTC Sync를 설치한다.

   (HTC Sync는 디자이어 구입시 SD카드에 저장되어 있음)

2) 이제 디자이어 설정에 들어가서 설정 - 응용프로그램 - 개발 - USB디버깅 체크후 PC와

   디자이어를 연결한다. 자동으로 드라이버 검색을 시작하고 설치가 완료된다.

3) 자바 개발툴킷인 Java SDK를 설치한다.

4) 안드로이드 SDK는 압축을 풀고 하드디스크 최상단으로 이동시킨후 편의를 위해 폴더명을

   AndroidSDK로 바꾼다. ( D:\AndroidSDK )  

5) 디자이어 케이블 연결모드를 디스크 드라이브로 변경 (화면상단의 알림창을 내려서 변경가능)

6) 내컴퓨터 - 이동식 디스크(디자이어디스크) - 마우스 우클릭 - 포멧 - FAT32로 포멧

7) 포멧 완료후 케이블 모드를 다시 충전만으로 변경

8) 4번에서 이동한 안드로이드SDK 폴더의 Tools 폴더에 들어가서 ddms를 실행한다.

   ( D:\AndroidSDK\tools\ddms.bat ) 

9) Delvik Debug Monitor 창이 실행되고 실행된 창 왼쪽패널에 단말기 표시가 되는지 확인,

   안된다면 다음으로 진행 불가. 정상으로 표시되면 ddms 실행창을 닫는다.

10) 윈도우시작 - 실행 - cmd 를 하여 도스창에서 안드로이드 SDK의 Tools 폴더로 이동

    C:\Documents and Settings\Administrator>d: (엔터) 

    D:\>cd AndroidSDK (엔터)

    D:\>cd tools (엔터)

    D:\AndroidSDK\tools> 

11) 그림과 같이 adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid 입력후 엔터

     정상진행이 되면 하단에 00035344535530384780704b6100008936 이런 형태의 값이 출력

12) 도스창을 그대로 두고 http://hexrev.soaa.me/ 로 이동하여 방금 나온 값을 입력한다.

     정상입력이 되면 아래와 같은 또 다른 값을 출력해준다.


13) 새로나온 값을 복사하고 http://psas.revskills.de/?q=goldcard 로 이동하여 이메일과 방금

     복사한 값을 입력후에 Generate Goldcard를 누르면 이메일로 Goldcard.img 파일이 온다.

     PC에 내려받기 해둔다.

14) 헥스에디터를 다운로드 및 설치한다.

15) 디자이어 케이블을 다시 디스크 드라이브로 변경 이동식 디스크로 되었는지 확인한다.

16) 14에서 설치한 헥스 에디터 실행, 상단 메뉴의 Extras - Open Disk 선택후 Physical Disks에서

     이동식 디스크 선택(read only를 해제)

17) 이번엔 Extras - Open Disk Image 선택후 이메일로 온 goldcard.img 파일을 선택

18) 상단의 메뉴중 Edit - Select All 로 전체선택한 후 Edit - Copy 선택하여 복사한다.

19) 1번 탭으로 이동하여 offset의 00000000 ~ 00000170을 선택(드래그)한다.

20) 선택후 상단의 메뉴의 Edit - Paste Write 선택하여 덮어씌기 후 File - Save 한다.

=> 골드카드 완성

 

 

=========================================================================================

=========================================================================================

 

 

Step 2. 루팅하기

- 준비물 : Desire_SKT_root_kit, 디자이어, USB케이블

* Desire_SKT_root_kit.zip 다운로드 분할압축 (업로드 중....)

1) Desire_SKT_root_kit 을 다운받아 압축을 풀어 나온 폴더를 디스크 최상위로 옮기고 편의를 위해

   이름을 RootingKit라고 폴더명을 바꾼다.  ( D:\RootingKit )  

2) 시작 - 실행 - cmd 를 실행 하여 도스창을 열고 1번에서 만든 폴더로 이동한다.

    C:\Documents and Settings\Administrator>d: (엔터) 

    D:\>cd RootingKit (엔터)

    D:\RootingKit>

3) 디자이어와 pc연결 케이블을 해제한 후 디자이어 전원을 오프한다.

4) Step 1 에서 제작한 골드카드를 삽입한 후 디자이어의 취소 버튼을 누른채 전원을 켠다.

5) 도스창에서 'step1-window.bat' 입력 후 엔터

   (케이블 연결시 새하드웨어를 찾는다면 완료때까지 대기 한 후 입력한다.)

6) 작업이 완료되면 다시 부트로더의 화면이 나온다. 그때까지 잠시 대기한다.

7) 완료후 디자이어의 배터리 분리, 골드카드를 빼고 다른 SD카드를 삽입한다.

    다른 SD카드가 없을시엔 골드카드를 포멧 후 다시 삽입한다.

8) 볼륨다운 버튼을 누른체 전원을 켠다.

9) 전원이 켜지면 볼륨다운키로 RECOVERY로 이동후 전원버튼으로 선택

10) 디자이어에 경고 이미지 화면이 나오면 도스창에 'step2-windows.bat'를 입력후 엔터

11) 작업이 정상적으로 진행이 되면 디자이어의 화면이 리커버리 모드로 전환된다.

12) Wipe 모드에 들어가서 맨 위부터 차례대로

    wipe data/factory reset

    wipe cache

    wipe Dalvik-cashe

    3가지 메뉴를 실행해서 캐시를 삭제한다.

13) Flash zip from SD를 선택하여 다음화면에서 rootedupdate.zip을 선택

=> 루팅 완료

 

=========================================================================================

=========================================================================================

롬업하기. 신규롬&버전업&패치

 - 준비 : SD카드 루트에 설치할 롬파일을 저장한다.

 1) 시작 - 실행 - cmd 를 실행 하여 도스창을 열고 1번에서 만든 폴더로 이동한다.

    C:\Documents and Settings\Administrator>d: (엔터) 

    D:\>cd RootingKit (엔터)

    D:\RootingKit>

2) 볼륨다운 버튼을 누른채 디자이어 전원을 켠다.

3) 전원이 켜지면 볼륨다운키로 RECOVERY로 이동후 전원버튼으로 선택

4) 디자이어에 경고 이미지 화면이 나오면 도스창에 'recovery-windows.bat' 실행

5) 신규롬일 경우는 Wipe 모드에 들어가서 맨 위부터 차례대로

    wipe data/factory reset

    wipe cache

    wipe Dalvik-cashe

    3가지 메뉴를 실행해서 캐시를 삭제한다.

    기존롬의 버전업롬(or 패치)일 경우에는 이부분을 수행하지 않아도 된다.

6) Flash zip from SD를 선택하여 다음화면에서 SD카드에 저장한 롬 선택

 
=========================================================================================

=========================================================================================

추가 팁. app2sd+를 위한 SD카드 파티션

1) 시작 - 실행 - cmd 를 실행 하여 도스창을 열고 1번에서 만든 폴더로 이동한다.

    C:\Documents and Settings\Administrator>d: (엔터) 

    D:\>cd RootingKit (엔터)

    D:\RootingKit>

2) 볼륨다운 버튼을 누른채 디자이어 전원을 켠다.

3) 전원이 켜지면 볼륨다운키로 RECOVERY로 이동후 전원버튼으로 선택

4) 디자이어에 경고 이미지 화면이 나오면 도스창에 'recovery-windows.bat' 실행

5) 리커버리 모드로 화면이 바뀌면 파티션 나누는 항목으로 이동한다.

6) 맨처음의 Patition SD 선택

7) swap size를 0으로 설정 (트랙볼을 위아래로 움직여 선택 가능)

8) ext2 파티션 용량을 원하는 만큼 설정한다 (512~1024 권장)

9) 나머지는 fat32로 설정하고 확인을 하면 파티셔닝 작업을 시작한다. (완료시까지 대기)

10) 파티셔닝 작업이 끝나면 ext2 -> ext3으로 파티션 업그레이드를 한다.

=> SD 파티션 완료


Posted by Duritz

public class ImageThumbnail
{
 private Image createThumbnail(Image image, int _thumbWidth, int _thumbHeight) {
  int sourceWidth = image.getWidth();
  int sourceHeight = image.getHeight();

  int thumbWidth = _thumbWidth;
  int thumbHeight = _thumbHeight;

  Image thumb = Image.createImage(thumbWidth, thumbHeight);
  Graphics g = thumb.getGraphics();

  for (int y = 0; y < thumbHeight; y++) {
   for (int x = 0; x < thumbWidth; x++) {
    g.setClip(x, y, 1, 1);
    int dx = x * sourceWidth / thumbWidth;
    int dy = y * sourceHeight / thumbHeight;
    g.drawImage(image, x - dx, y - dy,
    Graphics.LEFT | Graphics.TOP);
   }
  }

  Image immutableThumb = Image.createImage(thumb);

  return immutableThumb;
 }
}

Posted by Duritz

1. RMI(Remote Method Invocation - 원격 메소드 호출)
  -> 네트웍상에 있는 원격컴퓨터의 객체 메소드를 호출하는
  JAVA의 분산처리 방법(스펙/규격)

2. RPC(Remote Protocol Call - 원격 함수 호출)
  (1) SUN사에서 RMI보다 먼저 개발한 분살처리 기법
  (2) 언어와 Process 에 독립적(C언어에서도 사용 가능)
  (3) 플랫폼과 호환성이 있어야 하기 때문에 RMI보다 오버해드가 크다.
  (4) 시본(원시) 데이터 타입만 주고 받을 수 있다.
  (5) 객체 지향적이지 못하다.

3. RMI의 특징
  (1) 원격메소드 호출시 Reference Type도 주고 받을 수 있다.
   (단, 직렬화 가능한 객체만...)
  (2) 언어는 Java를 이용하고, 플랫폼에 독립적이다.
  (3) 보안성이 뛰어나다.
  (4) 객체 지향적이다.

4. RMI 프로그램의 절차
  (1) Remote Interface 정의
 <1> java.rmi.Remote 인터페이스를 상속
 <2> Client 에서 호출할 메소드를 정의하고 RemoteException 표기
 <3> 접근제한자를 public 으로 한다.
 (ex : 001day/Echo.java)

  (2) 구현 클래스 시작
 <1> UnicastRemoteObject 부터 상속(extends)
 <2> 미리 제작된 원격인터페이스를 상속(implements)
 <3> 원격 메소드를 구현
 <4> 기본생성자를 구현하고, RemoteException 표기(처리)
 <5> 접근제한자는 public 으로 한다.
 (ex : 001day/EchoImpl.java) // 아이엠피엘 임플리먼츠

  (3) Server Application 제작
 <1> 원격 객체를 생성
 <2> rmiregistry(Naming서버)서버를 start 시킴
 <3> 원격 객체를 rmiregistry 서버에 등록 시킴

  cf) <2>번은 직접 명령어로 실행시킬 수도 있고
   Server Application 프로그램에서도 할 수 있다.
  (ex : 001day/EchoServer.java)


   
  (4) Client Application 제작
 <1> 네이밍 서버에 등록된 원격객체를 찾는다.
 <2> 원격 객체를 원격인터페이스로 형변환
 <3> 원격인터페이스의 메소드를 호출
 (ex : 001day/EchoClient.java)
 
5. RMI 프로그램의 실행 절차 (다음과 같이 파일을 위치 시킨다.)
  (1) SERVER 폴더 [RMI서버 컴퓨터(시스템)을 의미]
 <1> 위치 : 인터페이스.java, 구현클래스.java, 서버.java
 <2> 실행
  > javac *.java
  > rmic 구현클래스
  > start rmiregistry
  > java 서버

  (2) CLIENT 폴더 [RMI클라이언트 컴퓨터(시스템)을 의미]
 <1> 위치 : 인터페이스.class, 클래스.java, 구현클래스_Stub.class
 <2> 실행
  > javac *.java
  > java 클라이언트
 
 cf1) 서버측에서는 Stub 객체가 필요없지만, 클라이언트측에서는 반드시 필요.

 cf2) 서버프로그램과 Naming 서버는 반드시 하나의 컴퓨터에서 실행되어야 한다.
   (Naming 서버를 먼저 실행하고 서버를 실행해야 한다.)

 cf3) 하나의 port에서 서비스되고 있는 Naming 서버의 여러개의 이름이 다른
   객체를 등록할 수 있다.
  - Naming.bind() : 기존에 같은 이름의 객체가 있으면 익셉션 발생한다.
  - Naming.rebind() : 기존에 같은 이름의 객체가 있으면 덮어쓴다.
  (ex: 001day/Echo_many폴더)
 cf4) 여러개의 port에서 Naming 서버를 동시에 실행가능하고 각각의 Naming 서버에
   여러개의 이름이 다른 객체들을 등록할 수 있다.
  (ex: 001day/Echo_port폴더)

 cf5) 인터페이스란? [1] 껍대기 [2] 통로 [3] 메뉴판

6. 예제
  (1) Echo를 이용한 비유
 <1> EchoImpl - 식당
 <2> EchoClient - 고객(객체찾기, 메뉴주문)
 <3> EchoServer - 식당주인(객체생성/Naming 서버등록)
 <4> Echo - 메뉴판
 <5> Naming - 114
 <6> e.sayEcho() - 고객이 주문할 것을 만드는 주방장
 <7> String sayEcho() - 음식

  (2) Count // 속성 int count 있음

  (3) Msg // 속성 String msg 있음

Posted by Duritz

공지사항

Yesterday
Today
Total
05-04 18:05

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31