Jump to content
IGNORED

Space Dungeon


Atarius Maximus

Recommended Posts

I've been taking a break from my Atari projects, after working on Gate Racer and doing a cart run (for the first time) I was a bit burned out. I'm starting to get the itch to start on a new game and started looking at some of my older unfinshed projects. I just bought a joystick coupler for the 5200 from an ebay seller and I'm excited to play Space Dungeon (and Robotron!) with it. I have a homemade coupler that I made about ten years ago out of cardboard that sort of works... but even with that it's by far my favorite 5200 game. I've wanted to make Space Dungeon for the 2600 for years and I made a mock-up demo last year that I didn't get very far with. In the demo you can move around all of the rooms and fire, the map on the top right works, but there are no enemies to shoot.

 

I may be able to make something work using DPC+, but even with that it will be challenging. I'm attaching the old demo I wrote last year using the standard kernel. I'd likely have to start from scratch now but I think I'm going to try it for my next project. Does anyone else love Space Dungeon as much as me? :)

space.bin

space.txt

post-2143-0-85282200-1376762394_thumb.jpg

  • Like 1
Link to comment
Share on other sites

Changing rooms doesn't have to be a mystery - especially if your world is the same amount of rooms tall as wide.

 

In my last game if the player crossed a certain x/y bounry I updated the current room and went to the new room drawing code:

 if player0x = 5 && openwest then player0x = 147 : room = room - 1 : goto newroom
if player0x = 148 && openeast then player0x = 6 : room = room + 1 : goto newroom
if player0y = 17 && opennorth then player0y = 87 : room = room - 5 : goto newroom
if player0y = 88 && opensouth then player0y = 18 : room = room + 5 : goto newroom

 

in the newroom section I used an on .. goto statement to leap to the actual new playfield data:

 on room goto A B C D E F G H I J K L M N O P Q R S T U V W X Y

 

which usually did this and returned to the main loop:

C

opennorth = 0
openwest = 1 : opensouth = 1 : openeast = 1 : solid = 1 : doorhere = 1

ballx = 56 : bally = 41

pfcolors:
$F6
$22
$06
$08
$0A
$24
$24
$D6
$D8
$F2
$F6
end
playfield:
................................
........XX......................
......XXXXXXXXXXX...............
.....XXXXXXXXXXXXX..............
....XXXXXXXXXXXXXXX.............
......XXX...XX..X...............
......XXX...XXXXX...............
........................XXX.....
.......................XXXXX....
........................XXX.....
end
goto main_begin

  • Like 1
Link to comment
Share on other sites

So what would you call it on the 2600? Space Dungeoness?

 

Annnyway, I'm up for just about any 2600 game programmers are willing to create. Designing games for the system is always a fun exercise in minimalism, and sometimes those demakes are genuinely fun to play. (Screw Lanzinger; I think Crystal Castles on the 2600 is brilliant considering the limitations of the console!) Having said all that, Space Dungeon was never a particular favorite of mine. It's a game I WANT to like, but the agony of defeat is so pronounced that I always step away from it angrier than I started. It'll also be tough to make work on the 2600 due to the use of diagonal lasers in some rooms, and the unrelenting chaos in others.

Link to comment
Share on other sites

That game reminds me that I would like a code snippets that explains how to program the movement across rooms, just like your Space Dungeon.

 

In fact I only need that you explain your code...

 

Sure, I can explain it. I know theloon already went through it so this may be a bit redundant, but I thought I'd give my explanation as well.

First, If the player crosses a boundary, go to the movement code.

if player0y = 36 then gosub go_north
if player0x = 133 then gosub go_east
if player0y = 89 then gosub go_south
if player0x < 21 then gosub go_west

 

Next, based on which way you're going you'd load up the appropriate room number from the data table.

go_north
player0y = 87
room = move_north[room]
goto draw_room
go_east
player0x = 32
room = move_east[room]
goto draw_room
go_south
player0y = 42
room = move_south[room]
goto draw_room
go_west
player0x = 129
room = move_west[room]
goto draw_room 

 

In the draw_room section I define the playfield for each room, then return to the main loop after changing the playfield.

draw_room
s= room_shape[room]
on s goto drs_0 drs_1 drs_2 drs_3 drs_4 drs_5 drs_6 drs_7 drs_8 drs_9 drs_10 drs_11 drs_12 drs_13 drs_14 drs_15 

Each number in the data tables corresponds to the room number you're in. In the code below, the first value in move_north is 0, the first value in move_east is 1, the first value in move_south is 2, and the first value in move_west is 0. So if you start in room 0, if you move north you'd stay in room 0 (what I use when the path is blocked anyway by the playfield), if you move east you'd go to room 1, if you move south you'd go to room 2, and if you move west you'd stay in the same room (again, likely a blocked path on the map).

 data move_north
 0,0,0,0,5,2,4,8,9,0,11,12,0,0,0,14,0,0
 3,21,0,0,20,0,0,22,23,28,0,27,24,32,0,31
end
 data move_east
 1,0,3,4,0,0,7,10,0,0,0,13,0,14,0,17,15,0
 19,20,0,0,24,22,23,0,0,26,0,0,31,0,0,0
end
 data move_south
 2,0,5,18,6,4,0,0,7,8,0,10,11,0,15,0,0,0
 0,0,22,19,25,26,30,0,0,29,27,0,0,33,31,0
end
 data move_west
 0,0,0,2,3,0,0,6,0,0,7,0,0,11,13,16,0,15
 0,18,19,0,23,24,22,0,27,0,0,0,0,30,0,0
end

 

To help map it out I use an excel spreadsheet to generate the data tables. I've attached a screenshot of the spreadsheet I used when I made the space dungeon demo. When you map it out that way it makes it pretty easy.

post-2143-0-13743100-1376919257_thumb.png

  • Like 1
Link to comment
Share on other sites

So what would you call it on the 2600? Space Dungeoness?

 

Annnyway, I'm up for just about any 2600 game programmers are willing to create. Designing games for the system is always a fun exercise in minimalism, and sometimes those demakes are genuinely fun to play. (Screw Lanzinger; I think Crystal Castles on the 2600 is brilliant considering the limitations of the console!) Having said all that, Space Dungeon was never a particular favorite of mine. It's a game I WANT to like, but the agony of defeat is so pronounced that I always step away from it angrier than I started. It'll also be tough to make work on the 2600 due to the use of diagonal lasers in some rooms, and the unrelenting chaos in others.

I'm not sure what I'd call it, but probably not Space Dungeoness. ;) Yeah, it would be tough to make it work exactly the same as the 5200 version, there would be changes and compromises to be made for sure. It would be a game that resembles Space Dungeon but wouldn't be exactly the same.

Link to comment
Share on other sites

I put some time into making a working demo of 'Space Dungeon' using DPC+ over the past few days. It works, but I don't think I'd be able to put enough of the gameplay elements into it to make it truly feel like the original. If I continue on this it'll be pretty much an entirely different game... I may go back to working on that pitfall-like demo I started on earlier in the year instead.

 

In this demo you can walk around and fire at enemies, one enemy will fire back (including diagonally), there is a laser that shoots across the screen like in the original (in two directions) and the map keeps track of your position. There is an exit, a bonus, and a treasure, but there is no collision detection specifically made for them, if you touch them you will die. Also, shooting one enemy will make them both disappear, again I didn't spend much time on proper collision detection for that. You have unlimited lives, and when you die you are reset to the starting room in the lower left. Not sure where I'm going to go with this next.

post-2143-0-11683300-1377022301_thumb.jpg

sd.bin

sd.txt

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