이 소스는 gngeo-0.7 버전에 기반한것으로 모든 라이센스는 gngeo의 것을 그대로 따릅니다.

SDL 로 만들어진 원본을 flascc에서 컴파일이 가능하도록 최소한의 수정을 하였습니다.

드라이버와 설정, 세이브데이터같은 시스템 파일들은 flascc의 vfs에서 동작하도록 수정되었고,

memalloc 을 memory.h 에서 stdlib.h 으로 교체하였습니다.

FP에서 구동을 위한 Console.as 가 추가되어 main loop 로직이 일부 변경되었습니다.


as3gngeo-0.7.zip

gngeo.zip


컴파일하기

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 생성이 되었으니 플래시플레이어를 통해서 실행을 하거나 브라우져로 실행을 하면 끝.


WRITTEN BY
buzzler

,