HiTEL 게제동(GMA) 공개자료실

[소스] 베사 쿼터뷰 최종 (C++)
작성자:안영기(SMgal)
97-05-26
첨 부:[2271]qv_cpp.zip
안녕하세요... 어제 중간고사가 끝나서 뭘 하나 만들어 봤는데요.. 저번에 보여 드렸던 '쿼터뷰 베사 롤플레잉 스크롤'의 최종 버전입니다. 대부분의 사람들이 C 언어를 사용하는 관계로 이번에는 C++ 로 만들었습니다. 저번에 보여 드린 Pascal 버전과는 비교도 안될 정도로 변했습니다. ...이번의 변경점은, 1. 쿼터뷰로 풀화면 구현 ( 640 * 480 * 256 ) 2. 풀화면 화면 갱신 속도 개선 ( 펜티엄+ET6000 에서 초당 26회 ) <== 속도는 그래픽 카드에 더 영향을 받더군요... ...파일 속에 포함된 내용은, QV_VESA. CAP : 지금 보는 이 파일입니다. QV_VESA.CPP : 문제의 소스 파일이죠. ( BC 3.1 ) MAP .DAT : 지도 데이타 _NETO .DAT : 타일 데이타 QV_PAS .EXE : 파스칼로 만든 원본 실행 파일 QV_VESA.EXE : C++ 로 번역해서 만든 실행 파일 기본적으로 가상페이지를 화면에 복사하는 방식이고 덕분에 뱅크의 경계선 에 걸릴때를 판별하는 계산이 없어졌습니다. 어떻게 없어졌냐면.... flipPage() 라는 함수를 보면 아시겠지만 '가장 무식한 것이 가장 빠르다'라는 제 동생의 말을 격언 삼아 CX 의 하나 하나에 그에 맞는상수 값 을 넣어서 계산 없이 뱅크를 바꿔 나갔죠. (loop가 없어 코드는 좀 길어졌겠지만 속도는 대신 빠르겠죠.) 이것을 800 * 600 이나 그 이상의 모드로 바꾸려면 640 을 곱해주는 부분을 그 모드의 가로 해상도로 해주면 됩니다. 물론 그 이상의 모드에서 가상 페이지를 쓰려면 보호모드가 지원되는 컴파일러를 권합니다. ( 저는 보호모드를 지원하는 C 컴파일러가 없어서.. ^^; ) 이걸 만들면서 느낀건데 쿼터뷰라는 방식은 정말 속도나 타일의 용량면에서는 좋은 방법이 아니더군요.. 스킵되어 보이지 않거나 겹치는 부분이 반 이상이? ?, 노력한 결과가 반은 보이지 않는 셈이죠. ( 물론 그런걸 보완하는 방법은 많죠... 하지만 원론에 충실하자면 이렇다는 것입니다. ) Pascal 을 C 로 번역하면서 꽤나 애를 먹었습니다. 이 두언어는 포인터의 쓰임이 반대 개념이라 더 어렵더군요... 그리고 베사 모드로 초기화 하는 함수는 성익님(NOERROR)의 강좌를 많이 참조 했습니다. 혹시나 베사 모드에서 스크롤을 하시려는 분들에게 도움이 될까해서 만들어 봤습니다. ( 소스는 마음대로 수정하셔도 좋고, 자신의 루틴에 첨가 하실때 출처를 밝히지 않으셔도 좋습니다. ) 그럼.. SMgal.