Page 1 of 20


Posted: Sun Jun 21, 2009 8:40 am
by Dr. Dos
So quantum P spoiled the Pygame based recreation of ZZT i've started working on.

Latest Version
Google Code page



Just put some ZZT files in the same directory as you would with ZZT. Press P to load a world and +/- to scroll through the boards.

Left clicking in the window is my shortcut to exit immediately so watch out for that!

Right clicking will spit out information on whatever element you right clicked on. Well, it will from source, there's no terminal that opens in the compiled version! Whoops.

Posted: Sun Jun 21, 2009 6:16 pm
by Zenith Nadir
that :c looks like a sad face

here's hoping you fix the object display soon. good luck, doctor.

Posted: Mon Jun 22, 2009 4:21 am
by Commodore
the bar on the bottom is really snazzy. nice use of the Pt char.

Posted: Mon Jun 22, 2009 9:37 am
by RobertP
Dr. Dos, you are one sharp son of a gun.

Posted: Mon Jun 22, 2009 8:03 pm
by Dr. Dos
Zenith Nadir wrote:that :c looks like a sad face

here's hoping you fix the object display soon. good luck, doctor.

Edit: Also Lineswalls and save files.


Posted: Tue Jun 23, 2009 10:44 am
by Zenith Nadir

Posted: Tue Jun 23, 2009 11:23 pm
by Smilymzx
That application is DEFINATE WIN! :keen:
It may be incomplete, but may start anyone off for making ZZT clones or ZZT editors. But this is cool!

Posted: Wed Jun 24, 2009 8:27 am
by Zenith Nadir
stop posting. just stop.

Posted: Wed Jun 24, 2009 4:43 pm
by Smilymzx
Zenith Nadir wrote:stop posting. just stop.
Zenith, Stop trolling on me. Seriously

Posted: Thu Jun 25, 2009 12:17 am
by Microwave
A fully functional multi-platform ZZT port with unlimited amount of flags and variable support with no limitations, it's what everyone needs. I hope you make it happen.

Posted: Mon Jul 06, 2009 8:52 pm
by zamros
I agree with microwave. But also include some of this action:

Posted: Fri Jul 17, 2009 1:34 am
by Dr. Dos
Sorry guys I was busy with furry shit and TF2!!!!!

Check it:


Do you see that title bar?

that is IMPORTANT debug information that you guys JUST WOULDN'T UNDERSTAND.


You can now move. Also super basic collision detection is in, by which I mean when you try to walk into something it checks if it's classified as WALKABLE, SOLID, or INTERACTION.

So solid/normal/breakable walls are SOLID as touching them does nothing. Fakes are walkable since nothing happens but you walking on them. Lions are INTERACTION since you get mauled by them in a visceral fight for the death.

More peculiar is the timing situation. I pretty much have no idea how these "timers" work, they just magically make the game run at the proper speed.

So my logic was as follows, there are 10 cycles in a second. If I ran the game at 60 frames per second there would be a cycle every 6 frames, or since it's fucking ZZT and there's no reason to redraw the screen that many times I could cut it down to 30 fps and have a cycle every 3 frames.

Then on each frame I would calculate the current cycle, and if it divided evenly into the element's cycle it would allow it to move or do whatever it needed.

Except this is too fast!

So just for the hell of it I tried 10fps which would mean a cycle every frame which is what ZZT does anyway now that I think about it (why did I think I needed 30 fps?) but even that is slightly faster than ZZT itself in tests of running the player from one end of the board to the other.

But I'm more inclined to believe that's ZZT on windows XP running slower than it should. It certainlly seems playable at least.

The horrible incorrect oop bug is still hanging around. Also the under tile thing ZZT does isn't actually implemented, those normals that disappear are actually fake walls.

Other features I started to add that didn't immediately work so I put off for the time being include:

* Custom fonts/palettes
* Custom walls/fakes by giving them stats

Posted: Sun Jul 19, 2009 7:55 am
by Quantum P.
I ran a few tests in ZZT under DOSBox, measuring the length of a cycle while intentionally slowing down ZZT. As I reduced the amount of slowdown, I got more cycles per minute, until it leveled off at about 546 cycles/min (DOSBox settings don't seem to matter much). This seems to imply that this is the correct speed, and not a symptom of ZZT being slow. But why 546 instead of 600?

I immediately remembered reading DOS programming tutorials about the PIT timer, because it has a wacky frequency: 1.193182 MHz. If you divide that by 65536 (2^16), you get 18.2 Hz. 546 cycles/min = 9.1 cycles/sec = half of 18.2 Hz. It's not proof, but it's enough of a coincidence to convince me.

So i guess ZZT's frame rate ought to be 9.1032548384 frames/sec. Though I can think of advantages with picking 10 frames/sec (ideal numbers vs. subtle familiarity of speed).

Anyway, Tyger is looking more and more awesome! Being a purist, I didn't like the HUD at first, but it's starting to grow on me.

What's the horrible incorrect oop bug?

Posted: Sun Jul 19, 2009 6:43 pm
by Dr. Dos

Code: Select all

Stat Elements: 25
TEMP IS ll blocks your way over the bridge.     "Grrr...  Pay for passage or forgetabout the castle!"!bribe;Bribe the troll...........10 Gems#end:bribe#take gems 10 toopoor#lock"Now hurry on along..."/i/n/i/n/i/i/i/i/i/i/i/i/s/i/s#unlock#end:isin#if scepter allow$The troll blocks you:     "Nobody leaves the castle without      the Scepter of Lots 'n Lots of      Power.  Return to your quest!"#end:allow#lock"Continue on, brave adventurer."#restore touch/n/i/n/i/i/i/i/i/i/i/i/s/s#unlock#end:toopoor"You can't afford it, idiot!",Bug MazeLength: 271
TEMP IS seek/i/i/i/i/i#send bombed

Code: Select all


#if blocked w isin
A troll blocks your way over the bridge.

     "Grrr...  Pay for passage or forget
about the castle!"

!bribe;Bribe the troll...........10 Gems

#take gems 10 toopoor
"Now hurry on along..."

#if scepter allow
$The troll blocks you:

     "Nobody leaves the castle without
      the Scepter of Lots 'n Lots of
      Power.  Return to your quest!"

"Continue on, brave adventurer."
#restore touch

"You can't afford it, idiot!"

Posted: Sun Jul 19, 2009 10:17 pm
by Dr. Dos
Also the timer actually seems to be fine with floating point numbers, so I'm now running it at 9.1032548384 fps and it seems to sync better with ZZT itself.


Furret: i found the problem
Furret: i'm writing a zzt module in python and i hit your bug and solved it
Furret: i don't know really why it happens, but the open() and read() functions fuck with newlines and can't be used to read binary files, it seems
Furret: instead you should use and