Jump to content
IGNORED

Spire of the Ancients (WIP)


SmittyB

Recommended Posts

I guess the quickest way about this would be to get you those DL memory addresses as constants. To that end, you can drop in the attached replacement zonememory.asm.

zonememory.asm

The palette info is in the upper 3 bits of the 3rd byte in the object's DL entry, and the lower 5 bits are the object width, so we need to do a bit of math when changing the palette to preserve the width. Here's an example of changing the first object in the first zone to palette 7...

 const PC7 = (7<<5)
 dim Z0=ZONE0ADDRESS
 Z0[3]=Z0[3] & %00011111 | PC7

For the second object you'd use Z0[8], and another +5 for further objects. For the second zone, you'd use something like "dim Z1=ZONE1ADDRESS".

Hopefully that helps. It's a bit complicated, but traversing DL entries generally is.

Link to comment
Share on other sites

Here's an emergency build that runs a lot better for my 16% faster NTSC friends.

 

I had a revelation that involved shouting "What the **** are you doing?" loudly to myself. I've kept the floor basic so that after waiting to swap the background colours I can leave the rest of the screen time to do useful things but I noticed that I was changing the background colour and then waiting for the rest of the screen.

I've also fixed the HUD so that now it's all controlled by a single character map that I can modify on the fly and the only things that are newly plotted each frame are enemies, objects, and the attack animation. I'm still copying to the wall and compass maps each frame though so I'll need to add a flag to say when to bother as most of the time they'll stay the same between frames.

 

As a bonus I've dug out some mockups. One, an RPG I was planning for the C64, and the other my copying it for the 7800 as they both have 2*1 sized pixels (though the C64 has tighter palette restrictions). I used the 7800 mockup as the basis for my first practices with 7800basic.

If anyone wants to pilfer any part of it feel free.

game.bas.bin

game.bas.a78

post-27819-0-93739400-1478556525_thumb.png

post-27819-0-01669300-1478557538_thumb.png

  • Like 7
Link to comment
Share on other sites

 

As a bonus I've dug out some mockups. One, an RPG I was planning for the C64, and the other my copying it for the 7800 as they both have 2*1 sized pixels (though the C64 has tighter palette restrictions). I used the 7800 mockup as the basis for my first practices with 7800basic.

If anyone wants to pilfer any part of it feel free.

 

Damn that looks slick!

Edited by DracIsBack
Link to comment
Share on other sites

  • 3 weeks later...

Just a quick screenshot update. I've redone the way I'm handling the background colours so I can have gradients with up to 128 colour changes and processing the next frame starts whenever the last colour change is set.

There slime graphics have been redrawn and now they fight back.

I've also got a way to quickly build extra levels thanks to tiled so next steps are to add more content then work on optimising. At the moment it only works 100% in prosystem because it's more lenient with the timings but I'll worry about speed later.

  • Like 6
Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...
  • 3 weeks later...

I've now got the inventory system mostly working. The way it works is that once you've picked up an item/weapon/ability it stays available to you. You can then use the reset and select buttons to cycle through the actions for each button.

At the moment I've implemented 2 weapons, a run action, and a healing spell that recharges HP at the cost of MP.

 

I'm redoing doors so that they're objects instead of tiles. The reason being is they required a lot of exceptions in logic to work as tiles.

 

I've also used the 'adjustVisible' function to start drawing after the HUD to save processing time but it means I'm setting the background and graphics modes at the end of the frame and despite having a drawWait, both MAME and Prosystem have unpleasant flicker below the drawable screen as well as a flickering line under the HUD where the change happens.

 

It's still a flickering mess on NTSC. I don't know how I can make it run smoothly under NTSC without reducing the visible screen size and or cutting out larger graphics but I'll worry about that later.

  • Like 3
Link to comment
Share on other sites

Well here's the latest build. I've made the doors visible again for a bit of variety but they don't look correct when viewed from the side. Other than that and my battle with the varying levels of flicker I don't think there are any bugs as such.

 

As always best viewed in PAL for a more stable picture and expected colours.

game.bas.a78

game.bas.bin

post-27819-0-63518100-1486329203_thumb.png

  • Like 3
Link to comment
Share on other sites

  • 3 weeks later...

Another quick update.

 

I've reconjiggered the doors so that they're now objects in the map rather than tiles which makes things a bit more straightforward for the logic and drawing. Also it means I can assign a destination and direction for the player as part of the object rather than keeping track of a list of exits on each map.

 

Failure is now an option and when your health reaches zero everything (except my pesky gradient backgrounds) fades to black and the game reboots. I'm at a point were I need to draw more graphics for the things I want to implement and I've attached an example of the quick and dirty programmer art game over screen that will be my placeholder when I get around to adding it in.

 

Speaking of things to add I've put in the foundations of the many puzzles I hope to build in the form of a pressure plate that adds a wall to the map when you stand on it. I've been mapping out puzzle ideas and thinking what I need to implement to realise them. Circular saws that follow the walls seem like a good idea.

 

I've been thinking about what I could potentially streamline for the sake of having the PAL version run more smoothly and have the NTSC version... run. I think it will be a case of rewriting a few of the many loops I have in assembly. When I was writing the background code I found that I could streamline it by making better use of the X and Y registers. I don't want to get so far and then call it a PAL only release so if I have to cut things out or make the visible screen smaller I will but I'll see how it goes first.

post-27819-0-60297100-1487627760_thumb.png

post-27819-0-11187700-1487627765_thumb.png

post-27819-0-02706300-1487628235_thumb.png

  • Like 4
Link to comment
Share on other sites

Dungeon Master 7800.

 

Or maybe a 7800 version of Phantasy Star...

Both big influences for me and my inspiration for making this over a Zelda clone. Sadly I don't have the 4Mb of cartridge space they used for their smooth dungeon animations. Still, I hope it puts the NES versions of Wizardry to shame.

  • Like 2
Link to comment
Share on other sites

Speaking of save feature, I'm interested in adding HSC support to record the stats and item list, and a possible password system but I'm not sure how to implement the password side of things and I don't think my emulator setup wouldn't let me test the HSC.

 

I'm really pleased that you all seem to like it so far. I don't think I'll quite reach the complexity and level of interaction of Dungeon Master but I think the real-time enemies and puzzle elements will keep it fresh and elevate it above your average turn-based Wizardry clone and hopefully above the standard of game that the 7800 can be thought capable of.

  • Like 1
Link to comment
Share on other sites

It's an awesome achievement that can be built upon. Especially since nothing like this has been attempted on the 7800, as far as I'm aware.

Hell, I'd be equally impressed if all it was was a tech demo upon release.

Edited by Inky
  • Like 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...