Jump to content
IGNORED

The Adventures of Eclipse - Side-Scrolling Plaformer for the 7800


Recommended Posts

Those of you who have been following me for a while know I tend to make games featuring a certain kind of creature.  A creature known for:

 

-A snake-like shape

-Nasty sharp teeth
-Long periods of sleep punctuated by short spurts of aggressive wakefulness
-An obsession with shiny objects

 

So, predictably, I've decided to work on a game starring a swashbuckling ferret!  

 

image.thumb.png.018e0f6667889df3f62ae6f42378cda4.png

 

Eclipse is a fortune hunter roaming the land for treasure, and possibly saving the world from nefarious forces...  

 

In a console generation almost defined by side-scrolling plaformers, it's odd that I can count the number of the ones that exist on the 7800 on one hand (even including the homebrew scene's excellent work).  My codebase can support a fairly sophisticated one, I think, so I'm taking a stab at it while I fine-tune "Harpy's Curse." 

 

The "engine" is building directly off of the shoulders of "Harpy's Curse" with some added features.  Level sections can either be horizontal or vertical - Vertical scrolling shifts a few tiles at a time when the player is above or below a certain margin.  Not quite as smooth as the horizontal scrolling, but this type of scrolling was good enough for Super Mario Bros. 2, and if I'm including both horizontal and vertical scrolling sections, this should mean I can switch between the two without having two entirely separate systems.

 

Vertical scrolling footage here:

 

https://youtu.be/w6Pz5ySjkq4

 

 

I need to do some adjustments on speed and the scrolling margins to make things "feel right," but the basics are there.  The way I implemented things, the scrolling thinks it's "horizontal" for most of it, I just draw the tiles such that it's rotated 90 degrees.  If anything it's a little simpler, since I only scroll a whole tile at a time in vertical mode.  While such scrolling could be fancier, I don't think it'd be worth the extra ROM and complexity given the game's scope - I have other fish to fry on the project, and this already opens up a ton of new gameplay opportunities.

 

Now I need to incorporate the items/enemies system from the horizontal mode.  Since things like the collision detection only really care about the tiles onscreen, the main thing I need to change is having stuff appear and disappear at the top and bottom of the screen instead of left and right (basically switching the x and y coordinate checks I use from the existing code).

 

I usually try to have every project I do require I learn at least one new thing.  Aside from some type of vertical scrolling, I'm looking at the bankset system to effectively double (or more) my graphical space.  I'm also looking into types of data compression like lz4 (or maybe RLE, although with the way I make levels that can often make data *bigger*) for the levels and music.  Harpy's Curse used its own compression system, but the potential extra tile types mean the levels in this game will be "heavier," so I'll see how much space I really have to play with in a 128kRAMx2 layout.

 

I'll try and post more as progress happens, and probably pose questions and observations about the new 7800Basic features I'm taking advantage of.

Edited by Revontuli
  • Like 13
  • Haha 2
2 hours ago, Revontuli said:

If anything it's a little simpler, since I only scroll a whole tile at a time in vertical mode.

This is a thing I have been thinking about a lot in Wizzy lately. On the Lynx I can easily scroll one pixel at a time. But for several reasons I plan to let my characters stay in place on the screen and move the background in tile increments to vertical directions. And half tile increments horizontally. in this way the focus will be on the character - not the scrolling.

 

If the character would move smoothly to places between the tile grid then the movement would be jumpy as you would need to correct the position against the tiles.

 

Just my thoughts about scrolling...

There are a lot of technical reasons to scroll stuff certain ways on the 7800 - I'm legitmately impressed with ReZolve as it's very difficult to get full-screen multi-directional scrolling on the 7800 and still have space/time for anything else.  Of course, it's Bob, so if anyone can do it he can.  

 

Vertical/multi-directional scrolling on the 7800 can be tricky, since it's easy to double your draw calls if tile graphics cross screen zones.  You can shift the zones along with the tiles, but that of course can make a lot of other things complicated (like drawing stuff that *doesn't* scroll, like the UI). The 7800 can draw a ton of graphics, but not *quite* enough to fill a full screen (+ tile margin needed to scroll + additional sprites like the player and enemies) without some kind of compression or compromise.  You also need to store all of this stuff in RAM, one way or another, so opting for the extra 16k RAM bank can be very handy.

 

As far as scrolling design, I found a nifty article that outlines many different ways games tackle certain scrolling techniques with regards to the "camera" and its relationship to the player:

https://www.gamedeveloper.com/design/scroll-back-the-theory-and-practice-of-cameras-in-side-scrollers

 

 

  • Like 6
  • Thanks 2
7 hours ago, Revontuli said:

As far as scrolling design, I found a nifty article that outlines many different ways games tackle certain scrolling techniques with regards to the "camera" and its relationship to the player:

https://www.gamedeveloper.com/design/scroll-back-the-theory-and-practice-of-cameras-in-side-scrollers

 

Really good article. I need to study it. For Wizzy I want to let the player see what is ahead. But when Wizzy changes direction this "ahead" desire changes where it is.

  • Like 1
  • 6 months later...

As I try and finish up Harpy's Curse, I'm thinking about jumping back and playing with this project.

 

While I got bankset bankswitching working, I might move away from it for this particular project, as it might be better served with simply having more ROM banks to store content. 

 

If I can get graphics into *RAM*, however, that might be incredibly useful with how I'm already doing things.  The scrolling background tiles are zone-aligned, so I think it can work and be *very* useful (I could store quite a few backgrounds pretty much anywhere in the ROM banks, and load in large number of different level themes, for instance).  I know folks have been playing with this sort of thing, but I can't find the most recent discussions - perhaps a something to do after PRGE arrives.

 

I'm also looking at 7800Basics new RMT music tracker and ability to load in external data files.  I want to add more sophisitication to level format I made for Harpy's Curse, but that will almost certainly include compression and other elements.

  • Like 5
  • 2 weeks later...

I'll see how this develops - although I'm keeping my development environment locked (unless upgrades are necessary) until after Harpy's Curse debuts at PRGE.  Never change you compiler version unless you *absolutely* have to, especially if you're weeks before release.  It's a bit of a shame, since there have been some great additions to 7800Basic recently :)

 

On 9/27/2023 at 3:51 PM, SlidellMan said:

Maybe I can help with the RMT part?

I'm taking a try at the RMT interface, and trying a few experiments, myself.  That said, I'll almost certainly need some RMT help soon, one way or another, and if not on this project, likely on of the others I'm prototyping...

  • Like 1

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...