본문 바로가기

기타

레트로 게임보이에 Hello World 출력하기

반응형

게임보이 글자 출력

게임보이(GameBoy)는 90년대 초등학교를 보낸 이들이라면, 잊을 수가 없는 게임기다. 나는 아직도 휴대하면서 팩을 바꿔서 게임을 할 수 있는 게임기를 처음 본 날을 잊을 수 없다. 내가 가진 게임보이에 Hello World를 출력해보고 싶었다. 

사전 준비 - SDK 설치하기

우선 SDK가 필요하다.  GitHub에서 SDK를 다운로드한다. 나는 gbdk-win64.zip를 다운로드했다.

https://github.com/gbdk-2020/gbdk-2020/releases/download/4.2.0/gbdk-win64.zip

압축을 해제하면 아래와 같은 폴더가 생긴다.

gbdk-win64.zip를 압축해제 했다.

Hello World 출력하기

examples 폴더에 가면, 여러 가지 많은 샘플들이 있다. 여기서 helloworld 폴더를 생성하자. 아래와 같이 3개의 파일을 만들었다.

helloworld 폴더를 만들고 3개의 파일을 만든다.

compile.bat 파일

..\..\..\bin\lcc.exe -Wa-l -Wl-m -Wl-j -o helloworld.gb helloworld.c

Makefile 파일 - 다른 폴더에서 복사했다.

CC	= ../../../bin/lcc -Wa-l -Wl-m -Wl-j

BINS	= comm.gb

all:	$(BINS)

compile.bat: Makefile
	@echo "REM Automatically generated from Makefile" > compile.bat
	@make -sn | sed y/\\//\\\\/ | sed s/mkdir\ -p\/mkdir\/ | grep -v make >> compile.bat

# Compile and link single file in one pass
%.gb:	%.c
	$(CC) -o $@ $<

clean:
	rm -f *.o *.lst *.map *.gb *~ *.rel *.cdb *.ihx *.lnk *.sym *.asm *.noi

helloworld.c 파일

#include <stdio.h>
 
void main()
{
    int counter = 1;
    while (counter <=16)
    {
    	printf("Hello JYJHS!\n");
    	counter++;
    }
}

코드는 간단하다.
해당 코드를 작성하고, compile.bat를 실행시키면 아래와 같이 3개의 파일이 생성된다.
여기서 Gameboy SD카드에 넣을 파일은 helloworld.gb 다.

컴파일 후 생성된 파일

SD카드 연결하기 

Gameboy에 연결되어 있는 MicroSD 카드에 helloworld.gb 파일을 복사한다. 그리고 helloworld.gb를 찾아서 실행한다.

(좌) SD카드에 helloworld.gb를 복사했다. / (우) Hello JYJHS가 출력되는걸 볼수 있다.

"Hello JYJHS!" 가 잘 출력이 된다. 관심이 있는 분들은 여러가지 코드를 작성하고, examples들을 참고하여 놀아보자.

🕹️ 조이스틱 입력받기 

Gameboy는 십자키 4개, START, SELECT, A, B 이렇게 총 8개의 버튼을 사용할 수 있다. joypad() 함수를 부르면, 아래와 같이 버튼 이벤트를 사용할 수 있다.

#include <stdio.h>
#include <gb/gb.h>
#include <stdint.h> 

void main(void)
{
	while(1) 
	{
		switch(joypad()) 
		{

			case J_RIGHT :
				printf("Right!\n");
				delay(100);
				break;
			case J_LEFT :
				printf("Left!\n");
				delay(100);
				break;
			case J_UP :
				printf("Up!\n");
				delay(100);
				break;
			case J_DOWN :
				printf("Down!\n");
				delay(100);
				break;
			case J_START :
				printf("Start!\n");
				delay(100);
				break;
			case J_SELECT :
				printf("Select!\n");
				delay(100);
				break;
			case J_A :
				printf("A!\n");
				delay(100);
				break;
			case J_B :
				printf("B!\n");
				delay(100);
				break;			
			default :
				break;
		}
	}
}
능력이 많으신 분들이라면, 본인이 만든 게임을 본인 기기에 실행해 볼 수 있다.


2024.04.28 - [기타] - 무료 Grid 사용하기

 

무료 Grid 사용하기

Winform에서 사용할 수 있는 무료 Grid가 있어서 소개합니다.DOWNLOAD 아래 링크에서 다운로드를 합니다.sourcegrid-v2.0.0.zip을 다운로드하고 압축을 해제합니다. GitHub - siemens/sourcegrid: sourcegrid  GitHub - sie

rich313.tistory.com

 

반응형