1998.8.3 조경민
푸헐 그냥 심심해서 하나 씁니다 -_-;;;;
아직 그래픽두 서투르신 분에게는 좋은 정보가 될꺼 같다는
혼자 생각에 그냥 함 써봅니다.
대부분 겜을 만들께 먼저 그래픽 제어를 할수 있어야
겠죠 -_- ??
대부분 MODEX(Teaked,Unchained-mode)나 VGA13h를 씁니다.
이건 그냥 초간당 ( 그러나 드립다 빠른 ) 13h 모드상에서
간단하게 쩜하나 찍는 얘기입니다.
아는 사람은 당장 p 누르세여 -_-;;;
푸헐 ~ 13h 모드로 가좌
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = 0x13; <-- 요거이 13h -_-;;
int86(0x10,®s,®s); <-- 10h번 인터럽트 호출(비됴바꾸기)
요러면 간당하게 13 모드로 갑니다 푸헐 ^^; 넘 쉽다
고니까
void set_mode ( unsigned char mode )
{
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = mode;
int86(0x10,®s,®s);
}
하믄 되겠네 -_-; 퍼헐...
이렇게 하고 호출을
set_mode(0x13); 하믄 13 모드고
set_mode(0x03); 하믄 다쉬 텍스트 모드로 홀라당 ~
으음 -_-;; 이거 뭐이리 쉽노..
아따 어떤 사람은 인라인어셈을 좋아하더마..
( 아쥑 난 통 어셈은 할줄 모름 --+)
void set_mode ( unsigned char mode )
{
asm{
mov ah, 0x00
mov al, mode
int 0x10
}
}
므아..-_- 더 짧군..
이제 냅다 쩜하나 찍자... -_-;;
알다시피 VGA13h 모드에서는 0xA000 0000L 주소서 부터 시작하는
배열인디 그 배열에다가 색깔 값만 느면 그냥 화면에 나와부려~
unsigned char far* SCR = (unsigned char far*)0xA0000000L;
하구
VGA[ x + 320 * y ] = color;
하믄 그냥 점이 보임 -_-;; 말이 필요 없음이다..
좀 빠른걸 원한다면 말야~
속에 넣는걸 (y<<8)+(y<<6)+x 로 하믄 된다 마하하 -_-;;
이미 누가 다 계산을 해 놔서 무하~
물론 대부분 unsigned char는 byte로 하는게 정석이니깡
#include <conio.h>
typedef unsigned char byte;
byte far* SCR = (byte far*)0xA0000000L;
void set_mode ( byte mode )
{
asm{
mov ah, 0x00
mov al, mode
int 0x10
}
}
void set_pix( int x, int y, byte col )
{
VGA[ (y<<8)+(y<<6)+x ] = col;
}
void main()
{
int x,y;
set_mode(0x13);
for(x=0;x<320;x++)
for(y=0;y<200;y++)
set_pix(x,y,30);
getch();
set_mode(0x03);
}
헐.. -_-; 돌아버리게 쉽군....
참 A0000000L 이거이 안되는 집은 <dos.h> 포함하고
byte far* SCR = (byte far*)MK_FP(0xA000,0x0000);
이렇게 해보드라구 흐흐흐..
마하하하 -_-;;; 넘 쉬운 13h 였슴둥..
난 이만 .. 강원도로 훌라당~
푸헐 그냥 심심해서 하나 씁니다 -_-;;;;
아직 그래픽두 서투르신 분에게는 좋은 정보가 될꺼 같다는
혼자 생각에 그냥 함 써봅니다.
대부분 겜을 만들께 먼저 그래픽 제어를 할수 있어야
겠죠 -_- ??
대부분 MODEX(Teaked,Unchained-mode)나 VGA13h를 씁니다.
이건 그냥 초간당 ( 그러나 드립다 빠른 ) 13h 모드상에서
간단하게 쩜하나 찍는 얘기입니다.
아는 사람은 당장 p 누르세여 -_-;;;
푸헐 ~ 13h 모드로 가좌
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = 0x13; <-- 요거이 13h -_-;;
int86(0x10,®s,®s); <-- 10h번 인터럽트 호출(비됴바꾸기)
요러면 간당하게 13 모드로 갑니다 푸헐 ^^; 넘 쉽다
고니까
void set_mode ( unsigned char mode )
{
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = mode;
int86(0x10,®s,®s);
}
하믄 되겠네 -_-; 퍼헐...
이렇게 하고 호출을
set_mode(0x13); 하믄 13 모드고
set_mode(0x03); 하믄 다쉬 텍스트 모드로 홀라당 ~
으음 -_-;; 이거 뭐이리 쉽노..
아따 어떤 사람은 인라인어셈을 좋아하더마..
( 아쥑 난 통 어셈은 할줄 모름 --+)
void set_mode ( unsigned char mode )
{
asm{
mov ah, 0x00
mov al, mode
int 0x10
}
}
므아..-_- 더 짧군..
이제 냅다 쩜하나 찍자... -_-;;
알다시피 VGA13h 모드에서는 0xA000 0000L 주소서 부터 시작하는
배열인디 그 배열에다가 색깔 값만 느면 그냥 화면에 나와부려~
unsigned char far* SCR = (unsigned char far*)0xA0000000L;
하구
VGA[ x + 320 * y ] = color;
하믄 그냥 점이 보임 -_-;; 말이 필요 없음이다..
좀 빠른걸 원한다면 말야~
속에 넣는걸 (y<<8)+(y<<6)+x 로 하믄 된다 마하하 -_-;;
이미 누가 다 계산을 해 놔서 무하~
물론 대부분 unsigned char는 byte로 하는게 정석이니깡
#include <conio.h>
typedef unsigned char byte;
byte far* SCR = (byte far*)0xA0000000L;
void set_mode ( byte mode )
{
asm{
mov ah, 0x00
mov al, mode
int 0x10
}
}
void set_pix( int x, int y, byte col )
{
VGA[ (y<<8)+(y<<6)+x ] = col;
}
void main()
{
int x,y;
set_mode(0x13);
for(x=0;x<320;x++)
for(y=0;y<200;y++)
set_pix(x,y,30);
getch();
set_mode(0x03);
}
헐.. -_-; 돌아버리게 쉽군....
참 A0000000L 이거이 안되는 집은 <dos.h> 포함하고
byte far* SCR = (byte far*)MK_FP(0xA000,0x0000);
이렇게 해보드라구 흐흐흐..
마하하하 -_-;;; 넘 쉬운 13h 였슴둥..
난 이만 .. 강원도로 훌라당~
'KB > C/C++' 카테고리의 다른 글
[djgpp] class 라이브러리만들기 (0) | 2004.03.19 |
---|---|
class에 대한 잡담 (0) | 2004.03.19 |
this에 대하여 (0) | 2004.03.19 |
rtti (0) | 2004.03.19 |
tc 라이브러리 만들기 (0) | 2004.03.19 |