Jump to content
IGNORED

"Harpy's Curse" - A MetroidVania for the 7800 (Beta version now available!)


Revontuli

Recommended Posts

55 minutes ago, playsoft said:

I checked ARTI in the A7800 debugger and it looks like it is doing POKEY discovery which involves POKEY reads. I'd try getting rid of that, just do a simple POKEY initialisation assuming it is present at $450 without any POKEY reads. No guarantees though.

@Muddyfunster if you're using a recent 7800basic to do the compile for ARTI, just change "set pokeysupport on" to "set pokeysupport $450". This will switch to the simple pokey init getting assembled, instead of the autodetect one.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, playsoft said:

Yes, unfortunately there is an unrealistic expectation that all programmers need to do is apply a simple "fix" to get POKEY audio on Concerto. None of us completely understand the Concerto firmware issues, so working around them is often a long process of trial and error.

 

However I did want to share what has worked for me, in case it is useful for others. When I have ram@4000, I am able to get POKEY audio from Concerto by not setting pokey@450 in the header and initialising POKEY by simply setting all registers to 0 and then SKCTL to 3 - without doing any POKEY reads.

It is truly appreciated.  Thank you.  Please continue to share.  Much like yourself, my intention was also to inform others in knowing my experience, not exacerbate the situation.

 

1 hour ago, playsoft said:

I checked ARTI in the A7800 debugger and it looks like it is doing POKEY discovery which involves POKEY reads. I'd try getting rid of that, just do a simple POKEY initialisation assuming it is present at $450 without any POKEY reads. No guarantees though.

Excellent, and thank you again!

  

22 minutes ago, RevEng said:

@Muddyfunster if you're using a recent 7800basic to do the compile for ARTI, just change "set pokeysupport on" to "set pokeysupport $450". This will switch to the simple pokey init getting assembled, instead of the autodetect one.

Perfect and awesome!   Fingers crossed, but this indeed accompanied with the aforementioned absence of pokey@450 in the header should cover the necessary ground for Concerto.  Thank you as well!  

 

Here's to hoping none of this will be necessary sooner than later for Concerto.

  • Like 1
Link to comment
Share on other sites

Took a "break" from POKEY testing and level design to update and test how saving data might work - Although I'll probably hold off on making this public until I get other stuff working.  Allowing saves through peripherals basically guarantees the game won't work on most emulators, and makes debugging much, much more complicated, and will only work for the small percentage of folks who have a compatible peripheral.  JS7800 might work with it, but I think the save game slots will be shared by everyone with the link.  There's a reason I put a password system in place as a backup :)   

 

HarpysCurseSaveGame.png.f68418ac8a0e97e034c93d75b848a54c.png

 

That said, I had to do some updating but it seems to work on my SaveKey and Dragonfly (now to test on the AtariVox and Dragonfly, the Concerto and SaveKey, AtariVox and Dragonfly, etc. etc. - you might see why I've held off on this, it makes POKEY testing on peripherals easy by comparison :P ) I hope I can at least get it properly working on the published cartridge version.

 

The method to access the 2nd quest is current being tested, this is all feeding back to testing the password system and save games.  I'll probably try to upload a final "beta" build for the new year - It's a full game as it stands, with bosses, intro, musical score, ending - the whole deal.  The proper "2nd Quest" I'm working on is really for those who have already beaten the game and think it's too easy, so I want to spend some time to make sure I do the quest justice.  It's also for those who think I should do more with the little secret I put in!

  • Like 3
Link to comment
Share on other sites

I tried messing with the 7800header - if it's "fixed" on the Concerto w/ POKEY, does it typically "break" for, say, the DragonFly? Removing the @450 tag removes ability for the DF to play the POKEY soundtrack, which makes sense but, again, I've no way of knowing if it fixes it for the Concerto at this time, at least on my end, and I want to keep the number of iffy ROMs floating around to a minimum :)

 

I can try posting the fix - or anyone who got it working on their Concerto has my blessing to posting a ROM of the game with the fixed header in this thread.  

Link to comment
Share on other sites

5 hours ago, Revontuli said:

I tried messing with the 7800header - if it's "fixed" on the Concerto w/ POKEY, does it typically "break" for, say, the DragonFly? Removing the @450 tag removes ability for the DF to play the POKEY soundtrack, which makes sense but, again, I've no way of knowing if it fixes it for the Concerto at this time, at least on my end, and I want to keep the number of iffy ROMs floating around to a minimum :)

 

I can try posting the fix - or anyone who got it working on their Concerto has my blessing to posting a ROM of the game with the fixed header in this thread.  

Yes, it will have to be a special Concerto build unfortunately, as DF needs the pokey@450 bit set.

 

For your Concerto build you will need to build with "set pokeysupport $450" as @RevEng suggested, then use 7800header to unset pokey@450 from the header data.

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

8 hours ago, playsoft said:

For your Concerto build you will need to build with "set pokeysupport $450" as @RevEng suggested, then use 7800header to unset pokey@450 from the header data.

Thank you (and thank you for the build) - I figured this was the process, but currently have no way of testing it!  I uploaded the Concerto/Pokey build to the original post.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

11 minutes ago, Revontuli said:

Thank you (and thank you for the build) - I figured this was the process, but currently have no way of testing it!  I uploaded the Concerto/Pokey build to the original post.

Tested and works perfectly under Concerto as does the version I modified the header for earlier, but neglected to post. 

Sorry about that, I was side-tracked and forgot to return to the thread to post accordingly.

 

Having this and the newly updated demo build of Dragon's Havoc is a real treat.  I'm particularly not very disciplined with the firing technique of the latter, so the opportunity to see some of the later levels is awesome.  Thank you!

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

On 4/24/2022 at 2:22 AM, Revontuli said:

Y'all called it - I took a page from Castlevania's various password systems, although those got surprisingly complicated.  The icons grids from Bloodlines and 3 are a nice way to encode a bunch of booleans.  I didn't want to program an alphabetical input system, and I doubt anyone wanted to use one :)

 

Finalizing the level format - although in terms of appearance it's still all largely temp, test, and older sprite art - I'm getting to the actual "art" phase soon.  The *types* of blocks are in, though, so I can actually think about what they'll look like.  I'm looking forward to toying with how spikes, water, columns, and statues will look in various parts of the maze...

 

HarpysCurseStatues.thumb.png.51ef872a33b20d37ffaa912ae6ed72fe.png

 

 

 

Current compiler output:


7800basic compilation complete.
User-defined 7800.asm found in current directory
   stack allowance: 6 nested subroutines.
   the canary is situated at: $1ea
   6402 bytes of ROM space left in the main area of bank 1. <- (Main game logic)
   12977 bytes of ROM space left in the main area of bank 2. <- (Level data)
   6450 bytes of ROM space left in the main area of bank 3. <- (Normal game drawing)
             4096 bytes of ROM space left in DMA hole 0.
   6287 bytes of ROM space left in the main area of bank 4. <- (Boss drawing)
             4096 bytes of ROM space left in DMA hole 0.
   13861 bytes of ROM space left in the main area of bank 5. <- (More level data)
   16383 bytes of ROM space left in the main area of bank 6. <-(Tentatively reserved for sound)
   2393 bytes of ROM space left in the main area of bank 7. <-(Menus and other Text screens)
             4096 bytes of ROM space left in DMA hole 0.
   7623 bytes of ROM space left in the main area of bank 8. <-(Shared bank, .asm modules, current sfx, player and level background graphics)
   custom pokeysound assembly:  743  bytes
     $18e0 to $1fff used as zone memory, allowing 14 display objects per zone.
     513 bytes left in the 7800basic reserved area.

 

A busy week trying to finalize the rest of the game systems.  Adding a feature is an O(n^2) problem, as you have to reconcile any new feature with every one you've added previously, trying to fix any bugs you've discovered or introduced...

 

Today was coding more enemy behaviors - I think that those will be the last major CPU processes in the main game loop - if it runs OK with all this in, I'll feel much better playing with the data.  I've been having fun with it, though - I'm able to combine different movement patterns with other qualities (does the enemy shoot?  is it affected by gravity?) so that they can be a variety of types of enemy behavior for the player to encounter.  

 

The maze will have a few things to look for - while I do have explicit keys and locks, I also have a few powerups. I'm not making the powerups required, for the most part, but they'll be *very* nice to have.  Collecting one of them will give a screen telling you what it does and how to use it - Of course, part of me was tempted to make this game as cryptic as Legacy of the Wizard or Goonies 2, but I think folks expect a little more fairness (and explanation) nowadays. 

 

I've roughly budgeted how big the game will be in terms of levels - My next step will be adding in a "blank" data to make sure it all fits and loads in ROM.  I mentioned my estimate above - I think between 2 banks I can get 64 "sections" - each section being a horizontal scrolling area 8 screens long - so 512 screens total, each screen being 10x10 tiles.  I could probably make even more, but I want to see how much space the other banks use once I get a better handle on how much more space other systems (particularly sound) will need.  And I should see how big this much level data feels as I start planning out where to place powerups, keys, and bosses.

 

The password system is working, although I'm not encrypting it yet, as it's currently a nice debug system to cheat progress at this point.  I've a plan to use SaveKey/AtariVox as well, which will hopefully be straightforward since I'm not using any of the data to save a high score on this game.  It still requires testing on physical hardware, which I have, but iterating and testing on such hardware takes that much longer, so I've been putting it off...

 

...oddly, the first ROM bank I'm starting to feel the "crunch" on is the one I allocated for menus.  Text and proper menu/UI behavior takes up a ton of space!  I have the basics in, except for the Save/Load screen.  I'm pretty sure I'll be able to fit the menus in on a functional level, my main worry is how much will be left over for fun stuff like the ending, pretty title graphics, etc. 

 

Sounds and saves notwithstanding, I'm actually shifting gears into content.  As mentioned above, I'm starting level design proper (not just formations to test stuff), as well as starting to doodle some sprites and pixel art again.  It's tricky, though - you an *finish* a feature, but you never complete art and design, you can only to get to a point where you can say "eh, good enough."

 

I may ask about this is a more focused post, but while performance *seems* okay on both BupSystem and the Concerto, A7800 sometimes gives a graphical "stutter" - It doesn't *seem* to be related to how busy the game is (i.e. performance as such, it happens at intervals unrelated to, say, how many enemies are on the screen), and it might be something similar to what I ran into with Dragon's Havoc, where a slight mismatch in game and display framerates "catches up" at regular intervals.  As I said, it still seems to run OK on the Concerto, but I'll be testing more on A7800 (and the Dragonfly, once I get the power supply figured out) as I try my hand on including POKEY sound.  
 

ICT3's system uses 8 5 bit characters. Origonally it was supposed to be words but since I didn't know how to use the extra 6 characters I used stage graphics for the characters.

Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...

Just a quick little update to say I'm still working on Harpy's Curse.  I was (and am) a little sidetracked by other things, but I've got my bitmap-based level open, taunting me.

I'm also aiming to fix a few bugs and "problem areas" that can squeeze the player through walls.

One little feature I added was a quick "hey, you need to attack while in the air" instruction that appears when you start the game, since I've seen a few streams that took a while to get that (or didn't get it at all):  

 

HarpysCurseInstructions.thumb.png.183ef58b5f7d4f2f367496b73ee966e9.png

 

I've been going on talking about a "second quest" and I'm still working through some design philosophies that I'd like to apply on how it will piece together.  It's meant to be more challenging - here's a comparison of what the opening section looks like in the first and second quest:

 

HarpysCurseOpeningSections.png.8f6bd24f7bf32cd5beef9e13608698f8.png

 

White pixels are blocks, cyan is water, green are pillars, blue are statues.  You might be able to guess what the red and magenta pixels signify...

 

The keys were largely option in the first quest (although handy for some shortcuts).  They'll be much more necessary in the second quest.  That being said, I'm still trying to keep the map fairly "open," just more challenging and a little harder to speedrun...

 

Thanks to everyone who has played so far, I'll try and get an proper ROM update posted soon! 

  • Like 6
Link to comment
Share on other sites

  • 2 months later...

I just added a beta ROM to test the saving capabilities here and in the original post.  You'll need an SD Cart + SaveKey or AtariVox or other compatible save system (or if you're a hotshot on the A7800 you can probably get something working).  I wanted to have this and the 2nd quest in one update, but deadlines are coming and I want to make sure the saving system works as well as it can.  Testers would be greatly appreciated!

 

I'm also aiming to get the 2nd quest update ASAP (and I *think* your save file and passwords should still be compatible for future ROMs)...

 

HarpysCurse_8_18_2023.bas.a78

HarpysCurse_8_18_2023.bas.bin

  • Like 4
Link to comment
Share on other sites

5 hours ago, Revontuli said:

I just added a beta ROM to test the saving capabilities here and in the original post.  You'll need an SD Cart + SaveKey or AtariVox or other compatible save system (or if you're a hotshot on the A7800 you can probably get something working).  I wanted to have this and the 2nd quest in one update, but deadlines are coming and I want to make sure the saving system works as well as it can.  Testers would be greatly appreciated!

 

I'm also aiming to get the 2nd quest update ASAP (and I *think* your save file and passwords should still be compatible for future ROMs)...

 

HarpysCurse_8_18_2023.bas.a78 128.13 kB · 1 download

HarpysCurse_8_18_2023.bas.bin 128 kB · 0 downloads

Please see this post in the other thread:

:)

 

  • Thanks 2
Link to comment
Share on other sites

On 8/19/2023 at 1:34 AM, Revontuli said:

I just added a beta ROM to test the saving capabilities here and in the original post.  You'll need an SD Cart + SaveKey or AtariVox or other compatible save system (or if you're a hotshot on the A7800 you can probably get something working).  I wanted to have this and the 2nd quest in one update, but deadlines are coming and I want to make sure the saving system works as well as it can.  Testers would be greatly appreciated!

 

I'm also aiming to get the 2nd quest update ASAP (and I *think* your save file and passwords should still be compatible for future ROMs)...

 

HarpysCurse_8_18_2023.bas.a78 128.13 kB · 8 downloads

HarpysCurse_8_18_2023.bas.bin 128 kB · 3 downloads

Do you know what would need to be done in A7800 to make it work?

Link to comment
Share on other sites

  • 2 weeks later...

I'm aiming to have a full beta for Harpy's Curse posted for the weekend - To that end: anyone here 1) beat the game and 2) find an odd easter egg requiring all four keys?  This coming build might have something new for you - especially if you think you've explored the whole maze :)

 

Also, anyone try the save features in the last build posted?  How does that seem to be working out, if so?  Anyone make extensive use of the passwords?

 

I upgraded my version of 7800Basic, so I *think* I'll be able to post ROMs with full v3/v4 header info, and POKEY-compatible audio working on appropriate SD carts.  Lots of testing to do, still...

 

(cross-posting from main 7800 forum)

  • Like 3
Link to comment
Share on other sites

I'm giving this a try on the 7800GD - any advice for getting the ROM working with POKEY support?  I've got POKEY music working on BupSystem, using $450, and the headers *look* ok...but I'm not getting POKEY audio via the 7800GD cart.  I haven't tried this latest build with the Dragonfly yet (I need to wrangle some cables before switching back to the DF to test it, too).

image.thumb.png.5179cda68b9ee98bc7e518a443fd1299.png

 

Regardless, I'm close to posting a new beta (hopefully in a day or so). 

 

I've been playing through the new quest and trying to tune the difficulty - as I've said before, it's for those who have beaten the core game, and want a challenge (one can speedrun the main quest in a crazy amount of time, for instance).  

 

The second quest a bit less mercy - I'm hoping to get the feeling of finding a power up go from "nice to have" in the main quest to "holy cow, now maybe I can survive that new corridor I found!"  If you know where everything is, you might be complete the 2nd quest relatively quickly, but *getting* to that point of mastery should take some time.  I'll have to see what folks think...watch this space!!

  • Like 1
Link to comment
Share on other sites

Pokey seems fine on a7800 (and JS7800, for that matter) - The main test, of course, is to see if it works on a burned ROM on a cart, but the 7800GD would be nice as a semi-final platform to test on  :)

 

A friend played through the game - and in doing so found a few nasty bugs I need to fix (although she beat the whole thing!) - I'll see if I can get something uploaded Saturday.

  • Like 1
Link to comment
Share on other sites

Here it is!  Latest version of Harpy's Curse!

 

This should be feature complete, with a few more secrets (again, if you found an area requiring four keys, try going back that way in this build... :))

 

These ROMs support SaveKey/AtariVox (A7800 supports it, and hardware if you're playing the ROM using an SD Cart):

HarpysCurse_9_2_2023_Beta7_SaveKey.bas.a78

HarpysCurse_9_2_2023_Beta7_SaveKey.bas.bin

 

These *don't* have the save feature, but that makes them a little more emulator-friendly (they'll run fine on BupSystem, for instance):

HarpysCurse_9_2_2023_Beta7.bas.a78

HarpysCurse_9_2_2023_Beta7.bas.bin

 

I did a ton of last minute bug fixes, so if anyone finds anything glitchy or buggy, please let me know!

 

image.thumb.png.76c6a1a4b562eec9867a408788c363b2.png 

POKEY audio doesn't seem to work on 7800GD currently - I'll try and figure that out.  Haven't tested on Dragonfly or POKEYfied Concerto.

 

Edited by Revontuli
  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...

Any ideas from anyone on how to detect an unformatted HSC in the A7800 emulator?  Currently an unused HSC gives garbage data (or all set to 255, I think?)  Once I *do* start saving, it's all fine, but it's very awkward for a first time player.

 

I hope this isn't the case with the SaveKey/AtariVox - although I haven't run into this particular problem with them - I think they default to 0.  

 

How do other folks handle this sort of thing with a "first time" use of the HSC (and, for that matter, SaveKey/AtariVox)?

Link to comment
Share on other sites

AtatiVox / SaveKey also defaults to $FF, so the first thing I would do is test for uninitialized bytes, and then initialize the block if I found any. 

 

Edit: I think 7800basic is supposed to auto-magically detect if a save device is uninitiated, and then initialize it, but I had some issues with that when I tried, so I created my own routine. 

  • Like 1
  • Thanks 1
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...