https://github.com/fogleman/nes 

이 곳에 NES ROM 에뮬레이터가 존재한다. go 언어 소스도 보고 어떻게 동작하는지 보려고 테스트해보았다.

바로 다운받으면 머큐리얼 클라이언트인 hg가 없다고 발생한다. 

$ go get github.com/fogleman/nes

go: missing Mercurial command. See http://golang.org/s/gogetcmd

package code.google.com/p/portaudio-go/portaudio: exec: "hg": executable file not found in $PATH



그래서, http://mercurial.selenic.com/ 에서 hg 다운로드받고 $PATH에 등록한다.

그 다음 dependency를 다운받는다.  (godeps가 왜 의미가 있는지 알게 된다.)


$ go get github.com/go-gl/gl/v2.1/gl 

$ go get github.com/go-gl/glfw/v3.1/glfw 

$ go get code.google.com/p/portaudio-go/portaudio 

# pkg-config --cflags portaudio-2.0

Package portaudio-2.0 was not found in the pkg-config search path. 

Perhaps you should add the directory containing `portaudio-2.0.pc' 

to the PKG_CONFIG_PATH environment variable 

No package 'portaudio-2.0' found 



portaudio이 패키지 패스에 없어서 소스 컴파일해서 pkgconfig path에 복사해보았지만.. 동작되지 않았다.


(이 방법은 쓰면 안되었음)

http://www.portaudio.com/download.html 에서 tgz 다운로드 (pa_stable_v19_20140130.tgz  최신 버전 )

http://portaudio.com/docs/v19-doxydocs/compile_mac_coreaudio.html 보고 따라하기

$ ./configure && make

portaudio-2.0.pc 생성

$ sudo cp portaudio-2.0.pc /usr/lib/pkgconfig/



그래서 brew를 이용하니 동작되었다.


brew install portaudio

sudo brew link portaudio



계속 진행해서 nes를 GOPATH에 만들게 했다. 

$ go get code.google.com/p/portaudio-go/portaudio 

$ go get github.com/fogleman/nes

$ which nes

/mydev/go/bin/nes



어렸을 때 했던 버블버블 nes rom 하나를 다운받아 실행해 보았다. 


$ /mydev/go/bin/nes BubbleBobble.nes



그리고, 소스에 눈이 가게 된다. ..

https://github.com/fogleman/nes 

Posted by '김용환'
,