Jump to content
IGNORED

Yet Another 7800 Demo!


Christopher Tumber

Recommended Posts

- Left/Right Up/Down controls speed.

 

- This is really little more than a "proof of concept" right now - It's a tile-based, reasonably smooth, parallax scroller. The "foreground" and "background" overlap (unfortunately the graphics I've chosen don't really show that off well but if you look closely you'll see) and scroll at different rates. I still need to get sprites working over top of it at which point it should become a nice little display engine.

 

- I'm not well versed in the 7800 library, do any existing 7800 games have a parallax scroll or is this a first? - Choplifter kinda fakes it but it's not really a true overlapping parallax scroll.

 

- While I've borrowed graphics from an existing game, it's is NOT my intention to port that game. I just needed some graphics and didn't want to spend time drawing them. (It's actually a lot more work adapting graphics than drawing new ones, but whatever...)

 

- The left edge of the screen should probably be masked. I'll get to it.

 

- The scroll is a 2 pixel scroll due to the graphics mode (320x2). It would be possible to make a single pixel scroll, however it would be a huge, huge pain in the butt and require a large chunk of ROM which I don't think is justified (IMHO the scroll looks good as long as it's fast enough).

7800kern.zip

Link to comment
Share on other sites

If you need a title screen for your game, let me know, my bmp2maria conversion tool & the 7800 code is slowly getting there.

 

Thanks, but I'm a long way away from a title screen...

 

FWIW, I've been working on some tools as well, these wierd 7800 bitmap modes are just impossible to edit by hand!

 

The attached is an actual 7800 screenshot, just a few more tweaks and I'm there!

 

:thumbsup: Looks like you just need to fix the palettes?

Link to comment
Share on other sites

Chris,

 

What about Tower Toppler on the underwater level? Isn't that using true parallax?

 

I dunno, frankly I've never gotten past the first level :D

 

I'll give it another go...

 

This looks really cool...can't wait to see what more you do with this...

 

Thanks, this started out with the idea that a general purpose tile based background and sprite handling kernal would be relatively straightforeward and really usefull. Well, at least I got the "usefull" part right...

Link to comment
Share on other sites

Hi there!

 

FWIW, I've been working on some tools as well

 

Aha, good to know! ;)

 

these wierd 7800 bitmap modes are just impossible to edit by hand!

 

Struggling with this for the whole weekend now. Took me 2 days alone just to get that thing to display something else than a black screen :lol:

 

:thumbsup: Looks like you just need to fix the palettes?

 

Mostly. There seems to be a small flaw when a DL crosses a 4K boundary or something like that. You can see it in the snakes head and I think the horizontal orange lines come from that as well. I'm just waiting for some deeper insight from the [atari7800] gurus before rewriting my tool again... :)

 

The colors are all there, I just need to write something like a 7800 color selector or something like that first...

 

Greetings,

Manuel

Link to comment
Share on other sites

Aha, good to know! ;)

 

I have a little multi-colour bitmap editor (currently 140x40 with 9 colours) that saves to a simple binary file. I'm then writing bitmapTo7800 utilities on a case by case basis. Right now I have a utility that converts the bitmap to 320x2 character set data. I'll probably do a sprite converter next. I should probbaly be doing PCX or GIF converters but I didn't have any libs handy. Whatever...

 

9 colours because I'm not at all interested in the low rez modes and that's the most a can see a 320x2 sprite using resonably (with multi-sprite overlays, obviously).

 

It's all horribly non-user friendly, of course :D (currently all options must be set in source code, etc)

 

Struggling with this for the whole weekend now. Took me 2 days alone just to get that thing to display something else than a black screen :lol:

 

The 7800 made me cry... ;)

 

Mostly. There seems to be a small flaw when a DL crosses a 4K boundary or something like that.  

 

No idea. I did find that when I was relocating pointers/data that sometimes things would just stop working. So I'd go back, get it working again, relocate all over and it'd be fine. Seems very touchy at times (likely page boundry issues, I'm sure)...

Link to comment
Share on other sites

You did say this was tile-based?

 

Well, the 7800 has two bitmap modes - sprite and character. Really, to my mind "character" is just old school for "tile". The difference is pretty trivial. (tile based systems generally include (bios) routines for handling large maps (etc) obviously older systems have none of that but there's no reason you couldn't add that kind of high level handling yourself, if needed.)

 

My scrollers are in character/tile mode.

 

The fun part comes in integrating the relatively regimented characters/tiles with the much more free moving sprites...

 

Hmm... Now someone's gotta prove that Super Mario Bros. could be done on the 7800!

 

I don't see any reason why not.

Link to comment
Share on other sites

Has this been tested on real hardware? If this is tile based, I'm not sure how there's enough time to draw the overlapping layers. I'm just judging by the DMA timing section in the 7800 Software Guide. There's enough time to draw one "indirect mode" layer, but it seems two overlapping layers on the same scanline would be way over budget. It looks impressive though, hopefully I'm just missing something.

Link to comment
Share on other sites

Has this been tested on real hardware?  If this is tile based, I'm not sure how there's enough time to draw the overlapping layers.  I'm just judging by the DMA timing section in the 7800 Software Guide.  There's enough time to draw one "indirect mode" layer, but it seems two overlapping layers on the same scanline would be way over budget.  It looks impressive though, hopefully I'm just missing something.

I'll second that. The following is a rough guide: 2 cycles / RAM byte, 3 cycles / ROM byte, approx 400 cycles available per line.

 

Note to all budding 7800 homebrewers - MESS isn't perfect, so I suspect those of us with CC2s will be doing a lot of beta testing.

Link to comment
Share on other sites

Well that sucks! No wonder nobody's done anything with this hunk of junk :P

 

(And wtf is up with 4K? Such a huge step back from the 5200! Huh?)

 

Did you actually try it, BJK7382? Did it work? (BTW - You just needed to rename the file)

 

I'll second that. The following is a rough guide: 2 cycles / RAM byte, 3 cycles / ROM byte, approx 400 cycles available per line.  

 

         DMA startup            5-9      cycles

 

         Header (4 byte)        8        cycles

         Header (5 byte)        12       cycles

 

         Graphics Reads:

         Direct                 3        cycles

         Indirect/1 byte        6        cycles

         Indirect/2 byte        9        cycles

 

         Character Map access   3        cycles

 

         Shutdown Times:

         Last line of zone      10-13    cycles

         Other lines of zone    4 - 7    cycles

 

 

Can somebody break this down for me?

 

My DLL is in RAM. My Display List is in RAM. My list of character offsets is in RAM. My character bitmaps are in ROM.

 

How many cycles *per character*? (I'll just assume 25 cycles of overhead)

 

I'm currently writing 24 characters per line, 8 times for a total of 128 characters (8 headers). The above information gives me somewhere between 256 and 1152 cycles..

 

Would it helped if I used 2-byte characters? If so, how since writing/not writing to character Character Width doesn't seem to make any difference.

 

What is mean't by Direct, Indirect/1 byte, Indirect/2 byte? Sprite vs character vs 2 byte character? Plus 3 cycles for character map access - I assume per character?

 

So character is 3 times slower than sprite?

 

FWIW when I original did the overlay, I had smaller character lists with more headers and MESS *did* exhibit problems displaying items later in the lists.

Link to comment
Share on other sites

Did you actually try it, BJK7382? Did it work? (BTW - You just needed to rename the file)

 

Actually, you need to remove the A78 header info as well as renaming it.

 

Mitch

 

And that requires a hex editor, right? I am not sure what to do there, so I am thankful there are people around here to do it for me :D

 

And the demo works great on the cc2. I changed the speed around and watched it for a while just imagining all the great games that would look good on it 8)

Link to comment
Share on other sites

And the demo works great on the cc2. I changed the speed around and watched it for a while just imagining all the great games that would look good on it

 

Really? So it worked? Awesome!

 

And here you guys had me convinced I'd wasted the week-end...

 

Just to doublecheck, this is a screenshot:

 

>

 

If there's problems, they would be a the top and bottom, the red floor and ceiling....

Link to comment
Share on other sites

Well that sucks! No wonder nobody's done anything with this hunk of junk  :P  

 

(And wtf is up with 4K? Such a huge step back from the 5200! Huh?)

You noticed, huh? And SRAM has always been more expensive than DRAM.

 

Except the 7800 had the full address bus and other signals in the cartridge slot, making it easy to add external RAM for the games that needed it. The 5200 didn't, either to the cartridge or to the expansion port (remember that?) in the back of the 5200.

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...