mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-27 09:34:55 -04:00
github publish
This commit is contained in:
commit
506e23bf32
542 changed files with 120675 additions and 0 deletions
102
PCX/3DMAN.C
Normal file
102
PCX/3DMAN.C
Normal file
|
@ -0,0 +1,102 @@
|
|||
#include "..\types.h"
|
||||
#include "..\bgraph.h";
|
||||
#include "pcx.h"
|
||||
#include <mem.h>
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
typedef char bitmap[640*480+512+6+16];
|
||||
|
||||
#define DATASTART (512+6)
|
||||
#define DATASIZE (640*480)
|
||||
|
||||
bitmap out;
|
||||
bitmap in1;
|
||||
|
||||
void clear_bm(bitmap *c)
|
||||
{
|
||||
memset(((char *)c+DATASTART),0,DATASIZE);
|
||||
}
|
||||
|
||||
void adjust_point(int *x,int *y)
|
||||
{
|
||||
while (*x>=640) (*x)-=640;
|
||||
while (*x<0) (*x)+=640;
|
||||
while (*y>=480) (*y)-=480;
|
||||
while (*y<0) (*y)+=480;
|
||||
}
|
||||
|
||||
void set_point(int x,int y,int c)
|
||||
{
|
||||
adjust_point(&x,&y);
|
||||
out[DATASTART+x+y*640]=c;
|
||||
}
|
||||
|
||||
int get_point(int x,int y)
|
||||
{
|
||||
x=x*640/500;y=y*480/2000;
|
||||
adjust_point(&x,&y);
|
||||
return in1[DATASTART+x+y*640];
|
||||
}
|
||||
|
||||
#define TXT_Y 480
|
||||
#define TXT_X 640
|
||||
#define OKO_Y 103
|
||||
#define OKO_X 250
|
||||
#define OKO_Z (-1100)
|
||||
#define OSA_Y 1000
|
||||
#define OSA_X 500
|
||||
|
||||
int vypocet_z(int y)
|
||||
{
|
||||
return(OSA_Y-y)*(-OKO_Z)/(y-OKO_Y);
|
||||
}
|
||||
|
||||
int vypocet_x(int x,int z)
|
||||
{
|
||||
return(x-OKO_X)*z/(-OKO_Z)+x;
|
||||
}
|
||||
|
||||
void smycka()
|
||||
{
|
||||
int x1,y1,z1;
|
||||
int x2;
|
||||
|
||||
for(y1=351;y1>178;y1--)
|
||||
{
|
||||
z1=vypocet_z(y1);
|
||||
for(x1=0;x1<639;x1++)
|
||||
{
|
||||
x2=vypocet_x(x1-70,z1);
|
||||
set_point(x1,y1+9+16,get_point(x2,z1+350));
|
||||
}
|
||||
/*if (!(y1 & 7))*/{put_picture(0,0,out);showview(0,0,0,0);}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
initmode32b();
|
||||
|
||||
|
||||
void init()
|
||||
{
|
||||
initmode32b();
|
||||
memcpy(&out,&in1,sizeof(in1));
|
||||
clear_bm(out);
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
void *buffer;
|
||||
|
||||
open_pcx("TEXTURA.PCX",A_8BIT,&buffer);
|
||||
memcpy(&in1,buffer,sizeof(in1));
|
||||
free(buffer);
|
||||
open_pcx("sit.PCX",A_8BIT,&buffer);
|
||||
init();
|
||||
memcpy(&out,buffer,sizeof(out));
|
||||
put_picture(0,0,&out);
|
||||
showview(0,0,0,0);
|
||||
smycka();
|
||||
getchar();
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue