DizzyAGE Verm Custom 2.60

Need help with using DizzyAGE then look here
Post Reply
Free Range Egg
Posts: 33
Joined: Mon Feb 15, 2016 5:53 am

DizzyAGE Verm Custom 2.60

Post by Verm-V » Sun Feb 24, 2019 10:00 am

Here is my modification of DizzyAGE from V2.40 to V2.60
I modifiyed it for my own projects, and will be glad if someone find it usefull.
Also this version of DizzyAge V22.60 was used in Dizzy Scripting Engine for ZX Spectrum
You can download it here: DizzyAGE V2.60
or see the source code with all changes description and download links at DizzyAGE V2.60 wiki
Changes list:

2019-02-20 v2.60

- new function DebugReloadCfg() - reloads and apply cfg from ini file (can be useful to rederfine keys options)
- fixed bug: function KeyboardRead() now return correct keycodes

map editor
- fixed bug: map background color in editor window now saves correctly
- add option to change tilemap and tilebrouser background color

- fixed bug: correct dpi settings in applications to correct scaling in modern Windows

2018-12-08 v2.5b

- fixed bug: on some machines was fps drop with vsinc=on
- new function DebugVideoMode(1) - reinitialize video mode according to ini file (resolution, scale, vsync, cool, etc)
- new functions DebugScreenWidthMax() and DebugScreenHeightMax() - return windows desctop resolution
- new Game properties G_INTERLACE, G_INTERLACE_TYPE1, G_INTERLACE_TYPE2, G_INTERLACE_COLOR - responsible for scanline effect
- more information in status line (F11)
- in DEV mode key F7 - change vsync mode ON/OFF

map editor
- fixed bug: incorrect zooming on small maps
- more zoom levels - up to x8
- Ctrl+Cursor_keys - move tile_map window
- keys "K/J" - change grid size (also available in options menu) in map and tile_map windows
- new brush_properties and find_brush windows with full options list (key "L" or new buttons on menu bar)

- more layers - up to 16
If you have questions about new features and fixes, write here and I will answer.
For those who using mercurial vcs. You can clone repository by command:

Code: Select all

hg clone https://Verm@bitbucket.org/Verm/dizzyage
for compiling and building project you need Microsoft Visual Studio 2017

Team Yolkfolk
Team Yolkfolk
Posts: 1017
Joined: Sun Jan 21, 2007 6:34 pm

Re: DizzyAGE V2.60

Post by xelanoimis » Sun Feb 24, 2019 5:09 pm

Happy to see people have interest in DizzyAGE and that games are still made with it :D

That being said, I would like to keep any custom version of the engine, clearly marked as CUSTOM VERSION.

So please don't call this version DizzyAGE v2.60 since it will create confusion for developers.
It is a custom branch with some features that were needed in Verm's game.

I wouldn't recommend normal developers to strain away from the official version.

Maybe DizzyAGE v2.4Verm.02
To clearly state that it started from the official v2.4 and it is custom by Verm.

Some of the changes (like the filtering) could be useful for others, but needs to be properly reviewed before adding in the official version. Let's find a way to include such features that EVERYBODY needs.

My main concern is COMPATIBILITY and PORTABILITY of all games.
And there are now 141 games to care for :)
I want to be able to bring all the games on the future platforms just by porting the official DizzyAGE engine.
Games using custom versions of the engine may not work since I can't manage other people's changes.


So, one idea is to have a board of developers voting and reviewing eventual changes in the engine.
It can be a dedicated thread on this forums, where active developers or people with experience can review.
Ideally C++ experience and knowledge of the DizzyAGE engine as well.

We need to make sure these changes are REALLY NEEDED and that they don't break all the 141 games.
Also changes should not impose limitations on eventual future more important features or functionality.

Each proposed change should be explained in detail and reviewed by these developers (code and functionality).
State if it's a bug in the official version, an improvement to the editor for easy edit, or a new runtime feature for all games that will use latest version. Under no circumstances these changes should break the old games made with the official version.

Since my time is very limited, I should know if it's something that A LOT of developers want and if it MAKES SENSE to the DizzyAGE engine and its community. The purpose is not to make it do something it wasn't intended for, but small things that people always needed should be included rather than splitting the engine and the games in different versions.


Team Yolkfolk
Team Yolkfolk
Posts: 1017
Joined: Sun Jan 21, 2007 6:34 pm

Re: DizzyAGE Verm Custom 2.60

Post by xelanoimis » Sun Feb 24, 2019 5:16 pm

I had a quick look through the changes and here are a few quick thoughts:
Not trying to do a full review, since I'd like first to know if any of these changes are voted by many developers as really needed in the official version.

included engine specific lib in edidor code
losing portability on other platforms
#include "Mmsystem.h"
#pragma comment(lib,"winmm.lib")
what is the need of timeBeginPeriod(1);
if really needed should be wrapped at engine level
if optional, config must be exposed

Filter option could be a good addition
for games that don't need pixel perfect
not sure the implementation is right
maybe shouyld come like other options, from cfg.LoadRenderCfg
not directly from ini in InitVideoMode
or it should be an option per game
not sure if developer or player should change it during game
either the game was made using this or not.

I see the idea of a retro tv effect
but I don't think this is the right implementation
lots of lines
this is usually done with textures, like postprocess
a more generic flow for postprocess effect should be used
should be doable from script

too much info, should keep only base stuff

opengl api
for compatibility reasons the flow of choosing the api was carefully written
not sure now what are the implications of adding m_api in cfg like that
but in your LoadRenderCfg i think there's a bug
shouldn't be cfg.m_api = api?
the function is supposed to write in cfg and api, not in m_api

versioning check was also different
currently 2.4 is the same as 2.41 or 2.4b
so small changes in the engine can be added without affecting the games

keyboard changes
not sure why you changed
int key = qcount ? I9_GetKeyQValue(0) : 0;
int key = qcount ? I9_GetKeyQCode(0) : 0;
since for the status function it's still
I think both should return the state of the key, one by code, one by queue
(not sure though now)

accessing desktop resolution in script
may create compatibility and portability issues
with games that start doing stuff with the game's window

keep in mind that the idea is to be able to move these games
on future platforms as easy as possible

not used?
what's the purpose?

F8 key to toggle filter state?
how does it work? (hold/release?) what's the purpose
draw stats should be basic info (fps)

might be good - couldn't check in detail now

checking for !ctrl
was it a bug that this check was missing?

all documentation texts should be in English, including todo. Versions in other languages are ok, but should be in sync with the English ones.

Hard Boiled Egg
Posts: 1569
Joined: Sat Aug 08, 2009 10:47 am
Location: Balham - gateway to the south

Re: DizzyAGE Verm Custom 2.60

Post by Grandad » Wed Feb 27, 2019 10:13 am

I'd love to be able to make a reasoned response, but I'm as thick as a brick when it comes to 'proper' coding. I like version 2.4 even though I still have to struggle at times to understand why something happens - and personally, would not like to see major changes enforced on people just trying to make fun games for people to enjoy, unless the people making the changes can write 'idiot guides' that explain changes in a language us 'amateurs' can understand. :v2_dizzy_confused2:

Team Yolkfolk
Team Yolkfolk
Posts: 1017
Joined: Sun Jan 21, 2007 6:34 pm

Re: DizzyAGE Verm Custom 2.60

Post by xelanoimis » Fri Mar 01, 2019 5:41 pm

Yes, Grandad, that's my plan. I will update the official version only if something is really needed for many users and it's easy to explain to everyone and deliver it in a smooth format with documentation and examples. No worries.

For advanced users who want to play with something different, they have the code, but also the risk of loosing portability and the overhead for maintaining their versions in synch with eventual future official versions.

User avatar
Noggin the Nog
Hard Boiled Egg
Posts: 443
Joined: Sun Jul 01, 2012 12:04 am

Re: DizzyAGE Verm Custom 2.60

Post by Noggin the Nog » Fri Mar 01, 2019 7:10 pm

I've had a little play around with this and I've got a couple of thoughts.

First, I really like having extra layers. With the game I'm working on now, I'm finding 8 layers too restrictive.

More importantly, I've noticed that DizzyAGE tends to slow down when you increase the fps rate above 36. This may be because I have an old laptop, but I've found it happens with a bunch of games, including my current one. For example, The Last Hero tends to run slow sometimes. This doesn't happen with this new version and I wonder why?

Anyway, those are the two features I'd like to see included in DizzyAGE proper. Thanks VermV for making this available. :v2_dizzy_biggrin:

User avatar
Noggin the Nog
Hard Boiled Egg
Posts: 443
Joined: Sun Jul 01, 2012 12:04 am

Q for Adz, Alex & VermV

Post by Noggin the Nog » Mon Apr 29, 2019 8:16 pm

Just to make sure, is there any reason I can't make a game with this custom version of DizzyAGE and have it hosted on yolkfolk.com?

User avatar
Team Yolkfolk
Team Yolkfolk
Posts: 3061
Joined: Tue Jan 16, 2007 7:43 am
Location: Cornwall, UK

Re: DizzyAGE Verm Custom 2.60

Post by Adz.M » Mon Apr 29, 2019 8:51 pm

I haven't looked into the updates that Verm made to the engine.

But I'm always happy to accept any fan game for the site regardless of which build of DizzyAGE It's made on.

Post Reply