이 글은 단지 소개일 뿐입니다^^ 사실 저도 정보만 모았을 뿐 실제로 GBA 프로그래밍을 해보진 않았습니다... - 류광
여기서 말하는 GBA(GameBoyAdvance)용 게임 개발은 닌텐도와 정식 라이센스를 맺고 진행하는, 상업적인 목적의 게임 개발을 말하는 것이 아닙니다. PC(윈, 리눅스, 맥 등) 상에서 GBA용 게임 롬을 만들고 그것을 에뮬레이터로 돌리는 방식의 게임 개발을 말합니다.
이런 활동이 어떤 의미가 있을까요? - '여러 가지' 의미가 있습니다^^
첫째는 아주 재미있는 취미 활동이 된다는 것입니다. 뭐 윈도우즈용 게임을 개발해서 공개하고, 의견을 받고, 유명해지고, 등등등도 보람있는 일이지만, GBA라는 잘 설계된 게임 플랫폼을 위한 게임을 만들어서 스스로 즐기고 다른 사람들과 공유하는 것도 무척 재미있는 일이라 생각합니다.
두번째는 훌륭한 학습/수련 과정이 된다는 것입니다. 새로운 플랫폼에 대해, 특히 하드웨어와 좀 더 밀접한 플랫폼에 대한 게임을 만든다는 점에서 많은 공부가 될 것입니다(에뮬레이터 상으로 돌린다고는 하지만, 최근 GBA 에뮬레이터의 품질이 매우 뛰어나므로 많은 것들을 얻을 수 있을 것입니다). 또한 한 플랫폼에서 다른 플랫폼을 위한 소프트웨어를 만드는, 즉 '크로스플랫폼 개발'을 경험할 수 있다는 점도 큰 매력이 될 것입니다.
세번째는... 누가 압니까? 자신이 일하는 회사가 갑자기 GBA 시장으로 진출할 수도 있고, 또는 누가 스카웃하러 올 수도 있다는..^^
그리고 남들이 별로 안하는(적어도 국내에서는) 분야를 먼저 개척한다는 점도 매력이고.. 그럼으로써 최초의 한글이 나오는 GBA 게임을 만들어 낸다는(비록 비공식이라 하더라도) 성과를 올릴 수도 있겠죠...
흥미를 느낄만한 예를 하나 소개할께요.. GBA 에뮬레이터를 하나 구하시고, 이 테스리스 게임(http://www.gbadev.org/demos/Tetris.zip)을 한 번 해보시길.... 공식 롬팩으로는 나온 적이 없는 오리지널 작품입니다. VisualBoy Advance(http://vboy.emuhq.com/)라는 에뮬레이터로 잘 돌아갑니다.
GBA용 게임을 만든다는 것은 GBA가 로드하고 실행할 수 있는 ROM 이미지를 만드는 것입니다. 물론 GBA 상에서 직접 개발을 하는 것이 아니라, 다른 범용 OS 상에서 ROM 이미지를 만들어서 에뮬레이터로 테스트하거나 특별한 하드웨어를 이용해서 GBA에 다운로드하는 것입니다. 이를 위해서는 일반적인 개발 도구들과는 좀 다른 도구들이 필요합니다...
(참고: 아래 사항은 그냥 참고로 읽으시고, 현실적으로는 페이지 아래에 소개된 Ham Devkit을 사용하면 될 것입니다 --류광)
GBA는 32비트 RISC 프로세서인 ARM7TDMI라는 CPU를 사용하므로, 기본적으로 ARM용 컴파일러 도구들(어셈블러, 링커 등등도 포함)이 필요합니다.
ARM용 컴파일러 도구들에는 ARM사가 만든 것이 있고, ARM용 이진 코드를 생성할 수 있도록 수정된 GCC 패키지가 있습니다. ARM사의 것은 Arm SDT 2.50 라는 패키지인데, 상용 도구입니다. 평가판도 있고 평가판의 본질적인 버그를 수정하는 패치(^^)도 존재합니다만, 그런 방법은 권장하고 싶지 않습니다.
Arm SDT 2.50 평가판은 ARM 사의 홈페이지 http://www.arm.com/ 에서 구할 수 있습니다.
그리고 Arm용 코드를 생성할 수 있는 GCC 패키지가 존재합니다. 흔히 Arm/Thumb GCC 또는 그냥 Thumb라고 하는데, 소스 코드가 공개되어 있으며 미리 빌드된 패키지도 구할 수 있습니다. 여러 사람들이 나름대로의 방식으로 GCC 소스를 빌드하고 여러 유틸리티들을 묶어서 공개하고 있기 때문에 좀 혼란스러운데, 일단 주목할 것들은:
둘 사이의 구체적인 차이는 잘 모르겠네요. 어쨌든 GBA 게임 개발에 필요한 거의 모든 도구들이 포함되어 있다고 합니다.
ARM STD와 ARM/Thumb 중 어떤 것이 더 좋은가는... 기능 상의 문제로 본다면 여러 가지 의견이 많겠지만, 비용이라는 문제를 본다면 당연히 Thumb를 선택해야 하겠죠....
어찌어찌해서 ROM 이미지를 만들었다면 실행해 봐야겠죠... 그럴 때 기본적으로 필요한 것은 에뮬레이터입니다. GBA 에뮬레이터는 여러 종류가 있으며, 검색 엔진에서 'GBA 에뮬' 같은 키워드로 검색을 하면 쉽게 찾을 수 있을 것입니다. 일반 게이머 입장에서는 대체로 Visual Boy Advanced나 Virtual GameBoy Advanced, iGBA 같은 것들이 인기가 있는 것 같은데요.
그러나 GBA 게임 개발용으로 주목할 만한 것은 Mappy Virtual Machine 이라는 놈입니다. 이것의 특징은 소스 디버거 및 디스어셈블러가 내장되어 있다는 점.. 즉 디버깅에 유리하다는 점입니다. 또한 병렬 포트를 통해서 GBA와 직접 연결하는 기능도 있다고 하더군요...
좀 더 본격적으로 해보고 싶다면.. 플래시 ROM 카드에 ROM 이미지를 다운한 후 그 ROM 카드를 직접 GBA에 꽂아서 실행시키는 방법이 있습니다. Flash Advance Linker라는 제품이 있는데, 일반 게이머의 입장에서는 일종의 게임 불법 복제 도구라 할 수 있습니다만, 개발에는 아주 편리한 도구가 될 것입니다.... http://www.visoly.com/fa_linker.php
일단은 GCC의 명령행 환경에 대해 익숙해져야 할 것입니다. VC++ 같은 편리한 개발 환경을 기대하긴 힘들 것입니다.
두번째는 GBA의 하드웨어 시스템에 대해 알아야 하겠죠.. 누군가의 얘기로는, DOS 시절의 Mode X에 익숙하다면 아주 쉬울 거라고 하더군요...
세번째는 GBA ROM 이미지의 구조를 알 필요가 있습니다.. 일반적인 OS에서 볼 수 있는 파일 시스템이 존재하는 것이 아니니까요.. 그러나 ROM 이미지 관련 작업을 도와주는 여러 유틸리티들이 나와 있다고 합니다.
네번째로는.. 좀 더 본격적으로 나아가려면, ARM 어셈블리 언어를 알아야 할 것입니다.
그리고 제한된 자원&메모리를 다룰 수 있는 능력이 특히 요구될 것입니다. 그 나머지는 일반적인 게임 개발 능력...
해외의 GBA 개발자 공동체는 상당히 발달되어 있습니다. GBA 하드웨어에 대한 정보나 ARM에 대한 정보도 상당히 많구요... 에뮬레이터들의 수준을 보면 당연한 일이겠지만요...
현재 주목할만한 곳들은:
여건이 되면... 제가 직접 시도해 보고 튜토리얼을 써보겠습니다~
참... 예전의 도스용 국산 게임들을 GBA용 게임으로 이식하는 것도 재미있을 것 같은데요... 개발사가 소스를 공개한다면 더욱 좋겠구요.
Ham과 Visul Ham이라는 상당히 편리한 라이브러리+개발 환경이 있더군요. 위에 나온 개발 환경 관련 내용은 그냥 "Visual Ham을 사용하세요" 한 마디로 대체할 수 있겠습니다.
http://www.ngine.de/site/index.php 의 Ham download 섹션에서 Ham Devkit을 다운받으면 됩니다. 거의 DevCpp 수준의 개발환경에서 편하게 GBA 게임을 작성하고 테스트해 볼 수 있습니다.
[1] 참고 - http://www.xs4all.nl/~borkhuis/vxworks/vxw_pt1.html#1.13 , http://www.matt-tighe.co.uk/gba/tutorials/vstudio/vstudio-devkitadv.htm
| 제일 위로 |
| 최종 수정 일시: 01월 23일(2008년) 07:53 PM 편집 | 정보 | 차이 | 비슷한 페이지 DebugInfo |
| 유용한 페이지들: 분류 분류 | 자유로운 연습장 SandBox | 무작위 페이지들 RandomPages | 인기있는 페이지들 MostPopular |