본문 바로가기

임베디드

SDL 게임을 돌려보자!

머리도 식힐겸 레트로 게임을 한번 해보자.

 

Tyrian이라는 세로 스크롤 슈팅 게임은 1995년 DOS용으로 발매되었다. 그 당시 게이머들의 평가 점수가 상당히 높았으며, 한국에도 많은 사용자가 있었음을 오래된 블러그 글들을 통해 알 수 있다.

2007년에 Open content license 형태로 게임 그래픽 Asset이 풀리면서 누구나 게임을 즐길 수 있게 되었다.

코드는 SDL 기반으로 포팅되어 어지간한 플랫폼에서 모두 잘 돌아가는 편이다. 심지어 ESP32 MCU 기반의 ODROID-GO에서도 동작한다.

 

Buildroot 패키지 관리자에서 Games항목 아래에 있는 OpenTyrian을 선택하고 빌드하면 SD 이미지에 게임 프로그램과 데이터가 함께 설치된다. Graphics library 항목의 SDL framebuffer console video driver, SDL_mixer, SDL_net, SDL_sound 패키지도 추가하여야 한다.

 

부팅후 아래와 같은 순서로 실행하면 박진감 넘치는 사운드와 함께 게임을 즐길 수 있다.

amixer set -c 0 Headphone unmute                                           
amixer sset 'Headphone' 100%
opentyrian

 

그런데 원본 그래픽 Asset은 320x200해상도 기준으로 작성된 것으로 보이며, x1, x2, x3 등 정수배 scaler만 지원하는 것 같다.

아래는 x2로 확대된 640x400 해상도에세 동작하는 화면을 캡쳐한 것이다.

FoxNux의 LCD는 1024x600이라 우측이랑 하단에 여백이 너무 많아 게임 몰입감이 너무 떨어진다.

x3 Scaler가 동작하게끔 아래와 같이 960x600 해상도 FB 설정값을 /etc/fb.modes에 추가해 주었다.

mode "960x600-0"                                 
        # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz
        geometry 960 600 960 600 32              
        timings 0 0 0 0 0 0 0                    
        accel true                               
        rgba 8/16,8/8,8/0,0/0                    
endmode   

추가후에 게임을 실행하면 다음과 같이 960x600 해상도로 LCD 화면에 거의 꽉 차게 나온다. 이제 게임하는 맛이 살아난다.

다음에는 좀 더 재미있는 NEOGEO 게임들을 돌려보아야 겠다.

gngeo 컴파일 방법은 OpenTryian 크로스 빌드 과정을 살펴보면 답이 보일것 같다.