Jump to content
IGNORED

Penult RPG (Atari 2600)


Karl G

Recommended Posts

Just two quick things:  With Demo5,  I can't go into Acadia... even if starting a saved game and I start off at "Home", as soon as I exit the town, I cannot get back in.

 

Secondly, I was wondering if you eventually will have both "New Game" and "Continue" options available if you have a game saved instead of the just "Continue" option? I know I can go into Stella and erase the EEPROM if I wanted to start a fresh character, but wondered if that was intended to be incorporated into the game. Sorry, I don't know Ultima handled that.

 

Okay, I do have a third... really like the way you reworked the new game menus! Excellent!

  • Thanks 1
Link to comment
Share on other sites

14 hours ago, MissCommand said:

Just two quick things:  With Demo5,  I can't go into Acadia... even if starting a saved game and I start off at "Home", as soon as I exit the town, I cannot get back in.

Oops! I've uploaded Demo 6, which fixes that.  Thanks!

 

14 hours ago, MissCommand said:

Secondly, I was wondering if you eventually will have both "New Game" and "Continue" options available if you have a game saved instead of the just "Continue" option?

 

I may well rework this as well to allow this. I will want to make sure there is very little chance that an existing game is accidentally wiped out, though.

 

I think I forgot to mention that I fixed clearing an existing game from within the game. Right now it's handled similarly to other AtariVOX / SaveKey games: in this case, if you hold the joystick up on poweron (or right as Stella starts), then you are given an option to start a new game. Probably I'll eventually do it via the start screen, but this should work in the meantime.

 

14 hours ago, MissCommand said:

Okay, I do have a third... really like the way you reworked the new game menus! Excellent!

 

Thanks! I'd also be interested to hear if you think the new "pull down to cancel in-game menus" works well (e.g. if you find yourself hitting it accidentally, or if you have any unexpected results).

Link to comment
Share on other sites

On 1/29/2020 at 10:27 AM, Karl G said:

Oops! I've uploaded Demo 6, which fixes that.  Thanks!

 

  Thanks!  But Demo6 doesn't recognize my saved game, so I didn't want to go any further into it (I'm working my way up to level 4 now).

 

  As far as pulling down to cancel menu's... to which menu's are you referring? (the menu's when fighting?)

Link to comment
Share on other sites

3 minutes ago, MissCommand said:

Thanks!  But Demo6 doesn't recognize my saved game, so I didn't want to go any further into it (I'm working my way up to level 4 now).

Nothing should have changed in that code. Just to be sure, since it's a different version, did you set the same AtariVOX or SaveKey option that you did for demo 4? 

 

Combat menus are one example, but also if you hit a button to bring up a menu outside or in a town, you can cancel it by pulling down now. 

Link to comment
Share on other sites

On 2/1/2020 at 10:51 PM, Karl G said:

Nothing should have changed in that code. Just to be sure, since it's a different version, did you set the same AtariVOX or SaveKey option that you did for demo 4? 

 

Combat menus are one example, but also if you hit a button to bring up a menu outside or in a town, you can cancel it by pulling down now. 

 

D'oh... that was it... ugh! :)  I played around with it last night and I like the pulling down to cancel a menu. My vote would be to keep that option (and it's faster than moving over to a "cancel" option).

 

I did find the spell you can learn! Cool.

  • Thanks 1
Link to comment
Share on other sites

I had been been stalled on dungeon code for quite a while. Part of it was deciding how I wanted to implement it. I hope nobody will be too disappointed if I don't do the first-person 3D-style dungeons found in the early Ultima games. Would it be possible to do something like that on the 2600? Absolutely. Would it be possible for me? Probably...but I want to try a different approach using the tiled approach.

 

My idea is a smaller tiled display, showing the tiles immediately surrounding you, while showing those that are one step away as fuzzy and indistinct (it will show an indistinct tile if there is something visible, or otherwise a blank square).

 

As before, I'm starting with actual Ultima 3 data files for testing before creating my own new content. Here is a very early screenshot without the visibility-limiting code added (still in progress).

 

penult_5.thumb.png.af3eedf79b25984cc3a08bb814a0a238.png

 

For what it's worth, due to the smaller size of the display, this kernel does not do any flicker, so there is only one display mode instead of two (accent color is always on).

  • Like 2
Link to comment
Share on other sites

I just wanted to post a video showing my progress with dungeons, showing movement and the limited visibility effect I mentioned above to give a better idea of what I'm going for here.

 

It looks like you need to hit the YouTube link to see it in 60fps so the text/stats look more normal.

 

 

 

  • Like 2
Link to comment
Share on other sites

On 2/6/2020 at 6:08 AM, Karl G said:

I had been been stalled on dungeon code for quite a while. Part of it was deciding how I wanted to implement it. I hope nobody will be too disappointed if I don't do the first-person 3D-style dungeons found in the early Ultima games.

I'm not a huge fan of tile based 3D dungeons, it can sometimes get confusing as to where you are, so I actually prefer the top down view you've implemented!

 

3 hours ago, Karl G said:

I just wanted to post a video showing my progress with dungeons, showing movement and the limited visibility effect I mentioned above to give a better idea of what I'm going for here.

Very interesting approach, it's like you can see for a little ways and things off in the distance are sort of in a fog where you know it's there but not what it is. It's like a 8-bit implementation of limited draw distance, very interesting! Looking forward to trying it out.

Also @Karl G, we'll be starting on our full playthrough of the Penult Demo this coming Wednesday (our next stream), and continuing each Wednesday until we've exhausted the Demo. ? Fun times ahead!

 

- James

  • Like 1
Link to comment
Share on other sites

On 2/7/2020 at 1:45 AM, Karl G said:

And here's a screenshot that includes the limited visibility code. You know that there is something in those squares, but don't know if it's a wall, door, stairway, or some object.

 

penult_7.thumb.png.c53c8164a677696b8e3e495ba044529f.png

I like this feature and the game is coming along nicely ? The inquisitive side of me can't help but wonder if you have added this feature for optimization or for effect? I know RTS games like Age of Empires ect used the same sort of masking for optimization to lower the rendered-on-screen count. This was then called the line-of-site feature around the players building and units ect. I know there is many on the NES like Die Hard that also used this for optimization as rooms the player hasn't entered are blacked out. Interested as to the reason you added this ?

Link to comment
Share on other sites

15 hours ago, ZeroPage Homebrew said:

I'm not a huge fan of tile based 3D dungeons, it can sometimes get confusing as to where you are, so I actually prefer the top down view you've implemented!

I agree, Zelda used the top down view for dungeons and it really helped with sense of direction. There is no mistaking if you came through the left door you simply can return via the left door ?

Link to comment
Share on other sites

59 minutes ago, TwentySixHundred said:

I like this feature and the game is coming along nicely ? The inquisitive side of me can't help but wonder if you have added this feature for optimization or for effect?

Thanks! It is definitely for effect. I have to know what the tile is in order to know whether to display the fuzzy effect, or nothing at all for those squares, So it takes more processor time than it would to simply. display them as is. Whenever I have a demo version that includes a sample dungeon, I look forward to feedback on how well it works for people in practice.

Link to comment
Share on other sites

16 minutes ago, Karl G said:

Thanks! It is definitely for effect. I have to know what the tile is in order to know whether to display the fuzzy effect, or nothing at all for those squares, So it takes more processor time than it would to simply. display them as is. Whenever I have a demo version that includes a sample dungeon, I look forward to feedback on how well it works for people in practice.

Ahh yes ok that clears it up, think i was getting confused as to exactly the technique used. Now i see clearly what is going on.

 

Some strange reason i was thinking along the lines of die hard on the NES but for the dungeons themselves. Wasn't sure if it worked the same as rendering, when in a dungeon or whatever the masked area is actually not processed at the time. That way it wouldn't need to read/fetch the data for that sub-area until in proximity (thus saving cycles). However it still displays the outer perimeter and building as a whole. Not sure if i'm explaining that right? although it makes sense in my head.

 

So i boxed out the masked rooms in red that i'm referring to.

Die-Hard-NES-3.thumb.jpg.18d590d2c031d16332ef62769cf30adb.jpg

You can see those rooms are not rendered until the player enters them. It would be interesting to know if they did this on the NES to save cycles or just to reuse sprites.

 

Anyway keep up the good work i'm definitely looking forward to a demo version to play around with the affect and see how it works ?

  • Like 1
Link to comment
Share on other sites

To give a little more detail, in one routine it loads all of the tiles in a 6x5 grid into memory, and in a separate routine, it obscures tiles that are a certain distance away, or removes ones not visible due to the line of sight being blocked. With the proper spell or item, the player will be able to occasionally see the whole 6x5 grid for the section of the level they are in regardless of intervening walls, and showing invisible tiles like traps and the like.

Link to comment
Share on other sites

4 minutes ago, Karl G said:

To give a little more detail, in one routine it loads all of the tiles in a 6x5 grid into memory, and in a separate routine, it obscures tiles that are a certain distance away, or removes ones not visible due to the line of sight being blocked. With the proper spell or item, the player will be able to occasionally see the whole 6x5 grid for the section of the level they are in regardless of intervening walls, and showing invisible tiles like traps and the like.

That's what my mind was looking for ? As i have no idea the inner workings of your display kernel and how you went about line-of-sight, it makes sense now. So it's basically along the same concept i was thinking about. I really like that feature and the way you have gone about it. It gives the player a feeling of what's behind the door without actually being able to see (unless using the spell of course). Much like someone carrying a torch through a dark dungeon. Im assuming there is a significant performance impact when seeing the full grid? Some smart coding ?

Link to comment
Share on other sites

1 minute ago, TwentySixHundred said:

Im assuming there is a significant performance impact when seeing the full grid?

No, the full grid is displayed every frame regardless, but it displays blanked or fuzzy tiles for certain squares normally. The only difference if the spell is showing everything is that those tiles never get changed or blanked out in memory prior to displaying. While doing the actual display, there's no processing time difference between displaying a blank or fuzzy tile vs a normal tile.

Link to comment
Share on other sites

22 minutes ago, Karl G said:

No, the full grid is displayed every frame regardless, but it displays blanked or fuzzy tiles for certain squares normally. The only difference if the spell is showing everything is that those tiles never get changed or blanked out in memory prior to displaying. While doing the actual display, there's no processing time difference between displaying a blank or fuzzy tile vs a normal tile.

I understand now, so the routine basically just tells the TIA to display an x amount of the outer-grid to output zero's else if spell used then output the full 6x5?

Edited by TwentySixHundred
Link to comment
Share on other sites

For the dungeons, I load a 30 byte chunk of memory with tile numbers (0-15) corresponding to what is in that portion of the dungeon level map relative to the hero's position. The display routine sets pointers to the associated tiles, and displays the tiles. If I don't do any processing beforehand, then all 30 of these tiles are shown. My processing changes some of the tiles stored in memory to either blank or fuzzy tiles depending on current visibility, so the display routine ends up displaying these instead. For each row, the display routine displays all 6 tiles in that row regardless, though some may be blanked out or obscured. A blank or fuzzy tile is just another graphic either way.  I actually have a blog entry that talks a bit about how I load and display maps, although I wrote it before I had implemented dungeon maps.

Link to comment
Share on other sites

This discussion made me realize that I could and probably should visually distinguish between blanked-out tiles and visible floor tiles, even if the latter would be very subtle. Here's a screenshot with that added in. The visible floor tiles are just a single dot, but that's enough to show that it's visible floor at least.

 

 

penult_9.png

Link to comment
Share on other sites

5 minutes ago, Karl G said:

For the dungeons, I load a 30 byte chunk of memory with tile numbers (0-15) corresponding to what is in that portion of the dungeon level map relative to the hero's position. The display routine sets pointers to the associated tiles, and displays the tiles. If I don't do any processing beforehand, then all 30 of these tiles are shown. My processing changes some of the tiles stored in memory to either blank or fuzzy tiles depending on current visibility, so the display routine ends up displaying these instead. For each row, the display routine displays all 6 tiles in that row regardless, though some may be blanked out or obscured. A blank or fuzzy tile is just another graphic either way.  I actually have a blog entry that talks a bit about how I load and display maps, although I wrote it before I had implemented dungeon maps.

 

2 minutes ago, Karl G said:

This discussion made me realize that I could and probably should visually distinguish between blanked-out tiles and visible floor tiles, even if the latter would be very subtle. Here's a screenshot with that added in. The visible floor tiles are just a single dot, but that's enough to show that it's visible floor at least.

 

 

penult_9.png

Ok so i think it makes sense now. If i have this right, you're using tiles much like the NES that are loaded into memory and even the blank areas are actual blank tiles. You have two processing routines before anything is displayed. First routine is the full 6x5 then the second swaps out the tiles for blank or fuzzy depending on the visible area of that 6x5 grid. Then the screen is displayed - wash - rinse and repeat. So depending on where the player is those tiles are swapped out or around using pointers?

 

I might have to take a good look into your blog, this sounds really interesting ?

  • Like 1
Link to comment
Share on other sites

We'll be featuring Penult LIVE on today's (Wednesday) ZeroPage Homebrew stream on Twitch at 11AM PT | 2PM ET | 7PM GMT! This will be Part 1 of our complete playthrough of the Demo version of Penult, Hope everyone can watch!

 

Twitch Stream: https://www.twitch.tv/zeropagehomebrew/

 

Games:
- Penult (2020 WIP Update) by Karl Garrison aka Karl G


(SET VIDEO TO 1080P60 FOR FULL QUALITY)

 

Edited by ZeroPage Homebrew
  • Like 2
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...