2011년 3월 7일 월요일

HI-TECH C 용 GRP 라이브러리 만들기 #2 - 스프라이트, VRAM 카피

주말을 맞아 작업이 좀더 진행이 됐습니다.

스프라이트 기본기능과 VDP 커맨드를 이용한 메모리 copy 정도를 넣어봤습니다.

 

 

아래는 라이브러리 테스트용 프로그램이 동작하는 모습인데요, 잠시 구경해보세요~ ㅎ




2011년 3월 2일 수요일

HI-TECH C 용 GRP 라이브러리 만들기 #1 - 구상

요즘 틈틈히 DOS2뱅킹 라이브러리와 함께 쓸수 있는, 그래픽 라이브러리를 만들고 있습니다.

시작이 반이니까... 50% 완성이라고 보시면 되겠네요. ㅎ.ㅎㅋ

 

라이브러리 구동 환경은,

제가 만든 DOS2 뱅킹 라이브러리가 필수이고 가능하면 2뱅크(32KB x 2)이내로 만들 생각입니다.

BIOS 내의 스크린 모드 전환 및 VDP 관련 루틴 없이 동작하도록 되어있습니다.

최소 사양은 V9938 + VRAM 128KB 이고, V9958 기능들도 지원합니다.

 

구현은 아래 처럼 진행중입니다. 순서는 좀 바뀔수 있어요 ㅎ.ㅎ

 

1. VDP I/O

   - VDP control 레지스터 쓰기, status 레지스터 읽기

   - VRAM 읽기/쓰기

   - VRAM 페이지(16KB 단위) clear

   - 디스크, VRAM 간의 Load/Save

 

2. 비트맵 모드 (스크린 5,6,7,8)

   - 페이징

   - VRAM R/W 이용한 픽셀 그리기

   - HW 수직 스크롤(V9938)

   - HW 수평 스크롤(V9958, 1페이지, 2페이지 모드)

   - VDP 커맨드

   - 폰트

   - Circle

   - 인터레이스 모드 DRAW: Line, Box

 

3. 스프라이트

   - 스프라이트 모드2

   - 스프라이트 모드1

   - 패턴 애니메이션

 

4. 패턴맵 모드 (스크린 2,4)

   - 페이징

   - 패턴 애니메이션

   - Line, Box, Circle

   - SW 스크롤

 

5. 팔레트

   - 팔레트 애니메이션

 

6. 텍스트 패턴맵 모드 (스크린 0,1)

   - 페이징

   - 폰트

   - Line, Box (특수 문자)

 

7. 비트맵 모드 (스크린 10,11,12)

   - 2번에서 중복 기능 외...

 

 

에... 사실 처음에는 VDP 기본 라이브러리랑 게임용 라이브러리를 따로 만들까 생각도 했었는데요.

일단은 짬뽕해서 진행하고, 상황봐서 게임용은 따로 나누던지 할 생각입니다.

 

조금씩 만드는거라, 언제 완성될지는 모르겠지만, 라이브러리는 진행중 가끔 릴리즈 될 예정입니다.

 

PS. 혹시 요청사항 있으시면 댓글 달아주셔요. ㅎ.ㅎ


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 핀아웃입니다. 참고하셔요.