Jump to content
Jagware

Matthias

Members
  • Content count

    53
  • Joined

  • Last visited

Posts posted by Matthias


  1. Hello!

     

    Hey guys,

    recently I have been looking at the graphics pipeline for the Jag. In particular, I have been studying Belboz's popular "Hello World" example program (http://www.hillsoftware.com/files/atari/jaguar/jag_hello.zip) to better understand how to create a simple screen buffer. When looking at his Startup.s where he is creating the object list for the object processor he uses d2 and d3 as "link address overlays". He performs some operations on the values stored in d2 and d3 before creating the first branch object that don't make much sense to me. What in particular is throwing me off is the shifting and swapping. Below is the code in question:

    lea listbuf,a0

    move.l a0,d2 ; Copy

    add.l #(LISTSIZE-1)*8,d2 ; Address of STOP object

    move.l d2,d3 ; Copy for low half

     

    lsr.l #8,d2 ; Shift high half into place

    lsr.l #3,d2

     

    swap d3 ; Place low half correctly

    clr.w d3

    lsl.l #5,d3

     

    If someone could provide some explanation to what sort of data the LINK section of the object header is storing (a relative offset in bytes?) as well as shedding some light on the logic of the shifting and swapping done at the end of the above code sample I would appreciate it. Furthermore, if someone in the community has written a real rock solid article/tutorial on the graphics pipeline of the Jag I would love to read it :P The official docs have been helpful, but still leave me scratching my head a bit :)

     

     

    Here is what a Branch-object looks like (ASCII-art taken from the Underground-docs):

     

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    10             This is what a branch object looks like:
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    Phrase #0:
    
       63      56        48       40       32        24       16       8    3   0
      +--------^---------^-----+---^--------^--------+--------+--+-----^----+---+
      |        unused          |      Link-address   | unused |CC|   VCnt   |011|
      +------------------------+---------------------+--------+--+----------+---+
                                   42..........24      23..16 15.14 13...3   2..0
                                        19bits           8bit  2bit 11bits   3bits
                                        (11.8)

     

    Although a Branch-object is one of the more simpler object-types, creating it with a 68000 isn't quite easy, because the 68000 can only handle up to 32bits (a LONG-word), while all Jaguar-objects are layed out in 64bits (PHRASEs).

    That's the reason why the Link-address is spread over two registers (d2+d3) in the given 68000-assemblercode,

    additionally you need to consider that unlike the 68000, which can read a LONG-word from a WORD-adress, all PHRASE-variables need to be aligned on a PHRASE-boundary, so you can usually forget the lowest 3 bits when composing a Jaguar-graphicsobject.

    BTW: The Link-adress is not an offset, it's a real 22bit-address in the Jaguar's Objectprocessors addressspace.

     

    Looking at the object-layout the two used 68000-registers should be filled with portions of the link-address like this:

     

    d2 will be used for the bits 32 to 42 of the PHRASE, holding the upper 11 bits (11-21) of the 22bit-Link-address it its lower 11 bits,

    d3 will be used for the bits 24 to 31 of the PHRASE, holding bits 3-10 of the 22bit-Link-address in its upper 8 bits.

     

    For d3, SWAPing is just a fast way to move the desired link-adreessbits from the lower 16bit-half of the 32bit-register to the upper 16bit-half.

     

    Kind regards

    Matthias

     


  2. Hello all!

     

    I voted for Impulse X because it is really close to be completed, and I played it with my rotary at the last EJagfest. Iwas used to play Arkanoid clones with a mouse on ST/Falcon, but the rotary is a blast. I hope Impulse X will be released on cartridge (there will be a CD version, but cartridge was still an open option).

     

    At the moment i am very confident that Impulse X can be released this year ;)

     

    Since some weeks i have added fixpoint-calculation for the ballmovement, so finally the game plays at similar speed under both PAL/50Hz and NTSC/60Hz, and also the 2 difficulty settings now implement 2 different ball speeds.

     

     

    So, much as i'd like both of us to do miracles, it plainly won't happen and so i'm actually voting for Clicks - Raven and I have been wanting that for years now smile.gif

     

    I am always surprised to hear people asking for Clicks!, because there was an inflation of games like this on all platforms, but after not playing it for a very long time and then demoing it at the Euro-Jagfest 2010 i can understand you ;)

     

    Kind regards

    Matthias


  3. Hello MegaData!

     

    Also, I would like to know any input on how to set up a "Virtual Team," if anyone has experience... knows of websites with examples... what worked and what did not? I've been reading up on the subject and have some ideas how to go about it, but it's always good to know what other people are thinking too.

     

     

    Depending on the number of team-members and their type of jobs in the project you should

    consider to use a Concurrent Versions System (CVS) to share the project-files (sources, data-files),

    and a simple mailing-list can be sufficient to hold the contact between the team-members (and helps to archive the correspondence). A Yahoogroup can also be used to some degree (can handle mail-traffic and store files).

     

    Best regards

    Matthias


  4. Hello!

     

    Actually, I used your BJL version succesfully with my Alpine

    but I have to look at Curt site because I guess it is easier to use wdb to get back the key.

     

    I am not an experienced Alpine-user, but here is how i have

    understood the CD-encryption-process when using the Alpine:

     

    You should have at least these files:

     

    CDEN.DB

    CDENCR.DB

    CDENCR.TXT

    CDENCR.DTA

    CDENCR.SYM

    PRIVATECD.KEY

     

    Put in the un-encrypted CD into the Jaguar-CD-player

    and then use one of the Alpine-tools to upload and

    run CDEN.DB, this debugging-script will call

    another script called CDENCR.DB which uploads

    the CD-encryption-tool (CDENCR.TXT, CDENCRY.DTA

    and CDENCR.SYM) into the Jaguar/Alpine and starts it.

    The CDENCR-tool then asks for the PRIVATECD.KEY-file

    which is uploaded by the still running CDEN.DB-script.

    Then the encryption-process is done and the results

    will be saved to 2 files:

     

    HASHTAB.CD will hold the calculated HASH-table and

    CDREPORT.TXT is the CD's TOC (needed only if you later

    run the CD-verification-tool AFAIK).

     

    Please adjust the file-paths in both scripts CDEN.DB and

    CDENCR.DB before you use them!

     

    Also note that HASHTAB.CD will only contain the quite

    small calculated HASH-table, while my improved program

    adds the proper CD-track-wrapper around the HASH-data.

     

    Hope this helps

    Matthias


  5. Hello!

     

     

    actually I beleive this to be nice work man =)

     

    Thanks :-)

     

     

    Though last time I looked at encryption i ended up trying to get the encryption src (version unknown?) to compile, since I never saw the "true" atari dev kit program available somewhere, ie one that use the alpine setup. Having an alpine thats the code i'd prefer to use (not to mix up to meny dev env's). and afaik you always released bjl versions? ....do you have a working alpine version? (then i'd be verry interested =)

     

    but as before as a last resort I always have your bjl prgs as a way out =) ...and now i have, yet another, (better?!) tool to do it =) thanx

     

    /Sym

     

    My work is based on the stuff Curt Vendel had released in the end of 2003, you should be able to download the sources for the cartidge- and CD-encryption programs from his website. Also all those "Alpine-developers" out there should be able to provide you with the encryption-executables

    and descriptions how to use them, i am not the right person for this.

     

    Bye!

    Matthias


  6. Hello all,

     

    so far you had to have either an Alpine board or a similar cable-based upload-solution to be able start the CD-encryption tool, now i have added another option: Just use your Jaguar-CD-player!

     

    This week i have modified my RAM-based version CDEN16.ABS of the CD-encryption tool in a way which allows it to run from CD, as soon it is started it will ask you to open the lid of the Jaguar-CD-player and to insert the desired un-encrypted CD it should process for you (the result of the encryption-process will be send to your PC via a serial connection, see my CD-encryption-tutorial for details).

     

    You can find CDRecord-tracks as well as CD-Images for DiscJuggler and Nero of this "CD-encryption-CD" in the "Tools"/"CD creating" section of my Jaguar-site.

     

    Kind regards

    Matthias


  7. Hello Stabylo!

     

    oh, indeed it's quite sad that none of us can present anything of our work at this jagfest...

    or maybe you can matthais? ;)

     

    what are these 2 projects you will be presenting there?

     

    Besides of a lot of other projects of mine the focus will be on Clicks! and on Double Feature #1 (with Reversi and ConnectThem) for the Jaguar and i will also try to show the new MultiGame-project Karri Kaksonen and Songbird Production (and a lot of others) are working on for the Lynx.

     

    Best regards

    Matthias


  8. Hi Pocket!

     

    That's not a "big" problem, because the Retro-Gaming Connexion is not Atari oriented, but rather generalist. It's just sad because we can't travel to other events, but it will be for the next time. :)

     

    Of course you can: Just visit first the Euro-Jagfest on saturday (it's a 1-day event) and travel back to France to visit the Retro-Gaming Connexion on sunday (its 2nd day)! ;-)

     

    Have fun!

    Matthias


  9. Hello all!

     

    I agree, it's unfortunate that both the Retro-Gaming Connexion and the Euro-Jagfest are on the same weekend and even the UK-Jagfest being just a week before, hopefully this will be different next year.

     

    I hope that the people at the UK-Jagfest will have a great event this weekend, wished i could be there!

     

    Best regards

    Matthias


  10. Hello,

     

    here is the official Euro-Jagfest 2006 announcement Björn Baranski (BMX) released today:

     

    Atari Jaguar Europe Festival 2006

     

    The Atari Jaguar Europe Festival, short "e-jagfest" will take place on 4th november in Kaarst, Germany.

     

    It’s a show for all video game fans of europe, center of interest is Atari and their systems, especially Jaguar and Lynx. Of course other systems are welcome as well, for example NUON and other exotic systems were a common seen guest.

     

    Playing games is just one part of the event. Homebrew developers from different countries also take the chance to present and sometimes even offer their exclusive releases for sale.

    Last year there was an limited e-jagfest edition of Starcat’s “Jag Mind:Bomb Squad” for example. This year a new release was annouced to be offered for sale. You will also hear the latest news about the upcoming Jaguar adventure game “Eerievale” as well as two new VCS 2600 games called “Raster Fahndung" and "Encaved". Matthias Domin will be showing two projects as well. It will be an exciting time for sure.

     

    There will also be a Battlesphere network as well as popular lynx network sessions such as Checkered Flag and of course it’s a must for every event to enjoy little fun competitions of games such as Club Drive or Kasumi Ninja. It’s guaranteed to create a great, fun atmosphere.

    In the last years there have always been retrailers on the event, this year Nick Harlow of 16/32 Systems couldn’t promise to attend due to health reasons. But maybe he will surprise us :-) The Starcat Developments releases will be available for sure. If you want to pick up a game, make sure you contact Starcat before, so he can bring enough units.

     

    It will be a great time for sure, that’s something all e-jagfests had in common, as all visitors will gladly tell you. If you are a gamer or developer, even if you don’t play atari games, you are welcome to attend and bring along your favorite system, or just drop by and join the fun bare handed. There is enough time to check out games and play at the many installed systems.

     

    The event has reached ist 6th anniversary and takes place for the 3rd time in a row in Kaarst, Germany.

     

    Beginning time is on 4th november at 10:30 in the morning. Entrace fee is 5 euro.

    Additional information can be found on the website:

    www.e-jagfest.de

     

    I'll be there :)

     

    Matthias


  11. Hello!

     

    I don't have the docs at hand (nor a source-code) but the solution is, that your height*width needs to be less than 65536 (range is $0-$ffff) because both values are combined in a 16bit-register. But i think you can use a trick and tell the blitter to fill 2 or 4 pixels during the same step ( like 240 lines of 160 "DoublePixels").

     

    Ok, meanwhile i have seen that i was wrong when saying that width and height will be put into a 16bit-register, but my trouble was related to the proper setting up of the registers and the understanding

    of how the blitter works.

    To clear (or fill) a contigous area like a whole screen you can either think of this screen as

    a 2-dimensional object (width, height) , or as a 1-dimensional object of length "width*height".

    You can use the Jagaur-blitter for both versions, but the latter (the 1-dimensional) will only

    work as long as width*height are less than $10000.

     

     

    Here is some 68k-code i use to clear 2-dimensional areas in my applications/games:

     

        .
        .
        move.w  #320,screenwidth    
        move.w  #208,screenheight
        move.l  #PITCH1|PIXEL16|WID320|XADDPIX,screenflags
        .
        move.l  #myfirstscreen,d0
        jsr     Clear16bitscreen
        .
        move.l  #mysecondscreen,d0
        jsr     Clear16bitscreen
        .
    
    ;*******************************************************************
        
    Clear16bitscreen:
    
    ; Point A1BASE to the data
        move.l  d0,A1_BASE; destination-address
    
        move.l  screenflags,d0
        or.l    #XADDPIX,d0
        move.l  d0,A1_FLAGS
    
    ; Set the pixel point to 0,0
        move.w  #0,d0         ; y
        swap    d0
        move.w  #0,d0         ; x
        move.l  d0,A1_PIXEL
    
    ; Set fractional pixel pointer
        move.w  #0,d0         ; y
        swap    d0
        move.w  #0,d0         ; x
        move.l  d0,A1_FPIXEL
        
    ; Set up the step size to 
    ; -screenwidth in x and
    ; 1 in y
        move.w  #1,d0         ; y
        swap    d0
        move.w  screenwidth,d0
        neg.w   d0
        move.l  d0,A1_STEP
    
    ; Set up the fractional step size to 0 in x
    ; 0 in y
    
        move.w  #0,d0         ; y
        swap    d0
        move.w  #0,d0         ; x
        move.l  d0,A1_FSTEP
    
    ; Set up Counters register
        move.w  screenheight,d0; y
        swap    d0
        move.w  screenwidth,d0; x
        move.l  d0,B_COUNT
    
    ; Put some data (0s to clear the screen) in the blitter for it to write
    ; This is a cheat I am using all 0 so there is 
    ; no need to word swap
    
        move.l  #0,d0
        move.l  d0,B_PATD   
        move.l  #0,d0
        move.l  d0,B_PATD+4
    
    ; Now Turn IT ON !!!!!!!!!!!!!
    
    ; NO SOURCE DATA
    ; NO OUTER LOOP
    ; Turn on pattern data
    ; Allow outer loop update
    
        move.l  #PATDSEL|UPDA1,d0
        move.l  d0,B_CMD
    
    .waitforblitter:
        move.l  B_CMD,d0          ; wait till blitter has finished its work
        andi.l  #1,d0           
        beq     .waitforblitter
    
        rts

     

     

    Bye!

    Matthias


  12. Hello!

     

    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 ?

     

    I run into the same problem ;-)

     

    I don't have the docs at hand (nor a source-code) but the solution is, that your height*width needs to be less than 65536 (range is $0-$ffff) because both values are combined in a 16bit-register. But i think you can use a trick and tell the blitter to fill 2 or 4 pixels during the same step ( like 240 lines of 160 "DoublePixels").

     

    Perhaps i can come up with a better description tomorrow...

     

    Best regards

    Matthias


  13. Hello!

     

    If you use it, just credits Ray(TSCC) for this great work :)

     

     

    Ok, i am using this sentence in the credits-screen:

    LZSS packer by Ray of tscc

     

    Is this ok?

    I am using "LZSS" because of the state of confusion i am currently in, see below:

     

     

    The source is not fully documented, but if you want more explications, don't hesitate. This is the 'exact' translation of the 68000 unpacking rout of the LZ77 implementation for Atari micro, let's have a look on the Ray website here :)

    GT :poulpe:

     

    Hmm, recently i began wondering about this:

    On Ray's website he talks about a new version of his LZ77 stuff which he calls LZ78,

    the DOS-EXE i use to compress (pack) the files outputs LZ77, does this mean that

    we all use an outdated version now on the Jaguar?

     

    Regards

    Matthias


  14. Hi!

     

    Hello!

    Today i started incorporating it in my project, the decoding RISC-code isn't working yet :-( , but the C-function which i found on Ray's site.

     

     

     

     

    Ok, finally found the problem:

    Your RISC-code simply consumpts too many registers! ;-)

     

    The reason why i asked for the RISC-source was that i have to integrate it into a huge project with an already established RISC-code-environment. Sadly this RISC-code-environment (--> the function dispatcher) leaves only few registers for the called subroutines.

     

     

    Ok, now it's working, so i am happy :-)

     

    Thansk again!

    Matthias


  15. Hello!

     

    If you use it, just credits Ray(TSCC) for this great work :)

     

    The source is not fully documented, but if you want more explications, don't hesitate. This is the 'exact' translation of the 68000 unpacking rout of the LZ77 implementation for Atari micro, let's have a look on the Ray website here :)

    GT :poulpe:

     

    Today i started incorporating it in my project, the decoding RISC-code isn't working yet :-( , but the C-function which i found on Ray's site.

     

    I'll let you know how it procedes :-)

     

    Bye!

    Matthias


  16. Hello!

     

    Matthias ... I don't have a Jag CD , but I'll surely have a Jag CF ... will you project to publish your new titles on CF too ? Should be great ;)

     

    At the moment i don't plan to make a release for the CompactFlash-card or normal cartridge.

    Perhaps this will change later, who knows.

     

    Best regards and thanks for your interest in my games. :)

     

    Matthias

×