├── .gitignore ├── Chapter01 ├── Readme.md └── img │ └── TINYSLOT.png ├── Chapter02 └── README.md ├── Chapter03 └── README.md ├── Chapter04 ├── README.md └── img │ └── toshiba.png ├── Chapter05 └── README.md ├── Chapter06 └── README.md ├── Chapter07 └── README.md ├── Chapter08 └── README.md ├── Chapter09 └── README.md ├── Chapter10 └── README.md ├── Chapter11 └── README.md ├── Chapter12 └── README.md ├── Chapter13 └── README.md ├── Chapter14 └── README.md ├── Chapter15 └── Readme.md ├── Chapter16 └── Readme.md ├── Chapter17 └── Readme.md ├── Chapter18 └── Readme.md ├── Chapter19 └── README.md ├── Chapter20 └── Readme.md ├── Chapter21-30 └── Readme.md ├── LICENSE ├── README.md ├── cover.jpg ├── dicord.svg └── 부록 └── Readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | 39 | # Debug files 40 | *.dSYM/ 41 | *.su 42 | *.idb 43 | *.pdb 44 | 45 | # Kernel Module Compile Results 46 | *.mod* 47 | *.cmd 48 | .tmp_versions/ 49 | modules.order 50 | Module.symvers 51 | Mkfile.old 52 | dkms.conf 53 | -------------------------------------------------------------------------------- /Chapter01/Readme.md: -------------------------------------------------------------------------------- 1 | ## 1.1 에뮬레이터 2 | 3 | ### 에뮬레이터 리스트 4 | 5 | * [BlueMSX](http://bluemsx.msxblue.com/download.html) 6 | * [WebMSX](https://webmsx.org/) 7 | * [openMSX](https://openmsx.org/) 8 | * [fMSX](https://fms.komkon.org/fMSX/) 9 | 10 | ### MSX 게임 플레이 해보기 11 | 12 | * [파일헌터](https://www.file-hunter.com/MSX) 13 | * [JAMSX](http://www.jamsx.com) 14 | 15 | ## 1.4 메모리 레이아웃 16 | 17 | ### 슬롯 시스템 18 | 19 | 슬롯 시스템은 메모리를 확장가능하게 해주는 시스템이다. 20 | 슬롯 시스템은 슬롯에 있는 메모리를 16 KB 페이지 단위로 21 | CPU에 라우팅해서 슬롯의 여러 페이지를 사용할 수 있게 해준다. 22 | 23 | Z80은 최대 64 KB까지만 주소를 지정할 수 있기 때문에 초과 메모리을 사용하고 싶다면 24 | 주소공간에 매핑되는 물리적인 메모리 공간을 변경해야 한다. 25 | 다르게 말하면 슬롯의 페이지 시스템을 활용해서 특정 페이지로 라우팅해야 하는 것이다. 26 | 페이지의 크기는 16 KB이며 슬롯의 크기는 64KB 이므로 하나의 슬롯에는 4개의 페이지가 존재한다. 27 | 28 | 슬롯은 일반적으로 램, 롬, 그리고 기타 다른 장치로 구성된다. 29 | 슬롯과 페이지의 개념을 정확하게 이해하고 싶다면 30 | 타이니 슬롯 체커Tiny Slot Checker라는 프로그램을 살펴보자. 31 | 다음 그림은 C-BIOS MSX1 시스템에서 첫 번째 롬 카트리지에 32 | 16KB 타이니 슬롯 체커 롬팩을 꼽은 뒤 실행한 화면이다. 33 | 34 | 35 | 36 | SLOT 0는 바이오스나 베이직 프로그램을 포함한 시스템 슬롯이다. 37 | SLOT 1과 SLOT 2는 롬팩을 꽂을 수 있는 카트리지를 의미하며 SLOT 3는 메인 램에 해당한다. 38 | 각각의 슬롯은 64 KB 크기며 네 개의 페이지로 구성되어 있다. 39 | 40 | 타이니 슬롯 체커 프로그램이 실행되면 SLOT 0의 PAGE 0과 1, 41 | SLOT 1의 PAGE 1, SLOT 3의 페이지 중 하나가 CPU 주소 라인에 매핑이 되어 64 KB를 구성한다. 42 | 여기서 유념할 것은 메인램인 SLOT 3의 크기는 64KB이지만 43 | 페이지는 하나만 사용되어 나머지 페이지는 가용 램이지만 사용되지 않고 있는 상황을 이해하는 것이다. 44 | 이 SLOT 3의 나머지 페이지를 활용하려면 슬롯에 특정 명령을 내려 45 | 접근하려는 페이지를 변경해 주면 된다. 46 | 47 | 슬롯의 기본 크기는 64 KB이지만 기본 슬롯과 보조 슬롯을 결합한 형식을 사용하면 48 | 슬롯을 16개까지 확장할 수 있게 되어 256 KB까지 공간을 확보할 수 있다. 49 | 슬롯 접근을 통한 메모리 확장 이외에 메모리 매퍼를 통해서도 메모리 확장이 가능하다. 50 | 메모리 매퍼에 대한 설명은 생략한다. 기본적으로 MSX1은 메모리 매퍼를 지원하지 않는다. 51 | 52 | 슬롯 프로그래밍과 메모리 매퍼를 활용해서 53 | 64 KB 메모리 크기 제약 문제를 해결했지만 시스템이 제공하는 메인 램 자체의 크기가 작은 문제도 해결해야 할 이슈였다. 54 | 이 부분은 여러 가지 방법으로 해결을 했었다. 55 | 예를 들어 MSX1 초기 모델의 경우 메인 램의 크기가 8 KB나 16 KB밖에 되지 않았다. 56 | 이런 기종들은 메인램 크기를 늘리기 위해 두가지 방법을 사용했다. 57 | 첫번째는 시스템 본체 자체를 개조해서 기본 램을 증설하는 방법이었다. 58 | 두번째는 롬팩 카트리지가 두 개라는 것에 착안해서 하나의 카트리지는 59 | 게임 롬팩으로 활용하고 나머지 카트리지에는 램팩을 꼽아서 기본 램을 증설하는 방법이었다. 60 | 일반적으로는 후자의 방법을 이용해서 기본 램의 크기를 증설했다. 61 | 62 | ### 레퍼런스 63 | 64 | * [Tiny Slot Checker](https://msxhub.com/TNSLCK) 65 | * [MSX 슬롯 프로그래밍](https://www.msx.org/wiki/Slots) 66 | -------------------------------------------------------------------------------- /Chapter01/img/TINYSLOT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pdpdds/retrogamedev/9771d11393a8399c49cccd8727f1dc1c2b6b46ba/Chapter01/img/TINYSLOT.png -------------------------------------------------------------------------------- /Chapter02/README.md: -------------------------------------------------------------------------------- 1 | 2 | [GREEN 플레이 해보기](https://webmsx.org/?ROM=https://github.com/pdpdds/ubox_example/releases/download/v1.0/green.rom) 3 | 4 | ## 2.2 WSL2 5 | WSL2 자동 설치 내용을 참고해서 WSL2를 설치한다. 6 | 자동 설치가 잘되지 않을 때 수동 설치를 시도해 본다. 7 | 8 | * [WSL2 자동 설치](https://learn.microsoft.com/ko-kr/windows/wsl/install) 9 | * [WSL2 수동 설치](https://docs.microsoft.com/ko-kr/windows/wsl/install-manual) 10 | 11 | 만약 수동으로 설치 방법으로 진행했다면 5단계까지 정상적으로 인스톨을 진행해야 한다. 12 | 13 | ## 2.4 빌드 시스템 구축 14 | WSL Manager의 경우 업데이트가 중지된 상태이며 특정 머신에서 정상 실행되지 않는 경우가 있다. 15 | 이 경우에는 책에서 설명한 것처럼, 먼저 수동으로 배포판을 설치한다. 16 | 그런다음 아래의 툴을 다운받아 활용하자. 17 | 링크에 접속한 다음 릴리즈 탭에서 최신 버전을 다운받는다. 18 | 19 | [WSL Distro Manager](https://github.com/bostrot/wsl2-distro-manager) 20 | 21 | 툴을 실행하면 WSL에 설치된 리눅스 배포판들을 확인할 수 있다. 22 | WSL Manager와 마찬가지로 특정 배포판의 설치가 가능하며 23 | 특정 리눅스 배포판을 바로 실행할 수 있다. 24 | 25 | ## 2.5 소스코드 설치 26 | 예제코드는 책에서 언급했듯이 WSL상에서 다운받거나 압축파일로 다운받도록 한다. 27 | 윈도우용 깃허브 프로그램을 사용해서 소스코드를 다운받으면 28 | 다운받는 과정에서 파이썬 스크립트의 개행문자를 \n에서 \r\n으로 변경하는 현상이 발생하여 29 | 빌드과정에서 문제를 일으키기 때문이다. 30 | 31 | * 2023년 1월 2일 현재, 개행문자에 관계없이 빌드가 가능하도록 수정했으나 32 | 테스트가 필요하다. 33 | -------------------------------------------------------------------------------- /Chapter03/README.md: -------------------------------------------------------------------------------- 1 | ## 3.5 외부 라이브러리 활용하기 2 | [임베디드 printf](https://github.com/mpaland/printf) 3 | 4 | ## 3.6 배경음악 5 | [Arkos Tracker2](https://www.julien-nevo.com/arkostracker) 6 | 7 | -------------------------------------------------------------------------------- /Chapter04/README.md: -------------------------------------------------------------------------------- 1 | ## 4.1 스네이크 2 | [![스네이크 프로젝트](https://img.youtube.com/vi/ZujgYY36IsE/0.jpg)](https://www.youtube.com/watch?v=ZujgYY36IsE) 3 | 4 | ## 4.2 소코반 5 | [![소코반 프로젝트](https://img.youtube.com/vi/oMiYCaopo2Q/0.jpg)](https://www.youtube.com/watch?v=oMiYCaopo2Q) 6 | 7 | ## 4.4 브레이크아웃 8 | 9 | [![소코반 프로젝트](https://img.youtube.com/vi/Q6DJyDL7X3o/0.jpg)](https://www.youtube.com/watch?v=Q6DJyDL7X3o) 10 | 11 | ### 도시바 팔레트 12 | 13 | 14 | -------------------------------------------------------------------------------- /Chapter04/img/toshiba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pdpdds/retrogamedev/9771d11393a8399c49cccd8727f1dc1c2b6b46ba/Chapter04/img/toshiba.png -------------------------------------------------------------------------------- /Chapter05/README.md: -------------------------------------------------------------------------------- 1 | ## 5.1 프로젝트 구성 2 | [GREEN 플레이 해보기](https://webmsx.org/?ROM=https://github.com/pdpdds/ubox_example/releases/download/v1.0/green.rom) 3 | 4 | ## 5.3 게임로직 5 | 6 | ### aPlib 라이브러리 7 | * [aPlib 홈페이지](https://ibsensoftware.com/products_aPLib.html) 8 | * [apultra](https://github.com/emmanuel-marty/apultra) 9 | * [libdivsufsort](https://github.com/y-256/libdivsufsort) 10 | -------------------------------------------------------------------------------- /Chapter06/README.md: -------------------------------------------------------------------------------- 1 | ## 6.1 Tiled 맵 에디터 2 | * [tiled 맵 사용법](https://thd0011.tistory.com/12) 3 | * [타일맵 생성해 보기](https://gamedevelopment.tutsplus.com/tutorials/introduction-to-tiled-map-editor-a-platform-agnostic-tool-for-level-maps--gamedev-2838) 4 | * [타일드 튜토리얼 시리즈](https://gamefromscratch.com/tiled-map-editor-tutorial-series/) 5 | 6 | ## 6.2 map.py 7 | Makefile에서 파이썬을 실행할 때 버전을 지정하고 있다. 8 | 실제 코드에서는 버전 지정을 하지 않았지만 상관없다. 9 | 10 | -------------------------------------------------------------------------------- /Chapter07/README.md: -------------------------------------------------------------------------------- 1 | ## 7.1 게임로직 2 | * [피라미드 게임 플레이](https://webmsx.org/?ROM=https://github.com/pdpdds/ubox_example/releases/download/v1.0/pyramid.rom) 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter08/README.md: -------------------------------------------------------------------------------- 1 | ## 8-1 타일셋 2 | * [비쥬얼 스튜디오 이전버전 다운받기](https://visualstudio.microsoft.com/ko/vs/older-downloads) 3 | * [근접 색상 구하기](https://www.codeproject.com/Articles/1172815/Finding-Nearest-Colors-using-Euclidean-Distance) 4 | * [24비트 PNG로 변환](https://ko.onlineconvert.com/png-to-png24-converter) 5 | 6 | ## 8-2 스프라이트 제작 7 | * [알레그로 스프라이트 에디터](https://www.allegro.cc/resource/Tools/Graphics/AllegroSpriteEditor) 8 | 9 | ## 8-3 실전 10 | * [타일 기반 배경 스크롤 영상](https://youtu.be/62DRMjU0VJI) 11 | 12 | ## 참고 툴 13 | 14 | #### 맵 생성 & 맵 에디터 15 | * [tilesetter](https://www.tilesetter.org) 16 | * [온라인 타일맵 에디터](http://riskylab.com/tilemap) 17 | * [타일 스튜디오](http://tilestudio.sourceforge.net) 18 | * [Tiles & Maps Generator](http://msx.sagaz.es/AutoTilerScreen2.php) 19 | 20 | #### 스프라이트 제작 21 | * [GIMP](https://www.gimp.org) 22 | * [GIMP MSX 플러그인 설명 문서](https://gimp-msx-plugins.readthedocs.io/en/latest) 23 | * [GIMP MSX 익스포터 플러그인](https://gimp-msx-plugins.readthedocs.io/en/latest/user_guide/msx_gm2_exporter.html) 24 | * [gdevelop](https://gdevelop-app.com/ko/make-8bit-pixelart-games) 25 | * [Aku Sprite Editor](https://www.chibiakumas.com/akusprite) 26 | * [픽픽](https://picpick.app/ko) 27 | * [Pixel Editor](https://danielx.net/pixel-editor) 28 | * [픽셀 아트](https://www.pixilart.com) 29 | * [TinySprite](http://msx.jannone.org/tinysprite/tinysprite.html) 30 | * [PCXTOOLS](https://github.com/theNestruo/pcxtools) 31 | 32 | ### 리소스 애셋 33 | * [오픈 게임 아트](https://opengameart.org) 34 | * [모던 시티 타일 세트](https://emily2.itch.io/modern-city) 35 | * [미이라 스프라이트](https://opengameart.org/content/mummies) 36 | -------------------------------------------------------------------------------- /Chapter09/README.md: -------------------------------------------------------------------------------- 1 | ## 참고 디버거 2 | * [OpenMSX GDB](https://bitbucket.org/erik_maas/openmsxgdb/src/master) 3 | * [DeZog 디버거](https://github.com/S0urceror/DeZog) 4 | -------------------------------------------------------------------------------- /Chapter10/README.md: -------------------------------------------------------------------------------- 1 | ## 10.1 크로스 플랫폼 프로그래밍 2 | 3 | ## 10.3 안드로이드 프로젝트 4 | * [네이티브 코드 빌드 설정](https://thepassion.tistory.com/332) 5 | * [자바 버전 관련 문제 발생시 확인](https://kotlinworld.com/229) 6 | * [helloSDL](https://github.com/pdpdds/helloSDL) 7 | 8 | ### GREEN 크로스 플랫폼 프로젝트 9 | * [GREEN 안드로이드 버전](https://github.com/pdpdds/ubox_example/releases/download/v1.0/green_android.rar) 10 | * [GREEN WIN32 버전](https://github.com/pdpdds/ubox_example/releases/download/v1.0/green_win32.rar) 11 | 12 | ### GREEN 안드로이드 빌드 13 | * demo/cross/android 폴더를 안드로이드 스튜디오로 연다. 14 | * 릴리즈탭에서 android_jni.rar 파일을 받아 압축을 푼다음 demo/cross/android 경로로 이동시킨다. 15 | * 빌드한다. 갤럭시 S21로 테스트 진행 16 | * 2023년 1월 3일 안드로이드에서 정상 동작 확인 17 | 18 | ## 10.4 YUZA OS 19 | * [YUZA OS 프로젝트](https://github.com/pdpdds/yuzaos) 20 | * [GREEN 프로젝트 YUZA OS 포트](https://www.youtube.com/watch?v=U8YiY9iKkjc) 21 | 22 | ## 10.5 에뮬레이터 23 | * [Oscar Toledo](https://nanochess.org/retro.html) 24 | * [princess quest](https://nanochess.org/princess_quest.html) 25 | * [프린세스 퀘스트 안드로이드](https://play.google.com/store/apps/details?id=com.juhang.fmsx_sdl) 26 | * 공유폴더에는 fmsx win32 프로젝트와 안드로이드 프로젝트가 존재. 2023년 1월 6일 수정 및 정상 빌드 확인 27 | 28 | ## 크로스 플랫폼 그래픽스 라이브러리 29 | * [SDL](https://www.libsdl.org/) 30 | * [SFML](https://www.sfml-dev.org/) 31 | * [Cocos2d-x](cocos2d-x) 32 | * [Allegro](https://liballeg.org/) 33 | 34 | ## 레퍼런스 35 | * [MSX 크로스 컴파일러](https://www.nabeta.tk/msx/crosscc.html) 36 | -------------------------------------------------------------------------------- /Chapter11/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 11.1 MSX-C 3 | * [Introduction to MSX-C](https://github.com/sndpl/msx-c-intro) 4 | * [MSX-C 컴파일러](https://github.com/fr3nd/msx-c-compiler) 5 | 6 | ## 11.3 편집기 7 | * [AKID 편집기 사용](https://youtu.be/S1EYY43_fEk) 8 | 9 | ## 11.4 MSX-C 툴 성능개선 10 | * [필립스 머신에서 MSX-C를 사용하여 프로젝트 빌드](https://youtu.be/S1EYY43_fEk) 11 | * [Panasonic FS A1GT에서 MSX-C를 사용하여 빌드](https://youtu.be/M0tziyo6rBI) 12 | 13 | ## 11.5 샘플 프로젝트 14 | * [샘플 프로젝트](https://github.com/sndpl/msx-c-examples) 15 | * [틱택토](https://github.com/ocitygate/TicTacToe) 16 | 17 | ## 레퍼런스 18 | * [Relearning MSX 1](https://medium.com/relearning-msx) 19 | * [Relearning MSX 2](http://www.lavandeira.net/relearning-msx) 20 | -------------------------------------------------------------------------------- /Chapter12/README.md: -------------------------------------------------------------------------------- 1 | # 12 MSX 개발을 위한 레퍼런스 2 | * [MSX1 픽셀 기반 스크롤](https://www.youtube.com/watch?v=DHH6y9le7BU) 3 | * [MSX1 픽셀 기반 스크롤 영상2](https://www.youtube.com/watch?v=2up41-p091k) 4 | 5 | ## 12.1 SDCC 6 | * [MSX 32K Startup](https://github.com/mvac7/SDCC_startup_MSX32kROM4000) 7 | * [Skeleton C project for MSX](https://github.com/sndpl/skeleton-sdcc-msx) 8 | * [libMSX](https://github.com/mori0091/libmsx) 9 | * [MSX SDCC Boilerplate](https://github.com/jannone/msx-sdcc-boilerplate) 10 | * [I.N.E.R.T.I.A](http://andrear.altervista.org/home/inertia.php) 11 | * [MSX Fighter](https://github.com/arcadenea/msxfighter) 12 | * [azombie](https://github.com/samsaga2/azombie) 13 | 14 | ## 12.2 HI-TECH C 컴파일러 15 | * [HI-TECH Z80 C compiler MS-DOS](https://github.com/agn453/HI-TECH-Z80-C-Cross-Compiler) 16 | * [CP/M program EXEcutor for Win32 0.4](https://www.vector.co.jp/download/file/win95/util/fh577850.html) 17 | * [CP/M program EXEcutor](http://hp.vector.co.jp/authors/VA000084) 18 | * [https://github.com/artrag/C-experiments-for-msx](https://github.com/artrag/C-experiments-for-msx) 19 | * [CR3](https://www.nabeta.tk/en/msx/cr3develop.html) 20 | 21 | ### 확인안된 리소스 22 | * [HITECH-C 호환 MSX 라이브러리](https://www.vector.co.jp/soft/other/msx/se148476.html?a8=v4ucY4bPL-a) 23 | * [MSX Asteroids](https://github.com/MBilderbeek/bigblast) 24 | * [Snow demo](https://github.com/MBilderbeek/sneeuw) 25 | 26 | ## 12.3 Fusion-C 27 | * [FUSION-C: MSX C Library complete journey](https://www.amazon.com/FUSION-C-MSX-Library-complete-journey/dp/1730828612) 28 | * [FUSION-C 1.2](https://github.com/ericb59/Fusion-C-v1.2) 29 | * [Captain kik](https://github.com/kikemadrigal/MSX1-MSX2-assambler-basic-fusion-c-alien) 30 | * [Atlanta](https://github.com/sfranck72/Atalanta) 31 | * [Brick Breaker](https://github.com/ericb59/Brick-Breaker-Santa-Demo) 32 | 33 | ## 12.4 비쥬얼 스튜디오 34 | * [GNUWin32 Make](https://osdn.net/projects/sfnet_ezwinports/downloads/make-4.3-without-guile-w32-bin.zip/) 35 | * [MSX-Templates-for-VisualStudio](https://github.com/DamnedAngel/MSX-Templates-for-VisualStudio) 36 | * [Arya](https://github.com/albs-br/arya) 37 | * [MSXTetris](https://github.com/pdpdds/MSXTetris) 38 | 39 | ## 12.5 Z88DK 40 | * [z88dk 다운로드](http://nightly.z88dk.org/) 41 | 42 | ## 12.6 RetroDeluxe 게임 엔진 43 | * [RetroDeluxe Game Engine](https://github.com/retrodeluxe/rlengine-msx) 44 | * [l’Abbaye des Morts](https://www.msxdev.org/2020/07/27/msxdev20-15-labbaye-des-morts) 45 | 46 | ## 12.7 MSX2DAAD 47 | * [msx2daad](https://github.com/nataliapc/msx2daad) 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Chapter13/README.md: -------------------------------------------------------------------------------- 1 | ## 13.1 MSX 베이직 2 | ### 도구 3 | * [MSX Floppy Disk Manager](https://sonono.net/blog/2021/03/04/msx-floppy-disk-manager%ef%bc%88%ce%b1%e7%89%88%ef%bc%89%e3%81%ae%e5%85%ac%e9%96%8b/) 4 | * [Disk-Manager](http://www.lexlechz.at/en/software/DiskMgr.html) 5 | * [MSXPen](https://msxpen.com) 6 | 7 | ### 게임 프로젝트 8 | * [msx-blockbreaker](https://github.com/aburi6800/msx-blockbreaker) 9 | * [MSX 베이직 게임](http://msxbasic.blogspot.com) 10 | * [스피드 게임](https://github.com/imays76/SpeedGame) 11 | * [스피드 게임 플레이 영상](https://www.youtube.com/watch?v=XLkCvbMeQgM) 12 | 13 | ### 에디터 14 | * [Tabmegx MSX 베이직 에디터](http://ni.x0.com/msx/tabmegx) 15 | 16 | ### 레퍼런스 17 | * [Modern MSX BASIC Game Development](https://www.amazon.com/Modern-MSX-BASIC-Game-Development-ebook/dp/B0996Y5CS2/ref=sr_1_2?dchild=1&keywords=Modern+MSX+BASIC+Game+Development&qid=1626270330&sr=8-2) 18 | * [Modern MSX BASIC Game Development 소스코드](https://github.com/plattysoft/Modern-MSX-BASIC-Game-Dev) 19 | 20 | ## 13.2 Z80 어셈블리 21 | ### Z80 개관 22 | * [Z80 명령어 세트](https://clrhome.org/table) 23 | * [Z80 살펴보기](https://www.smspower.org/Development/Z80-Index) 24 | 25 | ### 8비트 워크샵 26 | * [8bitworkshop](https://8bitworkshop.com) 27 | * [8bitworkshop IDE](https://8bitworkshop.com/v3.8.0/?platform=msx&file=helloworld.asm) 28 | * [8비트 워크샵 매뉴얼](http://8bitworkshop.com/blog/docs/ide.md.html) 29 | 30 | ### 게임 프로젝트 31 | * [펭귄 플랫포머](https://github.com/albs-br/penguin-platformer) 32 | * [퐁](http://www.z80st.es/downloads/code) 33 | * [메탈기어](https://github.com/theNestruo/MetalGear) 34 | 35 | ### Z80 어셈블러 36 | * [tniasm](http://www.tni.nl/products/tniasm.html) 37 | * [asMSX](https://github.com/Fubukimaru/asMSX) 38 | * [Sjasm](https://github.com/Konamiman/Sjasm) 39 | 40 | ### glass 라이브러리 41 | * [자바 SDK 설치](https://www.oracle.com/kr/java/technologies/javase-downloads.html) 42 | * [glass 자바 라이브러리](http://www.grauw.nl/projects/glass/) 43 | * [transball](https://github.com/santiontanon/transballmsx) 44 | * [XRacing](https://github.com/santiontanon/xracing) 45 | 46 | ## 13.3 자바 47 | * [ccZ80](http://ccz80.webcindario.com/ccz80en.html) 48 | * [ccZ80++](http://ccz80pp.webcindario.com/ccz80pp-en.html) 49 | 50 | ## 레퍼런스 51 | * [MSX Resource Center](https://www.msx.org/) 52 | * [Awesome MSX](https://github.com/fr3nd/awesome-msx) 53 | * [MSX Red Book](https://github.com/gseidler/The-MSX-Red-Book) 54 | * [MSX2-Technical-Handbook](https://konamiman.github.io/MSX2-Technical-Handbook) 55 | * [MSX 인사이드 자습서](http://www.z80st.es/cursos/msx-inside) 56 | * [MARMSX](http://marmsx.msxall.com/english.php) 57 | * [Developing for MSX](https://www.msx.org/wiki/Main_Page#Developing_for_MSX) 58 | * [RETRO GAME COCODERS](https://retrogamecoders.com/getting-started-with-c-cc65/) 59 | * [파스칼로 MSX 프로그램 개발](https://hansotten.file-hunter.com/software/pascal-and-msx) 60 | * [C와 Z80 어셈블리 통신](https://gist.github.com/Konamiman/af5645b9998c802753023cf1be8a2970) 61 | * [비디오 메모리 맵](https://www.msx.org/wiki/VRAM_Maps) 62 | * [MSX 메모리](https://www.msx.org/wiki/The_Memory) 63 | * [Pyramid Warp (1983) 리버싱 버전](https://github.com/theNestruo/msx-pyramidwarpex) 64 | * [TinyMSX 에뮬레이터](https://github.com/suzukiplan/tinymsx) 65 | 66 | ### 라이브러리 67 | * [Cross-Lib](https://github.com/Fabrizio-Caruso/CROSS-LIB) 68 | * [MSXLib](https://github.com/theNestruo/msx-msxlib) 69 | 70 | ### Z80 어셈블리 언어로 종 스크롤 비행 슈팅 게임 제작해 보기 71 | * [SCA 플레이 해보기](https://webmsx.org/?DISK=https://github.com/pdpdds/ubox_example/releases/download/v1.0/sca.dsk) 72 | * [SCA 개발 튜토리얼](https://wikidocs.net/book/7292) 73 | * [SCA 개발자 HRA님 홈페이지](http://www5d.biglobe.ne.jp/~hra/index.htm) 74 | 75 | -------------------------------------------------------------------------------- /Chapter14/README.md: -------------------------------------------------------------------------------- 1 | ## 14.2 286 2 | * [보호모드 진입 및 빠져나기기](http://www.rcollins.org/articles/pmbasics/tspec_a1_doc.html) 3 | 4 | ## 14.4 386 5 | * [도스 익스텐더](https://ko.wikipedia.org/wiki/%EB%8F%84%EC%8A%A4_%ED%99%95%EC%9E%A5%EC%9E%90) 6 | 7 | -------------------------------------------------------------------------------- /Chapter15/Readme.md: -------------------------------------------------------------------------------- 1 | ## 15.1 도스박스 2 | * [도스박스 홈페이지](https://www.dosbox.com) 3 | * [PCEM](https://pcem-emulator.co.uk) 4 | * [86Box](https://github.com/86Box/86Box) 5 | * [DOSBox SVN Daum](http://ykhwong.x-y.net) 6 | * [DOSBox Staging](https://dosbox-staging.github.io) 7 | 8 | ## 15.2 컴파일러 9 | * [DJGPP](http://www.delorie.com/pub/djgpp/current/v2) 10 | * [DJGPP-ALEGRO-DOS](https://www.mrdictionary.net/allegro/#directory) 11 | * [NASM](https://www.nasm.us/pub/nasm/releasebuilds/2.15.05) 12 | * [Orange C/C++ 컴파일러](https://ladsoft.tripod.com/orange_c_compiler.html) 13 | * [Tiny Model COM 파일을 생성하는 컴파일러 SCC](https://github.com/mras0/scc) 14 | 15 | ## 레퍼런스 16 | * [도스박물관 카페](https://cafe.naver.com/olddos) 17 | * [터보 C 온라인 컴파일러](https://www.ryugod.com/pages/ide/tcpp) 18 | -------------------------------------------------------------------------------- /Chapter16/Readme.md: -------------------------------------------------------------------------------- 1 | ## 16.2 도스박스 빌드 시스템 2 | * [도스박스 빌드 시스템](https://github.com/pdpdds/DOSDev) 3 | 4 | ### 게임 프로젝트 5 | * [슈터 프로젝트와 MegaBreak](https://github.com/carrierdown/megabreak) 6 | * [Little Game Engine](https://github.com/mills32/Little-Game-Engine-for-VGA) 7 | * [Commander Keen in Keen Dreams](https://github.com/keendreams/keen) 8 | 9 | ## 16.3 콘솔 도스 빌드 시스템 10 | * [Eradicate](https://github.com/MutantStargoat/eradicate) 11 | 12 | 13 | ## 레퍼런스 14 | * [Borland C/C++ 3.1 프로그래밍](https://github.com/johangardhage/dos-bcdemos) 15 | * [도스용 에디터 리스트](http://texteditors.org/cgi-bin/wiki.pl?MsDosEditors) 16 | * [네이티브 도스 프로그래밍](http://www.brackeen.com/vga) 17 | * [C언어로 만드는 재미있는 게임 프로그래밍](https://github.com/darkx5746/funnydos) 18 | -------------------------------------------------------------------------------- /Chapter17/Readme.md: -------------------------------------------------------------------------------- 1 | # 17 VGALIB 2 | * [VGALIB 다운로드](https://github.com/drwonky/VGALIB) 3 | 4 | -------------------------------------------------------------------------------- /Chapter18/Readme.md: -------------------------------------------------------------------------------- 1 | # 18 알레그로4 2 | * [알레그로 2D 엔진 홈페이지](https://liballeg.org) 3 | 4 | ## 18.1 개발 시스템 구축 5 | * [알레그로4 DJGPP](https://github.com/pdpdds/allegro4_dos/releases) 6 | 7 | ## 18.3 알레그로4 프로그래밍 기초 8 | * [알레그로 프로그래밍 가이드](https://liballeg.org/docs.html) 9 | * [C++ Allegro 4 플랫포머 게임 개발 튜토리얼](https://www.youtube.com/watch?v=J9vRVMZldy8&t=430s) 10 | 11 | ## 18.4 알레그로4 API 활용 12 | * [알레그로4 프로그래밍 튜토리얼](https://github.com/pdpdds/allero4programming) 13 | 14 | ### 게임 프로젝트 15 | * [스네이크 바이트](https://github.com/sbryant31/Snake) 16 | 17 | ## 18.7 매피 에디터 18 | * [Mappy](https://tilemap.co.uk/mappy.php) 19 | * [Mappy 맵 사용 예제](http://retrospec.sgn.net/users/nwalker/axl/tranzam.html) 20 | * [매피 맵 참고](http://fixbyproximity.com/2011/11/28/2d-game-dev-part-11-2-tile-backgrounds-with-mappy) 21 | 22 | ### Tiled 맵 레퍼런스 23 | * [TMX 파서](https://github.com/sainteos/tmxparser) 24 | * [TMX C 로더](https://github.com/baylej/tmx) 25 | 26 | ## 18.8 써드파티 27 | * [Collections-C](https://github.com/srdja/Collections-C) 28 | * [sxmlc](https://github.com/matthieu-labas/sxmlc) 29 | * [Fast Sqrt](https://github.com/erich666/GraphicsGems) 30 | 31 | ## 18.9 폭스레인저 리메이크 32 | * [폭스레인저 리메이크 툴](https://github.com/pdpdds/allegro4_dos/releases) 33 | 34 | 35 | ## 레퍼런스 36 | ### DJGPP 37 | * [DJGPP ALLEGRO](http://www.delorie.com/pub/djgpp/current/v2tk/allegro) 38 | * [DJGPP 써드파티](http://www.delorie.com/pub/djgpp/current/v2tk) 39 | * [DJGPP FAQ](https://www.hzdr.de/FWR/VB/TUTORIALS/djgppfaq.html) 40 | 41 | ### 알레그로4 관련 서적 42 | * [Game Programming All in One](https://github.com/hughbien/notebook/blob/master/game_programming_all_in_one.md) 43 | * [서적 소스코드](http://jharbour.com/sources/) 44 | 45 | ### 알레그로 프로젝트 46 | * [Krono's Battle Zone](https://github.com/alvarogonzalezferrer/krono_battle_zone) 47 | * [LEGOIDS](https://github.com/HunterZ/legoids) 48 | * [Allegro GUI Un-uglfication Project](http://agup.sourceforge.net/) 49 | 50 | ### 알레그로 기반 어드벤처 게임 개발 툴 51 | [Adventure Game Studio](https://www.adventuregamestudio.co.uk) 52 | [Adventure Game Studio 2.3 DOS](https://dosgames.com/game/adventure-game-studio) 53 | 54 | -------------------------------------------------------------------------------- /Chapter19/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 19 디버깅 실전 3 | ## 19.1 32비트 프로그램 4 | * [32bit DOS Development with Open Watcom](https://tuttlem.github.io/2015/10/04/32bit-dos-development-with-open-watcom.html) 5 | * [Open Watcom v2 Programming Guide](https://open-watcom.github.io/open-watcom-v2-wikidocs/pguide.html) 6 | ## 19.2 Plumber No More 7 | * [Plumber No More 다운로드](https://github.com/jani-nykanen/plumber-no-more) 8 | * [MS-DOS Remote Debugging 1](https://www.javiergutierrezchamorro.com/depurar-aplicaciones-dos-con-watcom-c-y-openwatcom-c) 9 | * [MS-DOS Remote Debugging 2](https://github.com/open-watcom/open-watcom-v2/wiki/Debugging) 10 | -------------------------------------------------------------------------------- /Chapter20/Readme.md: -------------------------------------------------------------------------------- 1 | # 20 SDL + HX DOS 익스텐더 2 | * [HX DOS Extender](https://www.japheth.de/HX.html) 3 | 4 | ## 20.2 환경구축 5 | * [HX DOS Extender 다운로드](https://sourceforge.net/projects/hx-dos/files/) 6 | * [SDL 1.2 다운로드](https://sourceforge.net/projects/libsdl/files/SDL/1.2.15) 7 | 8 | ## 20.3 샘플 프로젝트 9 | * [샘플 프로젝트 다운로드](https://github.com/pdpdds/hxdos-sdl-example) 10 | 11 | ### 샘플 프로젝트 원본 링크 12 | * [팩맨#1](https://sourceforge.net/projects/pacmanincwithsd) 13 | * [팩맨#2](https://github.com/Ahmed310/PacMan) 14 | 15 | ## 20.4 GREEN 프로젝트 16 | ### PCEM 테스트 17 | [![PCEM 테스트](https://img.youtube.com/vi/Kx5M5g9e66A/0.jpg)](https://www.youtube.com/watch?v=Kx5M5g9e66A) 18 | 19 | ### 펜티엄3, 프리도스 테스트 20 | 도스박물관 카페 회원이신 윤슈님께서 21 | GREEN 프로젝트의 도스 실기 테스트를 진행해 주셨습니다. 22 | 펜티엄3, 프리도스 환경에서 진행했습니다. 23 | 24 | [![도스 실기 테스트](https://img.youtube.com/vi/EeggC8leCfI/0.jpg)](https://www.youtube.com/watch?v=EeggC8leCfI) 25 | -------------------------------------------------------------------------------- /Chapter21-30/Readme.md: -------------------------------------------------------------------------------- 1 | 2 | ## 21 - 코모도어 64 3 | 4 | * [에뮬레이터](https://sourceforge.net/projects/vice-emu) 5 | * [CC65 컴파일러](https://sourceforge.net/projects/cc65/files/cc65-snapshot-win32.zip/download) 6 | * [코모도어 도스](https://ko.wikipedia.org/wiki/%EC%BD%94%EB%AA%A8%EB%8F%84%EC%96%B4_%EB%8F%84%EC%8A%A4) 7 | * [DirMaster](https://style64.org/release/dirmaster-v3.1.5-style) 8 | * [C64 게임 리스트](https://www.planetemu.net/roms/commodore-c64-games-d64) 9 | 10 | ## 22 - 패밀리 컴퓨터 11 | * [에뮬레이터](http://www.qmtpro.com/~nes/nintendulator/#downloads) 12 | * [CC65 윈도우즈용](https://sourceforge.net/projects/cc65/files/cc65-snapshot-win32.zip/download) 13 | * [HelloWorld](https://github.com/nesdoug/01_Hello) 14 | * [NES Game Demo](https://github.com/nesdoug/26_Full_Game) 15 | * [Program a NES game in C](https://nesdoug.com/) 16 | 17 | ## 23 - 아미가 18 | * [WINUAE 4.9.0](https://www.winuae.net/download/) 19 | * [Kickstart v1.3 rev 34.5](http://amigamuseum.emu-france.info/Fichiers/ADF/-%20Kickstarts/KS-ROMs) 20 | * [AMIGA Game DOWNLOAD](https://www.planetemu.net/roms/commodore-amiga-games-adf) 21 | * [WorkBench](http://amigamuseum.emu-france.info/Fichiers/ADF/-%20Workbench) 22 | * Workbench v1.3.3 rev 34.34 (1990)(Commodore)(A500-A2000)(DE)(Disk 1 of 2)(Workbench)[m].adf 23 | 24 | * [Amiga C/C++ Compile, Debug & Profile](https://marketplace.visualstudio.com/items?itemName=BartmanAbyss.amiga-debug) 25 | 26 | ## 24 - PC-엔진 27 | * [HUC 다운로드](http://www.zeograd.com/download_presentation.php?lang=en&id=312) 28 | * [HUC 프로그래밍 튜토리얼](http://obeybrew.com/programmingwithhuc.html) 29 | * [커뮤니티](https://pcengine.proboards.com/board/5/homebrew-development) 30 | 31 | ## 25 - 메가 드라이브 32 | * [SGDK](https://github.com/Stephane-D/SGDK) 33 | * [자바 다운로드](https://java.com/ko/download/ie_manual.jsp?locale=ko) 34 | * [Code::Blocks IDE 다운로드]( http://www.codeblocks.org) 35 | * [Gens KMod](https://segaretro.org/Gens_KMod) 36 | * [Metal Slug Warfare Demo](https://github.com/StudioVetea/Metal-Slug-Warfare-Demo--Megadrive-) 37 | 38 | ## 26 - 게임보이 39 | * [Gameboy Development KIT](https://sourceforge.net/projects/gbdk/) 40 | * [BGB 에뮬레이터](https://bgb.bircd.org/) 41 | 42 | ### 비쥬얼 스튜디오를 통한 동적 디버깅 개발 43 | * [SDCC_VS](https://github.com/ssjason123/SDCC_VS) 44 | * [gbdk4.05](https://github.com/gbdk-2020/gbdk-2020) 45 | * [Emulicious 에뮬레이터](https://emulicious.net/downloads) 46 | 47 | ## 27 - 슈퍼 패미컴 48 | * [PVSneslib](https://github.com/alekmaul/pvsneslib) 49 | * [파이썬 2.7](https://www.python.org/downloads/release/python-2715) 50 | 51 | ## 28 - 3DO 52 | * [개발환경 구축](https://3dodev.com/tutorials/optimus/setting_up_the_development_environment) 53 | * [레퍼런스](https://github.com/hpearson/3DODevelopment) 54 | 55 | ## 29 - 세가새턴 56 | * [SatrunOrbit](http://www.rockin-b.de/windows-saturnorbit.html) 57 | * [Saturn Game Tutorial](http://www.rockin-b.de/saturn/saturngametutorial/SaturnGameTutorial.htm#setupSaturnOrbit) 58 | * [Jo Sega Saturn Engine](https://jo-engine.org/) 59 | 60 | ## 30 - 게임보이 어드밴스 61 | * [devkitadv](http://devkitadv.sourceforge.net) 62 | * [VBA](https://sourceforge.net/projects/vba) 63 | * [타일 모드](http://ianfinlayson.net/class/cpsc305/notes/13-tiles) 64 | * [비트맵 모드](https://www.coranac.com/tonc/text/bitmaps.htm) 65 | 66 | ### 게임 프로젝트 67 | * [Tank Gameboy Advance](http://www.loirak.com/gameboy/tank.php) 68 | * [Skiing Advance](http://www.loirak.com/gameboy/skiing.php) 69 | * [배틀시티](https://github.com/matzar/BattleCity-GBA) 70 | 71 | ### Programmer's Notepad 활용하기 72 | * [Programmer's Notepad](https://www.pnotepad.org) 73 | * [Programmer's Notepad와 devkitPro 연동](https://devkitpro.org/wiki/editors/Programmer%27s_Notepad) 74 | * [devkitPro 3.03](https://github.com/devkitPro/installer/releases) 75 | 76 | ### 레퍼런스 77 | * [GBA 학습 1](http://www.loirak.com/gameboy/gbatutor.php) 78 | * [GBA 학습 2](https://wikidocs.net/book/4878) 79 | * [C++ 라이브러리](https://github.com/JPTIZ/libgba-cpp) 80 | * [Butano Fighter](https://www.reddit.com/r/cpp/comments/jrjj2n/butano_a_modern_c_high_level_engine_for_the_gba) 81 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2021, Juhang Park 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 레트로 게임 개발 바이블 2 | 3 | ![cover](cover.jpg) 4 | 5 | [![](https://img.youtube.com/vi/pjGn-Grxtk4/0.jpg)](https://youtu.be/pjGn-Grxtk4) 6 | 7 | 본 페이지는 "레트로 게임 개발 바이블" 서적을 학습하시는데 도움이 될 수 있도록 마련한 참조 페이지입니다. 8 | 책에서 언급한 참조페이지는 각 챕터의 참조 페이지를 확인하시면 내용을 확인하실 수 있습니다. 9 | 또한 공유 폴더에는 책에서 언급한 각종 툴과 데모 프로젝트가 존재합니다. 10 | 인터넷의 특성상 기존에 존재했던 파일 다운로드 링크는 사라질 가능성이 있으니 그런 경우에는 11 | 공유 폴더에서 필요 파일을 찾아 보시면 되겠습니다. 12 | 13 | * [예스24](http://www.yes24.com/Product/Goods/116258578) 14 | * [교보문고](https://product.kyobobook.co.kr/detail/S000200473470) 15 | * [알라딘](https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K202830147&start=pnaver_02) 16 | * [저자이력](https://github.com/pdpdds) 17 | 18 | ## 시작하기에 앞서 19 | 본서는 프로그래밍 초심자께서도 레트로 게임을 쉽게 제작가능하도록 20 | 내용을 구성했습니다. 다만 어떤 학문에도 기본기가 필요하듯이 21 | 이 책을 학습해 나가기 위해서는 다음 전제조건이 필요합니다. 22 | * C 프로그래밍 23 | * 각종 툴의 사용법에 익숙해 지기 24 | * 잘 모르는 부분은 일단 그렇다고 생각하고 넘어가기 25 | 26 | 세번째 항목은 특히 중요합니다. 이 항목은 유연성을 강조하는 의미로 27 | 처음부터 완벽하게 이해하고 넘어갈 필요는 없다는 걸 의미합니다. 28 | 일단은 책에서 언급하는 내용을 무작정 따라해 나가면서 그 결과가 29 | 제대로 출력되는지에 대해 집중하는 방식으로 내용에 접근하시면 30 | 원하는 결과에 더 빨리 도달할 수 있습니다. 31 | 잘 모르는 부분에 막혀서 너무 지체해 버리면 흥미를 잃게 되고 32 | 그렇게 되면 자신이 만들고자 했던 게임 제작에 결코 도달할 수 없게 되므로 지금 말씀드리는 내용은 매우 중요합니다. 33 | 34 | 또한 본서는 깊이 파고들면 들수록 생각해 볼만한 주제가 많습니다. 35 | 예를 들어 우리가 자동차를 운전할 때는 자동차를 운전하는 방법만 36 | 숙지하거나 자동차를 유지 보수하는 방법만 고려하면 됩니다. 37 | 자동차가 어떤 원리로 구동되는지에 대한 메커니즘은 알 필요가 없는 것입니다. 하지만 본서를 읽은후 프로그래밍 실력이 일취월장하신 분이나 38 | 또는 고급 개발자께서는 책에서 소개하는 심도있는 39 | 내용에 대해서도 관심을 가지게 될 것입니다. 40 | 41 | 요약하면, 프로그래밍에 처음 입문하시는 분께서는 일단 자동차를 42 | 운전하는 부분에만 집중을 하시고 책을 처음부터 끝까지 완전히 43 | 따라하는데 집중해 주십시오. 그 결과 게임 제작이라는 원하는 44 | 결과를 성취하실 수 있을 것입니다. 또한 이를 통해 어느정도 45 | 프로그래밍에 익숙해졌다면 본서에서 소개하는 내용중에서 46 | 보다 심도있는 내용에 대해 관심을 가지고 새롭게 학습해 나가신다면 47 | 프로그래밍 자체에 대한 새로운 즐거움을 발견하시게 될 겁니다. 48 | 49 | ## 독자 피드백 50 | 최대한 본서를 통해서 명확한 내용을 전달해 드리고자 노력했지만 51 | 설명이 부족하거나 오류가 존재할 수 있습니다. 52 | 또한 책을 최초 집필한 시점에서는 예제에서 문제가 발생하지 않았지만 53 | 시간이 흘러 제대로 동작하지 않는 경우도 발생가능합니다. 54 | 이런 부분에 대해서는 독자분께서 피드백을 주시면 가능한한 재빨리 대응해 드리도록 하겠습니다. 55 | 저와 같이 레트로 게임 개발 문화 확산에 동참해서 56 | 다양한 레트로 게임을 개발할 수 있기를 바래봅니다. 57 | 58 | 59 | [![dicord](dicord.svg)](https://discord.gg/CFuRcPqxD7) 60 | [네이버 카페](https://cafe.naver.com/codemasterproject) 61 | 62 | 궁금한 사항이 있으시면 일차적으로 디스코드로 질문을 남겨주시고 63 | 여러가지 이유로 디스코드 사용에 어려움이 있다면 네이버 카페에 64 | 질문 글을 남겨주세요. 모든 분들이 좋은 정보를 공유할 수 있기 위해 65 | 불필요한 질문은 지양하고 프로그래밍 그 자체에만 집중한 질문을 66 | 해주시면 정말 고맙겠습니다. 67 | 68 | 독자분께서 좋은 피드백을 많이 주시면 참조페이지의 내용은 보다 더 강화될 것이며 69 | 차후 본서를 접하게 될 독자분에게 더욱더 좋은 레퍼런스로 다가가게 될 것입니다. 70 | 71 | ## 개발환경 72 | 본서는 윈도우 운영체제 10, 11을 기준으로 예제를 설명을 하고 있습니다. 73 | 그래서 기본적으로는 특정 리눅스 플랫폼에 대해서는 다루지 않습니다. 74 | 75 | 다만 책 전반적인 부분에서 WSL2을 활용하기 때문에 리눅스 플랫폼에서도 76 | 개발은 가능합니다. 또한 윈도우 운영체제에서 활용하는 도구 및 툴은 77 | 리눅스에도 대응하는 툴이 존재하기 때문에 프로그래밍에 익숙하다면 78 | 리눅스 플랫폼에서도 책을 보시면서 학습을 진행하실 수는 있습니다. 79 | 80 | 다만 본서는 학습 편의를 위해 어디까지나 81 | 윈도우 운영체제를 기준으로 설명을 합니다. 82 | 또한 비쥬얼 스튜디오는 리눅스에서 지원하지 않습니다. 83 | 84 | 요약하면, 본서는 어디까지나 윈도우 운영체제를 기반으로 내용을 전개하며, 85 | 리눅스 플랫폼에서 학습을 진행하는 것이 가능할 수도 있지만 86 | 그렇게 편하지는 않을 것이라는 것입니다. 그러므로 가능하면 87 | 윈도우 운영체제에서 학습을 진행하는 것을 권장합니다. 88 | 89 | 다만 MSX 편의 경우에는 WSL2을 활용하므로 아래에서 언급하는 플랫폼에서도 90 | 예제 프로젝트가 정상 빌드되었음을 확인하였으니 참고하시기 바랍니다. 91 | 92 | 책을 집필하는 과정에서 필자가 다뤘던 리눅스 플랫폼 환경은 다음과 같습니다. 93 | * VMWmare 16 우분투 20.04 LTS 94 | * VirtualBox 6.1 우분투 20.04 LTS 95 | 96 | ### macOS에서 MSX 개발 환경 구축하기 97 | 확인결과 macOS에서도 MSX 개발 예제 프로젝트를 빌드할 수 있음을 확인하였습니다. 98 | 윈도우 운영체제에서 개발을 진행하는 것이 여의치 않다면 아래 링크의 글을 99 | 참조해서 개발환경을 구축해 보시기 . 100 | * [macOS에서 MSX 개발환경 구축하기](https://cafe.naver.com/olddos/84259) 101 | * [실리콘 맥에서 MSX 개발환경 구축하기](https://cafe.naver.com/olddos/84293) 102 | 103 | ## 공유 폴더 104 | [공유 폴더 1](https://drive.google.com/drive/folders/1RI1VArzqbpi0sP2sm07KxYfed2wQMgMt?usp=sharing) 105 | [공유 폴더 2](http://naver.me/F5FrhxeJ) 106 | 107 | ## 참조 페이지 108 | * Chapter 01 - [MSX 플랫폼과 친해지기](https://github.com/pdpdds/retrogamedev/tree/main/Chapter01) 109 | * Chapter 02 - [개발 환경 구축](https://github.com/pdpdds/retrogamedev/tree/main/Chapter02) 110 | * Chapter 03 - [기초 다지기](https://github.com/pdpdds/retrogamedev/tree/main/Chapter03) 111 | * Chapter 04 - [샘플 게임 프로젝트](https://github.com/pdpdds/retrogamedev/tree/main/Chapter04) 112 | * Chapter 05 - [GREEN 프로젝트](https://github.com/pdpdds/retrogamedev/tree/main/Chapter05) 113 | * Chapter 06 - [리소스 유틸리티](https://github.com/pdpdds/retrogamedev/tree/main/Chapter06) 114 | * Chapter 07 - [피라미드 퀘스트](https://github.com/pdpdds/retrogamedev/tree/main/Chapter07) 115 | * Chapter 08 - [그래픽 작업](https://github.com/pdpdds/retrogamedev/tree/main/Chapter08) 116 | * Chapter 09 - [디버깅](https://github.com/pdpdds/retrogamedev/tree/main/Chapter09) 117 | * Chapter 10 - [크로스 플랫폼 프로그래밍과 포팅](https://github.com/pdpdds/retrogamedev/tree/main/Chapter10) 118 | * Chapter 11 - [MSX-C](https://github.com/pdpdds/retrogamedev/tree/main/Chapter11) 119 | * Chapter 12 - [MSX 개발을 위한 레퍼런스](https://github.com/pdpdds/retrogamedev/tree/main/Chapter12) 120 | * Chapter 13 - [기타 언어 MSX 프로그래밍](https://github.com/pdpdds/retrogamedev/tree/main/Chapter13) 121 | * Chapter 14 - [MS-DOS 살펴보기](https://github.com/pdpdds/retrogamedev/tree/main/Chapter14) 122 | * Chapter 15 - [개발 도구 살펴보기](https://github.com/pdpdds/retrogamedev/tree/main/Chapter15) 123 | * Chapter 16 - [도스 게임 프로젝트](https://github.com/pdpdds/retrogamedev/tree/main/Chapter16) 124 | * Chapter 17 - [VGALIB](https://github.com/pdpdds/retrogamedev/tree/main/Chapter17) 125 | * Chapter 18 - [알레그로4](https://github.com/pdpdds/retrogamedev/tree/main/Chapter18) 126 | * Chapter 19 - [디버깅 실전](https://github.com/pdpdds/retrogamedev/tree/main/Chapter19) 127 | * Chapter 20 - [SDL + HX 도스 익스텐더](https://github.com/pdpdds/retrogamedev/tree/main/Chapter20) 128 | * Chapter 21-30 - [기타 레트로 게임 프로그래밍](https://github.com/pdpdds/retrogamedev/tree/main/Chapter21-30) 129 | * [Appendix](https://github.com/pdpdds/retrogamedev/tree/main/%EB%B6%80%EB%A1%9D) 130 | 131 | 132 | ## 후속작 출간 여부 133 | 본서의 출간과는 별도로 레트로 게임 프로그래밍 관련 연구를 134 | 계속해 왔기 때문에 후속작을 집필할 수 있을만큼 내용이 축적된 상태지만, 135 | 후속작의 집필 여부는 본서에 대한 독자분의 애정어린 관심 및 136 | 피드백, 그리고 프로그래밍 관련 질문에 달려 있습니다. 137 | 지금까지는 필자 개인이 좋아해서 레트로 게임 프로그래밍을 138 | 해왔지만 더 큰 원동력을 얻기 위해서는 독자분의 응원이 절실합니다. 139 | 140 | 본서가 한국에서 활성화되고 레트로 게임 프로그래밍에 대한 관심이 141 | 높아진다면 다음 주제로 후속작을 써보고자 합니다. 142 | * 2D 타일 프로그래밍과 레트로 게임 개발 143 | * 명작 MSX 게임을 자신의 손으로 복원하기 144 | * 실전 도스 게임 제작하기 145 | 146 | 또는 본서의 MSX, MS-DOS 편과 마찬가지로 특정 플랫폼을 타겟팅하는 것도 147 | 고려하고 있습니다. 148 | * 슈퍼 패미콤 게임 프로그래밍 149 | * 게임 보이 프로그래밍 150 | * 애플 프로그래밍 151 | * 패미콤 프로그래밍 152 | 153 | 많은 관심을 가져 주셨으면 좋겠습니다. 154 | 155 | 156 | ## 본서를 넘어 157 | 앞에서 언급했듯이 본서의 집필 시점과 출간 시점에 간극이 있고 158 | 별도로 레트로 게임 프로그래밍을 연구해 왔기 때문에 159 | 현시점에서는 보다 많은 노하우가 쌓인 상태입니다. 160 | 지금부터 소개하는 내용은 아직 공개가 되지 않았지만 161 | 완성도가 높아지면 공유할 예정에 있습니다. 162 | 163 | 어떻게 보면 독자분께서 본서를 마스터하시면 스스로 구현 가능한 164 | 내용이기도 하니 참고하시면 되겠습니다. 165 | 이미지의 경우, 클릭하시면 유튜브 동영상으로 시청하실 수 있습니다. 166 | 167 | ## MSX 168 | 169 | ### 왕가의 계곡 1(킹스밸리) 170 | ubox MSX 라이브러리를 최대한 활용해서 오리지널 왕가의 계곡 1편을 171 | 재현한 프로젝트입니다. 172 | 이 프로젝트의 경우 아예 코딩을 하지 않고 맵만 제작하면 173 | 자신만의 롬 파일을 생성할 수 있도록 프로젝트가 구축된 상태입니다. 174 | 175 | [![왕가의 계곡](https://img.youtube.com/vi/yWfRj2l0rsU/0.jpg)](https://youtu.be/yWfRj2l0rsU) 176 | 177 | 이 프로젝트를 통해 완성된 롬 파일을 178 | WebMSX로 직접 플레이해 볼 수 있습니다. 179 | 180 | 게임 플레이중 진행이 불가할시에는 P키를 누르시면 됩니다. 181 | 킹스밸리의 엔딩을 봤다는 가정하에 맵을 제작했기 때문에 난이도가 꽤 높습니다. 182 | 183 | [버전1](https://webmsx.org/?ROM=https://github.com/pdpdds/ubox_example/releases/download/v1.0/kings_ver2.rom) 184 | [버전2](https://webmsx.org/?ROM=https://github.com/pdpdds/ubox_example/releases/download/v1.0/kings.rom) 185 | 186 | ### 걸케이브 187 | 패럴랙스 스크롤과 횡스크롤 슈팅 게임을 제작하는데 기초가 될 수 있는 188 | MSX 명작게임 걸케이브의 프로토타입 영상입니다. 189 | 미사일 이동 좌표 경우 실수형을 사용하지 않고 정수 좌표를 사용하는데 190 | 정수만으로 일직선으로 이동하는 미사일을 구현하는 방법에 대한 191 | 노하우를 얻을 수 있습니다. 192 | 193 | [![걸케이브](https://img.youtube.com/vi/Ikk61VmXJPQ/0.jpg)](https://youtu.be/Ikk61VmXJPQ) 194 | 195 | ### 마성전설 196 | MSX1은 픽셀 기반 배경 스크롤이 어렵기 때문에 배경은 타일 기반으로 197 | 스크롤링합니다. 대표적인 타일기반 종스크롤링 게임으로는 198 | 마성전설을 들 수 있습니다. 199 | 현재 마성전설 프로토타입을 제작하면서 한가지 문제에 봉착했는데 200 | 그것은 기존 마성전설처럼 8단계를 제작하면 롬의 최대크기인 201 | 32KB를 훌쩍 넘어버린다는 것입니다. 202 | 이를 해결하기 위해서는 게임에 사용된 맵데이터를 더 축소시킬 수 있는 203 | 아이디어가 필요합니다. 204 | 205 | [![마성전설](https://img.youtube.com/vi/NwzJ2HcUIrM/0.jpg)](https://youtu.be/NwzJ2HcUIrM) 206 | 207 | ### 시티 컨넥션 208 | 시티 컨넥션은 도로의 타일을 전부 지나가면 스테이지를 클리어할 수 있습니다. 209 | 간단한 플랫폼 게임을 제작하는데 있어 좋은 프로토타입이 될 것입니다. 210 | 211 | [![시티 컨넥션](https://img.youtube.com/vi/8xCz2cvs3_4/0.jpg)](https://youtu.be/8xCz2cvs3_4) 212 | 213 | ### 구니스 214 | 코나미에서 출시했던 고전 명작 게임 구니스입니다. 215 | 다른 플랫폼으로도 출시된 게임이지만 216 | 개인적으로는 MSX용 구니스가 더 정감이 갑니다. 217 | 218 | [![구니스](https://img.youtube.com/vi/yTiO6O2gpkg/0.jpg)](https://youtu.be/yTiO6O2gpkg) 219 | 220 | ### MSX 폭스레인저 221 | MSX 폭스레인저는 MS-DOS용 폭스레인저 1편을 MSX1용으로 다운그레이드 222 | 시키려는 프로젝트입니다. 아직 게임 리소스를 제대로 확보하지 못해서 223 | 초기 개발 상태에 머물러 있습니다. 걸케이브의 게임 리소스를 차용해서 224 | 개발을 진행하고 있습니다. 225 | 226 | [![MSX 폭스레인저](https://img.youtube.com/vi/63j-ss1-IlM/0.jpg)](https://youtu.be/63j-ss1-IlM) 227 | 228 | ### 디버깅 229 | 본서에서는 MSX의 경우 C 소스코드 레벨에서 동적 디버깅이 가능한 230 | 시스템은 소개하지 않았으며 차선책으로 듀얼 시스템 프로그래밍을 통한 231 | 간접적인 디버깅 방법을 제시했습니다. 232 | 현재는 MSX에서도 동적 디버깅이 가능한 환경을 알아냈습니다. 아래 영상은 233 | 동적 디버깅 영상을 보여줍니다. 234 | 235 | #### MSX 동적 디버깅 1 236 | [![MSX 동적 디버깅 영상](https://img.youtube.com/vi/rzzCT3oKpg0/0.jpg)](https://youtu.be/rzzCT3oKpg0) 237 | 238 | #### MSX 동적 디버깅 2 239 | 킹스밸리 게임에서 적과 주인공이 부딛힐시 브레이크 포인트가 히트하는 영상을 보여줍니다. 240 | 241 | [![MSX 동적 디버깅 영상2](https://img.youtube.com/vi/xn-Tjgooq-k/0.jpg)](https://youtu.be/xn-Tjgooq-k) 242 | 243 | ## MS-DOS 244 | MS-DOS에서는 현재, 새로운 게임 프로젝트를 진행하기 보다 타 플랫폼에서 개발한 게임을 245 | 손쉽게 도스 플랫폼으로 마이그레이션 하는 부분에 대한 연구를 진행하고 있습니다. 246 | 궁극적으로는 일관된 인터페이스를 통해 레트로 게임을 여러 플랫폼에 배포하기 위한 247 | 추상화 인터페이스 연구를 진행하고 있다고 이해하시면 되겠습니다. 248 | 249 | ### 왕가의 계곡 1 - 도스박스 테스트 250 | 도스용으로 개발한 게임은 실기로 테스트하면 제일 좋겠지만 개발 속도에 영향을 주므로 251 | 최초 도스게임을 제작할시에는 도스박스로 테스트하는 것이 좋습니다. 252 | 아래 영상은 도스박스로 도스용 왕가의 계곡 1 리메이크 버전을 테스트하는 영상을 보여줍니다. 253 | 254 | [![왕가의 계곡 도스박스 테스트](https://img.youtube.com/vi/NBUnVkGu_rc/0.jpg)](https://youtu.be/NBUnVkGu_rc) 255 | 256 | ### 왕가의 계곡 1 - 실기 테스트 1 257 | 레트로 게임 프로그래밍에 도전하는 궁극적인 이유중 하나는 자신이 만든 게임을 258 | 실기에 돌려보는데 있을 것입니다. 259 | 아래 영상은 SDL1 라이브러리를 활용하여 실기에서 킹스밸리 1을 실행한 화면을 보여줍니다. 260 | 486-SX, 삼성 SPC7600P에서 테스트를 하였습니다. 261 | 262 | [![왕가의 계곡 도스 실기 테스트](https://img.youtube.com/vi/UdQLUEPdEsQ/0.jpg)](https://youtu.be/UdQLUEPdEsQ) 263 | 264 | ### 왕가의 계곡 1 - 실기 테스트 2 265 | SDL1로 제작한 프로그램을 HX 도스-익스텐더를 활용하여 도스상에서 실행시키는 것은 266 | 실험적인 면이 강하며 아직 불안정한 측면이 있습니다. 267 | 특히 SDLMixer를 활용하는 경우 사운드 출력에 약간의 문제를 일으켰습니다. 268 | 아래 영상은 알레그로4 라이브러리를 활용하여 실기에서 킹스밸리 1을 실행한 화면을 보여줍니다. 269 | 알레그로4 라이브러리를 활용하면 도스상에서 안정적으로 동작하는 프로그램을 제작할 수 있습니다. 270 | 486-SX, 삼성 SPC7600P에서 테스트를 하였습니다. 271 | 272 | [![왕가의 계곡 도스 실기 테스트2](https://img.youtube.com/vi/KrV-UHwCC64/0.jpg)](https://youtu.be/KrV-UHwCC64) 273 | 274 | ### 디버깅 275 | 276 | #### 도스박스-X 듀얼스크린을 활용한 디버깅 277 | VGA 모니터와 허큘러스 모니터를 활용하여 278 | 도스시스템에서 프로그램을 동적 디버깅을 하는 영상을 보여줍니다. 279 | 볼랜드 C/C++ 3.1 IDE를 활용했습니다. 280 | 281 | [![도스 프로그램 디버깅](https://img.youtube.com/vi/eIHenDXO5Vk/0.jpg)](https://www.youtube.com/watch?v=eIHenDXO5Vk) 282 | 283 | #### 스트리트 파이터 2 정영덕님 버전 284 | 도스 시절을 거쳤다면 누구나 들었을만한 게임인 285 | 스트리트 파이터 2 정영덕님 버전 디버깅 영상입니다. 286 | 류가 장풍을 쏠시 브레이크 포인트를 걸어 내부 상태를 조사하는 영상입니다. 287 | 도스박스-X + 볼랜드 C/C++ 3.1 IDE를 활용했습니다. 288 | 289 | [![스트리트 파이터 2 디버깅 영상](https://img.youtube.com/vi/fBTebg7rCa8/0.jpg)](https://www.youtube.com/watch?v=fBTebg7rCa8) 290 | 291 | ### SDL BGI 듀얼 시스템 프로그래밍 292 | 도스 프로그래밍을 대표하는 프로그래밍 인터페이스로 293 | BGI(Borand Graphics Interface)가 있습니다. 294 | 아래 프로젝트는 이 BGI API를 활용하여 295 | WIN32 / MS-DOS에서 동작하는 프로그램 작성 방법을 보여줍니다. 296 | 297 | [SDL BGI](https://github.com/pdpdds/sdl_bgi) 298 | 299 | ### SDL 1.2 + HX 도스 익스텐더 조합을 통한 MS-DOS 실행 300 | 아래 링크에서 소개하는 SDL 1.2 게임 프로젝트는 301 | SDL 1.2로 작성된 프로그램에 생명력을 부여하기 위해 302 | 진행중인 프로젝트입니다. 303 | SDL 1.2로 작성된 게임 프로젝트의 경우 여러가지 이유로 304 | SDL 2.0으로 마이그레이션 하는 경우가 많습니다. 305 | 하지만 SDL 2.0으로 마이그레이션하는 비용은 많많치 않은 작업입니다. 306 | 그래서 게임 프로젝트를 수정하지 않고 SDL 1.2 API 래퍼를 만들어서 내부적으로 SDL 2.0 API를 호출하게끔 307 | 수정을 했습니다. 308 | 게임 소스코드 자체는 SDL 1.2로 작성되어 있는 만큼 309 | 약간 수정을 해서 빌드를 하면 도스에서도 동작가능할 수 있으니 살펴보시기 바랍니다. 310 | 311 | 그렇지만 대부분의 프로젝트는 성능상의 이유 등으로 거의 도스상에서 구동하기는 불가능합니다. 312 | 이 항목은 최적화등의 문제도 있고 해서 난이도가 매우 높기 313 | 때문에 SDL 1.2로 작성한 게임의 MS-DOS 실행 가능성을 314 | 열어뒀다는 정도만 파악하시면 되겠습니다. 315 | 316 | * [SDL 1.2 게임 프로젝트](https://github.com/pdpdds/sdldualsystem) 317 | 318 | 319 | ## 번외편 320 | 여기서 언급하는 내용은 본서와 직접적인 관련이 없습니다. 321 | 다만 본서를 학습하고 나서는 322 | 레트로 플랫폼에서 활용했던 유용한 라이브러리를 현세대 플랫폼에서 323 | 재활용할 수 있다는 사례를 보여주므로 관심을 가질 필요가 있습니다. 324 | 325 | ### IMS 플레이어 안드로이드 326 | MS-DOS 시절에 유명했던 음악 포맷인 IMS 파일을 안드로이드에서 327 | 연주가능하게 해주는 플레이어입니다. 328 | 안드로이드 마켓에서 다운로드 가능합니다. 329 | 330 | [![IMS 플레이어 안드로이드](https://img.youtube.com/vi/Bv6vTX1h_kE/0.jpg)](https://www.youtube.com/watch?v=Bv6vTX1h_kE) 331 | 332 | * [다운로드](https://play.google.com/store/apps/details?id=com.juhang.music) 333 | * [구버전 다운로드](https://play.google.com/store/apps/details?id=com.juhang3.imsplayer) 334 | 335 | 구버전의 경우 샘플 IMS 파일이 내장되어 있어서 IMS 음원을 바로 들어보실 수 있습니다. 336 | 337 | ### PushOver4Droid 338 | 한국에서는 MS-DOS 플랫폼으로 출시된 적이 있는 '아기개미 G.I'의 안드로이드 포팅 버전입니다. 339 | WIN32 버전으로 재구현된 이 게임을 안드로이드용으로 포팅했습니다. 340 | 소스코드는 SDL2로 작성되었기 때문에 다른 플랫폼으로의 마이그레이션이 용이합니다. 341 | 342 | [오리지널 소스코드](https://domino-chain.gitlab.io/#source) 343 | [PushOver4Droid 다운로드](https://play.google.com/store/apps/details?id=com.juhang.app) 344 | 345 | ### 저자 레트로 게임 플레이 영상 346 | MSX, MS-DOS 플랫폼이 전성기였던 시절에 저자는 347 | 프로그래밍은 문외한이고 오락실만 찾던 겜돌이였습니다. 348 | 여러가지 이유가 있겠지만 어린시절을 시골에서 보내다보니 게임을 하는 것 만큼 게임을 만드는 349 | 것도 재밌다는 것을 상기시켜 줄 수 있는 환경을 350 | 갖추지 못했기 때문이라고 생각하고 있습니다. 351 | 하지만 게임을 열심히(?) 했고 그당시에는 프로그래밍을 352 | 하지 않았기 때문에 오히려 지금처럼 어떠한 선입견을 갖지 않고 353 | 현대적인 프로그래밍 관점에서 옛 플랫폼을 조망할 수 있는 계기를 마련할 수 있었다고 생각합니다. 354 | 355 | 이상하게 들릴수도 있겠지만 어릴적에 게임을 즐겁게 356 | 플레이하셨다면 게임도 분명 즐겁게 개발하실 수 있을 겁니다. 357 | 358 | 아래 영상은 저자가 좋아했던 게임의 플레이 화면입니다. 359 | 어릴적에 이런 게임들을 플레이한 것이 계기가 되어 360 | 제가 본서를 출간하고자 마음을 먹지 않았나 생각합니다. 361 | 재밌게 봐주시면 감사하겠습니다. 362 | 363 | #### 마성전설 1 플레이 영상 364 | [![마성전설1](https://img.youtube.com/vi/M0GfrtU1kxw/0.jpg)](https://www.youtube.com/watch?v=M0GfrtU1kxw) 365 | 366 | #### Xain'd Sleena(제인드 슬리나) 367 | [![제인드 슬리나](https://img.youtube.com/vi/0_oNZqtEbqU/0.jpg)](https://www.youtube.com/watch?v=0_oNZqtEbqU) 368 | -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pdpdds/retrogamedev/9771d11393a8399c49cccd8727f1dc1c2b6b46ba/cover.jpg -------------------------------------------------------------------------------- /dicord.svg: -------------------------------------------------------------------------------- 1 | DISCORDDISCORD -------------------------------------------------------------------------------- /부록/Readme.md: -------------------------------------------------------------------------------- 1 | ## Appendix A - 비쥬얼 스튜디오 2 | * [비쥬얼 스튜디오 다운로드](https://visualstudio.microsoft.com/ko/downloads) 3 | * [비쥬얼 스튜디오 이전버전 다운받기](https://visualstudio.microsoft.com/ko/vs/older-downloads) 4 | 5 | 비쥬얼 스튜디오의 경우, 서적에서 사용하는 2019 버전을 다운받아도 되지만 6 | 2022 또는 상위 버전을 설치한 다음, 인스톨러에서 추가로 MSVC 컴파일러 2019 버전을 설치해서 활용할 수 있으니 참고하십시오. 7 | 8 | 9 | ## Appendix B - SDL 10 | * [Lazy Foo' Productions](https://lazyfoo.net/tutorials/SDL) 11 | * [SDL 게임 프로젝트 모음](https://github.com/pdpdds/SDLGameProgramming) 12 | * [SDL과 C++를 이용한 크로스 플랫폼 프로그래밍 샘플 코드](https://github.com/pdpdds/SDLProgramming) 13 | * [SDL Game Development 샘플 코드](https://github.com/kirbyboy/SDL-game-development-source-code) 14 | * [비쥬얼 스튜디오 코드에서 SDL2로 게임 개발](https://velog.io/@arais/VSCode-%EC%97%90%EC%84%9C-SDL2-%EC%99%80-C%EB%A1%9C-%EA%B2%8C%EC%9E%84%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0) 15 | 16 | ## Appendix C - 우분투 이미지 만들기 17 | 깃허브 ubox_example 프로젝트의 워크플로우도 참조하시면 도움이 됩니다. 18 | 액션탭을 선택한 다음 green.yml 파일을 참조하세요 19 | 20 | ## C/C++ 프로그래밍 학습 21 | * [C 프로그래밍](http://www.loirak.com/prog/ctutor.php) 22 | * [Awesome C](https://github.com/inputsh/awesome-c) 23 | * [VSCODE와 WSL2를 활용한 C++ 프로그램 개발](https://code.visualstudio.com/docs/cpp/config-wsl) 24 | 25 | --------------------------------------------------------------------------------