[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Raycasting 3D demo disk



heuser.marcus@freenet.de wrote:
> This is great stuff! Pretty fast and "clean" texturing.
> The textures looks good, too!
>


HERE IS A TEXTURE EDITOR FOR HIS DEMO :-)

out of emu..    s)ave then type DEMO.TEX to update
the demo texture file

the assembly at the end is to make high nibble match
low nibble..


 10  GR
 80  GOSUB 12000
 90  GOSUB 10000
 100  VTAB 21: PRINT "TEXTURE# = ";T + 1;"  ";
 110  VTAB 21: HTAB 16: PRINT "COLOR= ";C;"   A=+ Z=-"
 8000  GET A$
 8010  IF A$ = "." THEN T = T + 1: GOSUB 13000
 8020  IF A$ = "," THEN T = T - 1: GOSUB 13000
 8040  VTAB 21: PRINT "TEXTURE# = ";T + 1;"  ";
 8050  IF A$ = "Q" THEN  STOP
 8060  IF A$ = "J" THEN JX = JX - 1
 8070  IF A$ = "L" THEN JX = JX + 1
 8080  IF A$ = "I" THEN JY = JY - 1
 8090  IF A$ = "K" THEN JY = JY + 1
 8091  IF JY > 16 THEN JY = 16
 8092  IF JX > 16 THEN JX = 16
 8093  IF JX < 1 THEN JX = 1
 8094  IF JY < 1 THEN JY = 1
 8100  IF JY <  > OY OR JX <  > OX THEN  COLOR= OC: PLOT OX,OY: COLOR=
C:OY = JY:OX = JX:OC =  SCRN( JX,JY): PLOT JX,JY
 8101  IF A$ = "Z" OR A$ = "A" THEN  GOSUB 20000
 8110  IF A$ = " " THEN  GOSUB 30000
 8120  COLOR= C
 8130  VTAB 21: HTAB 16: PRINT "COLOR= ";C
 8150 D = 16384 + (T * 256) + ((JX - 1) * 16) + (JY - 1)
 8170  IF A$ = "S" THEN  VTAB 22: INPUT "NAME ";A$: PRINT  CHR$
(4);"BSAVE ";A$;",A$4000,L4096": GOTO 100
 9000  GOTO 8000
 10000  REM
 10010 T = 0: REM  WHICH TEXTURE
 10020  PRINT  CHR$ (4);"BLOAD DEMO.TEX,A$4000"
 10021  PRINT  CHR$ (4);"BLOAD ROL,A$300"
 10025 C = 5
 10030 JX = 8:JY = 8
 10040 OX = JX:OY = JY:OC =  SCRN( OX,OY)
 10045  COLOR= C: PLOT JX,JY
 10050  HOME
 10055  VTAB 22: PRINT " I MOVE <SPC>=PLOT <=NEXT TEXTURE"
 10056  VTAB 23: PRINT "JKL     S=AVE Q=IT >=PREV TEXTURE"
 10060  COLOR= 1: HLIN 0,17 AT 17
 10070  HLIN 0,17 AT 0
 10080  VLIN 0,17 AT 0
 10090  VLIN 0,17 AT 17
 10100  RETURN
 12000  IF T < 0 THEN T = 0
 12005  IF T > 15 THEN T = 15
 12009  FOR Y = 1 TO 16
 12010  FOR X = 1 TO 16
 12020 B = 16384 + (T * 256) + ((Y - 1) * 16) + (X - 1)
 12030 A =  PEEK (B)
 12040  COLOR= A
 12050  PLOT Y,X
 12060  NEXT X
 12070  NEXT Y
 12080  RETURN
 13000  GOSUB 12000
 13010 OC =  SCRN( JX,JY)
 13020  COLOR= C: PLOT JX,JY
 13030  RETURN
 20000  REM  COLOR CHANGE
 20010  IF A$ = "Z" THEN C = C - 1
 20020  IF A$ = "A" THEN C = C + 1
 20030  IF C < 0 THEN C = 0
 20040  IF C > 15 THEN C = 15
 20050  COLOR= C
 20060  VTAB 21: HTAB 16: PRINT "COLOR= ";C;" ";
 20070  PLOT 22,39
 20080  PLOT JX,JY
 20090  RETURN
 30000  REM  POKE PIXEL
 30010 D = 16384 + (T * 256) + ((JX - 1) * 16) + (JY - 1)
 30020  POKE 768,C: CALL 769:
 30030 PIX =  PEEK (768)
 30040  POKE D,PIX
 30050 OC = C
 30060  RETURN


ooh yeah and some assembly...

type call -151
*


type !  (or F666g on older apples)
!

!301: lda 300
! rol
! rol
! rol
! rol
! ora 300
! sta 300
! rts
! <return key>
*

<press control C><return>
]

type:

bsave rol,a$300,L17

Rich