Jump to content

Spire of the Ancients (WIP)


Recommended Posts

The files as requested. The door leads to an area with a horrible red/green colour scheme so mind your eyes and the door back out doesn't go the right spot. To toggle the torches you have to pick up the sword and hit them because the toggle is based on the torches health.


I've also just managed to tweak things so that different creatures can see at different distances, also they can't look through walls now which is a little more important.


I'm going to start mapping out one the major areas which is a network of tunnels in 3 dimensions so a lot of jumping down pits and climbing up ladders will be required.



  • Like 4
Link to comment
Share on other sites

I haven't changed anything yet. It shows correctly in MAME and that's good enough for me unless the same issues exist on real hardware. If they do I can cut off the top of the main screen to give more time to the change in screen modes. I don't know how I would edit the code I posted to fix the issue assuming it is an issue on real hardware.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

I've been making a few improvements this month. I've rewritten the enemy AI so that they share a basic AI code and plug in their different behaviours from parameters as part of their object memory, therefore the only time I'll need to add more than some parameters for a new monster is if it's not a palette swap of an existing monster or if it needs a more specialised AI. As it is enemies will try and follow the player until they're in attack range and will repeatedly attack until the player moves out of range. If the enemy loses sight of the player they'll continue in the direction they last saw them until they either see the player again or reach a wall where they'll wander in search.


The player's attack animation code has been reworked so that different items can have different animations with different graphics and movement patterns. Currently only the sword is implemented which slashes down diagonally from alternating directions.


After a couple of rubbish looking and / or ROM-eating ideas I've settled on a title screen that I'm happy with that uses minimal space in the graphics banks. The mountains, trees, and rocks scroll to try and make things more interesting (and to stick it to the NES). The left and right buttons change between 'Start' and 'Continue' options because I'm currently working on the basics of saving progress so don't try the ROM with a save device lest it corrupts your data, spontaneously combusts, or calls you rude names via AtariVox or something.


The title 'Spire of the Ancients' is a working title so I may change it but the only other contender I have in mind is 'Spire of the Eldritch'.


I'm thrilled to now have a Mateos Cart so I spent the night fixing graphical issues not apparent in emulation. For starters I've stabilised the background changes including fixing the issue that AlyoshaTAS pointed out before. The only case of it left is the very top of the screen but I'll let that slide as I doubt it's something that can be fixed in the confines of double buffering and the top screen routine.

In another case of the old documentation being wrong I've flipped the border control bits so the horizontal overscan should be black instead of the background colour which I think makes a big difference to how good it looks overall, especially the title screen.


The build I've attached has PAL colours so I could test on my own PAL-land hardware. I previously stripped out the automatic palette changing to save ROM but now that my code is more efficient I could probably re-add it though I'm leaning towards conditional compilation to leave more space for maps and things.




  • Like 5
Link to comment
Share on other sites

Smitty, looking really good.


Just as a suggestion, the "Start" on the title screen takes away somewhat from the overall presentation, perhaps it can be taken out. There is no "Start" button anyhow, and most (all?) wind up pressing a joystick button as the de facto game starting action.


Very cool scrolling effect regardless; the layered parallax visual is very nice. Fantastic work!

Link to comment
Share on other sites

The start text is there for testing saving because I want the option for starting a new game even if an existing save is present. I'll probably change it later so that pressing one button swaps the credit text with 'New Game' / 'Continue' and pressing again selects that.

  • Like 1
Link to comment
Share on other sites

Okay so since I first posted this thinking I'd never look at this again I've been spending a lot of time updating it.

I've started using tile maps for the graphics, the map(s) are 16*16, and I have static objects and enemies that can be removed with the left button.

I'm actually motivated to finish this and it's all your fault!

This is looking amazing. This really shows off what the Atari 7800 is capable of.
Link to comment
Share on other sites

I've just this minute had an idea that I'm going to pursue a bit but will likely have to drop.


At the moment 7 of my maximum 12 objects per zone are being used on the walls because it means I can just memcpy the definition for a wall over the specific bit that needs changing.

If I can write a method of updating chunks of a larger map then maybe I can work with only 2 or 3 tile maps which should then allow more complex enemies and items on screen at once.


I suspect that anything I write won't be efficient enough to cleanly update the screen though so I'll have to test it and judge whether the trade off is worth it.

Link to comment
Share on other sites

So after some tests it seems I can get away with 2 objects for walls so it's now just a matter of converting my existing tilemaps so I can copy things line by line. As a side effect I've freed up 200 bytes of RAM that I might be able to make use of for a visible map of some kind.

In my test I was able to have 2 cultists and a pnydt on screen along side several torches without problems. It will make enemy placement easier as well as allow me to squeeze in more scenic objects with whatever graphics space I'll have left after enemies.

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

New build. The number of objects on screen has been vastly improved by redoing the screen drawing which is very nice. The downside is that where the layout of the screen has changed I can't just copy whole wall sections in one go so it has taken quite a bite out of my free space though I've reclaimed a whole 1k just from drawing routines for torches. I've found I can have the maximum of 3 cultists on screen at once with only a very minor graphical problem that I'll overlook.


I've got a rough map of locations to be implemented so I've made something of a start on that. I'm having to stop myself from over-complicating the maps because it's hard to make something that can easily be navigated with the number of limitations I have. Corridors only, no S-bends, doors must not be placed to the side of a corridor (so as to not require side-on graphics at different scales), and things like ladders and pits seem to pop into existence if placed next to a corner because of the perspective.


It won't be pretty but it'll be the best real time first person dungeon crawler the 7800 has ever seen (unless somebody can beat me to it and I would like to see how somebody else's take on the same thing would turn out).





  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

I've just had a delivery of one lovely boxed copy of Star Raiders with keypad controller and have successfully written a little test program that reads the controller from port 2 on real hardware.

In the end I didn't have to change much in my code but it still doesn't work correctly in emulation and comparing it to real hardware has given me a clue as to why.


When the test program is booted up on real hardware with the controller not plugged in, or plugged into the wrong port it displays 11 (lowest middle button) but this then changes to 10, and then to 0 when the controller is plugged in. After that it reads normally.

On A7800 it displays 11 regardless of whether a keypad is selected as either or both slot device. It will correctly read key 12, key 11 will read as key 10, and pressing keys 10 and 11 will read as 8. No other combination does anything. It seems as if A7800 is acting like the keypad isn't plugged in while still letting me manipulate the port in strange ways.



I've attached the test program and it's set to read from the right controller port. It's a 32K bin just because I was copying things from other code and there's likely some extra lines that can be removed.




  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

I haven't been able to make a lot of progress recently but what I have been able to do is:

Refine the keypad code to be a little nicer

Tidy the title screen so the start / continue options appear in the same place as my credit after pressing a button once

Free up yet more ROM for actual content

Add extra pickups including the stat increases

Map out a few new areas


I hope to get more done in the next week including modifying the enemy 'look' code for playing sounds at different volumes based on distance. To simplify things I'm going to have walls block sound so that like line of sight I only need to check 4 directions and not a whole area.

  • Like 1
Link to comment
Share on other sites

I've got the sound code in so that objects can make unique movement and attack sounds. Unfortunately I couldn't make it as good as I wanted to so I'll have to duplicate sounds at different volumes if I want to have a sound quiet in the distance.

I've started playing around with the tracker to add some basic music / jingles but I've noticed that in some situations notes are being skipped. For examples I have a simple 5 note chime that plays perfectly in PAL, but in NTSC, or if I have a longer instrument, or if I add a second channel it starts dropping notes. I'll keep playing around with it to see what I can find.

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

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.

  • Recently Browsing   0 members

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