RayCast xor a ld (dimension),a ld (n_sprite),a ld (n_spritea),a ld a,(xperso_v+1) ld (x_player_int),a ld a,(zperso_v+1) ld (z_player_int),a ld a,48 ; how many rays to cast ld (numray),a ld a,(orientation) sub 24 jp p,not_ret_angle add a,120 not_ret_angle ld (ray_angle),a ; init ray angle ; clear visited array ld hl,visited ld de,visited+1 ld bc,127 ld (hl),0 ldir ; mark player in the visited array ld hl,visited ld a,(z_player_int) add a,a add a,a ld c,a ld b,0 add hl,bc ld a,(x_player_int) ld c,a srl c srl c srl c add hl,bc ex de,hl ld hl,masks and %00000111 ld c,a add hl,bc ld a,(hl) ex de,hl or (hl) ld (hl),a ChooseRoutine ld a,(ray_angle) ld hl,Cast cp 15 jp m,routine1 cp 30 jp m,routine2 ld hl,Cast60 cp 45 jp m,routine2 cp 60 jp m,routine1 ld hl,Cast90 cp 75 jp m,routine1 cp 90 jp m,routine2 ld hl,Cast120 cp 105 jp m,routine2 ; jp routine1 routine1: ld (incx_15+1),hl xor a ld (zray),a ld (xray),a ld a,(ray_angle) ld hl,dxrayon_l ld d,0 ld e,a add hl,de ld a,(hl) ld (dx),a sra a neg ld (S),a ld hl,dzrayon_l sbc hl,de ld a,(hl) ld (dz),a trace15: ld a,(xray) ld b,a ld a,(dx) ;while xray