CPC Rulez https://cpcrulez.fr/forum/ |
|
RayCasting simple https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5372 |
Page 1 sur 1 |
Auteur : | demoniakparadox [ 05 Déc 2014, 17:59 ] |
Sujet du message : | RayCasting simple |
Comme j'avais quelques heures à perdre ces dernières semaines, j'ai eu envie de faire un petit essai... Bon comme le dit le titre, c'est très "basique". Il s'affiche en 160x200 en mode 0. Les touches fléchées servent au déplacement. Voici le source, commenté Code : org #9000
run $ start: DI LD BC,#7F8C OUT (C),C LD H,Laby/256 ; Adresse <HI> de la "map" EXX DrawView: LD A,#20 ; Angle SUB 40 ; A2 = Angle - 40, on va tracer des lignes verticales de angle-40 à angle+39 => 80 octets en largeur LD (BclDrawView+1),A XOR A LD (DrawX+1),A BclDrawView: LD HL,TabCos/2 LD A,L ; A2 ADD HL,HL LD C,(HL) INC HL LD B,(HL) LD (stepy+1),BC LD H,TabCos/512 ADD A,64 ; A2 + 64 (TabCos[Angle+64]=TabSin[Angle]) LD L,A ADD HL,HL LD C,(HL) INC HL LD B,(HL) LD (stepx+1),BC PosY: LD HL,#2800 ; yy PosX: LD DE,#3800 ; xx XOR A LoopLabyView: EX AF,AF' ; Sauvegarde dist LD A,H ADD A,A ADD A,A AND #F0 LD B,A ; b = yy >> 6 = ( yy >>10 ) << 4 LD A,D RRA SRA A ; a = xx >> 10 ADD A,B EXX LD L,A LD A,(HL) ; Laby[ ( xx >> 10 ) + ( yy >> 10 ) << 4 ] EXX AND A JR NZ,EndLoopLaby stepy: LD BC,0 ADD HL,BC ; HL = PosY + stepy EX DE,HL stepx: LD BC,0 ADD HL,BC EX DE,HL ; DE = PosX + stepx EX AF,AF' INC A ; Dist = Dist + 1 JR LoopLabyView EndLoopLaby: LD C,A ; couleur LD H,TabHeight/256 EX AF,AF' LD L,A ; En fonction de la distance LD B,(HL) ; On déduit la hauteur LD A,25 ; ; Trace une ligne verticale avec L = x, B = hauteur, C = couleur ; SUB B LD (MinHauteur+1),A ; Hauteur mini = 25 - hauteur ADD A,B ADD A,B LD (MaxHauteur+1),A ; Hauteur maxi = 25 + hauteur DrawX: LD HL,#C000 ; Position x LD DE,#C050 ; Pour ajustement mémoire vidéo LD B,50 ; hauteur totale BclY: LD A,B MaxHauteur: CP 0 ; Hauteur max à tracer JR NC,DrawVide MinHauteur: CP 0 ; Hauteur min à tracer JR C,DrawVide LD A,C ; Octet mode 0 représentant la couleur du mur JR DrawOk DrawVide: XOR A ; Pas de mur DrawOk: LD (HL),A ; Ecriture dans Ligne n SET 3,H ; Ligne n + 1 LD (HL),A ; Ecriture SET 4,H ; Ligne n + 3 LD (HL),A ; Ecriture RES 3,H ; Ligne n + 2 LD (HL),A ; Ecriture LD A,H ; Ici H a déja été augmenté de #10 (avec le SET 4) ADD A,#10 ; Passage à la ligne n+4 LD H,A JR NC,Suite ADD HL,DE ; Ajustement si débordement Suite: DJNZ BclY ; Nombre de Y terminés ? LD A,(BclDrawView+1) INC A ; Incrémeter A2 (angle de traçage) LD (BclDrawView+1),A LD A,(DrawX+1) INC A ; Incrémenter position de traçage (mémoire vidéo) LD (DrawX+1),A CP 80 ; 80 lignes tracées ? JP C,BclDrawView ; Sinon on continue ; ; Lecture Clavier ; LD BC,#F40E OUT (C),C LD BC,#F6C0 OUT (C),C XOR A OUT (C),A LD BC,#F792 OUT (C),C LD A,#40 LD HL,MatClavier ReadClav1: LD B,#F6 OUT (C),A LD B,#F4 INI INC A CP #42 ; Pas besoin d'aller plus loin pour lire les flèches JR C,ReadClav1 LD BC,#F782 OUT (C),C DEC HL LD A,(HL) RRA ; Left JR C,TstRight LD A,(DrawView+1) SUB 4 ; Angle = Angle - 4 LD (DrawView+1),A TstRight: DEC HL LD A,(HL) BIT 1,A ; Right JR NZ,TstUp LD A,(DrawView+1) ADD A,4 ; Angle = Angle + 4 LD (DrawView+1),A TstUp: LD A,(HL) RRA ; Up JR c,TstDown LD DE,#4000 ; Déplacement en avant => +cos[A+64] en x et +cos[A] en y JR Move TstDown: BIT 1,A ; Down JP NZ,DrawView LD DE,#C080 ; Déplacement en arrière => +cos[A-64] en x et +cos[A+128] en y Move: LD H,TabCos/512 LD A,(DrawView+1) ADD A,D LD L,A SUB D ADD A,E ; D = E + 64 (TabCos[Angle+64]=TabSin[Angle]) ADD HL,HL ; TabCos est un tableau de mot (16 bits) LD C,(HL) INC HL LD B,(HL) LD HL,(PosX+1) ADD HL,BC ADD HL,BC ADD HL,BC ADD HL,BC ; PosX + TabCos[ Angle + D ] << 2 EX DE,HL ; DE = newPx LD H,TabCos/512 LD L,A ADD HL,HL LD C,(HL) INC HL LD B,(HL) LD HL,(PosY+1) ADD HL,BC ADD HL,BC ADD HL,BC ADD HL,BC ; HL = newPy (PosY + TabCos[ Angle + E ] << 2) LD A,H ADD A,A ADD A,A AND #F0 LD B,A ; b = newpy >> 6 LD A,D RRA SRA A ; a = newpx >> 10 ADD A,B EXX LD L,A LD A,(HL) ; Lecture valeur laby[ ( newpx >> 10 ) + ( newpy >> 10 ) << 4 ] EXX AND A JR NZ,NoMove ; Si laby[ newpos ] non vide, pas de déplacement possible LD (PosY+1),HL EX DE,HL LD (PosX+1),HL NoMove: JP DrawView ; ; Les données suivantes doivent commencer à une adresse divisible par 256 ;-) ; org #9200 ; ; "Map" => chaque valeur est un octet en mode 0 ; Laby: DB #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC DB #FC, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #F3, #00, #00, #03 DB #03, #00, #00, #00, #00, #00, #00, #00, #33, #00, #00, #00, #3F, #00, #C3, #FC DB #FC, #00, #00, #00, #00, #00, #00, #00, #33, #00, #30, #00, #F3, #00, #00, #03 DB #03, #00, #00, #00, #00, #00, #30, #CF, #CF, #00, #CC, #00, #00, #00, #00, #FC DB #FC, #00, #00, #00, #00, #00, #CC, #00, #33, #CC, #30, #CC, #30, #CC, #00, #03 DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #CC, #00, #CC, #00, #00, #FC DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #CC, #00, #CC, #00, #00, #FC DB #FC, #00, #00, #00, #00, #00, #CC, #00, #00, #00, #30, #00, #30, #00, #C3, #03 DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #00, #00, #00, #00, #00, #FC DB #FC, #00, #00, #00, #00, #00, #F0, #3C, #F0, #3C, #00, #00, #00, #00, #00, #03 DB #FC, #00, #00, #00, #00, #00, #F0, #3C, #F0, #3C, #00, #00, #00, #00, #00, #03 DB #03, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #FC DB #FC, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #03 DB #03, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #FC DB #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03 ; ; Conversion distance en hauteur de mur (hauteur variant de 25 (hauteur max) à 0) ; TabHeight DB #19, #19, #19, #19, #19, #19, #19, #19, #19, #19, #16, #14, #12, #11, #10, #0F DB #0E, #0D, #0C, #0B, #0B, #0A, #0A, #09, #09, #09, #08, #08, #08, #07, #07, #07 DB #07, #06, #06, #06, #06, #06, #05, #05, #05, #05, #05, #05, #05, #05, #04, #04 DB #04, #04, #04, #04, #04, #04, #04, #04, #04, #03, #03, #03, #03, #03, #03, #03 DB #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #02, #02, #02, #02 DB #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02 DB #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02 DB #02, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00 DB #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00 ; ; Tableau de mot de 16 bits => cos(x)*80 (x de 0 à 255 pour un équivalent angle de 0 à 359 degrés) ; TabCos DW #0050, #004F, #004F, #004F, #004F, #004F, #004F, #004E DW #004E, #004E, #004D, #004D, #004C, #004B, #004B, #004A DW #0049, #0049, #0048, #0047, #0046, #0045, #0044, #0043 DW #0042, #0041, #0040, #003F, #003D, #003C, #003B, #0039 DW #0038, #0037, #0035, #0034, #0032, #0031, #002F, #002E DW #002C, #002A, #0029, #0027, #0025, #0023, #0022, #0020 DW #001E, #001C, #001A, #0019, #0017, #0015, #0013, #0011 DW #000F, #000D, #000B, #0009, #0007, #0005, #0003, #0001 DW #0000, #FFFF, #FFFD, #FFFB, #FFF9, #FFF7, #FFF5, #FFF3 DW #FFF1, #FFEF, #FFED, #FFEB, #FFE9, #FFE7, #FFE6, #FFE4 DW #FFE2, #FFE0, #FFDE, #FFDD, #FFDB, #FFD9, #FFD7, #FFD6 DW #FFD4, #FFD2, #FFD1, #FFCF, #FFCE, #FFCC, #FFCB, #FFC9 DW #FFC8, #FFC7, #FFC5, #FFC4, #FFC3, #FFC1, #FFC0, #FFBF DW #FFBE, #FFBD, #FFBC, #FFBB, #FFBA, #FFB9, #FFB8, #FFB7 DW #FFB7, #FFB6, #FFB5, #FFB5, #FFB4, #FFB3, #FFB3, #FFB2 DW #FFB2, #FFB2, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1 DW #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB2 DW #FFB2, #FFB2, #FFB3, #FFB3, #FFB4, #FFB5, #FFB5, #FFB6 DW #FFB7, #FFB7, #FFB8, #FFB9, #FFBA, #FFBB, #FFBC, #FFBD DW #FFBE, #FFBF, #FFC0, #FFC1, #FFC3, #FFC4, #FFC5, #FFC7 DW #FFC8, #FFC9, #FFCB, #FFCC, #FFCE, #FFCF, #FFD1, #FFD2 DW #FFD4, #FFD6, #FFD7, #FFD9, #FFDB, #FFDD, #FFDE, #FFE0 DW #FFE2, #FFE4, #FFE6, #FFE7, #FFE9, #FFEB, #FFED, #FFEF DW #FFF1, #FFF3, #FFF5, #FFF7, #FFF9, #FFFB, #FFFD, #FFFF DW #0000, #0001, #0003, #0005, #0007, #0009, #000B, #000D DW #000F, #0011, #0013, #0015, #0017, #0019, #001A, #001C DW #001E, #0020, #0022, #0023, #0025, #0027, #0029, #002A DW #002C, #002E, #002F, #0031, #0032, #0034, #0035, #0037 DW #0038, #0039, #003B, #003C, #003D, #003F, #0040, #0041 DW #0042, #0043, #0044, #0045, #0046, #0047, #0048, #0049 DW #0049, #004A, #004B, #004B, #004C, #004D, #004D, #004E DW #004E, #004E, #004F, #004F, #004F, #004F, #004F, #004F MatClavier: DS 3 |
Auteur : | hERMOL [ 05 Déc 2014, 19:39 ] |
Sujet du message : | Re: RayCasting simple |
Wouaah ! très intéressent, tu peu m'explique comment marche l'encodage de la map ? |
Auteur : | demoniakparadox [ 06 Déc 2014, 10:13 ] |
Sujet du message : | Re: RayCasting simple |
hERMOL a écrit : Wouaah ! très intéressent, tu peu m'explique comment marche l'encodage de la map ? C'est très simple : J'affiche des "doubles pixels mode 0" (soit un octet). Si je veux donc un pixel de couleur 1, je code #C0 dans la map (#C0 = pixel 0 et pixel 1 de couleur 1, en mode 0) Si je veux un pixel de couleur 2, je code #0C dans la map Et ainsi de suite... Avec ce système, on pourrait même créer des "murs rayés" : contenant deux couleurs, par exemple en codant #48 dans la map, on aurait un pixel de couleur 2 suivi d'un pixel de couleur 1 |
Auteur : | demoniakparadox [ 08 Déc 2014, 17:37 ] |
Sujet du message : | Re: RayCasting simple |
Petit update, version optimisée en vitesse (au détriment de la précision d'affichage...) Code : org #9000
run $ start: DI LD BC,#7F8C OUT (C),C LD H,Laby/256 ; Adresse <HI> de la "map" EXX DrawView: LD A,#00 ; Angle SUB 40 ; A2 = Angle - 40, on va tracer des lignes verticales de angle-40 à angle+39 => 80 octets en largeur LD (BclDrawView+1),A XOR A LD (DrawX+1),A BclDrawView: LD HL,TabCos/2 LD A,L ; A2 LD D,A ADD HL,HL LD A,(HL) INC HL LD B,(HL) RLA RL B RLA RL B RLA RL B RLA RL B LD C,A LD (stepy+1),BC LD H,TabCos/512 LD A,D ADD A,64 ; A2 + 64 (TabCos[Angle+64]=TabSin[Angle]) LD L,A ADD HL,HL LD C,(HL) INC HL LD B,(HL) LD (stepx+1),BC PosX: LD DE,#0400 ; xx PosY: LD HL,#1000 ; yy XOR A LoopLabyView: EX AF,AF' ; Sauvegarde dist LD A,H AND #F0 OR D EXX LD L,A LD A,(HL) ; Laby[ ( xx >> 10 ) + ( yy >> 10 ) << 4 ] EXX AND A JR NZ,EndLoopLaby stepy: LD BC,0 ADD HL,BC ; HL = PosY + stepy EX DE,HL stepx: LD BC,0 ADD HL,BC EX DE,HL ; DE = PosX + stepx EX AF,AF' INC A ; Dist = Dist + 1 JR LoopLabyView EndLoopLaby: LD C,A ; couleur LD H,TabHeight/256 EX AF,AF' LD L,A ; En fonction de la distance LD B,(HL) ; On déduit la hauteur LD A,25 ; ; Trace une ligne verticale avec L = x, B = hauteur, C = couleur ; SUB B LD (MinHauteur+1),A ; Hauteur mini = 25 - hauteur ADD A,B ADD A,B LD (MaxHauteur+1),A ; Hauteur maxi = 25 + hauteur DrawX: LD HL,#C000 ; Position x LD DE,#C050 ; Pour ajustement mémoire vidéo LD B,50 ; hauteur totale BclY: LD A,B MaxHauteur: CP 0 ; Hauteur max à tracer JR NC,DrawVide MinHauteur: CP 0 ; Hauteur min à tracer JR C,DrawVide LD A,C ; Octet mode 0 représentant la couleur du mur JR DrawOk DrawVide: XOR A ; Pas de mur DrawOk: LD (HL),A ; Ecriture dans Ligne n SET 3,H ; Ligne n + 1 LD (HL),A ; Ecriture SET 4,H ; Ligne n + 3 LD (HL),A ; Ecriture RES 3,H ; Ligne n + 2 LD (HL),A ; Ecriture LD A,H ; Ici H a déja été augmenté de #10 (avec le SET 4) ADD A,#10 ; Passage à la ligne n+4 LD H,A JR NC,Suite ADD HL,DE ; Ajustement si débordement Suite: DJNZ BclY ; Nombre de Y terminés ? LD A,(BclDrawView+1) INC A ; Incrémeter A2 (angle de traçage) LD (BclDrawView+1),A LD A,(DrawX+1) INC A LD (DrawX+1),A CP 80 JP C,BclDrawView LD BC,#F40E OUT (C),C LD BC,#F6C0 OUT (C),C XOR A OUT (C),A LD BC,#F792 OUT (C),C LD A,#40 LD HL,MatClavier ReadClav1: LD B,#F6 OUT (C),A LD B,#F4 INI INC A CP #42 ; Pas besoin d'aller plus loin pour lire les flèches JR C,ReadClav1 LD BC,#F782 OUT (C),C DEC HL LD A,(HL) RRA ; Left JR C,TstRight LD A,(DrawView+1) SUB 4 ; Angle = Angle - 4 LD (DrawView+1),A TstRight: DEC HL LD A,(HL) BIT 1,A ; Right JR NZ,TstUp LD A,(DrawView+1) ADD A,4 ; Angle = Angle + 4 LD (DrawView+1),A TstUp: LD A,(HL) RRA ; Up JR c,TstDown LD DE,#4000 ; Déplacement en avant => +cos[A+64] en x et +cos[A] en y JR Move TstDown: BIT 1,A ; Down JP NZ,DrawView LD DE,#C080 ; Déplacement en arrière => +cos[A-64] en x et +cos[A+128] en y Move: LD H,TabCos/512 LD A,(DrawView+1) ADD A,D LD L,A SUB D ADD A,E ; D = E + 64 (TabCos[Angle+64]=TabSin[Angle]) ADD HL,HL ; TabCos est un tableau de mot (16 bits) LD C,(HL) INC HL LD B,(HL) LD HL,(PosX+1) ADD HL,BC EX DE,HL ; DE = newPx LD H,TabCos/512 LD L,A ADD HL,HL LD A,(HL) INC HL LD B,(HL) RLA RL B RLA RL B RLA RL B RLA RL B LD C,A LD HL,(PosY+1) ADD HL,BC ; HL = newPy (PosY + TabCos[ Angle + E ] << 1) LD A,H AND #F0 OR D EXX LD L,A LD A,(HL) ; Lecture valeur laby[ ( newpx >> 10 ) + ( newpy >> 10 ) << 4 ] EXX AND A JP NZ,DrawView ; Si laby[ newpos ] non vide, pas de déplacement possible LD (PosY+1),HL EX DE,HL LD (PosX+1),HL JP DrawView org #9200 ; ; "Map" => chaque valeur est un octet en mode 0 ; Laby: DB #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #4C DB #FC, #10, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #01, #4C DB #03, #00, #00, #00, #00, #00, #00, #00, #33, #00, #00, #00, #00, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #00, #00, #33, #00, #30, #00, #00, #00, #00, #4C DB #03, #00, #00, #00, #00, #00, #30, #CF, #CF, #00, #CC, #00, #00, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #CC, #00, #33, #CC, #30, #CC, #30, #CC, #00, #4C DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #CC, #00, #CC, #00, #00, #4C DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #CC, #00, #CC, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #CC, #00, #00, #00, #30, #00, #00, #00, #C3, #4C DB #03, #00, #00, #00, #00, #00, #30, #00, #00, #00, #00, #00, #00, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #F0, #3C, #F0, #00, #00, #00, #00, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #F0, #3C, #F0, #3C, #00, #00, #00, #00, #00, #4C DB #03, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #4C DB #FC, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #4C DB #03, #10, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #01, #4C DB #FC, #03, #FC, #03, #FC, #03, #FC, #03, #FC, #03, #34, #FC, #03, #FC, #C4, #4C ; ; Conversion distance en hauteur de mur (hauteur variant de 25 (hauteur max) à 0) ; TabHeight DB #19, #19, #19, #19, #19, #19, #19, #19, #19, #19, #19, #16, #14, #13, #11, #10 DB #0F, #0E, #0D, #0D, #0C, #0B, #0B, #0A, #0A, #0A, #09, #09, #08, #08, #08, #08 DB #07, #07, #07, #07, #06, #06, #06, #06, #06, #06, #05, #05, #05, #05, #05, #05 DB #05, #05, #05, #04, #04, #04, #04, #04, #04, #04, #04, #04, #04, #04, #04, #03 DB #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03, #03 DB #03, #03, #03, #03, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02 DB #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02 DB #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #02, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01 DB #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #01, #00, #00, #00, #00, #00 ; ; Tableau de mot de 16 bits => cos(x)*80 (x de 0 à 255 pour un équivalent angle de 0 à 359 degrés) ; TabCos DW #0050, #004F, #004F, #004F, #004F, #004F, #004F, #004E DW #004E, #004E, #004D, #004D, #004C, #004B, #004B, #004A DW #0049, #0049, #0048, #0047, #0046, #0045, #0044, #0043 DW #0042, #0041, #0040, #003F, #003D, #003C, #003B, #0039 DW #0038, #0037, #0035, #0034, #0032, #0031, #002F, #002E DW #002C, #002A, #0029, #0027, #0025, #0023, #0022, #0020 DW #001E, #001C, #001A, #0019, #0017, #0015, #0013, #0011 DW #000F, #000D, #000B, #0009, #0007, #0005, #0003, #0001 DW #0000, #FFFF, #FFFD, #FFFB, #FFF9, #FFF7, #FFF5, #FFF3 DW #FFF1, #FFEF, #FFED, #FFEB, #FFE9, #FFE7, #FFE6, #FFE4 DW #FFE2, #FFE0, #FFDE, #FFDD, #FFDB, #FFD9, #FFD7, #FFD6 DW #FFD4, #FFD2, #FFD1, #FFCF, #FFCE, #FFCC, #FFCB, #FFC9 DW #FFC8, #FFC7, #FFC5, #FFC4, #FFC3, #FFC1, #FFC0, #FFBF DW #FFBE, #FFBD, #FFBC, #FFBB, #FFBA, #FFB9, #FFB8, #FFB7 DW #FFB7, #FFB6, #FFB5, #FFB5, #FFB4, #FFB3, #FFB3, #FFB2 DW #FFB2, #FFB2, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1 DW #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB1, #FFB2 DW #FFB2, #FFB2, #FFB3, #FFB3, #FFB4, #FFB5, #FFB5, #FFB6 DW #FFB7, #FFB7, #FFB8, #FFB9, #FFBA, #FFBB, #FFBC, #FFBD DW #FFBE, #FFBF, #FFC0, #FFC1, #FFC3, #FFC4, #FFC5, #FFC7 DW #FFC8, #FFC9, #FFCB, #FFCC, #FFCE, #FFCF, #FFD1, #FFD2 DW #FFD4, #FFD6, #FFD7, #FFD9, #FFDB, #FFDD, #FFDE, #FFE0 DW #FFE2, #FFE4, #FFE6, #FFE7, #FFE9, #FFEB, #FFED, #FFEF DW #FFF1, #FFF3, #FFF5, #FFF7, #FFF9, #FFFB, #FFFD, #FFFF DW #0000, #0001, #0003, #0005, #0007, #0009, #000B, #000D DW #000F, #0011, #0013, #0015, #0017, #0019, #001A, #001C DW #001E, #0020, #0022, #0023, #0025, #0027, #0029, #002A DW #002C, #002E, #002F, #0031, #0032, #0034, #0035, #0037 DW #0038, #0039, #003B, #003C, #003D, #003F, #0040, #0041 DW #0042, #0043, #0044, #0045, #0046, #0047, #0048, #0049 DW #0049, #004A, #004B, #004B, #004C, #004D, #004D, #004E DW #004E, #004E, #004F, #004F, #004F, #004F, #004F, #004F MatClavier: DS 3 |
Auteur : | Kris [ 09 Déc 2014, 09:09 ] |
Sujet du message : | Re: RayCasting simple |
Bel essai |
Auteur : | Plissken [ 09 Déc 2014, 17:27 ] |
Sujet du message : | Re: RayCasting simple |
Pas mal du tout ! Des tests pour un futur jeu ? |
Auteur : | demoniakparadox [ 09 Déc 2014, 21:07 ] |
Sujet du message : | Re: RayCasting simple |
Plissken a écrit : Pas mal du tout ! Des tests pour un futur jeu ? Non, plus trop la motivation pour faire quelque chose de concret... Mais si quelqu'un veut s'en servir pour faire un jeu, pas de soucis |
Auteur : | AsT [ 10 Déc 2014, 10:18 ] |
Sujet du message : | Re: RayCasting simple |
Salut, C'est plutôt pas mal. Heureux de te revoir... Il faudra un jour qu'on assemble toutes ses routines 'from scratch' et qu'on en sorte quelque chose pour ce bon vieu Cpc. À bientôt Ludo. |
Auteur : | Plissken [ 10 Déc 2014, 11:46 ] |
Sujet du message : | Re: RayCasting simple |
J'ai fait mu muse avec la map,il y a du potentiel |
Auteur : | demoniakparadox [ 10 Déc 2014, 12:22 ] |
Sujet du message : | Re: RayCasting simple |
AsT a écrit : Salut, C'est plutôt pas mal. Heureux de te revoir... Il faudra un jour qu'on assemble toutes ses routines 'from scratch' et qu'on en sorte quelque chose pour ce bon vieu Cpc. À bientôt Ludo. Salut David ! Oui, faudrait faire ça en effet |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |