; Ejemplo de uso de LUT ORG 50000 entrada: call Generate_Scanline_Table ld b, 191 loop_draw: push bc ld c, 127 call Get_Pixel_Offset_LUT_HR ld a, 128 ld (hl), a pop bc djnz loop_draw loop: ; Bucle para no volver a BASIC y que jr loop ; no se borren la 2 ultimas lineas ;-------------------------------------------------------- ; Generar LookUp Table de scanlines en memoria. ; Rutina por Derek M. Smith (2005). ;-------------------------------------------------------- Scanline_Offsets EQU $f900 Generate_Scanline_Table: ld de, $4000 ld hl, Scanline_Offsets ld b, 192 genscan_loop: ld (hl), e inc l ld (hl), d inc hl inc d ld a, d and %00000111 ; and 7 jr nz, genscan_nextline ld a, e add a, %00100000 ; +32 ld e, a jr c, genscan_nextline ld a, d sub %00001000 ; -8 ld d, a genscan_nextline: djnz genscan_loop ret ;------------------------------------------------------------- ; Get_Pixel_Offset_LUT_HR(x,y): ; ; Entrada: B = Y, C = X ; Salida: HL = Direccion de memoria del pixel (x,y) ; A = Posicion relativa del pixel en el byte ;------------------------------------------------------------- Get_Pixel_Offset_LUT_HR: ld de, Scanline_Offsets ld l, b ld h, 0 add hl, hl add hl, de ld a, (hl) inc l ld h, (hl) ld l, a ld a, c and %11111000 rrca rrca rrca add a, l ld l, a ld a, c and %00000111 ret END 50000