Jump to content
Jagware

Orion_

Level1
  • Content count

    1,073
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Orion_


  1. I actually have some strange problem with the blitter, in my triangle filler routine. the point is, when I'm blitting too much triangle, some lines are not displayed :/ then the whole triangle, making hole in my 3D object :/

    the firsts triangles are always correctly displayed and then the other are not, I and think this is in direct relation with the number of triangle, because If I display less triangle it works great.

    and I got a bug like that using the blitter before, while erasing the screen, I still didn't figure out why I cannot erase more than 320x205 pixels at one time using one blitter call :/ even If I specify to erase 320x240, the blitter will stop before.

    does anyone know why ? and how to correct that ?


  2. I had a problem with negative value using some gpu code, and I came to the conclusion that one of my routine didn't work, actually this was the GT Turbo's routine (not surprised ? ^^)

    we complained about the missing shalq instruction in gpu instruction set, we have sharq, but not shalq, so why ?

    because we simply don't need it ...

    let's see, here is the GT Turbo's routine for SHALQ:

    MACRO    SHALQ    a,b    ; by GT_Turbo
        shlq    \a,\b
        jr    NC,.pasign\~
        nop
        neg    \b
    .pasign\~:
        ENDM

     

    what shalq does ? it will shift the register to left, so let's take 2 numbers:

    (decimal) 25 -> (binary) 00000000000000000000000000011001

    (decimal) -25 -> (binary) 11111111111111111111111111100111

     

    if you shift both of the binary number of 1 to left, you have:

    00000000000000000000000000110010 -> 50

    11111111111111111111111111001110 -> -50

     

    and this can be achieved using a simple shlq, that's why we don't need shalq :)

    but we do need sharq, because if you shift using a simple shrq a zero will be introduced in bit 31 of the number and it will screw up the negative value.

    so correct me If I'm wrong, but I replaced all the SHALQ of my routine by shlq and the bug was gone !


  3. :whistling:

    ok, since nobody seems to have found the hiddenscreen code, I give it here:

    at the title screen press the current pad key: 1337C0#3

    sorry for the little pretentious code :unsure:

    the code use gpu+blitter+still some 68k code, and I'm at 50% of the vbl

    If I translate the 68k code to gpu I'm sure it could be a lot faster =)


  4. I already do that in both 68k and GPU code ;) but thanks for the advice.

     

    here is my code for the test:

     

    68k:

        move.l    #screen,A1_BASE
        move.l    #tileset,A2_BASE
    
        move.w    #1,d0        ; Y
        swap    d0
        move.w    #-16,d0        ; X
        move.l    d0,A1_STEP
        move.l    d0,A2_STEP
    
        move.l    #PIXEL16|XADDPHR|WID320|PITCH1,A1_FLAGS
        move.l    #PIXEL16|XADDPHR|WID64|PITCH1,A2_FLAGS
    
        move.l    #$00100010,d6            ; B_COUNT 16x16
        move.l    #LFU_REPLACE|SRCEN|UPDA1|UPDA2,d7; B_CMD !
    
        move.w    #$F000,BG
    
        moveq    #16-1,d1
    Ylop:    moveq    #20-1,d0
    Xlop:
    
    ; Blit Info Position
    
        move.w    d1,d2        ; Y
        lsl.w    #4,d2        ; *16
        swap    d2
        move.w    d0,d2        ; X
        lsl.w    #4,d2        ; *16
        move.l    d2,A1_PIXEL
    
        moveq    #32,d2        ; X: tile 1
        move.l    d2,A2_PIXEL
    
    ; Blit !!
    
        move.l    d6,B_COUNT
        move.l    d7,B_CMD
    
        dbra    d0,Xlop
        dbra    d1,Ylop

     

     

    GPU:

        movei    #screen,r0
        movei    #A1_BASE,r1
        store    r0,(r1)
        movei    #tileset,r0
        movei    #A2_BASE,r1
        store    r0,(r1)
    
        movei    #$0001FFF0,r0; y+1 x-16
        movei    #A1_STEP,r1
        store    r0,(r1)
        movei    #A2_STEP,r1
        store    r0,(r1)
    
    
        movei    #PIXEL16|XADDPHR|WID320|PITCH1,r0
        movei    #A1_FLAGS,r1
        store    r0,(r1)
    
        movei    #PIXEL16|XADDPHR|WID64|PITCH1,r0
        movei    #A2_FLAGS,r1
        store    r0,(r1)
    
        movei    #$00100010,r0            ; B_COUNT 16x16
        movei    #B_COUNT,r1
        movei    #LFU_REPLACE|SRCEN|UPDA1|UPDA2,r2; B_CMD !
        movei    #B_CMD,r3
    
        moveq    #1,r11        ; WAIT BLITTER MASK
    
        movei    #A1_PIXEL,r6
        movei    #A2_PIXEL,r7
        movei    #32,r8        ; X: tile 1
    
        movei    #Ylop,r13
    
    
        movei    #$F000,r4
        movei    #BG,r5
        storew    r4,(r5)
    
    
        movei    #16,r4        ; Y
    Ylop:    movei    #20,r5        ; X
    Xlop:
    
    .waitb:    load    (r3),r12    ; Wait for the blitter to complete !
        and    r11,r12
        jr    EQ,.waitb
        nop
    
    
    ; Blit Info Position
    
        move    r4,r9        ; Y
        shlq    #4,r9        ; *16
        rorq    #16,r9        ; swap
        move    r5,r10        ; X
        shlq    #4,r10        ; *16
        or    r10,r9
        store    r9,(r6)
    
        store    r8,(r7)        ; A2_PIXEL, X: tile 1
    
    
    ; Blit !!
    
        store    r0,(r1)        ; B_COUNT
        store    r2,(r3)        ; B_CMD
    
        subq    #1,r5
        jr    NE,Xlop
        nop
    
        subq    #1,r4
        jump    NE,(r13)
        nop


  5. another blitter speed test, here is the advice of the week:

    better call the blitter from GPU than from the 68k ! (and don't forget to stop #$2000 the 68k ;))

     

    yeah, because the 68k is daaaaamn sloooow !!!

    I've done a little map blit test using tiles, the code to call the blitter is really really simple.

    so we can say that it doesn't really count whenever the routine without blitter call is faster in gpu than in 68k.

    the routine calling the blitter using 68k take 75% of the VBL.

    the same routine but in GPU code (also calling the blitter the same way) take 45% of the VBL !!

     

    do the math ;) (and kill the 68k !!)


  6. as said on jsII if you are under windows XP, you must use DosBox to run the jaguar assembler/linker. the madmac assembler and aln linker are available here: http://www.atari-jaguar64.de/english/coding.html

    in the download section. now I think that If you want to code for jaguar you know coding and assembly language, so from that I think you will be smart enough to find how to compile the example given with the lib :)

    If you don't know assembly or coding ... then I really don't recommand to start learning using the jaguar system.


  7. ok, I just done some test using the blitter because I want to do an effect using the blitter and I wanted to know if the blitter is faster taking graphics in GPU Cache or in RAM. the answer is, yes and no.

    so here is the results: all test done by using blit destination in ram. with a 12x12 sprite using copy only.

     

    in Phrase Mode: the blitter is a bit faster when source is in ram !! so a bit slower when source is in gpu cache.

    in Pixel Mode: the blitter is approximately twice faster when source is in gpu cache, so twice slower when source is in ram

     

    I hope these results will help you speeding your blitting code ;)

     

    you can see here a little test: http://onori.free.fr/BLIT2.zip

    first red bar is blitting with source in ram, and second red bar is blitting with source in gpu cache, both in phrase mode, test done and calibrated for 50Hz.


  8. taratata, la freebox elle marche chez moi en s-video B) Les vendeurs m'ont induit en erreur et m'ont fait acheter un méga cable un peu cher, mais google mon ami m'a dit que ce n'était qu'une question de réglage du pilote. Pour le mien, il fallait par exemple lui dire que c'était du PAL M ou du PAL N, je sais plus exactement mais google est là pour le reste. (fin du HS :whistling: )

    bah moi dans tout les modes ca marchais pas :/


  9. apres une bonne bataille pour souder cette pt1 de prise coté jaguar j'ai enfin réussi a faire mon cable et malgres mes soudures ultra gore, ça a fonctionné du premier coup !

    et en plus ça marche sur mon PC fixe ! et comme j'ai une bonne longueur de cable maintenant et grace au nouveau prog de zerosquare je peut dev vachement plus facilement qu'avant, le pied !!

     

    j4.JPG

×