Jump to content

SebRmv

Members
  • Content Count

    332
  • Joined

  • Last visited

Posts posted by SebRmv


  1. 00040000 jr EQ,nogoodreason

    00040006 jr CS,nobetterreason

    0004000C jr CC,whocares

    00040012 jr nooftheabove

    0004001C jr nooftheabove

    00040024 jr nooftheabove

    0004002C jr nooftheabove

    00040032 jr nooftheabove

     

    tell me now....look carefully at the addresses...... what do you see? ;)

    Get this and the whole world knows all the rules to main code execution! :)

     

    This is where I do not see something special.

     

    Ends with 0, 2, 4, 6 or C

     

    If I take MODULO 4, this means no special alignment is needed.


  2. I hope I did not OFFSET your way of thinking about this... ;)

    WORD up, yo!

    :rolling: you nut! :rolling:

     

    I'm glad some one got it . :D

    But then I cheated... I saw Robert's posts :lol:

     

    I do like your hint system, though :D

     

     

    Unfortunately, I am too bad in english to get fully your pun.

    But great hint, indeed, now I got the answer :D


  3. Ooooh you're getting warm!!!

     

    Ok so if 0,4,8,C are on a specific size boundary outside a PAGE I will repeat....

     

    Ok, I think I get it

     

    Outside a PAGE: 0 + 4n (ie simply long aligned)

     

    And if 2,6,A,E are on a specific size boundary inside a PAGE I will repeat....

    ( For crying out loud Seb, I bolded it for you last time! Maybe this will help ;) )

     

    I hope I did not OFFSET your way of thinking about this... ;)

    WORD up, yo!

     

     

    Inside a PAGE: 2 + 4n

     

    Is it correct?


  4. Here is a more detailed JR example......it really says just about all for JR.

    Examine the placement of the JR's the destinations and the pages.

     

    00040000 jr EQ,nogoodreason

    00040002 nop

    00040004 nop

     

    00040006 jr CS,nobetterreason

    00040008 nop

    0004000A nop

     

    0004000C jr CC,whocares

    0004000E nop

    00040010 nop

     

    00040012 jr nooftheabove

    00040014 nop

    00040016 nop

    00040018 nop

     

    nogoodreason:

    0004001A moveq #NOGOODREASON,r0

    0004001C jr nooftheabove

    0004001E nop

    00040020 nop

     

    nobetterreason:

    00040022 moveq #NOBETTERREASON,r0

    00040024 jr nooftheabove

    00040026 nop

    00040028 nop

     

    whocares:

    0004002A moveq #WHOCARES,r0

    0004002C jr nooftheabove

    0004002E nop

    00040030 nop

     

    nooftheabove:

    00040032 jr nooftheabove

    00040034 nop

    00040036 nop

     

    JR addresses end with 0, 2, 4, 6 or C

     

    target labels end with 2 or A


  5. I just try to answer your questions. Maybe this will get clearer to me once written down.

     

    Lets review with yet a little more detail the example label and symbol table provided in the example.

     

    Label table:

     

    GoMovecannon = 00040084 the JUMP instruction to 'call' MoveCannon() in another PAGE

    AimCannonRET = 0004008C the 'return' address for MoveCannon() to return TO when finished FROM another PAGE

     

     

    Now what TWO things do you notice about these two addresses?

     

    These addresses are long aligned but not phrase aligned (ie of the form 8n + 4) ?

     

    Ends with 4 or C

     

    MoveCannon = 00041000 this is the entry point(JUMP FROM another PAGE)

    MoveCannonJ1 = 0004101C this is nothing more than a label to make sure the placement for this JUMP is correct

    MoveCannonJ2 = 00041038 same purpose as 'MoveCannonJ1' for this JUMP as well

    DoneMoveCannon = 00041070 placement label again, for the last JUMP going back TO the caller(in another PAGE)

     

     

    What do all of these JUMP placement and destination addresses have in common?

     

    Ends with 0, 8 or C

     

    CannonMove = 00041022 these are all local DESTINATION adresses in the same page being JUMP/JR'ed FROM.

    SubCannon = 0004103E

    IncHotSpot = 00041056

    DecHotSpot = 0004105A

     

    What do all of these JUMP/JR destination addresses have in common? I hope I did not OFFSET your way of thinking about this... ;)

    WORD up, yo!

     

    Ends with 2, 6, A or E


  6. They are all aligned on 4 bytes.

     

    Which instruction? JUMP, JR or both.....look at the example carefully before you answer.

     

    Target labels are also aligned on 4 bytes.

     

    When are they aligned on a long address? And are they always? Again,

    look carefully.

     

     

    Sorry, I meant absolute jumps (ie JUMP) in both cases.

     

    As I said, I haven't yet figured out a rule for relative jumps (ie JR)

     

    They are all aligned on 4 bytes

    My guess was that:

    - for intra-page jumps, jump and target are aligned on 4 bytes.

     

    What do you mean by intra page jumps? Either you are local to the page(256 bytes) or you are not local.

    Alignments to local or external are different.

     

    They are all aligned on 4 bytes

    - for inter-page jumps, same rule applies but the pipeline should be emptied to the next phrase boundary before the jump occurs (ie add sufficiently enough nops to prevent unexpected results).

     

    It's not so much you making sure the pipeline gets emptied. It's more a question of when the instruction WILL empty the pipeline.

     

    But this is over analyzing still. The pipeline plays and important part but not an overly complicated part. You really do not need to

    know that to get the alignments right.

     

    yes, intra-page jumps = local to the page

    inter-page jumps = the contrary ;)

     

    once again, I was just talking about JUMP

     

    but apparently this is not a correct guess :D


  7. Finally fot some time to analyse a bit further.

     

    First recapitulate the labels (actually you gave this)

     

    Called from loop at = 00040084 
    AimCannonRET		 = 0004008C 
    
    MoveCannon		   = 00041000
    MoveCannonJ1		 = 0004101C
    MoveCannonJ2		 = 00041038
    DoneMoveCannon	   = 00041070
    
    CannonMove		   = 00041022
    SubCannon			= 0004103E
    IncHotSpot		   = 00041056
    DecHotSpot		   = 0004105A

     

    The jumps

    41012	jr	EQ,CannonMove
    4101C	jump	(RET)
    41032	jr	NE,SubCannon
    41038	jump	(RET)
    41046	jr	PL,IncHotSpot
    41050	jr	DecHotSpot
    41070	jump	(RET)

     

    Regarding the absolute jumps.

     

    They are all aligned on 4 bytes.

    Target labels are also aligned on 4 bytes.

    They are followed by at least two nops, is it intended?

     

    Regarding the relative jumps.

     

    I don't really see a rule here, apart from the fact that they are always followed by two nops.

     

    --

     

    My guess was that:

    - for intra-page jumps, jump and target are aligned on 4 bytes.

    - for inter-page jumps, same rule applies but the pipeline should be emptied to the next phrase boundary before the jump occurs (ie add sufficiently enough nops to prevent unexpected results).


  8. Great move Gorf!

     

    I do the exercise:

     

    So the jump/jr are all aligned on 8 bytes (ie a phrase) boundary.

     

    The target labels of jump instructions are also aligned on 8 bytes boundary.

     

    On the contrary, the target labels of jr instructions do not seem to be especially aligned.

     

    Yes, the jumps are indeed aligned on 8 byte boundaries, however, that is only a result of

    the necessary instructions between them. We know that 8 bytes are a phrase in Jaguar

    terminology. You are geting warm though. Here is a hint: You are correct x 2. I know I

    said the GPU sees memory externally at 64 bits but it does still 'understand' smaller data.

     

    Keep in mind the host processor determines some limitations for the GPU as well.

     

    The JR instructions DESTINATIONS are also very much aligned. But first you need to reconcile

    the above JUMP issues.

     

    Seb is getting warmer though folks.

     

    Ok, so if I understand, it is sufficient that everything (jump instructions as well as target labels) are aligned on four bytes (ie just a long word)?

     

    For relative jumps, I need to examine closely again your piece of code.

     

    Also, I am not sure I have understood the memory page issue...


  9. Great move Gorf!

     

    I do the exercise:

     

    So the jump/jr are all aligned on 8 bytes (ie a phrase) boundary.

     

    The target labels of jump instructions are also aligned on 8 bytes boundary.

     

    On the contrary, the target labels of jr instructions do not seem to be especially aligned.


  10. I have just tried the new Atomic. And unfortunately it doesn't work for me. After successfull BJL upload the Atamic Reloaded logo appears, then screen with credits and when I press B button the game starts to play music and fall immediately to BJL menu. I did not test it with SkunBoard yet.

    post-2769-1246708580_thumb.jpg

     

    Oops, that's bad. Has anybody else this problem?

    I carefully tested it in different scenarii.


  11. Hi,

     

    just a quick word to announce the immediate availability of Atomic Reloaded.

    (was fed up to see it on my hard disk)

     

    Just go on http://removers.atari.org/softs/download.php

     

    Cheers.

     

    Awesome!!! Thanks!! I will try this out hopefully later today. So what's new about this release?

     

    Well, I think the game itself is a bit more polished than the original version (while still being perfectible).

    Basically, it is the same game, but better ;)

     

    The biggest improvement however is the online score & save system, which now opens the road to competition between Jaguar fans ;)

     

    I should have added that the distributed version is the BJL version which runs also on Skunkboard.

    If someone wants to make a Jag CD version, he is welcome.

    It is also possible to make a "fake cartridge version" thanks to jag2card program by Matthias.


  12. ...

     

    Hey Gorf, sorry I didn't know your work was already integrated in SubqMod ASM. As you probably noticed, I froze a bit my activity on Jaguar.

     

    I never tried myself to circumvent that bug, because I just didn't need it, but was thinking of alignment issues.

     

    I believe you when you say it's a pain in the *ss to do this by hand, really.

     

    It would be interesting to list all the cases where care must be taken.

    Once this work is done, it surely be possible to write a more higher level language targetting Jaguar RISC procs.


  13. And before you say "NO. IT'S MY KNOWLEDGE!!!" there is a post on the D-Bug *INTERNAL* forum dated and titled:

     

    "05.06.09 at 00:55:43 - JAGUAR GPU BUG"

     

    Exposed via testing against VJag.

     

    any instruction reading a LONGWORD from main ram must be reading from a LONG alligned address or it "randomly" fails.

     

    Armed with that knowledge, it's not a great leap to understand the JUMP bug, is it? Maybe some people ARE as smart as they make believe.

     

    Thanks for the hint!


  14. Seb,

     

    It is vbcc. Which was written by Dr. Volker Barthelmann.

     

    Frank Wille wrote vlink (and added support for the Jaguar a.out format and relocation and GPU/DSP movei relocation). Frank also wrote vasm which is the assembler used by the compile to convert the C into Object code.

     

    I have been using it on Linux now and quite like it.

     

    Ok. I think I investigated a bit in the past in this direction but as far as

    I remember, the license was not compatible with what I wanted to do.

    (or maybe I am confused with another project)

     

    Is it possible to get vbcc and vlink source codes somewhere?


  15. Thea Realm fighters is out there only partially finished and will almost certainly never be released cause of liscensing issues. A Tiny Toons proto and a Vitual VSC proto both exist, Conan is lost and only 1 level was completed IIRC,there are many games that are lost and many that are finished and unreleased like the 7 Telegames that will never see the light of day..... :(

     

    What 7 Telegames are you talking about?

    powerslide,cricket,braingames,james pond,virtuoso, superoff road,and a soccer game i believe,the list is on JSII,however there were rumored to be almost 40 games in the works from Telegames....because a few of them didnt sell good enough they wont release anymore. :(

     

    James Pond :-o


  16. (it is particularly inefficient for Y=0 clipping)

     

    Actually, I just found a bug in that case. The fix is coming soon.

     

    PS: can someone edit the title of this topic to "A development library for the Jaguar" please?

×
×
  • Create New...