Fondateur
Groupe: Staff de Ti-Gen Groupe: Orage Studio
Messages: 4256
Membre n°3
Inscrit le 29 janvier 2004
|
Pour les FLIP(H) (je suppose, pour avoir une table, il n'y en a pas besoin en flip vertical), comment se situent tes routines en vitesse par rapport à SpriteX8_MIRROR_H_R ?
Nebulus ou Arkanoid ne peuvent donc pas bénéficier des fonctions sus-mentionnées ?
SpriteX8_MIRROR_H_R travail bit à bit? Si c'est le cas, c'est bien trop lent.
Je te poste les routines iuci si tu veux, à savoir quelles sont adapté à mon écran virtuel que j'appel ScreenBuffer, des petites modifications sont à effectuer. Rien de bien méchant.
Routine de dézoom
;C prototype: void CopyScreenBufferToScreen2 (void *src, void *dest1, void *dest2); ; ;void CopyScreenBufferToScreen2 (register void *src asm("%a0"), ; register void *dest1 asm("%a1"), ; register void *dest2 asm("%a2")); xdef CopyScreenBufferToScreen2 CopyScreenBufferToScreen2: movem.l d3-d5/a4-a5,-(a7) lea.l _data_table0(PC),a4 ; Table 5 bits lea.l _data_table1(PC),a5 ; Table 6 bits lea 1216+4(a0),a0 ;Sequence = 5.6.5.5.6.5 moveq.l #1,d4 screen_plane: move.l #127,d2 move.w #32768,d5 LineStart: moveq.l #4,d0 add.w #7296,d5 ;32768-(x/128*3276 +128 cmp.w #32768,d5 bhi.s line_ sub.w #32768,d5 lea 36(a0),a0 dbf d2,LineStart movem.l (a7)+,d3-d5/a4-a5 rts line_: moveq.l #0,d1 moveq.l #0,d3 ;Octet 1 (5) move.b (a0)+,d1 move.b 0(a4,d1.w),d3 lsl.l #6,d3 ;Octet 2 (6) move.b (a0)+,d1 or.b 0(a5,d1.w),d3 lsl.l #5,d3 ;Octet 3 (5) move.b (a0)+,d1 or.b 0(a4,d1.w),d3 lsl.l #5,d3 ;Octet 4 (5) move.b (a0)+,d1 or.b 0(a4,d1.w),d3 lsl.l #6,d3 ;Octet 5 (6) move.b (a0)+,d1 or.b 0(a5,d1.w),d3 lsl.l #5,d3 ;Octet 6 (5) move.b (a0)+,d1 or.b 0(a4,d1.w),d3 ;Ligne de 32 pixels move.l d3,(a1)+ dbf d0,line_ lea.l 10(a1),a1 addq.l #6,a0 dbf d2,LineStart lea 2688(a0),a0 movea.l a2,a1 dbf d4,screen_plane movem.l (a7)+,d3-d5/a4-a5 rts ;Table de 5 bits _data_table0: dc.b %00000000 dc.b %00000000 dc.b %00000001 dc.b %00000001 dc.b %00000000 dc.b %00000000 dc.b %00000001 dc.b %00000001 dc.b %00000010 dc.b %00000010 dc.b %00000011 dc.b %00000011 dc.b %00000010 dc.b %00000010 dc.b %00000011 dc.b %00000011 dc.b %00000100 dc.b %00000100 dc.b %00000101 dc.b %00000101 dc.b %00000100 dc.b %00000100 dc.b %00000101 dc.b %00000101 dc.b %00000110 dc.b %00000110 dc.b %00000111 dc.b %00000111 dc.b %00000110 dc.b %00000110 dc.b %00000111 dc.b %00000111 dc.b %00001000 dc.b %00001000 dc.b %00001001 dc.b %00001001 dc.b %00001000 dc.b %00001000 dc.b %00001001 dc.b %00001001 dc.b %00001010 dc.b %00001010 dc.b %00001011 dc.b %00001011 dc.b %00001010 dc.b %00001010 dc.b %00001011 dc.b %00001011 dc.b %00001100 dc.b %00001100 dc.b %00001101 dc.b %00001101 dc.b %00001100 dc.b %00001100 dc.b %00001101 dc.b %00001101 dc.b %00001110 dc.b %00001110 dc.b %00001111 dc.b %00001111 dc.b %00001110 dc.b %00001110 dc.b %00001111 dc.b %00001111 dc.b %00000000 dc.b %00000000 dc.b %00000001 dc.b %00000001 dc.b %00000000 dc.b %00000000 dc.b %00000001 dc.b %00000001 dc.b %00000010 dc.b %00000010 dc.b %00000011 dc.b %00000011 dc.b %00000010 dc.b %00000010 dc.b %00000011 dc.b %00000011 dc.b %00000100 dc.b %00000100 dc.b %00000101 dc.b %00000101 dc.b %00000100 dc.b %00000100 dc.b %00000101 dc.b %00000101 dc.b %00000110 dc.b %00000110 dc.b %00000111 dc.b %00000111 dc.b %00000110 dc.b %00000110 dc.b %00000111 dc.b %00000111 dc.b %00001000 dc.b %00001000 dc.b %00001001 dc.b %00001001 dc.b %00001000 dc.b %00001000 dc.b %00001001 dc.b %00001001 dc.b %00001010 dc.b %00001010 dc.b %00001011 dc.b %00001011 dc.b %00001010 dc.b %00001010 dc.b %00001011 dc.b %00001011 dc.b %00001100 dc.b %00001100 dc.b %00001101 dc.b %00001101 dc.b %00001100 dc.b %00001100 dc.b %00001101 dc.b %00001101 dc.b %00001110 dc.b %00001110 dc.b %00001111 dc.b %00001111 dc.b %00001110 dc.b %00001110 dc.b %00001111 dc.b %00001111 dc.b %00010000 dc.b %00010000 dc.b %00010001 dc.b %00010001 dc.b %00010000 dc.b %00010000 dc.b %00010001 dc.b %00010001 dc.b %00010010 dc.b %00010010 dc.b %00010011 dc.b %00010011 dc.b %00010010 dc.b %00010010 dc.b %00010011 dc.b %00010011 dc.b %00010100 dc.b %00010100 dc.b %00010101 dc.b %00010101 dc.b %00010100 dc.b %00010100 dc.b %00010101 dc.b %00010101 dc.b %00010110 dc.b %00010110 dc.b %00010111 dc.b %00010111 dc.b %00010110 dc.b %00010110 dc.b %00010111 dc.b %00010111 dc.b %00011000 dc.b %00011000 dc.b %00011001 dc.b %00011001 dc.b %00011000 dc.b %00011000 dc.b %00011001 dc.b %00011001 dc.b %00011010 dc.b %00011010 dc.b %00011011 dc.b %00011011 dc.b %00011010 dc.b %00011010 dc.b %00011011 dc.b %00011011 dc.b %00011100 dc.b %00011100 dc.b %00011101 dc.b %00011101 dc.b %00011100 dc.b %00011100 dc.b %00011101 dc.b %00011101 dc.b %00011110 dc.b %00011110 dc.b %00011111 dc.b %00011111 dc.b %00011110 dc.b %00011110 dc.b %00011111 dc.b %00011111 dc.b %00010000 dc.b %00010000 dc.b %00010001 dc.b %00010001 dc.b %00010000 dc.b %00010000 dc.b %00010001 dc.b %00010001 dc.b %00010010 dc.b %00010010 dc.b %00010011 dc.b %00010011 dc.b %00010010 dc.b %00010010 dc.b %00010011 dc.b %00010011 dc.b %00010100 dc.b %00010100 dc.b %00010101 dc.b %00010101 dc.b %00010100 dc.b %00010100 dc.b %00010101 dc.b %00010101 dc.b %00010110 dc.b %00010110 dc.b %00010111 dc.b %00010111 dc.b %00010110 dc.b %00010110 dc.b %00010111 dc.b %00010111 dc.b %00011000 dc.b %00011000 dc.b %00011001 dc.b %00011001 dc.b %00011000 dc.b %00011000 dc.b %00011001 dc.b %00011001 dc.b %00011010 dc.b %00011010 dc.b %00011011 dc.b %00011011 dc.b %00011010 dc.b %00011010 dc.b %00011011 dc.b %00011011 dc.b %00011100 dc.b %00011100 dc.b %00011101 dc.b %00011101 dc.b %00011100 dc.b %00011100 dc.b %00011101 dc.b %00011101 dc.b %00011110 dc.b %00011110 dc.b %00011111 dc.b %00011111 dc.b %00011110 dc.b %00011110 dc.b %00011111 dc.b %00011111 ;Table de 6 bits _data_table1: dc.b %00000000 dc.b %00000001 dc.b %00000010 dc.b %00000011 dc.b %00000000 dc.b %00000001 dc.b %00000010 dc.b %00000011 dc.b %00000100 dc.b %00000101 dc.b %00000110 dc.b %00000111 dc.b %00000100 dc.b %00000101 dc.b %00000110 dc.b %00000111 dc.b %00001000 dc.b %00001001 dc.b %00001010 dc.b %00001011 dc.b %00001000 dc.b %00001001 dc.b %00001010 dc.b %00001011 dc.b %00001100 dc.b %00001101 dc.b %00001110 dc.b %00001111 dc.b %00001100 dc.b %00001101 dc.b %00001110 dc.b %00001111 dc.b %00010000 dc.b %00010001 dc.b %00010010 dc.b %00010011 dc.b %00010000 dc.b %00010001 dc.b %00010010 dc.b %00010011 dc.b %00010100 dc.b %00010101 dc.b %00010110 dc.b %00010111 dc.b %00010100 dc.b %00010101 dc.b %00010110 dc.b %00010111 dc.b %00011000 dc.b %00011001 dc.b %00011010 dc.b %00011011 dc.b %00011000 dc.b %00011001 dc.b %00011010 dc.b %00011011 dc.b %00011100 dc.b %00011101 dc.b %00011110 dc.b %00011111 dc.b %00011100 dc.b %00011101 dc.b %00011110 dc.b %00011111 dc.b %00000000 dc.b %00000001 dc.b %00000010 dc.b %00000011 dc.b %00000000 dc.b %00000001 dc.b %00000010 dc.b %00000011 dc.b %00000100 dc.b %00000101 dc.b %00000110 dc.b %00000111 dc.b %00000100 dc.b %00000101 dc.b %00000110 dc.b %00000111 dc.b %00001000 dc.b %00001001 dc.b %00001010 dc.b %00001011 dc.b %00001000 dc.b %00001001 dc.b %00001010 dc.b %00001011 dc.b %00001100 dc.b %00001101 dc.b %00001110 dc.b %00001111 dc.b %00001100 dc.b %00001101 dc.b %00001110 dc.b %00001111 dc.b %00010000 dc.b %00010001 dc.b %00010010 dc.b %00010011 dc.b %00010000 dc.b %00010001 dc.b %00010010 dc.b %00010011 dc.b %00010100 dc.b %00010101 dc.b %00010110 dc.b %00010111 dc.b %00010100 dc.b %00010101 dc.b %00010110 dc.b %00010111 dc.b %00011000 dc.b %00011001 dc.b %00011010 dc.b %00011011 dc.b %00011000 dc.b %00011001 dc.b %00011010 dc.b %00011011 dc.b %00011100 dc.b %00011101 dc.b %00011110 dc.b %00011111 dc.b %00011100 dc.b %00011101 dc.b %00011110 dc.b %00011111 dc.b %00100000 dc.b %00100001 dc.b %00100010 dc.b %00100011 dc.b %00100000 dc.b %00100001 dc.b %00100010 dc.b %00100011 dc.b %00100100 dc.b %00100101 dc.b %00100110 dc.b %00100111 dc.b %00100100 dc.b %00100101 dc.b %00100110 dc.b %00100111 dc.b %00101000 dc.b %00101001 dc.b %00101010 dc.b %00101011 dc.b %00101000 dc.b %00101001 dc.b %00101010 dc.b %00101011 dc.b %00101100 dc.b %00101101 dc.b %00101110 dc.b %00101111 dc.b %00101100 dc.b %00101101 dc.b %00101110 dc.b %00101111 dc.b %00110000 dc.b %00110001 dc.b %00110010 dc.b %00110011 dc.b %00110000 dc.b %00110001 dc.b %00110010 dc.b %00110011 dc.b %00110100 dc.b %00110101 dc.b %00110110 dc.b %00110111 dc.b %00110100 dc.b %00110101 dc.b %00110110 dc.b %00110111 dc.b %00111000 dc.b %00111001 dc.b %00111010 dc.b %00111011 dc.b %00111000 dc.b %00111001 dc.b %00111010 dc.b %00111011 dc.b %00111100 dc.b %00111101 dc.b %00111110 dc.b %00111111 dc.b %00111100 dc.b %00111101 dc.b %00111110 dc.b %00111111 dc.b %00100000 dc.b %00100001 dc.b %00100010 dc.b %00100011 dc.b %00100000 dc.b %00100001 dc.b %00100010 dc.b %00100011 dc.b %00100100 dc.b %00100101 dc.b %00100110 dc.b %00100111 dc.b %00100100 dc.b %00100101 dc.b %00100110 dc.b %00100111 dc.b %00101000 dc.b %00101001 dc.b %00101010 dc.b %00101011 dc.b %00101000 dc.b %00101001 dc.b %00101010 dc.b %00101011 dc.b %00101100 dc.b %00101101 dc.b %00101110 dc.b %00101111 dc.b %00101100 dc.b %00101101 dc.b %00101110 dc.b %00101111 dc.b %00110000 dc.b %00110001 dc.b %00110010 dc.b %00110011 dc.b %00110000 dc.b %00110001 dc.b %00110010 dc.b %00110011 dc.b %00110100 dc.b %00110101 dc.b %00110110 dc.b %00110111 dc.b %00110100 dc.b %00110101 dc.b %00110110 dc.b %00110111 dc.b %00111000 dc.b %00111001 dc.b %00111010 dc.b %00111011 dc.b %00111000 dc.b %00111001 dc.b %00111010 dc.b %00111011 dc.b %00111100 dc.b %00111101 dc.b %00111110 dc.b %00111111 dc.b %00111100 dc.b %00111101 dc.b %00111110 dc.b %00111111
Routine FLIPH
| C prototype: void GraySprite32_FLIPV (register short h asm("%d2"), register void *sprt asm("%a0"), register void *dest asm("%a1"));
.data .globl GraySprite32_FLIPH .even
GraySprite32_FLIPH: dbf %d2,__Rest_of_GraySprite32_FLIPH rts
__Rest_of_GraySprite32_FLIPH: move.l %a2,-(%sp) move.l %d3,-(%sp) lea.l tbl_flipv(%PC),%a2 __Loop_GraySprite32_FLIPH: moveq.l #0,%d3 moveq.l #0,%d1 move.l (%a0)+,%d0 |Partie n°1 move.b %d0,%d1 move.b 0(%a2,%d1.w),%d3 rol.l #8,%d3 lsr.l #8,%d0 |Partie n°2 move.b %d0,%d1 move.b 0(%a2,%d1.w),%d3 rol.l #8,%d3 lsr.l #8,%d0 |Partie n°3 move.b %d0,%d1 move.b 0(%a2,%d1.w),%d3 rol.l #8,%d3 lsr.l #8,%d0 |Partie n°4 move.b %d0,%d1 move.b 0(%a2,%d1.w),%d3 move.l %d3,(%a1)+ dbf %d2,__Loop_GraySprite32_FLIPH move.l (%sp)+,%d3 move.l (%sp)+,%a2 rts
tbl_flipv: .byte 0b00000000 .byte 0b10000000 .byte 0b01000000 .byte 0b11000000 .byte 0b00100000 .byte 0b10100000 .byte 0b01100000 .byte 0b11100000 .byte 0b00010000 .byte 0b10010000 .byte 0b01010000 .byte 0b11010000 .byte 0b00110000 .byte 0b10110000 .byte 0b01110000 .byte 0b11110000 .byte 0b00001000 .byte 0b10001000 .byte 0b01001000 .byte 0b11001000 .byte 0b00101000 .byte 0b10101000 .byte 0b01101000 .byte 0b11101000 .byte 0b00011000 .byte 0b10011000 .byte 0b01011000 .byte 0b11011000 .byte 0b00111000 .byte 0b10111000 .byte 0b01111000 .byte 0b11111000 .byte 0b00000100 .byte 0b10000100 .byte 0b01000100 .byte 0b11000100 .byte 0b00100100 .byte 0b10100100 .byte 0b01100100 .byte 0b11100100 .byte 0b00010100 .byte 0b10010100 .byte 0b01010100 .byte 0b11010100 .byte 0b00110100 .byte 0b10110100 .byte 0b01110100 .byte 0b11110100 .byte 0b00001100 .byte 0b10001100 .byte 0b01001100 .byte 0b11001100 .byte 0b00101100 .byte 0b10101100 .byte 0b01101100 .byte 0b11101100 .byte 0b00011100 .byte 0b10011100 .byte 0b01011100 .byte 0b11011100 .byte 0b00111100 .byte 0b10111100 .byte 0b01111100 .byte 0b11111100 .byte 0b00000010 .byte 0b10000010 .byte 0b01000010 .byte 0b11000010 .byte 0b00100010 .byte 0b10100010 .byte 0b01100010 .byte 0b11100010 .byte 0b00010010 .byte 0b10010010 .byte 0b01010010 .byte 0b11010010 .byte 0b00110010 .byte 0b10110010 .byte 0b01110010 .byte 0b11110010 .byte 0b00001010 .byte 0b10001010 .byte 0b01001010 .byte 0b11001010 .byte 0b00101010 .byte 0b10101010 .byte 0b01101010 .byte 0b11101010 .byte 0b00011010 .byte 0b10011010 .byte 0b01011010 .byte 0b11011010 .byte 0b00111010 .byte 0b10111010 .byte 0b01111010 .byte 0b11111010 .byte 0b00000110 .byte 0b10000110 .byte 0b01000110 .byte 0b11000110 .byte 0b00100110 .byte 0b10100110 .byte 0b01100110 .byte 0b11100110 .byte 0b00010110 .byte 0b10010110 .byte 0b01010110 .byte 0b11010110 .byte 0b00110110 .byte 0b10110110 .byte 0b01110110 .byte 0b11110110 .byte 0b00001110 .byte 0b10001110 .byte 0b01001110 .byte 0b11001110 .byte 0b00101110 .byte 0b10101110 .byte 0b01101110 .byte 0b11101110 .byte 0b00011110 .byte 0b10011110 .byte 0b01011110 .byte 0b11011110 .byte 0b00111110 .byte 0b10111110 .byte 0b01111110 .byte 0b11111110 .byte 0b00000001 .byte 0b10000001 .byte 0b01000001 .byte 0b11000001 .byte 0b00100001 .byte 0b10100001 .byte 0b01100001 .byte 0b11100001 .byte 0b00010001 .byte 0b10010001 .byte 0b01010001 .byte 0b11010001 .byte 0b00110001 .byte 0b10110001 .byte 0b01110001 .byte 0b11110001 .byte 0b00001001 .byte 0b10001001 .byte 0b01001001 .byte 0b11001001 .byte 0b00101001 .byte 0b10101001 .byte 0b01101001 .byte 0b11101001 .byte 0b00011001 .byte 0b10011001 .byte 0b01011001 .byte 0b11011001 .byte 0b00111001 .byte 0b10111001 .byte 0b01111001 .byte 0b11111001 .byte 0b00000101 .byte 0b10000101 .byte 0b01000101 .byte 0b11000101 .byte 0b00100101 .byte 0b10100101 .byte 0b01100101 .byte 0b11100101 .byte 0b00010101 .byte 0b10010101 .byte 0b01010101 .byte 0b11010101 .byte 0b00110101 .byte 0b10110101 .byte 0b01110101 .byte 0b11110101 .byte 0b00001101 .byte 0b10001101 .byte 0b01001101 .byte 0b11001101 .byte 0b00101101 .byte 0b10101101 .byte 0b01101101 .byte 0b11101101 .byte 0b00011101 .byte 0b10011101 .byte 0b01011101 .byte 0b11011101 .byte 0b00111101 .byte 0b10111101 .byte 0b01111101 .byte 0b11111101 .byte 0b00000011 .byte 0b10000011 .byte 0b01000011 .byte 0b11000011 .byte 0b00100011 .byte 0b10100011 .byte 0b01100011 .byte 0b11100011 .byte 0b00010011 .byte 0b10010011 .byte 0b01010011 .byte 0b11010011 .byte 0b00110011 .byte 0b10110011 .byte 0b01110011 .byte 0b11110011 .byte 0b00001011 .byte 0b10001011 .byte 0b01001011 .byte 0b11001011 .byte 0b00101011 .byte 0b10101011 .byte 0b01101011 .byte 0b11101011 .byte 0b00011011 .byte 0b10011011 .byte 0b01011011 .byte 0b11011011 .byte 0b00111011 .byte 0b10111011 .byte 0b01111011 .byte 0b11111011 .byte 0b00000111 .byte 0b10000111 .byte 0b01000111 .byte 0b11000111 .byte 0b00100111 .byte 0b10100111 .byte 0b01100111 .byte 0b11100111 .byte 0b00010111 .byte 0b10010111 .byte 0b01010111 .byte 0b11010111 .byte 0b00110111 .byte 0b10110111 .byte 0b01110111 .byte 0b11110111 .byte 0b00001111 .byte 0b10001111 .byte 0b01001111 .byte 0b11001111 .byte 0b00101111 .byte 0b10101111 .byte 0b01101111 .byte 0b11101111 .byte 0b00011111 .byte 0b10011111 .byte 0b01011111 .byte 0b11011111 .byte 0b00111111 .byte 0b10111111 .byte 0b01111111 .byte 0b11111111
Voilà, pour l'utilisation de FLIPV de façon optimale:
//Déplacement à GAUCHE if (flag_player_sens==SPRITE_FLIPH) { INDEX_SPR=SPR_PLAYER_FLIPH; //Non application du FLIPH if ((player_num_spr!=player_flipv_num_spr) || (flag_player_sens!=flag_player_flipv_sens)) { //Réactualisation des variables player_flipv_num_spr=num_spr; flag_player_flipv_sens=flag_player_sens; GraySprite32_FLIPH (96, SPR_PLAYER [num_spr], INDEX_SPR); //96=3x 32x32 (format: mask, light, dark) } } //Déplacement à DROIT else INDEX_SPR=SPR_PLAYER [num_spr]; GraySprite32_MASK (104, crdy, 32, INDEX_SPR, ScreenBuffer);
|
Webmaster du site. Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.
Plus d'informations sur GFA-Basic (un langage Basic pour TI68K). http://www.tigen.org/gfabasic
|
|