; masques de PIXELS (voir structure écran) bayerMatrix defb %00000000 defb %00000000 defb %00000000 defb %00000000 ; defb %10001000 defb %00000000 defb %00000000 defb %00000000 ; defb %10001000 defb %00000000 defb %00100010 defb %00000000 ; defb %10001000 defb %00000000 defb %10101010 defb %00000000 ; defb %10101010 defb %00000000 defb %10101010 defb %00000000 ; defb %10101010 defb %01000100 defb %10101010 defb %00000000 ; defb %10101010 defb %01000100 defb %10101010 defb %00010001 ; defb %10101010 defb %01000100 defb %10101010 defb %00010001 ; defb %10101010 defb %01000100 defb %10101010 defb %01010101 ; à cette étape, il y a autant de pixels allumés qu'éteints! defb %10101010 defb %01010101 defb %10101010 defb %01010101 ; defb %10101010 defb %01110111 defb %10101010 defb %01010101 ; defb %10101010 defb %01110111 defb %10101010 defb %01010101 ; defb %10101010 defb %01110111 defb %10101010 defb %11011101 ; defb %10101010 defb %01110111 defb %10101010 defb %11111111 ; defb %10101010 defb %11111111 defb %10101010 defb %11111111 ; defb %10101010 defb %11111111 defb %11101110 defb %11111111 ; defb %10111011 defb %11111111 defb %11101110 defb %11111111 ; defb %10111011 defb %11111111 defb %11111111 defb %11111111 ; defb %11111111 defb %11111111 defb %11111111 defb %11111111 |
BUILDSNA : BANKSET 0 ORG #100 RUN #100 ld bc,#7F80+%1101 : out (c),c ; utiliser le mode 1 ld bc,#7F10 : out (c),c : ld a,#54 : out (c),a ld bc,#7F00 : out (c),c : ld a,#54 : out (c),a ld bc,#7F01 : out (c),c : ld a,#4C : out (c),a ld bc,#7F02 : out (c),c : ld a,#55 : out (c),a ld bc,#7F03 : out (c),c : ld a,#43 : out (c),a transitionInfinie ld hl,#4000 : ld (laSource),hl : call transitionBayer ld hl,#8000 : ld (laSource),hl : call transitionBayer jr transitionInfinie transitionBayer ld ix,bayerMatrix ld d,19 ; 19 étapes de Bayer .executerMatrice exx : ld hl,#4000 : laSource=$-2 : ld de,#C000 : exx ld c,2 .deuxFois4 ld b,4 ; 4 lignes .leBloc exx ld b,8 ld a,(ix+0) : ld (leMasque1),a : cpl : ld (leMasque2),a .fusion ld a,(hl) : and #12 : leMasque1=$-1 : ld c,a ld a,(de) : and #12 : leMasque2=$-1 : or c : ld (de),a inc e : inc l ; augmenter le poids faible 256 fois jr nz,.fusion inc d : inc h ; augmenter le poids fort djnz .fusion ; 8x256=2048 ; ligne de bloc suivante, changer de masque inc ix exx djnz .leBloc dec ix : dec ix : dec ix : dec ix ; on réarme le masque toutes les 4 lignes dec c jr nz,.deuxFois4 inc ix : inc ix : inc ix : inc ix ; on a terminé, on peut enfin changer de masque dec d jr nz,.executerMatrice ret ; masques de PIXELS (voir structure écran) bayerMatrix defb %00000000,%00000000,%00000000,%00000000 defb %10001000,%00000000,%00000000,%00000000 defb %10001000,%00000000,%00100010,%00000000 defb %10001000,%00000000,%10101010,%00000000 defb %10101010,%00000000,%10101010,%00000000 defb %10101010,%01000100,%10101010,%00000000 defb %10101010,%01000100,%10101010,%00010001 defb %10101010,%01000100,%10101010,%00010001 defb %10101010,%01000100,%10101010,%01010101 ; à cette étape, il y a autant de pixels allumés qu'éteints! defb %10101010,%01010101,%10101010,%01010101 defb %10101010,%01110111,%10101010,%01010101 defb %10101010,%01110111,%10101010,%01010101 defb %10101010,%01110111,%10101010,%11011101 defb %10101010,%01110111,%10101010,%11111111 defb %10101010,%11111111,%10101010,%11111111 defb %10101010,%11111111,%11101110,%11111111 defb %10111011,%11111111,%11101110,%11111111 defb %10111011,%11111111,%11111111,%11111111 defb %11111111,%11111111,%11111111,%11111111 org #4000 : incbin 'human0.bin' org #8000 : incbin 'human1.bin' org #C000 : incbin 'human1.bin' |
macro masqueMode0 octet haute={octet}&0xF0 basse={octet}&0x0F print 'defb ',{hex2}(haute|(haute>>4)),',',{hex2}(basse|(basse<<4)),':' mend
macro conversionLigne v1,v2,v3,v4 masqueMode0 {v1} masqueMode0 {v2} masqueMode0 {v3} masqueMode0 {v4} mend
bayerMatrix conversionLigne %00000000,%00000000,%00000000,%00000000 conversionLigne %10001000,%00000000,%00000000,%00000000 conversionLigne %10001000,%00000000,%00100010,%00000000 conversionLigne %10001000,%00000000,%10101010,%00000000 conversionLigne %10101010,%00000000,%10101010,%00000000 conversionLigne %10101010,%01000100,%10101010,%00000000 conversionLigne %10101010,%01000100,%10101010,%00010001 conversionLigne %10101010,%01000100,%10101010,%00010001 conversionLigne %10101010,%01000100,%10101010,%01010101 conversionLigne %10101010,%01010101,%10101010,%01010101 conversionLigne %10101010,%01110111,%10101010,%01010101 conversionLigne %10101010,%01110111,%10101010,%01010101 conversionLigne %10101010,%01110111,%10101010,%11011101 conversionLigne %10101010,%01110111,%10101010,%11111111 conversionLigne %10101010,%11111111,%10101010,%11111111 conversionLigne %10101010,%11111111,%11101110,%11111111 conversionLigne %10111011,%11111111,%11101110,%11111111 conversionLigne %10111011,%11111111,%11111111,%11111111 conversionLigne %11111111,%11111111,%11111111,%11111111 |
defb #00 , #00 : defb #00 , #00 : defb #00 , #00 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #00 , #00 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #22 , #22 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #00 , #00 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #11 , #11 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #11 , #11 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #55 , #55 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #DD , #DD defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #FF , #FF defb #AA , #AA : defb #FF , #FF : defb #AA , #AA : defb #FF , #FF defb #AA , #AA : defb #FF , #FF : defb #EE , #EE : defb #FF , #FF defb #BB , #BB : defb #FF , #FF : defb #EE , #EE : defb #FF , #FF defb #BB , #BB : defb #FF , #FF : defb #FF , #FF : defb #FF , #FF defb #FF , #FF : defb #FF , #FF : defb #FF , #FF : defb #FF , #FF |
BUILDSNA : BANKSET 0 ORG #100 RUN #100 ld bc,#7F80+%1100 : out (c),c ; utiliser le mode 0 ld hl,palette : ld bc,#7F00 setPalette out (c),c : inc c : inc b : outi : ld a,(hl) : or a : jr nz,setPalette ld bc,#7F10 : out (c),c : ld a,#54 : out (c),a ; border Noir forcé transitionInfinie ld hl,#4000 : ld (laSource),hl : call transitionBayer ld hl,#8000 : ld (laSource),hl : call transitionBayer jr transitionInfinie transitionBayer ld ix,bayerMatrix ld d,19 ; 19 étapes de Bayer .executerMatrice exx : ld hl,#4000 : laSource=$-2 : ld de,#C000 : exx ld c,2 .deuxFois4 ld b,4 ; 4 lignes .leBloc exx ld b,8 ld a,(ix+0) : ld (leMasque1),a : cpl : ld (leMasque2),a ld a,(ix+1) : ld (leMasque3),a : cpl : ld (leMasque4),a .fusion ld a,(hl) : and #12 : leMasque1=$-1 : ld c,a ld a,(de) : and #12 : leMasque2=$-1 : or c : ld (de),a inc e : inc l ld a,(hl) : and #12 : leMasque3=$-1 : ld c,a ld a,(de) : and #12 : leMasque4=$-1 : or c : ld (de),a inc e : inc l jr nz,.fusion inc d : inc h ; augmenter le poids fort djnz .fusion ; 8x256=2048 ; ligne de bloc suivante, changer de masque inc ix : inc ix exx djnz .leBloc ld a,xl : sub 8 : ld xl,a : ld a,xh : sbc 0 : ld xh,a ; Réarmer le masque (enlever 8!) dec c jr nz,.deuxFois4 ld a,xl : add 8 : ld xl,a : ld a,xh : adc 0 : ld xh,a ; terminé, on peut enfin changer de masque dec d jr nz,.executerMatrice ret palette defb #54,#44,#5C,#56,#58,#40,#55,#4C,#52,#57,#4E,#4A,#5B,#4B,#47,#4F,0 ; masques de PIXELS (voir structure écran) bayerMatrix defb #00 , #00 : defb #00 , #00 : defb #00 , #00 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #00 , #00 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #22 , #22 : defb #00 , #00 defb #88 , #88 : defb #00 , #00 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #00 , #00 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #00 , #00 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #11 , #11 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #11 , #11 defb #AA , #AA : defb #44 , #44 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #55 , #55 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #55 , #55 defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #DD , #DD defb #AA , #AA : defb #77 , #77 : defb #AA , #AA : defb #FF , #FF defb #AA , #AA : defb #FF , #FF : defb #AA , #AA : defb #FF , #FF defb #AA , #AA : defb #FF , #FF : defb #EE , #EE : defb #FF , #FF defb #BB , #BB : defb #FF , #FF : defb #EE , #EE : defb #FF , #FF defb #BB , #BB : defb #FF , #FF : defb #FF , #FF : defb #FF , #FF defb #FF , #FF : defb #FF , #FF : defb #FF , #FF : defb #FF , #FF org #4000 : incbin 'LeonChampion.bin' org #8000 : incbin 'LeonVictoire.bin' org #C000 : incbin 'LeonVictoire.bin' |