2011년 2월 20일 일요일

Scanline eraser

아래는 지난주 파라동에서 painkilla님이 소개해주신 물건(SLG 3000)입니다.


http://wp1114205.wp150.webpack.hosteurope.de/wordpress/?page_id=745


VGA 모드 출력시, 홀수 또는 짝수 라인을 지워서, 꼭 CRT 모니터의 스캔라인 효과를 내주는 기기입니다.

아래 사진을 보시면 어떤 효과인지 이해가 가시죠?






고전 게임 처럼 해상도가 낮은 게임들(수직 해상도 240 이하)의 경우,

640 x 480 모드에서 홀수 수평라인을 지우면 위의 R-type 사진 처럼,

꼭 CRT 모니터에서 보는 듯한 모습을 볼수 있지요.


이걸... 가만히 생각해보니, 업스케일러도 아닌 원본 해상도에서, 라인을 지우는 것이라면 쉽게 만들수 있을 것 같았습니다.

그래서... 음... 만들어봤다는것이죠. ㅋ



15핀 RGB D-SUB 커넥터 두개랑 74LS74A, 74LS125A, 세라믹 콘덴서 2개, 3극 스위치로

SLG 3000 비슷한 걸 만들었습니다.


아래 사진 나갑니다요.

스위치는 검정으로 지울 라인(홀수 또는 짝수)을 선택할때 쓰입니다.





MAME에서 중화대선을 실행해본 모습입니다.

1024 x 768 LCD 모니터에 출력한 것이니, 640 x 480 화면이 좀 뿌옇게 업스케일되어있네요.


아래는 라인 지우기를 안했을때의 원본 화면입니다.




아래는 홀수 또는 짝수 라인을 지웠을때의 모습입니다.

MAME 타이틀의 글자에서 차이가 보이시죠?





회로 추가합니다.

그래픽 카드와 모니터 케이블 사이에 어댑터가 들어가야되니,

기본적으로 2개의 DSUB 커넥터의 15핀은 서로 다 연결하셔야됩니다.

아래 74LS74랑 74LS125에는 DSUB 커넥터에서 필요한 핀(R,G,B,H,V, 5V, GND 등등)에 연결하시면됩니다.

참고로 5V 전원은 DSUB 9번핀에서 끌어다 쓰면 됩니다.



아래는 wiki 에서 퍼온 VGA 15핀 DSUB 핀아웃입니다. 참고하셔요.



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

2010년 10월 17일 일요일

M File Manager v1.1 for MSX-DOS2

지난주 릴리즈했던 v1.0의 버그 2개가 수정되었습니다.

Download: M_v1.1.zip 


아래 내용 참조하세요.


----------------------------------------------------------------

    M v1.1 (MSX-DOS2용 파일 매니져 2010.10.17)

        By 서영만 (E-mail:sharksym@hitel.net)

----------------------------------------------------------------


* 변경 내용


  TSR 처리가 개선되었습니다.

  파일 1개만 삭제할때, 프로그램이 멎는 문제가 수정되엇습니다.