Schmutzpuppe Posted January 16, 2004 Share Posted January 16, 2004 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 Quote Link to comment Share on other sites More sharing options...
Eckhard Stolberg Posted January 16, 2004 Share Posted January 16, 2004 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 Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 16, 2004 Share Posted January 16, 2004 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... Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 16, 2004 Author Share Posted January 16, 2004 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 Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 16, 2004 Author Share Posted January 16, 2004 Ah, one more answer 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 7800 is a quite "clean" baby... raw power with no OS overhead or other "schnickschnack"... pure power... less "schnickschnack" is surely better Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 16, 2004 Share Posted January 16, 2004 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... Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 16, 2004 Author Share Posted January 16, 2004 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 Quote Link to comment Share on other sites More sharing options...
+Mitch Posted January 17, 2004 Share Posted January 17, 2004 Is there any other documentation beside the well known software guide (which I read)? Try here and here. Mitch Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 17, 2004 Author Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
+Mitch Posted January 17, 2004 Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 17, 2004 Share Posted January 17, 2004 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... Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 17, 2004 Author Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 17, 2004 Author Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 17, 2004 Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 17, 2004 Author Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
+Mitch Posted January 17, 2004 Share Posted January 17, 2004 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 Quote Link to comment Share on other sites More sharing options...
EricBall Posted January 19, 2004 Share Posted January 19, 2004 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. Quote Link to comment Share on other sites More sharing options...
Schmutzpuppe Posted January 19, 2004 Author Share Posted January 19, 2004 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.