sharksym's MSX World

sharksym.egloos.com

포토로그


구글 애드센스


그레이 스케일 팔레트로 게임 실행해보기 by sharksym

MSX2에서는 V9938의 팔레트 기능을 사용할 수 있습니다.
BASIC의 COLOR 명령으로 쉽게 설정이 가능한데요.

COLOR = (팔레트 번호, R밝기, G밝기, B밝기)
여기서 각 RGB 밝기 값은 0에서 7사이 숫자로 설정하면 됩니다.

이번에는 요걸 이용해서,
일반적으로 팔레트를 재설정하지 않는 MSX1용 게임들을, 모노크롬 모니터로 실행한 듯한 효과를 내봤습니다.

무슨말인지 감이 안온다면...
아래 동영상을 보시면 바로 이해가 되겠지요? ㅎ.ㅎ






그레이 스케일로 팔레트를 바꾸려면, R,G,B 값을 하나의 밝기(Y) 값으로 바꿔야하는데요.
아래의 수식을 이용하면 됩니다.
Y = 0.3*R + 0.59*G + 0.11*B

위의 동영상에서 쓴 프로그램은 BASIC으로 만들었습니다.
소스는 아래 파일을 받으시면 MSX(또는 MSX 에뮬)에서 테스트 가능합니다.

GRAY.BAS 

VDP의 기본 RGB 팔레트 값을 밝기로 변환해서 설정하는 간단한 프로그램이지요.
심심하시면 아래 코드도 한번 보세요. ㅋ

10 CLS
20 PRINT "Calculating grayscale...";
30 DIM Y(16)
40 FOR I=0 TO 15
50 READ R,G,B
60 Y(I)=.3*R + .59*G + .11*B
70 Y(I)=INT(Y(I) + .5)
80 'PRINT Y(I)
90 NEXT I
100 PRINT"Done":PRINT
110 PRINT "* Choose color style"
120 PRINT "1. Gray"
130 PRINT "2. Red"
140 PRINT "3. Green"
150 PRINT "4. Blue"
160 PRINT "5. Yellow"
170 PRINT "6. Cyan"
180 PRINT "7. Purple"
190 INPUT SEL
200 IF (SEL < 1) OR (SEL > 7) THEN 110
210 FOR I=0 TO 15
220 IF SEL = 1 THEN COLOR=(I,Y(I),Y(I),Y(I))
230 IF SEL = 2 THEN COLOR=(I,Y(I), 0  , 0  )
240 IF SEL = 3 THEN COLOR=(I, 0  ,Y(I), 0  )
250 IF SEL = 4 THEN COLOR=(I, 0  , 0  ,Y(I))
260 IF SEL = 5 THEN COLOR=(I,Y(I),Y(I), 0  )
270 IF SEL = 6 THEN COLOR=(I, 0  ,Y(I),Y(I))
280 IF SEL = 7 THEN COLOR=(I,Y(I), 0  ,Y(I))
290 NEXT I
300 DATA 0,0,0
310 DATA 0,0,0
320 DATA 1,6,1
330 DATA 3,7,3
340 DATA 1,1,7
350 DATA 2,3,7
360 DATA 5,1,1
370 DATA 1,6,7
380 DATA 7,1,1
390 DATA 7,3,3
400 DATA 6,6,1
410 DATA 6,6,3
420 DATA 1,4,1
430 DATA 6,2,5
440 DATA 5,5,5
450 DATA 7,7,7

덧글

  • 틸더마크 2011/02/24 17:20 # 답글

    아하. 팔레트를 바꾼 다음에 게임을 로드하면 바뀐 팔레트로 게임을 할수 있겠군요!
  • sharksym 2011/03/02 23:07 #

    녹색 화면을 보고 있으면, 국딩때 컴터학원에서 열심히 두들기던 때가 생각이 납니다. ㅎ.ㅎ
댓글 입력 영역



구글 애드센스 (작은사각형)

MSX rating

구글 애드센스 (세로 직사각형)