Page 1 of 38

Lyon

Posted: Tue Jun 07, 2011 5:32 pm
by Saxxon
Download & Source: 2012-07-28

Requirements:
- Windows 98 or later
- DirectX version 9 or higher: http://www.microsoft.com/download/en/details.aspx?id=35
- Microsoft .NET framework 2.0 or higher: http://www.microsoft.com/download/en/details.aspx?id=19

Getting a DirectX error and don't have permission to install all the DirectX libraries? I have attached the necessary DLLs, just place them in the application's folder (ONLY if you get these errors!)

Posted: Tue Jun 07, 2011 8:41 pm
by Commodore
what you mean like zzt experience?

Posted: Wed Jun 08, 2011 8:32 pm
by Saxxon
Commodore wrote:what you mean like zzt experience?
There are 3 things listed in the Z2 database that are credited to me: Z, ZZT Experience, and ZAP. At the very least get rid of the first two, the third isn't terrible but I still don't like it.

Posted: Wed Jun 08, 2011 11:33 pm
by Saxxon
Posted download link, contains Monster Zoo and a demo of me owning myself on the puzzle on level 3.

Posted: Thu Jun 09, 2011 10:37 am
by Commodore
well that's pretty damn cool.

Posted: Fri Jun 10, 2011 6:57 am
by Saxxon
I just realized, slimes aren't coded yet. Guess they are just so seldom used that I forgot about them! :x

Posted: Fri Jun 10, 2011 8:09 pm
by Dr. Dos
At a 10 second glance this is already more developed than Tyger ever was.

Posted: Wed Jun 15, 2011 3:18 pm
by Saxxon
Dr. Dos wrote:At a 10 second glance this is already more developed than Tyger ever was.
Tyger is more portable though. The problem with applications in .NET is that they require two things: Windows and .NET framework. This really limits the application to run only on one operating system.

I would love to get this into a portable state, but I really don't know how to code in any other languages that could be used for this game. For that reason, your Tyger project has a leg up on what I've got. What I'd like to do is to get the code finished in Lyon and help you implement it in Tyger.

Posted: Thu Jun 16, 2011 1:56 am
by Saxxon
Bug fixes for build 1.

- Conveyors should work properly now. The problem with the code was that I wasn't storing a temporary tile correctly if all surrounding blocks were pushable.
- Slimes are added.
- If you have WORLD.ZZT and WORLD.COM in the same folder, it will attempt to load font files if they are Font Mania format. The engine itself doesn't impose a height limit on fonts, but they can only be 8 pixels wide.
- When recording demos, extensions will be used properly (so WORLD.ZZT will create WORLD.ZDM). Additionally, all build 0 demos probably won't be compatible with the build 1 demos (but you can certainly try, there is no version or ID marker in the format currently)
- Title screen is now shown. Some games require it anyway. Pressing P will start the game. However, you will not be able to go back to the title screen unless you reload the world.
- Moving off the edge of a board with a lit torch will now properly update the screen.

Hope to have Build 1 ready tomorrow afternoon.

Posted: Thu Jun 16, 2011 3:52 am
by Smilymzx
If using UPAL/ZZT Custom Palette:
You should use a MZX .PAL FILE, Limit 1 per game!

There no converter that will turn 64-color raw PLDs (Whole EGA Palette) to 16-color (Regular 16-color Text Palette), But is possible to create.

If using FONT MANIA/ZZTAE (FM .COM font):
You should use a 8x14 MZX .CHR FILE, Limit 1 per game,

a converter exists to convert FM .COMs to MZX .CHR, but it is no longer availible with source, because it was included in Miwako's dead ZZT2MZX project. so recreating of this COM2CHR utility is possible.

These are actually there from utilities, You can find them in the Database/Archives in Z2/DMZX.

Posted: Thu Jun 16, 2011 1:56 pm
by Saxxon
I could support MZX format stuff, yeah. Will look into that today. PLDs would be easy as well, though you would only get the first 16 colors.

Posted: Thu Jun 16, 2011 3:43 pm
by Saxxon
- Custom fonts (CHR, COM) and palettes (PAL, PLD) are now supported. They must have the same name as the world that is being loaded. If they are found, they are automatically loaded.
- The 'I' key now toggles the I flag. This should simplify inventory based games. If you accidentally press 'I' during a game that doesn't use it, you can simply press 'I' again to turn the flag off.
- The numpad / and * keys will speed up and slow down the game speed, respectively. The scale is not yet the same as ZZT but the timing system needs to be updated anyway. These speed changes are NOT saved in demos (so you can fast-foward through parts of demos if you wish)

Build 1 is ready. Download links on first post.

Posted: Thu Jun 16, 2011 9:44 pm
by Smilymzx
You can modify the Shark's code to work with the SpiderWeb element instead of the Lava/Water element, Make the speed faster, and you have a spider,

A shark in my dead SZZT hack is a ASM hack of the spider, so it is the reverse of what I did, That is what you must do to make a spider!

Posted: Thu Jun 16, 2011 10:58 pm
by Saxxon
Smilymzx wrote:You can modify the Shark's code to work with the SpiderWeb element instead of the Lava/Water element, Make the speed faster, and you have a spider,

A shark in my dead SZZT hack is a ASM hack of the spider, so it is the reverse of what I did, That is what you must do to make a spider!
I'm thinking it's a little more complex than that. :) I won't code them in by guessing.

Edit: the spider code looks like this.

Code: Select all

            Private Sub ActSpider(ByVal Index As Integer)
                Dim V As Vector
                Dim DesiredVector As Vector
                Dim VectorSwap As Integer

                With Things(Index)
                    If .P1 <= Random(10) Then
                        V = Vector.Rnd
                    Else
                        V = EvalSeek(.X, .Y)
                    End If

                    If Not ActSpiderMove(Index, V) Then
                        VectorSwap = (Random(2) << 1) - 1
                        DesiredVector = New Vector(V.Y * VectorSwap, V.X * VectorSwap)
                        If Not ActSpiderMove(Index, DesiredVector) Then
                            DesiredVector = New Vector(-V.Y * VectorSwap, -V.X * VectorSwap)
                            If Not ActSpiderMove(Index, DesiredVector) Then
                                DesiredVector = New Vector(-V.X, -V.Y)
                                ActSpiderMove(Index, DesiredVector)
                            End If
                        End If
                    End If
                End With
            End Sub

            Private Function ActSpiderMove(ByVal Index As Integer, ByVal V As Vector) As Boolean
                Dim TargetX As Integer
                Dim TargetY As Integer

                With Things(Index)
                    TargetX = .X + V.X
                    TargetY = .Y + V.Y

                    Select Case ElementAt(TargetX, TargetY)
                        Case ElementPresets.Player
                            Attack(Index, TargetX, TargetY)
                        Case ElementPresets.Web
                            MoveThing(Index, TargetX, TargetY)
                        Case Else
                            Return False
                    End Select
                End With

                Return True
            End Function

Posted: Fri Jun 17, 2011 10:01 pm
by Smilymzx
That code looks correct to me!,

And Hopefully we will replace ZZT 3.2/4.0 with this as the recommended version we must use, But of course not until it goes to a state that makes it usable!

We might have to keep the DOS Versions, for nostalgic and archival purposes, This should also NOT be considered a clone, It's a well-done remake of (Super)ZZT, You got my approval on that.

Fight, Saxxon! for Great Justice!

EDIT for Saxxon: Try FreeBasic If you want a variant of BASIC that is portable, and it has partial QB45 support, All you need is a Setup Plan and a supported IDE for it, Then Reprogram it!

FreeBasic is for Linux/Windows 64 and 32bit systems, Freebasic should also be portable to other systems such as any newer Unixes. It is under GNU GPL just so you know.