Jump to content



0

7800 question


17 replies to this topic

#1 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Fri Jan 16, 2004 12:27 PM

I just took a look in technical specs of the MARIA chip.
I didn’t found any way to check collision (by hardware).
Does it mean the is no way or do I have “bad” documentation?

Bye
Matthias

#2 Eckhard Stolberg OFFLINE  

Eckhard Stolberg

    Dragonstomper

  • 882 posts
  • Location:Germany

Posted Fri Jan 16, 2004 3:17 PM

I'm not saying anything about the quality of the 7800 progamming documentation, but you probably have a complete copy. ;) There is no hardware collision detection in MARIA mode. You have to take care of that in software.


Ciao, Eckhard Stolberg

#3 Heaven/TQA ONLINE  

Heaven/TQA

    Quadrunner

  • 8,109 posts
  • Location:Baden-Württemberg, Germany

Posted Fri Jan 16, 2004 3:29 PM

and which isn't too hard as you just have to check the sprite coordinates if they overlapp... ("bounded box method"?). it's common even if you use software sprites on every other machine...

it's better that way... think of MARIA possibility of more than 100 sprites.... you would need a lot of collission detection registers which might complicated as well to check bitwise...so...i am sure this way is better... and even c64 has no "real" collision detection between sprites...

7800 is a quite "clean" baby... raw power with no OS overhead or other "schnickschnack"... pure power...

#4 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Fri Jan 16, 2004 3:35 PM

Thanks for the answer.
The 7800 architecture is really uncommon but interesting.
I guess I will take a deeper look into it.
To define and moving objects doesn’t seems to be a problem, until now I didn’t get the point of the indirect mode but only read a few hours so maybe I’ll manage it.
Is there any other documentation beside the well known software guide (which I read)?

Matthias

#5 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Fri Jan 16, 2004 3:42 PM

Ah, one more answer :)

Heaven/TQA said:

and which isn't too hard as you just have to check the sprite coordinates if they overlapp... ("bounded box method"?). it's common even if you use software sprites on every other machine...
[...]
Sure this will work but if there would be such a mechanism why don't use it :)

Heaven/TQA said:

7800 is a quite "clean" baby... raw power with no OS overhead or other "schnickschnack"... pure power...

less "schnickschnack" is surely better :)

#6 Heaven/TQA ONLINE  

Heaven/TQA

    Quadrunner

  • 8,109 posts
  • Location:Baden-Württemberg, Germany

Posted Fri Jan 16, 2004 5:37 PM

mattias,

indirect mode is just same as the charmodes on atari 800... antic 4 etc...

you have gfx data in rom... tell maria where the data is via charmode register and then the ascii byte defines where maria looks for data...
same as on every 8bit computer having a charmode...

so it's mainly used for playfields etc...

#7 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Fri Jan 16, 2004 5:54 PM

Heaven/TQA said:

mattias,

indirect mode is just same as the charmodes on atari 800... antic 4 etc...

you have gfx data in rom... tell maria where the data is via charmode register and then the ascii byte defines where maria looks for data...
same as on every 8bit computer having a charmode...

so it's mainly used for playfields etc...

Ok, I understood that so far but I don't excactly know how to handle that.
If I have a displaylist like that

$00,$60,$94,$12,$10

this would mean (if I understand it correctly):

get data from $9400
Indirect mode on/Writemode 0
HPOS $10
Palette $1
And (here starts the trouble) width $2
What about that width?
Get first byte in $9400 than $9401 or repeat byte in $9400 2 times?

The byte in $9400 holds the lowbyte of charset if I understand it correctly, right?
That would mean if charbase is $90 and $9400 contains $00 the content of $9000 would be displayed.
What about the next line (if we assume that offfset of DLL is >0)?

A lot of questions... :)

Matthias

#8 Mitch OFFLINE  

Mitch

    Quadrunner

  • 5,769 posts
  • 7800 Guy
  • Location:Southern California, USA

Posted Fri Jan 16, 2004 6:29 PM

Schmutzpuppe said:

Is there any other documentation beside the well known software guide (which I read)?

Try here and here. :)

Mitch

#9 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Fri Jan 16, 2004 6:51 PM

Mitch said:

Schmutzpuppe said:

Is there any other documentation beside the well known software guide (which I read)?

Try here and here. :)

Mitch

Thanks, I know this links, I downloaded the doc file from atari archive yesterday (good side btw.).
But further documentation/sourcecode would be helpfull.

Matthias

#10 Mitch OFFLINE  

Mitch

    Quadrunner

  • 5,769 posts
  • 7800 Guy
  • Location:Southern California, USA

Posted Fri Jan 16, 2004 10:52 PM

Schmutzpuppe said:

Thanks, I know this links, I downloaded the doc file from atari archive yesterday (good side btw.).
But further documentation/sourcecode would be helpfull.

Matthias

Well, I think all of the Atari made 7800 docs that are currently available are on one of those two links. But there are a few other people that have written their own findings up. Dan Boris probably has the most well know page. There are a few others as well. Good luck.

Mitch

#11 Heaven/TQA ONLINE  

Heaven/TQA

    Quadrunner

  • 8,109 posts
  • Location:Baden-Württemberg, Germany

Posted Sat Jan 17, 2004 2:56 AM

here is the snippets of code of my scroller:


bounce  	.byte	$0f,>DLBlank,<DLBlank  ;buffer for bouncing   

   

                .byte   $07,>DLscroller,<DLscroller	;scroll-text



DLscroller:

                .byte   <scrolltext,$60,>scrolltext,$40,0

    .byte	<scrolltext+32,$60,>scrolltext,$50,128

                .byte   $00,$00

                Align   8



scrolltext  .byte "WELCOME TO MY FIRST ATARI DEMO ON THIS CONSOLE  "

    .byte "WELCOME TO MY FIRST ATARI DEMO ON THIS CONSOLE  "

    .byte "WELCOME TO MY FIRST ATARI DEMO ON THIS CONSOLE  "

    .byte "WELCOME TO MY FIRST ATARI DEMO ON THIS CONSOLE  "



ORG $5000



fontdata:  incbin armfont.raw



        lda     #>fontdata     ;the font data is located at $5000

        sta     CHARBASE         ;





scroll	dec shscrol

  beq	scroller0

  inc	DLscroller+4

  inc DLscroller+9

  rts

scroller0 lda #3

  sta shscrol

  lda #0

  sta DLscroller+4

  lda #128

  sta DLscroller+9

  inc DLscroller

  lda DLscroller

  clc

  adc #32

  sta DLscroller+5

  rts




please note that this stuff is copied straitgh out of the intro code... it's just for educational proposes...

as you'll see...the font is located at $5000 and i have a DLL entry for the scroll line. this points to a DL with 2 entries as with one DL entry i can max. put 32 bytes on screen. so the next DL entry puts the bytes 32-... on screen... the scroll code looks very similar to atari 800 code... ;)

#12 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Sat Jan 17, 2004 7:44 AM

Mitch said:

Schmutzpuppe said:

Thanks, I know this links, I downloaded the doc file from atari archive yesterday (good side btw.).
But further documentation/sourcecode would be helpfull.

Matthias

Well, I think all of the Atari made 7800 docs that are currently available are on one of those two links. But there are a few other people that have written their own findings up. Dan Boris probably has the most well know page. There are a few others as well. Good luck.

Mitch

Unfortunately the link is dead :(
But this forum is also helpfull :)

Matthias

#13 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Sat Jan 17, 2004 7:46 AM

Heaven/TQA said:

here is the snippets of code of my scroller:

[...]

please note that this stuff is copied straitgh out of the intro code... it's just for educational proposes...

as you'll see...the font is located at $5000 and i have a DLL entry for the scroll line. this points to a DL with 2 entries as with one DL entry i can max. put 32 bytes on screen. so the next DL entry puts the bytes 32-... on screen... the scroll code looks very similar to atari 800 code... ;)

Thanks Heaven!
That helps :)

Matthias

#14 Heaven/TQA ONLINE  

Heaven/TQA

    Quadrunner

  • 8,109 posts
  • Location:Baden-Württemberg, Germany

Posted Sat Jan 17, 2004 11:43 AM

schmutzpuppe... the scroll routine is completly wrong... i haven't noticed that with MESS running very slow at home...

of course we must move the scroll line to the left and this is done by "DEC DLscroller+4" and not by "INC DLscroller+4" that's why it is flickering like hell... my gut feeling was right...



scroll   dec shscrol 

      beq   scroller0 

      dec   DLscroller+4 

      dec DLscroller+9 

      rts 

scroller0 lda #3 

      sta shscrol 

      lda #0 

      sta DLscroller+4 

      lda #128 

      sta DLscroller+9 

      inc DLscroller 

      lda DLscroller 

      clc 

      adc #32 

      sta DLscroller+5 

      rts 



#15 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Sat Jan 17, 2004 11:50 AM

Heaven/TQA said:

schmutzpuppe... the scroll routine is completly wrong... i haven't noticed that with MESS running very slow at home...

of course we must move the scroll line to the left and this is done by "DEC DLscroller+4" and not by "INC DLscroller+4" that's why it is flickering like hell... my gut feeling was right...


Ok but the general structure was more importent for me.

Matthias

#16 Mitch OFFLINE  

Mitch

    Quadrunner

  • 5,769 posts
  • 7800 Guy
  • Location:Southern California, USA

Posted Sat Jan 17, 2004 3:50 PM

Schmutzpuppe said:

Unfortunately the link is dead :(
But this forum is also helpfull :)

Matthias

AtariHQ.com, which hosts the site, has been having a lot of DNS issues recently. If it doesn't work try it again in a few hours.

Mitch

#17 EricBall OFFLINE  

EricBall

    Dragonstomper

  • 711 posts
  • Location:Markham, Ontario, Canada

Posted Mon Jan 19, 2004 11:32 AM

Schmutzpuppe said:

What about that width?
Get first byte in $9400 than $9401 or repeat byte in $9400 2 times?

The byte in $9400 holds the lowbyte of charset if I understand it correctly, right?
That would mean if charbase is $90 and $9400 contains $00 the content of $9000 would be displayed.
What about the next line (if we assume that offfset of DLL is >0)?

For direct sprite, the address pointer in the display list entry points to the first byte of the last line of the sprite (the bottom left corner). (See HoleyDMA & Atari 7800 for basic info on direct sprites and vertical scrolling.) The width is the number of bytes in the sprite.

For indirect sprites, the address pointer in the display list entry points to the first byte in the character/tile string and the width is the number bytes in the character/tile string. The address pointer formed by the CHARBASE register * 256 + the byte value from the character/tile string is then used the same way as the address pointer in the direct sprite case.

#18 Schmutzpuppe OFFLINE  

Schmutzpuppe

    Dragonstomper

  • 782 posts
  • Location:Germany

Posted Mon Jan 19, 2004 2:03 PM

Thanks again.
Meanwhile I understood how the graphics is organised (thanks to heaven for the sourcecode it was really helpfull).
The handling is very unusual if you are used to program on atari xl (or c64 or whatever ;))
Maybe that's the reason why there are nearly no homebrews available?

Matthias




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users