We've added the complete source code with all media and make files of Deep Dungeon Adventure to our ever growing freeware download database. With this package you can build Deep Dungeon Adventure yourself. The real kicker is of course that this can give upcoming assembly coders a great insight in how a game like this is made. The game itself turned out to be the winning game of MSXdev'08, what you'll be studying is more than worthy of doing so.

The distributed DDA files are freeware. If ever you could put one or more of these files to good use in your own projects, don't forget to credit the original creators; ARTRAG, John Hassink and Huey of Trilobyte.

If you have freeware material you'd like to share with the rest of the MSX world, feel free to submit it to us, along with some background information about you and/or your download. Perhaps your download will grace our monthly downloads top 10!

Relevant link: Deep Dungeon Adventure - sources

Comments (23)

By nanochess

Master (221)

nanochess's picture

20-01-2013, 16:53

Thanks for sharing! Smile

By raymond

Champion (394)

raymond's picture

20-01-2013, 17:43

A very nice gesture! Smile

By BlueCrystal

Expert (68)

BlueCrystal's picture

20-01-2013, 18:30

Kudos

By ARTRAG

Enlighted (6275)

ARTRAG's picture

20-01-2013, 18:30

IMHO the most valuable part is the algorithm that computes the field of view(it is a pseudo raycasting)
Also level generaion is pretty interesting. Enjoy!
Hope to see soon a spin off.

By ARTRAG

Enlighted (6275)

ARTRAG's picture

20-01-2013, 19:54

When I seay spin off I mean something like this
https://www.youtube.com/watch?v=cCHTVC-Ptio
(graphic is a placeholder and code has to be redone from scratch)

By Huey

Prophet (2644)

Huey's picture

20-01-2013, 20:40

A little clarification; The package contains the ROM version of the cartridge but with a fix of a bug on the hard level.

Included is: The game (ROM including the hidden game), manual and the source code.

Perhaps it is better to split up the game and source?

By Manuel

Ascended (15804)

Manuel's picture

20-01-2013, 21:45

ARTRAG - no plans to continue the stuff from that video?

By ARTRAG

Enlighted (6275)

ARTRAG's picture

20-01-2013, 22:21

Maybe. Do you think the frame rate is too low ?

By pitpan

Prophet (3131)

pitpan's picture

20-01-2013, 23:08

Nice demo, Arturo!

By the way: I did not know the *final* Intruder version that was included in this release.

Congratulations for publishing the source code: it is good news to all developers and beginners out there. Thank you.

By FiXato

Scribe (1520)

FiXato's picture

20-01-2013, 23:29

Awesome! I love this project even more now the source is also released Big smile

By KdL

Paragon (1236)

KdL's picture

21-01-2013, 00:14

like+1 Smile

By tcruise

Master (131)

tcruise's picture

21-01-2013, 02:36

Awesome of you to do this. It will help a lot of others to get into the coding scene. Plus it's a great game!

By Manuel

Ascended (15804)

Manuel's picture

21-01-2013, 19:11

ARTRAG - no, I think it just looks spectacular Smile What is the frame rate?

By Hrothgar

Champion (479)

Hrothgar's picture

21-01-2013, 20:17

ARTRAG wrote:

Maybe. Do you think the frame rate is too low ?

Any higher and it would become unplayable due to the speed.

It's impressive; is it screen 5 with VDP copies on the active page or with swapping?

Edit: it seems swapping from the Youtube video, and there seems to be a slight stutter when there's an above-average number of tiles to change in one frame. Would a counter on the maximum number of copies per frame improve things, first prioritizing tiles that were already visible and need updating, then new tiles that come into view, and lastly tiles that leave the visible angle? Pending copies that flow over the frameswitch point handled in the next frame. Not sure at all if that would work, just guessing out loud.

By ARTRAG

Enlighted (6275)

ARTRAG's picture

21-01-2013, 21:18

Screen 5 with double buffering and differential update.
Your idea sounds interesting but it needs managing different lists to be built and stored during the pseudo raycasting.
Actually we are confident that some relevant optimization can be achieved by integrating the pseudo raycast with differential update of the screen.
Currently the things are done sequentially, so during differential plotting, it is possible to find the vdp busy in its previous command. Integrating the two tings would increase the parallelism between cpu and vdp.
Moreover the current implementation needs an intermediate buffer that has to be reset at each fame.
Integration would allow to test for differential update only the new visible area, instead of the whole 24x24 screen (like now). With small modifications to the raycasting, counting on the fact the player moves a tile at time, it possible to avoid the reset of the intermediate buffer and the buffer itself.
Add that the raycast code is from DDA with almost no changes from 2008, so some optimization can be achieved also there and I do not exclude that redesigning from scratch the whole thing integrated would allow other speed gains.

By ARTRAG

Enlighted (6275)

ARTRAG's picture

22-01-2013, 01:07

Same as above on msx1, screen 2
http://www.youtube.com/watch?v=7l6P0Xe6Bz4&feature=youtu.be
the msx1 version will be discontinued (too few characters and too much work to do something decent)

By pitpan

Prophet (3131)

pitpan's picture

22-01-2013, 16:48

Impressive! Too bad MSX1 is discontinued, but you showed us the way Wink

By ARTRAG

Enlighted (6275)

ARTRAG's picture

23-01-2013, 01:44

On msx2 with small improvements (and different sprites)
https://www.youtube.com/watch?v=HcFRkD3ja5c

I'm confident that on msx2 the frame rate could rise to 18-20 FPS, but we will see.

By hit9918

Prophet (2868)

hit9918's picture

24-01-2013, 13:59

@ARTRAG.
the game not lacks fps, it lacks scroll.
applying scroll register would make better game plus 60 fps world move.

I think this view makes it relatively easy adding:
"the game makes a new 8x8 position as before, the interrupt gonna walk that line with scrollregister".
like, the scroll walks on a grid.
similar to the grid happening in your parallax scroll demo. but this time an 8x8 pixel grid.
the player as hardware sprite could be decoupled and within some window push the scroller as so many games do.

15fps... would be 4 scroll steps of 60hz scroll register.
using full 16pixels scrollregister range, would be a scroll speed of 4 pixels per frame while 60fps!?
The result somehow surprises. I guess this means the screen 5 scroll going 2 pixel per frame is blittercopy having "render rate" of 7.5 fps.

So... your game could get 60fps 2 pixels per second scroll with suddenly 50% cpu free!? Big smile
But then this would be with 16x16 grid. The render would jump 16 pixels.
As is, could try an 8x8 grid at 100% cpu.
Maybe one can go 1.5 pixel per frame (with maybe some new logic issues entering the scene when it not exactly hits an 8x8 position), would free 33% cpu.

By Huey

Prophet (2644)

Huey's picture

24-01-2013, 16:57

Perhaps its better to discuss other projects than DDA in another thread. Wink

By ARTRAG

Enlighted (6275)

ARTRAG's picture

11-04-2017, 22:52

I've found an ancient DDA version with SCC support. Just plug in slot 2 an scc chartridge
https://github.com/artrag/DDA-scc
The work on music is not complete but better to share the rom as it is than let the whole work go lost.

By JohnHassink

Ambassador (5417)

JohnHassink's picture

12-04-2017, 03:31

Heh, I don't even remember we did this. Smile
It does apparently need 50 Hz to be forced.

By ARTRAG

Enlighted (6275)

ARTRAG's picture

12-04-2017, 14:35

I publish its sources, in case someone wants to give a peek