이 소스는 gngeo-0.7 버전에 기반한것으로 모든 라이센스는 gngeo의 것을 그대로 따릅니다.
SDL 로 만들어진 원본을 flascc에서 컴파일이 가능하도록 최소한의 수정을 하였습니다.
드라이버와 설정, 세이브데이터같은 시스템 파일들은 flascc의 vfs에서 동작하도록 수정되었고,
memalloc 을 memory.h 에서 stdlib.h 으로 교체하였습니다.
FP에서 구동을 위한 Console.as 가 추가되어 main loop 로직이 일부 변경되었습니다.
컴파일하기
1. flascc sdk에 포함된 genfs를 이용하여 vfs 폴더를 .as 파일로 추출한다.
FLASCC=~/flasccpath/sdk
PATH=~/flasccpath/sdk/usr/bin:$PATH
genfs vfs testvfs
2. 생성된 .as 파일을 .abc 로 컴파일한다. 이는 나중에 gngeo 파일들과 함께 링크하게된다. 만약 vfs 폴더에 스스로 게임 롬파일을 넣어두었다면 큰 용량 때문에 자바 컴파일러가 heap 에러를 발생한다. 이럴 경우를 대비해 heap의 크기를 늘려주는 비표준 옵션을 추가.
java -Xmx1G -jar $FLASCC/usr/lib/asc2.jar -merge -md -import $FLASCC/usr/lib/builtin.abc -import $FLASCC/usr/lib/playerglobal.abc -import $FLASCC/usr/lib/BinaryData.abc -import $FLASCC/usr/lib/ISpecialFile.abc -import $FLASCC/usr/lib/IBackingStore.abc -import $FLASCC/usr/lib/IVFS.abc -import $FLASCC/usr/lib/InMemoryBackingStore.abc -import $FLASCC/usr/lib/PlayerKernel.abc testvfsRootFSBackingStore.as -outdir . -out VFS
3. Console.as 를 .abc 로 컴파일시, 위에서 생성된 .abc 파일을 첨부한다.
java -Xmx1G -jar $FLASCC/usr/lib/asc2.jar -merge -md -import $FLASCC/usr/lib/builtin.abc -import $FLASCC/usr/lib/playerglobal.abc -import $FLASCC/usr/lib/BinaryData.abc -import $FLASCC/usr/lib/ISpecialFile.abc -import $FLASCC/usr/lib/IBackingStore.abc -import $FLASCC/usr/lib/IVFS.abc -import $FLASCC/usr/lib/InMemoryBackingStore.abc -import $FLASCC/usr/lib/PlayerKernel.abc -import VFS.abc Console.as -outdir . -out Console
4. 에뮬레이터 소스(./src)를 컴파일한다.
cd src
sudo make
Makefile 이 이미 Configure를 통해서 생성해놓은 상태입니다. 옵션은 MAMEZ80 와 GENERATOR68K 를 사용하며 i386 asm을 꺼놓았습니다.
뭐... 이 옵션이 마음에 안드는분은 직접 설정해서 컴파일 해보시길.
위의 옵션은 모두 ASM을 사용하지 않기위함이었는데.. 이때문에 super sai같은 이펙트들을 사용할 수 없습니다.
5. 위에서 컴파일하고 남은 .o 파일들을 모아서 .swf로 링크시키는 작업이 남았습니다.
gcc -I$FLASCC/usr/include/SDL -D_GNU_SOURCE=1 -DUSE_GENERATOR68K -DUSE_MAMEZ80 -O3 -Wall -Wno-unused -funroll-loops -ffast-math -g fileio.o pd4990a.o streams.o video.o profiler.o main.o star_interf.o memory.o mamez80_interf.o raze_interf.o timer.o frame_skip.o messages.o screen.o emu.o unzip.o neocrypt.o sound.o generator68k_interf.o debug.o state.o conf.o transpack.o pbar.o driver.o list.o gui_interf.o videogl.o cyclone_interf.o gp2x.o drz80_interf.o menu.o effect/libeffect.a blitter/libblitter.a ym2610/libym2610.a generator68k/libgenerator68k.a mamez80/libmamez80.a -lSDL -lz -lm -L$FLASCC/usr/lib -Wl,-rpath,$FLASCC/usr/lib -lSDL -lm -lvgl ../VFS.abc $FLASCC/usr/lib/AlcVFSZip.abc -symbol-abc=../Console.abc -emit-swf -swf-version=17 -swf-size=704x512 -o gngeo.swf
문제없이 링크가 되었다면 gngeo.swf 생성이 되었으니 플래시플레이어를 통해서 실행을 하거나 브라우져로 실행을 하면 끝.
'programming > as3neocd' 카테고리의 다른 글
GnGeo flascc port. playable release (0) | 2012.12.10 |
---|---|
플래시로 만든 네오지오 에뮬레이터 구동 (0) | 2012.12.10 |
C 에서 actionscript 로 변환시 매크로 문제. (0) | 2012.06.20 |
MC68000 에뮬레이셔닝 (0) | 2012.06.16 |
ISO9660 파서 구현 완료 (0) | 2012.06.13 |
WRITTEN BY