'programming/as3gba'에 해당하는 글 1건

게임보이 어드벤스의 에뮬레이터중 VisualBoyAdvance (이하 VBA) 를 플래시 .swf 파일로 컨버팅하였습니다.

VBA는 두가지의 옵션으로 컴파일이 가능합니다. GTK와 SDL. 

사실 컴파일 옵션이 바로 직전에 작업했던 gngeo에 비해서 조금 까다로운편이었는데..

libpng 라이브러리를 1.5 미만의 버전으로 해야만 컴파일이 가능했습니다. 게다 GDB 지원으로 socket을 사용하는 코드중에서 도저히 찾을 수 없는 호출이 존재해서 이 부분은 주석처리.

평소에 쓰던 fink 툴로 libpng14를 설치하여 flascc와 섞어서 컴파일. 또한 2xsai 같은 필터도 같이 컴파일한 덕분에 비주얼도 출중해졌습니다.


as3gba.zip

VisualBoyAdvance.zip


컴파일 순서를 납겨보자면...

1. 노파심에 만든 vfs도 생성했습니다. 사실 gngeo 컨버팅하면서 사용한 것 재활용

genfs vfs testvfs

2. 위에서 생성된 .as를 .abc로 컴파일하고..

java -jar ~/flascc/sdk/usr/lib/asc2.jar -merge -md -import ~/flascc/sdk/usr/lib/builtin.abc -import ~/flascc/sdk/usr/lib/playerglobal.abc -import ~/flascc/sdk/usr/lib/BinaryData.abc -import ~/flascc/sdk/usr/lib/ISpecialFile.abc -import ~/flascc/sdk/usr/lib/IBackingStore.abc -import ~/flascc/sdk/usr/lib/IVFS.abc -import ~/flascc/sdk/usr/lib/InMemoryBackingStore.abc -import ~/flascc/sdk/usr/lib/PlayerKernel.abc testvfsRootFSBackingStore.as -outdir . -out VFS

3. 이걸 받아서 Console.as 를 다시 컴파일 했습니다.

java -jar ~/flascc/sdk/usr/lib/asc2.jar -merge -md -import ~/flascc/sdk/usr/lib/builtin.abc -import ~/flascc/sdk/usr/lib/playerglobal.abc -import ~/flascc/sdk/usr/lib/BinaryData.abc -import ~/flascc/sdk/usr/lib/ISpecialFile.abc -import ~/flascc/sdk/usr/lib/IBackingStore.abc -import ~/flascc/sdk/usr/lib/IVFS.abc -import ~/flascc/sdk/usr/lib/InMemoryBackingStore.abc -import ~/flascc/sdk/usr/lib/PlayerKernel.abc -import VFS.abc Console.as -outdir . -out Console

4. Makefile 생성를 위한 configure 를 실행하는데.. 아래와같이 조큼 많이 옵션을 추가

CXXFLAGS="-I/fink/include/libpng14 -DFINAL_VERSION=1" ./configure --disable-profiling --disable-gtk --disable-dev --disable-dependency-tracking --disable-sdltest --disable-nls --disable-rpath

5. 본격 에뮬레이터 소스를 컴파일 합니다.

make

6. 위에서 컴파일한 Console.abc와 VFS.abc 함께 에뮬레이터 소스를 .swf 로 엮으면 완성.. 화면사이즈는 2xSai 필터 때문에 기본 두배 사이즈로 결정하였습니다. 만.. 뭐 컴파일 하시는분 마음대로 고치시길. 그러보니 GBA 의 두배 해상도가 iPhone 3gs 해상도네요. 그 두배가 iPhone 4 레티나 해상도가 되겠지요.

g++ -fno-exceptions -I/Users/USER_ID/flascc/sdk/usr/include/SDL -D_GNU_SOURCE=1 -I/fink/include/libpng14 -DC_CORE -DFINAL_VERSION=1 SDL.o debugger.o 2xSaI.o Cheats.o EEprom.o Flash.o GBA.o Gfx.o Globals.o Mode0.o Mode1.o Mode2.o Mode3.o Mode4.o Mode5.o RTC.o Sound.o Sram.o Text.o Util.o admame.o agbprint.o armdis.o bilinear.o bios.o elf.o expr-lex.o expr.o exprNode.o getopt.o getopt1.o hq2x.o interframe.o memgzio.o motionblur.o pixel.o remote.o scanline.o simple2x.o unzip.o ../gb/libgb.a -L/Users/USER_ID/flascc/sdk/usr/lib -Wl,-rpath,/Users/USER_ID/flascc/sdk/usr/lib -lSDL -lm -lvgl -lpng -lz ../../VFS.abc ~/flascc/sdk/usr/lib/AlcVFSZip.abc -symbol-abc=../../Console.abc -emit-swf -swf-version=17 -swf-size=480x320 -o VisualBoyAdvance.swf



뭐.. 사용법은 ROM 버튼 클릭하고 .gba 파일이나 압축된 .zip 파일을 선택하면 START버튼이 나타나고 그걸 클릭하시면 됩니다.

방향키와 ENTER.. 나머지 버튼은 설정하지 않았는데.. 어딘가 기본값이 있긴 있을겁니다 -_-

마지막으로 스크린샷 몇장.








WRITTEN BY
buzzler

,