SebRmv
-
Content Count
332 -
Joined
-
Last visited
Posts posted by SebRmv
-
-
I hope I did not OFFSET your way of thinking about this...
WORD up, yo!
you nut! 
I'm glad some one got it .

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

I do like your hint system, though

Unfortunately, I am too bad in english to get fully your pun.
But great hint, indeed, now I got the answer

-
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?
-
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
-
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
-
Ok, another try

3 - non local jumps : phrase aligned
4 - local jumps : long aligned
2 - JR: does the rule depends on the length of the jump ?
-
Regarding rule 5, are the two nops always executed?
Or does it depend on the fact that it is absolute/relative, local to the page/not local ?
-
Ok, so let's recapitulate the rules
1-
2-
3-
4-
5-Two nops after JUMP or JR
-
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 bytesMy 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

-
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).
-
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...
-
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.
-
-
Feel all free to submit your scores on http://removers.atari.org/atomic
Moreover, I should mention that a slightly improved version will soon be released (more sound fx).
But the score system will stay compatible.
-
I did not test it with SkunBoard yet.That's probably your best best anyway.
I see you are getting nicer and nicer.
-
Oops, that's bad. Has anybody else this problem?
I carefully tested it in different scenarii.
-
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.
-
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.
-
...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.
-
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!
-
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?
-
Also I will be releasing versions of this for OS X and Linux if people want.Hi,
really great news. Congrats.
Who wrote the C compiler?
Count my vote for a release of a linux version

Cheers.
-
Excellent news for beginning the new year.
Thanks for this Tursi & kskunk

-
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

-
(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?

Main Code revealed....sort of.
in Atari Jaguar
Posted
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.