DreamZZT 3.0.8 and DreamZZT-lite
Moderator: Terryn
Seventhshade pointed this threat out to me. Just want to mention Im working on a ZZT game player for the GBA. Its in very early stages and Im creating it from ground up. So far all it can do is load a board file into memory so that it appears properly on screen. You can move a sprite around (the player) which autoscrolls for proper positioning. Nothing else has yet been added.
If anyone wants a demo contact me somehow.
If anyone wants a demo contact me somehow.
If you want to check out what I have created for GBA so far
http://www.sendspace.com/file/0e4eyn
it will only be hosted on this link for about 15 days, its at the bottom of the page.
It doesn't do much. It loads a single board file(which is built into the rom) then allows a sprite to be moved around screen. Nothing else, not even a way to detect collisions yet (which Im in the middle of doing).
It will run on real hardware (via a flashcart) or an emulator. If you want to see some of my debug stuff press the L and R buttons.
Have fun if fun is to be had!
edit; better description
http://www.sendspace.com/file/0e4eyn
it will only be hosted on this link for about 15 days, its at the bottom of the page.
It doesn't do much. It loads a single board file(which is built into the rom) then allows a sprite to be moved around screen. Nothing else, not even a way to detect collisions yet (which Im in the middle of doing).
It will run on real hardware (via a flashcart) or an emulator. If you want to see some of my debug stuff press the L and R buttons.
Have fun if fun is to be had!
edit; better description
There's a board embedded in that rom file. But wouldn't you save so much more space if you stored it as bytes instead of dwords?Nedemai wrote:If you want to check out what I have created for GBA so far
http://www.sendspace.com/file/0e4eyn
EDIT: Just tested this. That is pretty hot. For some fun, move the character off the left side of the screen.
Im still learning C as I go with this and everything is still unoptimized. Eventually I plan to reduce the amount of space used.
Also when you move the character off the left side of the screen the sprite turns into a 64x64 sprite with horizontal and vertical flipping. Just the way the gba wraps its memory :P
Also when you move the character off the left side of the screen the sprite turns into a 64x64 sprite with horizontal and vertical flipping. Just the way the gba wraps its memory :P
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
Downloads:
DreamZZT-lite for Windows
DreamZZT for Mac
DreamZZT DS
If people are interested in Linux or Dreamcast builds, let me know. Otherwise Windows, Mac, and DS should cover pretty much everyone here.
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.
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
Downloads:
DreamZZT-lite for Windows
DreamZZT for Mac
DreamZZT DS
If people are interested in Linux or Dreamcast builds, let me know. Otherwise Windows, Mac, and DS should cover pretty much everyone here.
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.
By the way, here's how to determine when a stat object is "up" -- meaning it's time to process... Keep in mind for this that every time you process one cycle in ZZT, increase the cycle counter by 1. This is exactly how it is seen in ZZT. (% is the modulus operator in C, I hope. :) )
(((CycleCounter + ObjectNumber) % ObjectCycle) = 0)
When this statement is true, process the cycle. This is why when you place a whole bunch of conveyors or transporters or anything else that animates on a board, they don't all animate at the exact same time. I don't recall how the ZZT cycle counter flips back to zero, but I think it's when the unsigned integer limit is reached (65535->0)
Also, forests in SuperZZT turn to floors instead of empties.
And sometimes it seems like rivers get processed twice. Rivers should only ever move you one character at a time, and not diagonally. Try using a river that goes south, then west. I ended up moving diagonally in one move.
Conveyors only move you if it can move you onto an empty. Fakes and floors don't make you move.
Just a few things I think would make this a lot more accurate :)
(((CycleCounter + ObjectNumber) % ObjectCycle) = 0)
When this statement is true, process the cycle. This is why when you place a whole bunch of conveyors or transporters or anything else that animates on a board, they don't all animate at the exact same time. I don't recall how the ZZT cycle counter flips back to zero, but I think it's when the unsigned integer limit is reached (65535->0)
Also, forests in SuperZZT turn to floors instead of empties.
And sometimes it seems like rivers get processed twice. Rivers should only ever move you one character at a time, and not diagonally. Try using a river that goes south, then west. I ended up moving diagonally in one move.
Conveyors only move you if it can move you onto an empty. Fakes and floors don't make you move.
Just a few things I think would make this a lot more accurate :)
Processing multiple lakes: fixed (forgot the "else" in the ifs)
ZZT update cycle: fixed (this also fixed, rapid fire)
Forests into floors: fixed
Conveyors: kind-of fixed. I found an interesting bug in SuperZZT while testing, sometimes it'll pull you off a floor and sometimes it wont. Also, if you walk from a floor to an empty next to a conveyor, it'll pull you and sometimes delete the floor that was under you.
DreamZZT will always pull you off a floor if there's an empty to move you to, and will never randomly delete the floor under you.
Additional fixes:
Adjust slime speed. Slimes of speed 1 still spread too fast, but other speeds seem right now.
The new update code required fixing the following objects: lasers, bombs, explosions, animated water.
Disable editor keyboard handler while debug console is visible.
Thanks for the feedback!
ZZT update cycle: fixed (this also fixed, rapid fire)
Forests into floors: fixed
Conveyors: kind-of fixed. I found an interesting bug in SuperZZT while testing, sometimes it'll pull you off a floor and sometimes it wont. Also, if you walk from a floor to an empty next to a conveyor, it'll pull you and sometimes delete the floor that was under you.
DreamZZT will always pull you off a floor if there's an empty to move you to, and will never randomly delete the floor under you.
Additional fixes:
Adjust slime speed. Slimes of speed 1 still spread too fast, but other speeds seem right now.
The new update code required fixing the following objects: lasers, bombs, explosions, animated water.
Disable editor keyboard handler while debug console is visible.
Thanks for the feedback!
Hmm ok I see why the DS is freezing while trying to use passages in SuperZZT, it's the same reason it can't currently do the slide transition between boards -- not enough memory to hold two decompressed boards in RAM.
Currently when you touch a passage, the passage decompresses the destination board so it can move the player on that board into the right spot, then it triggers the board switch. I've adjusted it to compress the source board before searching the destination board, now the DS can get to level two in monster.szt :)
Updated builds:
DreamZZT 3.1.443 for Windows
DreamZZT-lite 3.1.443 for Windows
DreamZZT 3.1.443 for Mac OS X
DreamZZT 3.1.443 for Nintendo DS
Currently when you touch a passage, the passage decompresses the destination board so it can move the player on that board into the right spot, then it triggers the board switch. I've adjusted it to compress the source board before searching the destination board, now the DS can get to level two in monster.szt :)
Updated builds:
DreamZZT 3.1.443 for Windows
DreamZZT-lite 3.1.443 for Windows
DreamZZT 3.1.443 for Mac OS X
DreamZZT 3.1.443 for Nintendo DS
-
- secret sauce
- Posts: 129
- Joined: Sun Feb 22, 2004 10:38 pm
- Location: MO :(
- Kjorteo
- ^o.O^
- Posts: 432
- Joined: Sat Feb 28, 2004 10:59 am
- Location: Kjorteoville or something
- Contact:
Historically, the community hasn't been very kind to changes in the games themselves. It always starts out noble enough--a bug fix here, a memory limit increase there, removing the "Gems give you health!" message over there...but then it inevitably reaches the point where that's what MegaZeux is for, and people go back to good old mostly-working ZZT 3.2.
I am unaware if SuperZZT has this problem, because I was unaware that anyone actually used SuperZZT. Maybe SuperZZT itself occupies that uncomfortable grey area between ZZT and MZX and no one uses it because everyone uses one or the other. All I know is that Seventh Shade is playing with fire, treading into dangerous territories from which no developer before him has (successfully) emerged.
I am unaware if SuperZZT has this problem, because I was unaware that anyone actually used SuperZZT. Maybe SuperZZT itself occupies that uncomfortable grey area between ZZT and MZX and no one uses it because everyone uses one or the other. All I know is that Seventh Shade is playing with fire, treading into dangerous territories from which no developer before him has (successfully) emerged.
"You're alive," said the maker, and smiled at the aardvark.
<Kjorteo> "yiff"
<gbelo> Wanna yiff.
<Kjorteo> yes
<gbelo> No no no.
<Kjorteo> "yiff"
<gbelo> Wanna yiff.
<Kjorteo> yes
<gbelo> No no no.
Code: Select all
if(gemmsg==0) {
gemmsg=1;
set_msg("Gems give you Health!");
}
As for changing the enemies I agree with the others here, it would be best to keep the predefined items as they are. However, the Lua script interpreter in DreamZZT will make it pretty easy to write your own more complex enemies instead of relying on built-in ones. You can create a script, say "better-roton.lua", and just include() that for all the objects you want to run that code. I'll start documenting that more when I'm happy with the Lua bindings, right now there's still a bit more I have to finish.
On an unrelated note, I started playing SuperZZT (I only played it briefly like 10 years ago lol..) and made a few observations.. the gems seem to give you a lot more health than they did in ZZT, I'll have to check exactly how much they give you. Also, bears only give you 1 point instead of 2 when you shoot them. I'll have to check to see if that's something I overlooked in ZZT too, I thought all enemies were worth 2 points.
Has anyone gotten SuperZZT to run in DosBOX? VMWare doesn't support 40 column mode, so the game looks a little weird in there. Also, VMWare is slow and overkill for SuperZZT. Maybe I'll put Win98 on one of my old boxes, or dig out the Tandy 1000 HX and play it in MS-DOS.