2010년 11월 29일 월요일

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

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으로 만들었습니다.

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