Jump to content
Jagware

Zerosquare

Administrators
  • Content count

    2,138
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by Zerosquare


  1. well, just a stupid question... some of us have an alpine... some have BS roms... or can make an image of them...

    so, why not disassemble the receiving code, post it and see how it looks?

    does anyone has started any work in that direction, or is it just a stupid idea?

    Not a stupid idea, but certain people would get very angry with us, and it might even be illegal. Besides, I think we have the abilities to figure it out ourselves without having to copy someone else's code. :)

  2. [Français]

    Un petit "le saviez-vous ?" à propos de Tempest 2000 : on a fait des tests hier avec SCPCD, et l'option "Interlace" n'utilise pas le mode entrelacé :blink: Ça semble seulement faire trembler l'image horizontalement...

     

    [English]

    A little bit of trivia about Tempest 2000 : I did some testing yesterday with SCPCD, and it appears that the "Interlace" option does not use interlaced mode :blink: It only seems to make the picture shiver horizontally...


  3. Par contre, ça serait bien que vous pensiez aux utilisateurs de Linux pour le soft de transfert...
    [Français]

    Ne t'inquiète pas, c'est prévu, le code sera en C "propre" et pourra être compilé au minimum pour Windows et Linux.

     

    [English]

    Don't worry, this has been foreseen, the code will be "clean" C and will be compilable at least for Windows and Linux.


  4. [Français]

    Le boulot se poursuit, on s'est fait une petite réunion hier avec SCPCD pour finaliser certaines choses, on vous en dit plus très bientôt.

     

    (P.S. pour FrediFredo : je crois qu'on va avoir besoin de tes compétences ;) )

     

     

    [English]

    Work is going on, I had a little meeting with SCPCD yesterday to finalize some stuff, you'll get news very soon.

     

    (P.S. for FrediFredo : I think we'll need your abilities ;) )


  5. [Français]

    Désolé d'avoir été un peu long à la détente :blush:

     

    En réponse à ta question, X = 0 (pour les sprites) correspond au bord gauche de la zone gérée par l'OP (à l'inverse de ce qui se passe pour les Y, donc).

     

    Voilà un bout de code d'exemple pour le mode non entrelacé (SCPCD ou GT devraient pouvoir te fournir d'autres trucs du même genre).

     

     

    [English]

    Sorry for the delay :blush:

     

    To answer your question, X = 0 (for sprites) is the left edge of the area drawn by the OP (i.e. it's different from what happens for the Y values).

     

    Here's a bit of example code for non-interlaced mode (SCPCD or GT should be able to provide you with more stuff of the same kind).

     

     

    .include    "jaguar.inc"
    
    
    .bss
             a_hdb:      .ds.w   1    
             a_hde:      .ds.w   1
             a_vdb:      .ds.w   1
             a_vde:      .ds.w   1
    
    
    .text
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Procedure: InitVideo (same as in vidinit.s)
    ;            Build values for hdb, hde, vdb, and vde and store them.
    ;            Original code by Atari, slight modifications and comments
    ;            by Zerosquare / Jagware
                            
    InitVideo:
            movem.l d0-d6,-(sp)
                
            move.w  CONFIG,d0     ; Also is joystick register
            andi.w  #VIDTYPE,d0   ; 0 = PAL, 1 = NTSC
            beq     palvals
    
            move.w  #NTSC_HMID,d2
            move.w  #NTSC_WIDTH,d0
    
            move.w  #NTSC_VMID,d6
            move.w  #NTSC_HEIGHT,d4
    
            bra     calc_vals
    palvals:
            move.w  #PAL_HMID,d2
            move.w  #PAL_WIDTH,d0
    
            move.w  #PAL_VMID,d6
            move.w  #PAL_HEIGHT,d4
    
    calc_vals:
    ; You can modify d0 and d4 here to set the area drawn 
    ; by the OP (by default it fills the whole screen). It will
    ; be centered on the screen.         
    ; Warning : the horizontal values are in video clock cycles, 
    ; so don't forget to multiply the number of pixels by 
    ; PWIDTH + 1
    ; Check also that the VDB and VDE values used for the first 
    ; two stop objects in your object list are those calculated 
    ; here
         
            move.w  d0,d1
            asr     #1,d1         ; Width/2
            
            sub.w   d1,d2         ; Mid - Width/2
            add.w   #4,d2         ; (Mid - Width/2)+4
    
            sub.w   #1,d1         ; Width/2 - 1
            ori.w   #$400,d1         ; (Width/2 - 1)|$400
            
            move.w  d1,a_hde
            move.w  d1,HDE
    
            move.w  d2,a_hdb
            move.w  d2,HDB1
            move.w  d2,HDB2
    
            move.w  d6,d5
            sub.w   d4,d5
            move.w  d5,a_vdb
    
            add.w   d4,d6
            move.w  d6,a_vde
    
            move.w  a_vdb,VDB
            move.w  a_vde,VDE
                
            movem.l (sp)+,d0-d6
            rts


  6. [Français]

    Désolé, j'ai pas le courage de le refaire en français... Profitez-en pour travailler votre anglais :P

     

    [English]

    SebRmv asked me in a PM about how to setup the video registers for a given resolution, and I think some info could be helpful to several people, so I've deciced to post it here.

     

    Note that I'll give no registers values and no code here. For "usual" video modes, SCPCD and others have much more experience than me, so they should be able to help those interested in the matter. For "hi-res" modes such as 1376x576, I've not solved all of the peculiarities yet, and I prefer to offer explanations about things I really understand.

     

    An important thing to keep in mind, I think, is that there are far fewer actual resolutions usable on the Jaguar than on a typical PC graphic. This is because a TV set is very limited in its capabilities compared to a computer monitor (fixed refresh rates), and Atari did not bother to implement a flexible video clock generator in the Jaguar (though the chipset would have been able to use it).

     

     

    Let's start.

     

     

    Vertical resolution

     

    We don't have much of a choice here. Since we must be compatible with TV sets, we have to follow the timing requirements for PAL and NTSC, and both specify a fixed number of lines per frame, specifically 625 in 50-Hz mode and 525 in 60-Hz mode. This number covers the total length of the frame, including the blanking period where the electron beam is shut off. Consequently, only up to 576 lines can actually contain picture data in 50-Hz mode, and up to 480 or 486 lines in 60-Hz mode (depending on who you ask). Actually, the very first and very last line in the frame are partially blanked, but this is generally ignored to make the calculations easier.

     

    Now, you've probably heard about interlacing. It means that the frame is split into two half-frames, called fields. One is composed of the even lines, the other one of the odd lines ; let's call them A and B. Normal TV signals are interlaced, and the refresh pattern goes like this : A B A B A B... Since each field lasts during 1/50th or 1/60th of a second, note that the full frame is only refreshed 25 or 30 times per second.

     

    But by default, the Jag uses a (slightly) non-standard non-interlaced mode, which has the following refresh pattern : A A A A A A... You can see that only half of the available lines are displayed, but they are refreshed twice as often compared to the standard interlaced mode.

     

    So to recap, you have only two possible vertical resolutions : 576 or 480/486 lines interlaced, and 384 or 240/243 lines non-interlaced. Yet, you don't have to put graphics in all of those lines ; you can use a border in the top and bottom lines, or leave them blank. (Some of them will get cropped anyway because TV sets and monitors are set to overscan a bit, thus you should not place important graphics near the edge of the screen.) On the Jag, the VDB and VDE registers control which lines are filled by the Object Processor ; the other ones simply display the border color. The values of those registers do NOT affect the vertical resolution. In other words, they control the number and the position of "active" pixels vertically, not their size.

     

    Beware that the VDB and VDE value are expressed in half-lines, and the first visible line is not zero. This is also the case for Y values used in OP lists (they are NOT relative to VDB : if you want to display a sprite on the first line handled by the OP, you have to use the value of VDB, not zero).

     

     

    Horizontal resolution

     

    Now this is a bit more interesting. Like all game consoles (except the most recent ones), the Jaguar outputs analog video, and you'll not find anything about horizontal resolution in any serious document about analog video. This is simply because there is no sampling in the horizontal direction ; the signals produced by, for example, an analog video camera, are continuous during the scan of a line. (That doesn't mean that the equivalent digital resolution would be infinite.) So the "length" of the lines are not defined in terms of pixels, but time : 64 µs in 50-Hz mode, 63.5555... µs in 60-Hz mode. Just as for the vertical stuff, we have to account for the blanking period ; this leaves 52 µs in 50-Hz mode for the video part, and 52.6555... µs in 60-Hz mode.

     

    Now what about the Jaguar ? The video chipset need values exprimed in pixels... According to the docs, the video master clock is 26.593900 MHz for PAL units, and 26.590906 MHz for NTSC units. This gives us about 1382 pixels per line 50-Hz mode, and about 1400 pixels in 60-Hz mode. To make things a little more flexible, you can divide this master clock by an integer between 1 and 8 using the PWIDTH field of the VMODE register (it is only applied to the OP, by the way ; the other video registers don't need to be modified no matter the value of PWIDTH). Dividing the clock frequency by N makes each pixel last N times longer ; as the horizontal timing is fixed, the pixels get N times larger and consequently the vertical resolution line is also divided by N. If you do the math, you'll notice that unfortunately no configuration results in square pixels...

     

    The HDB1, HDB2 and HDE registers play a similar role to their vertical counterparts, allowing you to specify which pixels are "active". Their value do NOT influence the horizontal resolution.

     

    You may be wondering why there are two different registers for the beginning of the display. Usually the OP runs once per line, and HDB1 and HDB2 both have the same value. However, since the lines buffer are 1440 bytes long, they can handle only up to 720 pixels in CRY or RGB16 mode, or 480 pixels in RGB24 mode. If there are more active pixels than that, the OP has to run twice successively to draw an entire line. The HDB2 register is used in this case to specify on which pixel the OP should reset its processing, just as if it was the beginning of a new line. So, basically, "wide" screens look like screens with twice as many lines from the OP point of view. (By the way, the OP lists X values's ARE relative to HDB1 and HDB2... Isn't it fun ? :D )

     

     

    Other registers

     

    The VP, VBB, VBE, VS, VEB, VEE, HP, HBB, HBE, HS, HVS and HEQ registers define the video signal timings. If they've been properly set, you don't need to change them, no matter which resolution you use (except when you're fiddling to get interlacing to work right, but this is for later :D ). Be aware that you CAN generate completely weird signals, which MAY damage your TV/monitor, by writing to these registers ; this is why the Atari docs tell you explicitly not to even think about it :whistling:

     

     

    This is by no means complete yet...


  7. PS: by the way, what about the documentation of the video registers :P ?
    Well... :blush:

    My goal was to make an accurate doc, so after fiddling with the registers to get the demos to work, I attempted to understand exactly how the hardware behaved. After many many tests and more-or-less strange results (Atari hardware-style :P ), I got a bit tired with it (no to mention some persons started to wonder aloud about the progress of the Catnip project :whistling: ), so I put the video thing on the side. I'm not comfortable publicly releasing things I don't fully understand, but as I said before, you can contact me if you need the info I've gathered so far for a project.


  8. Yes, that's the price to pay when statically linking all the libraries you need...
    Just to make sure : I was aware of that ; it was a snide comment because of my dislike for software bloat, I don't doubt the usefulness of your program or your coding abilities :hug: And I'm convinced coders can use whatever software they're comfortable with as long as the job gets done :)

     

    PS: by the way, what about the documentation of the video registers :P ?
    I've replied here, in order not to hijack your topic.

  9. hummmmm ... for me , I would to see "jag" on the name to show what is it and for what is it.
    I agree.

     

    and I would to see a note from or for the conceptor ( the one who make it : Zerosquare )
    I'm not the only one, let's not forget SCPCD, GT Turbo and you ;) , so my opinion is that the name should be neutral on that.

  10. [Français]

    On recherche une nouvelle idée de nom pour notre câble de communication USB (voir ici pour plus d'infos).

    Il s'appelle pour l'instant le "JagWire", mais certaines personnes pensent qu'il y a risque de confusion à cause de l'ancien site web d'Atari du même nom, et du site de cobracon.

     

    Si vous avez un nom sympa à proposer, postez ici ! :)

     

    (Note pour ceux qui ne sont pas inscrits comme membres sur ce site : le même sujet a aussi été posté sur AtariAge et Yaronet.)

     

     

    [English]

    We're looking for a new name for our USB communication cable (click here for more info).

    It's currently known as the "JagWire", but some people feel it will create confusion because of the former Atari website with the same name, and cobracon's site.

     

    So if you've got a cool name to suggest, go ahead and post it here ! :)

     

    (Note for those who are not registered members on this site : the same topic has also been posted on AtariAge and Yaronet).


  11. [Français]

    Pour ceux qui se poseraient la question, je n'ai pas lâché l'affaire, la doc va sortir :whistling:

    Les démos étaient vraiment de la bidouille, et comme je veux que ce soit bien fait, je suis en train de confirmer le comportement de tous les registres vidéos à l'oscillo, vu que la doc Atari est loin d'être sans ambiguités...

    En attendant, vous pouvez me contacter si vous avez besoin d'infos potentiellement incorrectes sur les modes vidéos :)

     

    [English]

    For those who might be wondering, I've not given up, the doc is going to be released :whistling:

    The demos were really a hack job, and as I'd like to do things properly, I am currently confirming the behaviour of all the video registers with an oscilloscope, as the Atari documentation is far from unambiguous...

    In the meanwhile, you can contact me if you need possibly incorrect info on video modes :)


  12. Ben pour tout dire j'ai une petite baisse de motivation en ce moment :(

     

    Et faut que je prenne le temps de faire ça bien, une boulette en élec c'est moins facilement rattrappable qu'un soft (où il suffit de diffuser une mise à jour). Sans parler de tous les à-côtés (le problème du boîtier, de la fabrication, etc.) qui sont loin d'être ma tasse de thé... Donc je préfère attendre d'être bien concentré pour avancer :) (Oui, je sais que certains sont impatients. J'y pense, j'y pense.)

     

    P.S. : Merci pour les infos (comme d'hab !), Fredifredo.

     

    P.P.S. : Pour le changement de nom, j'ai rien contre. On repêche les anciennes suggestions ? Ou quelqu'un a une idée neuve ?


  13. [Français]

    Je sais qu'on avait parlé de moi pour cette routine, mais vue la "qualité" de mon code 68000, je pense que ça serait mieux que je fasse une doc sur les aspects vidéos de la Jaguar (modes "hautes résolutions" inclus, bien sûr), et que quelqu'un d'autre s'occupe de la réalisation :whistling:

    Ça vous va ?

     

    [English]

    I know some people had thought about me doing this routine, but considering the "quality" of my 68000 code, I think it would be better for me to create documentation on the Jaguar's video features ("high-resolution" modes included, of course), and have somebody else apply it :whistling:

    Do you agree ?


  14. [Français]

    Voici des versions mises à jour qui gèrent correctement (si tout va bien ;) ) aussi bien le mode 50 Hz que le mode 60 Hz. (Comme la résolution est plus faible en 60 Hz, les bords de l'image sont un peu coupés...)

     

    [English]

    Here are updated versions which (hopefully ;) ) handle correctly 50 Hz mode as well as 60 Hz mode. (Since the resolution is lower in 60 Hz, I had to crop the image a bit around the borders...)

    hdr1u.zip

    hdr2u.zip

×