Lyon

Discuss how totally awesome Bang! is here.

Moderator: Terryn

User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Fixed the board edge issue - it was caused by some code I removed. Fixed inaccuracy with player shots, probably won't be noticeable but it more closely matches the assembly code now. Fixed object execution order, should be more accurate.

Edit: Fixed forcing the game to start from the title screen. This fixes "forced" from ZEOL and Run-On. Added "Paused..." message on status bar.

A little more information about the forced game start. When you use a passage, it puts the game into a pause mode. Pause is hard-coded to make wherever you step into a player tile. The title screen loop sets the monitor tile immediately but does not check this after the board is in motion.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

I thought maybe you guys would like these fixes.

The energizer color bug hasn't been worked on. Aside from that all I can tell that is missing is sound and that stupid bug in Mission:Enigma. I can't seem to find where the memory is being corrupted that makes this happen. This bug is so obscure (and stupid) that I really shouldn't have to patch it up. But because this aims to be true to ZZT so...
Attachments
Lyon.zip
(94.89 KiB) Downloaded 177 times
Lyon-src.zip
(106.1 KiB) Downloaded 179 times
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

If you follow zzt's example and leave bugs in, they become "features"
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Commodore wrote:If you follow zzt's example and leave bugs in, they become "features"
Yes but I want fully compatible "features" ;)
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Sound is added and fully functional. I even went so far as to add the player step sound effect. Square wave tones are now synthesized. Music playback works as well, and I have been testing it with #PLAY v5. However, there is NOT a cap on the music buffer size like ZZT - I haven't verified what this limit actually is so it'll just keep piling on #PLAY commands until you run out of memory or clear it in some other way such as turning off sound. I'm led to believe this might be 256 bytes. ZZT actually converts #PLAY commands into its own internal format (2 bytes/note), which matches the other sound effects in the game.

I have NOT had the opportunity to test the sound output on any other machine, so PLEASE tell me if it does not work for you.

Forest sounds are appropriately different between ZZT and Super ZZT - my implementation was to allow the forest sound to be customizable and it just cycles through a set of notes. ZZT only has 1, but Super ZZT cycles through 8.

I found a bug in the world saver when trying to save a game when playing BURGLAR!. Actually, I don't even know why it happened but I implemented some more checking to make sure converting down to disk format would be OK (I don't use bytes to store ID/color data)

The editor hasn't been changed yet - I want to finish all ZZT features before I go reconstructing it.

There are still a couple cosmetic bugs: e quiet/noisy does not change. The function still works. I haven't touched the energizer color bug but that doesn't even affect gameplay. The board-edge-scroll technique in ZEOL shows the target board while the scroll is being shown instead of after; this doesn't affect gameplay, and due to the way the scroll loop is implemented in ZZT I have no plans to fix this.
Attachments
Lyon-src.zip
(117.24 KiB) Downloaded 166 times
Lyon.zip
(101.85 KiB) Downloaded 172 times
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

I know you normally can't press B on the title screen, but on burglar the music won't stay quiet even though it cuts out for a moment. Other than that the sound works fine and sounds great.

It'd be nice if the world went back to the title screen instead of closing the window when you press escape after you die.
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Commodore wrote:I know you normally can't press B on the title screen, but on burglar the music won't stay quiet even though it cuts out for a moment. Other than that the sound works fine and sounds great.

It'd be nice if the world went back to the title screen instead of closing the window when you press escape after you die.
I can work that in. Roton works independently of disk access, dealing strictly with streams (could be memory, could be file, but they are created externally). What happens is on the title screen if the "game play" flag is already set it will actually reload the title screen from disk when you press P. Right now, Roton actually keeps a copy of the original world in memory. It's kind of a waste of memory but a ZZT world isn't that large anyway.

When I put that in I'll probably implement high score access as well.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

I never realized how LOUD the sound was. Wow. Going to reduce that by a few dB and possibly add a volume control.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

There was a bug with the sound engine that caused it to do weird things when pressing keys on the title screen - fixed.

Pressing ESC in game now brings you back to the title screen. Pressing P after this behaves just as ZZT does - it tries to reload the file with the same name as the world. I've implemented a file caching system. This will make it easier to use external files such as HLP files from an archive (like ZIP) as it would decompress the whole thing and stash the contents in memory. Of course if the world came from disk, nothing will be cached as it doesn't know what files are needed. Writing back to archives probably won't be supported - won't be an issue unless you reeeeally want to save high scores.

I don't want to tie Roton to a filesystem but I really don't have a choice here. So, the file cache system is a compromise. For worlds on disk it can read other files in the same folder. For worlds in memory it can read from a cache.

Edit: Did I mention you can take screenshots by double clicking the game window? :]
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

ESP part 2 crashes Lyon on the first board. This is because the #DIE command is present right after a window but there are options to choose from. Lyon discards the object then shows the message, which works fine unless you pick an option. Bah, this will be tricky.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

I fixed the bug in ESP2. Had to turn some loops inside-out to make this work as the scroll's display is actually looped in the OOP code, and this environment is event-based so.... yeah. I basically just save the OOP execution state and wait for the scroll to go away, then I jump back in the routine.

A bug where the sound would keep playing even after closing a game window has been fixed. Be quiet/noisy now swap properly in the UI.

Please test this release and let me know what you think.
Attachments
Lyon-src.zip
(118.64 KiB) Downloaded 177 times
Lyon.zip
(102.56 KiB) Downloaded 172 times
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

Had a go at the scroll #become bug. I'm thinking a more "controlled" or context sensitive crash is needed for something that crashes the world as opposed to crashing lyon.

Playing my game (i know) angelis finale, which was designed to be played at full speed, there is certainly a difference between lyon's execution speed and zzt. It looks like idle execution time, but I haven't screwed with it enough yet. It's noticeable in how long the dialouge boxes take to open, and also in the movement of the enemies. On board where there is shooting, the maximum speed is slowed by constantly sending a blank message to the message buffer, which lyon seems to handle pretty well.

Apologies if you are put off by the rather blue content of this game. Advanced warning as example: masturbation on the opening board (described not depicted).

Note also game speed changes the speed at which scrolls open and close.

It seems I can only switch between game windows by clicking on the bar of the window where I would like to click any part of the window. Also maybe the double-click for taking a screenshot it a tad long.
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Had a go at the scroll #become bug. I'm thinking a more "controlled" or context sensitive crash is needed for something that crashes the world as opposed to crashing lyon.
I'm trying to get all these 'crashes' to happen in a controlled manner - exceptions are thrown instead of the whole application going haywire. Any suggestions for changes to the error handling are very welcome.
Playing my game (i know) angelis finale, which was designed to be played at full speed, there is certainly a difference between lyon's execution speed and zzt. It looks like idle execution time, but I haven't screwed with it enough yet. It's noticeable in how long the dialouge boxes take to open, and also in the movement of the enemies. On board where there is shooting, the maximum speed is slowed by constantly sending a blank message to the message buffer, which lyon seems to handle pretty well.
ZZT's maximum speed removes the speed limit which is going to give you different results between machines. I try to do the same thing with Lyon but without letting it get out of control. Your max speed in Lyon might vary depending on how well .NET code runs on your system.
Apologies if you are put off by the rather blue content of this game. Advanced warning as example: masturbation on the opening board (described not depicted).
I've played it already :)
Note also game speed changes the speed at which scrolls open and close.
Is this for ZZT? In Lyon scroll speed is fixed (for now).
It seems I can only switch between game windows by clicking on the bar of the window where I would like to click any part of the window. Also maybe the double-click for taking a screenshot it a tad long.
I'll consider making it easier to switch windows. I'll probably allow the window switching shortcut as well - MDI has one built-in (TAB) but I think I might modify it (Ctrl+TAB?).

Also, I found a problem with consecutive scrolls with long messages - this has been fixed. I also rewrote the music/sound code so that it matches ZZT. This makes consecutive scroll sounds work properly and allows the scroll sound to play through before #PLAY.
-=solidfrog=-
newcomer
Posts: 8
Joined: Fri Mar 07, 2008 7:22 am

Re: Lyon

Post by -=solidfrog=- »

I downloaded the build 4...looks impressive! Good job! :keen:
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

-=solidfrog=- wrote:I downloaded the build 4...looks impressive! Good job! :keen:
Thanks! A lot has changed between build 4 and what we've got now. I think I should update the first post sometime with a 'build 5' per se.. even though the codebase is quite different
Post Reply