I finally found an emulator that’ll run DreamZZT DS so I can post some real screenshots:

enigmads.png monsterds.png

Check out the other screenshots on the DreamZZT DS page.

Blogged with Flock

DreamZZT 3.1.500

A new build of DreamZZT is now available:

DreamZZT 3.1.500

New Features

  • DreamZZT Online support for Nintendo DS
  • Support for saving SuperZZT games
  • Directory listing in NDS file browser (contributed by ndsdev -at –
  • Lua interpreter for Nintendo DS builds
  • Reduced memory usage so larger games can fit in Nintendo DS RAM
  • Multi-line text entry widget for bug reports
  • ZZT-OOP script editor
  • Meter display for SuperZZT health
  • Support SuperZZT “hint” key
  • Hold-to-scroll in text windows

Bug fixes

  • Player can no longer travel between boards if there is an obstacle on the other side
  • Stop music playback when ending a game and changing boards
  • Fix dark grey RGB value in NDS palette
  • Display the pattern tiles in the editor
  • Fix board corruption issue when using a teleporter
  • Set color during #change and assign torches a default yellow color


DreamZZT 3.1.0

I’ve put together a new build of DreamZZT if you want to play around with the SuperZZT support.

Known issues with this build:

  • Rapid firing is broken, tap the fire button instead of holding it
  • DS will freeze upon touching the door for level 2 of Monster Zoo
  • SuperZZT games cannot be edited or saved
  • R-trigger scrolling on DS is temporarily disabled
  • SuperZZT-specific enemies are not yet implemented
  • As this is a beta release, DreamZZT Online will connect to my internal server, not the public server.
  • Patterns are not visible in the editor


New features:

  • SuperZZT support
  • Slime and Ricochet objects
  • Optimized the board updating, the order should be closer to ZZT’s now

For a full list of changes for this and future 3.1.x releases, see milestone 3.2.0.

SuperZZT support

I added basic SuperZZT support to DreamZZT:

Most of the SuperZZT-specific objects aren’t supported yet, but game files will load and SuperZZT water and floors are supported. More to come!

DreamZZT DS 0.3

Yet another DreamZZT DS update! DreamZZT DS 0.3 adds sound support and centers the top screen.

DreamZZT DS 0.3

Sound streaming code borrowed from libSDL DS.

DreamZZT DS 0.2

Most of the issues with DreamZZT DS have been resolved:

* Background tiles render across the whole screen
* Status messages display at the bottom of the screen, and will scroll if too long
* Improved board transitions
* Title screen starts centered, you can scroll around it by holding R and using the d pad
* Files on your card can be browsed, however saving will default to (game name).sav
* NDS file now has a proper ROM header with icon. M3 users must press Start instead of A to launch the ROM now.
* Main menu is cleaned up so it doesn’t wrap, and Editor / Quit have been hidden

DreamZZT DS 0.2

DreamZZT for Nintendo DS

© All Rights Reserved.

I’ve ported DreamZZT to the Nintendo DS. It scrolls the game board around as you move, similar to SuperZZT. You can also hold the R button and use the d-pad to scroll around the screen. Text windows have been resized to fit the DS’s screen, so long lines will be wrapped.

You can grab an early beta here. It runs a bit fast, has no sound, and stops drawing the background colors half-way across the board, but it’s playable. There’s no file browser yet, so it automatically loads “town.zzt” from the root of your card. I’ve tested it with my M3 miniSD cart, I’m not sure what other flash carts are supported.

DreamZZT DS photoset on Flickr

DreamZZT Lite

Got a PC without 3D acceleration? Introducing DreamZZT Lite, which uses SDL instead of OpenGL to draw the screen.

A test version is available for Windows 2000 / XP: DreamZZT-lite 3.0.8. The debug console is disabled, otherwise it should run the same as the normal 3.0.8 release. This build also includes the experimental Lua interpreter, but I’m not officially supporting it yet.

Let me know if it does / doesn’t work on your systems.

Lua 5.0 in DreamZZT

ZZT-OOP is fine for simple scripts, but it’s very dated and not very powerful. Starting with DreamZZT 3.2, another scripting language will be available in addition to ZZT-OOP: Lua 5.0. Lua supports functions, variables, and file access, among other things.

Creating a Lua object using a 3rd party editor is as simple as creating a ZZT-OOP object that executes “#become lua”. DreamZZT will then run everything past that line as a Lua script instead of ZZT-OOP. Of course, if DreamZZT ever gets a text editor, or if someone adds the Lua object type to KevEdit, you’ll be able to create Lua objects directly.

Here’s a simple example of using Lua from within DreamZZT:

#become lua
function main()
set_msg("Here, the player, have some health")

And a more advanced example that handles more than one message:

#become lua
function main()
local msg = nil
local them = nil
while true do
while (msg == nil) do
them,msg = pop_message(me)
if(msg == "shot") then
set_msg("Ouch! I was shot by a " .. .. "!")
if(msg == "touch") then
set_msg("That's my purse! I don't know you!")

Note that you must call coroutine.yield() inside your loop to pass control from your script back to the game engine. The set_msg(), move() and wait_for_message() functions automatically call coroutine.yield() for you. Also note that the Lua implementation is using a message queue, so you don’t have to worry about locking and unlocking your objects like you do with ZZT-OOP.

For a more complex example, I’ve rewritten the DremZZT Tutorial in Lua, which you can view here. You can compare it to the original ZZT-OOP code to get an idea of what the new functions do. You’ll also notice that Lua has full access to the TUIWindow class, so you’ll be able to use text entry fields, check boxes, etc. from inside your games.

The Lua interpreter and updated tutorial are in the svn trunk, however saved games containing Lua objects created on PowerPC Macs are not compatible with other platforms and vice versa, due to how that CPU stores data. This issue will be resolved eventually, but right now just don’t transfer saves between PowerPC Macs and the rest of the world 🙂 For information on checking out and building DreamZZT from svn, see Building DreamZZT from Source.