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 »

Commodore wrote:It is still the legendarily buggy Link's Adventure.
Very cool. Lyon now reproduces this bug exactly. I also managed, on the same board, to lock up both ZZT and Lyon in the exact same function! Reproducing this bug causes others to surface in interesting ways.

I never expected the built-in monsters to be so buggy.

I can't seem to reproduce your darkness bug.
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

Try running around in this room.
Attachments
test.zip
(370 Bytes) Downloaded 228 times
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Strange.. yeah I can definitely see it now. Even stranger, in all the other worlds with conveyors and dark rooms, I wasn't able to make this happen.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Try this build, should fix all the issues you mentioned. The darkness bug was caused by the code I put in so that conveyors fully surrounded by objects would operate fine (I will probably fix this and break it so it works like ZZT)
Attachments
Lyon-src.zip
(141.69 KiB) Downloaded 220 times
Lyon.zip
(121.13 KiB) Downloaded 235 times
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

System.IndexOutOfRangeException
at Roton.VideoGDI.CancelUpdate(Int32 X, Int32 Y)
at Roton.Environment.BoardFade()
at Roton.Environment.ExecuteMain()
at Roton.Environment.ExecuteMain()
at Roton.Environment.Execute()
at Lyon.GameForm.Tick()

tried to load a szzt save file with a zzt window open
*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:System.IndexOutOfRangeException
at Roton.VideoGDI.CancelUpdate(Int32 X, Int32 Y)
at Roton.Environment.BoardFade()
at Roton.Environment.ExecuteMain()
at Roton.Environment.ExecuteMain()
at Roton.Environment.Execute()
at Lyon.GameForm.Tick()

tried to load a szzt save file with a zzt window open
Got that szzt save file?
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

well I just figured out that it happens only when you press r to restore a game from a title screen.

also embarrassed about my choice of save name.
Attachments
ASS.zip
(20.41 KiB) Downloaded 219 times
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Ohhh yeah. Lyon does NOT like it when you change game engines that way. The game window is coded so that everything is set up on initialization. I need to make it so that it opens up a new window if the engine is different.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Here's a release that fixes the restore bug. If you change worlds or restore a game within a game window, it will check to make sure that the world types are the same. If they are not, it will open a new window.

Now, go forth and break things!

Next to implement: proper conveyor behavior (buggy when fully surrounded by pushable stat items such as bombs, etc)
Attachments
Lyon-src.zip
(141.76 KiB) Downloaded 231 times
Lyon.zip
(117.37 KiB) Downloaded 242 times
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

System.NullReferenceException
at Roton.File.SaveRLE(ZZTBinaryWriter Target, Tile[] Tiles, Library Library)
at Roton.File.SaveZZTBoard(ZZTBinaryWriter Target, Board B, Library Library)
at Roton.File.SaveZZT(ZZTBinaryWriter Target, Environment Source)
at Roton.File.Save(Stream TargetStream, Environment Source)
at Lyon.MainForm.FileSave(Environment E)
at Lyon.MainForm.SaveGameHandler(Environment E)
at Roton.Environment.ActPlayer(Int32 Index)
at Roton.Environment.Act(Int32 Index)
at Roton.Environment.PerformBoardCycle()
at Roton.Environment.ExecuteMain()
at Roton.Environment.Execute()
at Lyon.GameForm.Tick()

Opposite problem. tried to save over a szzt save file (same as above) while in a zzt game.
*POW* *CLANK* *PING*
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

The RLE generator crashed there- this would typically be as a result of a corrupted board. Do you have the world this happened on? The type of world wouldn't matter for this kind of error.

Edit: I may have identified one possible cause- when loading boards, if it is determined that the board is corrupted on load, the tiles array is actually left null. There wasn't a provision for this when saving the boards back. There will be a safeguard for the next time. But I would still like to see this in action, just to be sure it is fixed.

Edit 2: Conveyors now work exactly as in ZZT. If you surround a conveyor with bombs, it is possible to remove the player object from the game by lighting them a certain way, making it impossible to quit or do anything else!

Edit 3: I have improved the handling of corrupted boards, they will now be replaced with a blank board (but the board's title will still remain how it is in the file.)

New build coming in a few minutes.
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Bugs mentioned above were fixed. I also found one where having a ZZT window maximized while closing it to switch to another window could potentially cause a crash.

Next objective: implement Messenger as it is in ZZT. Currently, it is not part of the thing-list, and is processed separately. However, in order for bugs such as the border illusion trick in ZEOL-7 to work properly, it needs to be in the thing-list. Technical reason: a messenger is created on the target board which executes exactly once, which is what causes that board's border on the screen.

More time-consuming objective: fix #zap and #restore bugs. They have been present since the OOP rewrite and I just haven't gotten around to fixing them.
Attachments
Lyon-src.zip
(141.4 KiB) Downloaded 229 times
Lyon.zip
(117.38 KiB) Downloaded 218 times
User avatar
Saxxon
the Gargoyle.
Posts: 608
Joined: Tue Jul 25, 2006 10:02 am
Contact:

Re: Lyon

Post by Saxxon »

Making some progress on the zap/restore bug. I've implemented each of the commands correctly but the search routine needs some tweaking- it's zapping more than it should.
User avatar
Commodore
fgsdfs
Posts: 2471
Joined: Wed Mar 12, 2003 5:44 pm
Location: :noitacoL
Contact:

Re: Lyon

Post by Commodore »

I just looked at the VB (i am very rusty) and saw how zap jumps through the send and sendeval routines. Hairy stuff! I hope thats based on the disassembly, it seems like a roundabout way to do a search and replace routine. Maybe I've just been swimming around in machine language for too 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 »

Commodore wrote:I just looked at the VB (i am very rusty) and saw how zap jumps through the send and sendeval routines. Hairy stuff! I hope thats based on the disassembly, it seems like a roundabout way to do a search and replace routine. Maybe I've just been swimming around in machine language for too long...
Yeah it's nasty. I don't like all the ByRef stuff. I'd rather pass it all via a structure. But it should replicate exactly what I see in assembly. After it's all done, I would refactor it into something that makes sense.

SendEval searches for a label that matches the string, and target as well if applicable.
Post Reply