Jump to content
IGNORED

WIP Wizard's Dungeon


BydoEmpire
 Share

Recommended Posts

Story

You were the Arch Wizard’s sole apprentice, learning the craft and early in your studies of the arcane arts. The mysteries of magic were just beginning to crystalize in your mind. On a dark night filled with restless dreams you were suddenly awakened by your master. You will never forget the evil gleam in his eyes as he bound you with magic, dragged you from your chamber and cast you into the dungeon.

You rise from the ground, determined to stop his evil plans. Use your magic bolt spell to survive until you can acquire more powerful magic. Gather riches and magical artifacts. Eventually, if you survive long enough, you may face your former master. You may even become a legend, but first you must escape…

 

...the Wizard’s Dungeon!

 

Summary

Wizard's Dungeon combines the maze-based shooting gameplay of Berzerk with the random dungeons, items, and treasure hunting of D&D Cloudy Mountain.

 

Features

  • Three difficulty levels
  • Explore a huge, randomly-generated dungeon
  • Learn four unique spells, each with four levels of power
  • Collect magical artifacts and priceless treasures
  • Battle more than a dozen types of monsters
  • Continue from the last level you've reached

 

How to Play

Find the Stairs in each maze to progress to the next level of the dungeon.  Search for a way out, all the while collecting weapons, treasures and magical weapons.

 

On the Main Menu, use L/R to select difficulty level

  1. Easy
  2. Normal
  3. Hard

 

If you've died and are back on the main menu, use U/D to switch between choosing difficulty, or selecting New Game or Continue.  Continuing will restart you on the last level you reached, with all your magical artifacts and weapons.  

 

Move your character with the joystick

Button 1 fires your selected weapon

Button 2 selects the next available weapon

 

Pause or Hold Button1 then press Button2 to bring up the map screen

You start with only the Magic Bolt spell.  Hidden in each maze are scrolls containing additional spells:

  1. Psychic Blast
  2. Lightning
  3. Fireball

 

Find Scrolls for each spell to level up.

 

Find all the goldgems and other treasures hidden in each maze...

 

Find all the Magic Items to increase your powers.  Each magic item will give you abilities, but you have to play to discover what they are.

 

Potions refill health.  Fully clearing a room of enemies will often give you a potion for your efforts.

 

Finding the Map will highlight rooms with gravestones and stairs when you go to the map screen.

The Key will open Chests, which contain treasures or potions


If you get killed, you turn into a ghost. Your health turns into a 30 second timer. You have to find a Gravestone before time runs out or your game is over (it basically just starts over). If you get your ghost to a gravestone, you get revived and and continue on. While you're a ghost you can't use weapons, but the enemies can't touch you either. Just find that gravestone as fast as you can!

 

Rooms with special items have Gates on the exits, locking you in the room for ~10 seconds.  They do not reappear after you've gotten the item, but be careful as there might be more dangerous monsters guarding those items!

 

If you make it far enough, you may even face your former master.  Do you have what it takes to defeat him?

 

Thank You!

Available in the Atari Age Store here: https://atariage.com/store/index.php?l=product_detail&p=1263

All proceeds go directly to Atari Age!

 

--- Original Post from December 2020 ---

Quote

I started this a couple years ago, but then didn't look at the code for 2 years. It's amazing what a week off of work will do, as well as some role changes at work that makes it important for me to refresh my engineering mindset.  So I picked the project back up.  I took advantage of the last couple days to make progress on this, and it's gone much faster than I expected.  In the last 3 days I added: multiple enemies, scoring and health, enemies don't go through walls, moving room-to-room, 8x8 'world map', and a bunch of other stuff I probably forgot. It's been great fun. This is the most code I've written in probably 10 years!

 

Obviously a long ways from "done," and all of the graphics are placeholder (you'll probably recognize a bunch of "borrowed" sprites), but at this point since it's basically playable I figured I'd share the early WIP.  I have grand visions, but of course we'll see what real life turns that into.

 

I'm testing with MAME, I tried briefly in js7800 and it works, but I noticed some of the screen-to-screen movement seemed busted. 

button 0 = shoot

button 1 = switch weapon

 

Just to test parts of code, there's a lot of placeholder stuff that might need some explaining:

  • touch an enemy and lose a point of health, I've never gotten down to 0, but nothing currently happens anyways.  My guess is it wraps to 255.  I have a cool idea for this
  • the weapons are currently all arrows, but do 1,2,3,4 points of damage when select.  I expect to have you find weapons or spells along the way before they're selectable.
  • enemies health depends which row in the map they're on (the map is an 8x8 grid of rooms)

 

--- Edit ---

Most recent .a78 and manual attached (2021-11-11)

Also attaching where I picked this back up from in December of 2020 (build from October 2018, but I didn't touch it for 2 years)

 

wd-2018-10-27.bas.a78

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wizd_211111.bas.a78

Edited by BydoEmpire
  • Like 19
Link to comment
Share on other sites

Thanks for checking it out!  I'm going for a combination of Gateway to Apshai, Berzerk and Robotron... we'll see what happens.

 

I should have mentioned in my post, but I wouldn't have gotten this far without the incredibly supportive 7800 homebrew community - randomterrain's great documentation, the forum's quick and detailed replies, everyone sharing their source freely. Thanks!

 

Quote

Looks and plays great! The enemies remind me a bit of Realm of Impossibility, a game I played a ton on my C64. Looking forward to seeing this develop.

- James

That's a great game!

Edited by BydoEmpire
  • Like 7
Link to comment
Share on other sites

Added Recently:

- four different weapons, each with different properties

- one of them was the sword, and doing a non-projectile took a couple days to get right

- a (hopefully) cool mechanic for when you die

- some minor tweaks like screen shakes when you get hit

 

Next Milestone:

- random maze generation so it's a real maze, not just a box of open rooms

- clean up some of the death mechanics, not "hacked in" for testing

 

On the Backlog:

- real graphics

- sound (slow an ominous is definitely the route - I'm thinking pretty minimal during gameplay, like Jaws or Asteroids)

- more enemy types

- treasures

- difficulty ramp and multiple mazes

- tweaks and polish

- handle game states like menu, end game, etc

  • Like 6
Link to comment
Share on other sites

The game play hasn't changed much at all, so not a lot of of noticeable improvement from the player's perspective; but under the hood a lot changed so I figured I'd share an update.

 

Additions:

- Got random maze generation working, but still needs tweaking. Only 7 different interior layouts (kind of like Berzerk), but I will add a lot more.

- Added a boatload of debugging code to track down issues w/ maze generation.  That's probably 50% of the code I've written in the last week...

- Added "ghost mode" but I had to disable for now until I can properly.  If you die, you have limited time to find one of the graves hidden in the maze.  If you reach it before time expires, you can continue.  If not, game over.

- Some tweaks to weapons

 

Next up

- clean up interiors of rooms and tweak maze generation

- get "ghost mode" working for real

 

 

wizarddungeon_wip.bas.a78

Edited by BydoEmpire
  • Like 6
Link to comment
Share on other sites

Made some good progress today:

- updated graphics - still programmer art, though ?

- you now have to find weapons before you can use them (arrow, sword, fireball)

- potions restore health, gold and gems award points

- ghost mode now works (if you die, find a gravestone before time runs out or it's game over)

- added mummies as a second enemy type (collisions with them aren't great)

 

There are stairs to the next level, but they don't do anything yet

 

wizards_dungeon_7800_wip2.JPG

 

fantasy.bas.a78

Edited by BydoEmpire
  • Like 5
Link to comment
Share on other sites

55 minutes ago, BydoEmpire said:

Made some good progress today:

- updated graphics - still programmer art, though ?

- you now have to find weapons before you can use them (arrow, sword, fireball)

- potions restore health, gold and gems award points

- ghost mode now works (if you die, find a gravestone before time runs out or it's game over)

- added mummies as a second enemy type (collisions with them aren't great)

 

There are stairs to the next level, but they don't do anything yet

Nice update, it's really starting to come together now!

 

I just played it in JS7800, walked all the way to the right then down one screen and it turned into something that looks like bad tracking on a VCR. I tried it again and it did the same thing so you should be able to check it out yourself.

 

- James

 

image.thumb.png.9723513deff266f8d0251c04c60e5494.png

  • Thanks 1
Link to comment
Share on other sites

So here's the deal with the latest build.  Confirmed, indeed under JS7800 it does crash.  However, JS7800 is less accurate to console behavior than A7800 or BupSystem, neither of which does the game crash.

 

Most importantly, it has not crashed under real hardware.  I uploaded to the MCP DevCart and it plays fine.  However, there is an issue with the testing.

 

Under JS7800 - every time it's played, it starts with the same board and progresses with the same board order.

Under A7800 - every time it's played, it starts with the same board and progresses with the same board order.

Under BupSystem - every time it's played, it starts with the same board and progresses with the same board order.

 

For all three though, the start board and consequently board order is different for each emulator.

 

Under the real hardware (AT84 Serial), every time the game is (re)started the start board and subsequent board order always changes.

 

So at this juncture, it is hard to determine if the crash under JS7800 is legit or not, as it very well may happen if played with the board order presented under that emulator; however, I have not been able to replicate (yet) the JS7800 board order under real console hardware.  Out of time tonight, will give it another shot tomorrow.

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

6 hours ago, Trebor said:

So here's the deal with the latest build.  Confirmed, indeed under JS7800 it does crash.  However, JS7800 is less accurate to console behavior than A7800 or BupSystem, neither of which does the game crash.

 

Most importantly, it has not crashed under real hardware.  I uploaded to the MCP DevCart and it plays fine.  However, there is an issue with the testing.

 

Under JS7800 - every time it's played, it starts with the same board and progresses with the same board order.

Under A7800 - every time it's played, it starts with the same board and progresses with the same board order.

Under BupSystem - every time it's played, it starts with the same board and progresses with the same board order.

 

For all three though, the start board and consequently board order is different for each emulator.

 

Under the real hardware (AT84 Serial), every time the game is (re)started the start board and subsequent board order always changes.

 

So at this juncture, it is hard to determine if the crash under JS7800 is legit or not, as it very well may happen if played with the board order presented under that emulator; however, I have not been able to replicate (yet) the JS7800 board order under real console hardware.  Out of time tonight, will give it another shot tomorrow.

Thanks for the debug info about the crash @ZeroPage Homebrew and @Trebor , that's really helpful. I appreciate it.

 

I knew it always started on the same board (in MAME anyways), but it's actually been helpful for me to reproduce other issues so I didn't look further into it.  Without investigating I'm guessing it's due to the way rand is implemented. Typically I'd seed with something more random like "how many frames until the player presses start" or something.  Curious that it works on real hardware.

 

On MAME I can go all the way through the maze but it could certainly be some recent change I didn't test thoroughly enough

Link to comment
Share on other sites

I did try again to replicate the start room and subsequent room order under real hardware.  At best, after dozens of tries, I was able to start with the same room layout, but a different item in the room and the following board to the right was completely different than what is experienced under JS7800. 

 

As a result, unfortunately, I still can't verify or deny if that particular start room and room order would fail under real console hardware as it does under JS7800.

Link to comment
Share on other sites

Thanks Trebor.  I tested a few debug options in JS7800.  The crash appears to be related to quirkiness of moving off the lower part of the screen.

 

Here's a build where the second button just cycles through all the rooms (0-63: 1st row, 2nd row, 3rd row, etc).  They all work when you're in the room, but moving south requires you to be on the rightmost section of the opening in JS7800, where that's not the case in MAME.  In MAME you can go through the entire opening (as expected).  When you do move south to a new room in JS7800, it (usually) crashes.  Moving n/e/w seems fine.  Interesting.

 

fantasy.bas.a78

Link to comment
Share on other sites

On 1/19/2021 at 5:24 PM, Trebor said:

I did try again to replicate the start room and subsequent room order under real hardware.  At best, after dozens of tries, I was able to start with the same room layout, but a different item in the room and the following board to the right was completely different than what is experienced under JS7800. 

 

As a result, unfortunately, I still can't verify or deny if that particular start room and room order would fail under real console hardware as it does under JS7800.

 

Just as an FYI, I tried that particular build under the in development version of JS7800, and it did not crash for me (but, I only tried once).

 

I would be curious to know if people are still able to replicate the issue with the current development version.

 

Here is a link if you want to give it a try.

 

Wizard's Dungeon on JS7800 (In development)

 

Thanks,

Chris

Link to comment
Share on other sites

11 hours ago, raz0red said:

I would be curious to know if people are still able to replicate the issue with the current development version.

I could not.  :)

 

There is something quirky overall with the exit from the bottom of the screen behavior - not JS7800 specific though - @BydoEmpire ...

 

When the Wizard leaves from the top of the screen, the screen changes before his head/hood touches the top exit - which works fine. 

 

Exiting from the bottom though, literally the Wizard sprite can dangle pass the bottom part of the visible screen, so that part of the Wizard's robe cannot be seen, yet the screen does not change.

 

The quirky part is if the Wizard, in that position with part of the sprite not in sight, his body/robe cut off from the bottom, takes a hit from an enemy, although the screen doesn't change, the entire screen shifts a few scanlines downwards.

  • Thanks 2
Link to comment
Share on other sites

I spent all weekend trying to fix a weird crash with enemy movement.  I don't know that I actually fixed the bug, but I ripped out a bunch of code, rewrote a bunch, and fixed some other things... and now it seems to work. I hate that I don't know if I *actually* fixed it because I don't know what exactly was wrong, but it works.  Movement up and down through rooms seems pretty reliable in both MAME and js7800 now, too.

 

Trebor, thanks for the bug info above. I haven't had a chance to look into that yet but it may be fixed given my up/down room movement changes.

 

Also added:

- Mummies now go after the player if you get too close - I need to make them more aggressive, but the mechanics are there

- Mummies occasionally spawn diamonds when you kill them.

- New room types and set up infrastructure for a new room interior system

- Various movement and scoring tweaks

 

Long and frustrating weekend... sometimes it's like that.

fantasy.bas.a78

  • Like 4
Link to comment
Share on other sites

A few more changes

- Mummies are much more aggressive when you get close

- Limit # of monsters per room so they don't spawn forever

- Reaching the stairs now takes you to a new, more difficult level! (level # is in the upper right)

- reworked tileset gfx under the hood to be cleaner

wizarddungeon_wip.bas.a78

 

It's coming together as an actual, playable game now... though it's not really fun yet.

Edited by BydoEmpire
  • Like 6
Link to comment
Share on other sites

Weekly update

- revamped enemy data structure under the hood, added new AI & collision parameters - not a lot of noticeable difference yet, though, just trying to get things working with the new code

- I did introduce a bug w/ mummies - sometimes I've seen them just take off in a random direction and move really fast... not sure what's up with that though, it's like they're at chase velocity, but nowhere near the player and not moving towards the player.  Weird.

- new levels have different palettes, I have a better understanding of how that works now

- some new interior wall layouts

- added "tentacle" enemy type and more interesting mummy sprites

- scoring and control tweaks

- added a logo to the background, and reorganized the layout of tiles behind the scenes

 

Next up on my radar

- more interior room wall layouts

- different tiles for different levels

- new enemy sprites

 

May or may not post an update later today, depends how it goes w/ the family today.  I need to get my eyes off of screens for a bit.

 

PS - I made some good progress this morning.  Probably due to listening to Tony Martin-era Black Sabbath while programming.  I had a flash back moment to sitting in my basement, listening to Sabbath's first album while playing Pool of Radiance on the c64.  One of those impactful little life moments that stuck with me for some reason.

wizarddungeon_wip.bas.a78

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

Fixed the mummy bug (and probably caused some other problems with enemies acting like the little alien spiders)

Tentacles spawn in random places instead of clogging up in a few areas

Fixed bullet/enemy collision although it's still too generous.  The code is cleaner and collisions more reliable.

 

wizarddungeon_wip.bas.a78

  • Like 1
Link to comment
Share on other sites

19 hours ago, BydoEmpire said:

Probably due to listening to Tony Martin-era Black Sabbath while programming

I'm more of a classical listener when programming (quite partial to Vivaldi or Handel). Recently started listening to some Prokofiev which is a bit different. Also partial to a bit of Enya :)

 

On the new build, are the mummies and tentacles invincible? I don't think I managed to kill one yet ! :) 

  • Like 1
Link to comment
Share on other sites

4 minutes ago, Muddyfunster said:

I'm more of a classical listener when programming (quite partial to Vivaldi or Handel). Recently started listening to some Prokofiev which is a bit different. Also partial to a bit of Enya :)

 

On the new build, are the mummies and tentacles invincible? I don't think I managed to kill one yet ! :) 

When I used to do more professional programming, the Conan the Barbarian soundtrack was good too, but honestly silence is best for me if I really have to concentrate and think.

 

The mummies take ~15 hits of the magic and tentacles take ~20.  The arrows, sword and fireball do a lot more damage per hit that what you start with.  This needs a lot of tuning, though.  When I start adding more enemies I'm going to save some of them to later dungeon levels.  The game is fundamentally at a crossroads of "it it a shooting game" or "is it a maze game."  I have to decide pretty soon.

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

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

  • Recently Browsing   0 members

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