Jump to content
BydoEmpire

WIP Wizard's Dungeon

Recommended Posts

Documentation

You are an apprentice wizard, learning the craft and early in your studies... but showing promise.  On a dark night filled with restless dreams you were betrayed by your teacher and cast into the Wizard's dungeon. For what purpose, you can only guess.  He thought you would quickly parish at the jaws of the many beasts of the maze... but you have an iron will.  You also have a little bit of magic left in you.  Use your feeble magic bolt spell to survive until you can acquire more weapons and magic.  Gather riches and magical artifacts.  Eventually if you survive long enough, you may even escape and face your former teacher.

 

Find the Stairs in each maze to progress to the next level of the dungeon.  Beware - each level gets harder and harder!  Search for a way out, all the while collecting weapons, treasures and magical weapons.  You have no choice but to press on, deeper and deeper you explore... but is it taking you closer to freedom, or closer to your doom?

 

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.

 

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

  1. Psychic Blast
  2. Lightning
  3. Fireball

 

Find more of each to level up (4 levels of power per weapon)

 

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?

 

Controls

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

 

This original homebrew was inspired by, and is a combination of Adventure, Gateway to Apshai, Berzerk and perhaps a bit of Tutankham thrown in.

 

--- 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-05-09)

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

 

wd-2018-10-27.bas.a78

 

 

 

 

 

 

wizards_dungeon_7800_manual-0.4.pdf

 

wizd_210509.bas.a78

Edited by BydoEmpire
  • Like 18

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

What you have done so far has a pretty solid foundation, and I can confirm that it works in BupSystem. If you decide to put music into it, may I suggest something slow, ominous, and unnerving?

  • Like 2

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Yep, the same .a78 crashes in JS7800 for me as well, but not in MAME - exactly as described.  I'll turn on some debug stuff and test that.  Interesting.  My go to debug method has been to print debug codes and values on the screen, but that might be hard in this case.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
1 hour ago, Trebor said:

I could not.  :)

 

Great to hear! Thanks a lot for testing it out.

 

Thanks again,

Chris

  • Like 1

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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 1

Share this post


Link to post
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...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...