home *** CD-ROM | disk | FTP | other *** search
- Full screen texturing:
- It runs full screen (320x200) at 70 frames/second on a 486DX-66 Local Bus or
- even larger areas.
- It runs at about half screen (200x120 or so) on a 486DX-33 without Local Bus
- or at 35 frames/second full screen.
- (and looks alot better than in 2nd Reality =)
- BTW, this was coded quite a time before that; but couldn't be released
- earlier due to upload problems (fuck the sysops!)
-
- coded by »The Faker« / AARDVARK
-
- Feel free to use this in your productions - Feel free to credit me =)
-
- Notes: This is the same routine as in TEXTURE.PAS except that the 'db 66h'
- (386er opcodes) are replaced. That may be also useful for ASM-only programmers.
-
- PROCEDURE PutTexture(IncX,IncY:Integer; P:Pointer);
- VAR
- Y,PosX,PosY,PX,PY:Integer;
- BEGIN
- PosX:=-(ScreenX SHR 1)*IncX; { ScreenX,-Y are size of screen; PosX,-Y }
- PosY:=-(ScreenY SHR 1)*IncY; { are set so rotation is around middle }
- FOR Y:=0 TO ScreenY-1 DO
- BEGIN
- PX:=PosX; { PosX,-Y is updated every line, PX,-Y taken from those }
- PY:=PosY;
- ASM
- push ds
- mov ax,0a000h
- mov es,ax
- mov ax,y
- xchg al,ah
- mov di,ax
- shr di,2
- add di,ax
- lds si,p { in P there should be a 256x256 bitmap }
- mov cx,screenx shr 1
- cld
- mov ax,incx
- shl eax,16
- mov ax,incy
- mov esi,eax
- mov dx,px
- shl edx,16
- mov dx,py
- @1: add edx,esi
- mov ebx,edx
- shr ebx,16
- mov bl,dh
- mov al,[bx]
- add edx,esi
- mov ebx,edx
- shr ebx,16
- mov bl,dh
- mov ah,[bx]
- stosw
- dec cx
- jnz @1
- pop ds
- END;
- Inc(PosX,IncY);
- Inc(PosY,-IncX);
- END;
- END;
-