Holger Schemel [Thu, 28 May 2020 17:00:25 +0000 (19:00 +0200)]
added playing door/gate sound when wrapping-around in EM engine
Holger Schemel [Thu, 28 May 2020 16:32:04 +0000 (18:32 +0200)]
removed functions for correcting playfield buffer position for EM engine
Holger Schemel [Thu, 28 May 2020 16:30:09 +0000 (18:30 +0200)]
moved correcting playfield buffer sound position to EM engine
Holger Schemel [Thu, 28 May 2020 16:28:24 +0000 (18:28 +0200)]
moved correcting playfield buffer scroll position to EM engine
Holger Schemel [Thu, 28 May 2020 16:23:18 +0000 (18:23 +0200)]
fixed correcting playfield buffer offsets for EM engine
Holger Schemel [Thu, 28 May 2020 15:35:22 +0000 (17:35 +0200)]
added correcting playfield scroll position for EM engine
Holger Schemel [Thu, 28 May 2020 15:24:11 +0000 (17:24 +0200)]
moved functions for correcting playfield buffer position to EM engine
Holger Schemel [Thu, 28 May 2020 15:15:19 +0000 (17:15 +0200)]
changed correcting playfield buffer position for EM engine
Holger Schemel [Thu, 28 May 2020 13:58:49 +0000 (15:58 +0200)]
removed checks for (unused) border element for EM engine
Holger Schemel [Mon, 27 Apr 2020 21:53:00 +0000 (23:53 +0200)]
improved debug output for level/tape file, game and engine versions
Holger Schemel [Mon, 27 Apr 2020 21:29:15 +0000 (23:29 +0200)]
fixed element property that caused levels/tapes to be unsolvable
This fixes a bug introduced in version 2.0.1 that broke already
existing levels and tapes, and adds some compatibility code for levels
and tapes created later that require the previous behaviour.
This bugfix was needed for level set "rnd_sam_bateman", level 029,
for example, while the compatibility code was needed for level set
"rnd_gerhard_haeusler", level 023, for example.
Holger Schemel [Thu, 23 Apr 2020 16:32:19 +0000 (18:32 +0200)]
changed move speed for some elements for older game engine versions
This fix adds some compatibility code for a change in version 2.0.1
that lowered the speed of elements falling into magic wall elements.
This change was needed for level set "rnd_conor_mancone", level 014,
for example.
Holger Schemel [Thu, 23 Apr 2020 09:42:45 +0000 (11:42 +0200)]
minor whitespace change
Holger Schemel [Wed, 22 Apr 2020 22:27:19 +0000 (00:27 +0200)]
minor change of preprocessor macro
Holger Schemel [Wed, 22 Apr 2020 22:22:42 +0000 (00:22 +0200)]
replaced a few bitmask operations by modulo operations
Holger Schemel [Wed, 22 Apr 2020 10:57:15 +0000 (12:57 +0200)]
replaced bitmask for game/tape key/mouse actions by flags again
The previous solution using bitmasks was simply over-engineered.
Holger Schemel [Tue, 21 Apr 2020 20:13:13 +0000 (22:13 +0200)]
added support for tapes with both keyboard/joystick and mouse actions
Holger Schemel [Tue, 21 Apr 2020 19:42:07 +0000 (21:42 +0200)]
replaced flag for game/tape mouse actions by bitmask
Holger Schemel [Tue, 21 Apr 2020 19:20:40 +0000 (21:20 +0200)]
fixed bug with potentially wrong data size at tape position
Holger Schemel [Tue, 21 Apr 2020 18:10:59 +0000 (20:10 +0200)]
added function to calculate data size at tape position
Holger Schemel [Tue, 21 Apr 2020 18:05:33 +0000 (20:05 +0200)]
changed variable for counting number of tape players
Holger Schemel [Tue, 21 Apr 2020 15:57:41 +0000 (17:57 +0200)]
prepared code to support more tape actions than players
Holger Schemel [Tue, 21 Apr 2020 15:21:01 +0000 (17:21 +0200)]
moved conditions to separate "if" statement
Holger Schemel [Mon, 20 Apr 2020 21:23:55 +0000 (23:23 +0200)]
fixed bug with invisible, but active overlay touch buttons
This fixes a nasty bug with handling (invisible) overlay touch buttons
on devices without touch screen.
Holger Schemel [Mon, 20 Apr 2020 21:12:06 +0000 (23:12 +0200)]
moved flag for mouse click events from level to game structure
Without this change, click events for newly built levels that are
started from the level editor, but that are not yet saved, are not
recognized and not handled (because the corresponding flag was set
only when loading a level).
Holger Schemel [Fri, 17 Apr 2020 22:40:17 +0000 (00:40 +0200)]
added new change action "move player new" to CE change actions
The difference to the already existing change action "move player" is
that "move player new" only moves the player if this starts a "new"
movement (that is, the player is either not moving at all yet, or has
just finished moving to the next tile).
This is useful to prevent the case of an apparent "two-step movement"
caused by moving the player right after a movement has just started,
which then adds a "second" movement after the "first" movement.
Holger Schemel [Fri, 17 Apr 2020 22:14:20 +0000 (00:14 +0200)]
added mouse click events to CE change events (experimental)
This addition is sort of fundamental to the R'n'D game engine in that
it extends the previous limitation of game engine input to only four
direction and two buttons, now also handling mouse clicks to elements
in the playfield as configurable custom element change events.
In contrast to the Mirror Magic game engine (which already handles
mouse input), recording mouse click events to tapes still has to be
implemented.
Holger Schemel [Wed, 15 Apr 2020 19:32:21 +0000 (21:32 +0200)]
added being able to use CE condition "CE value/score gets 0"
While the custom element check "CE value/score gets 0 of [<element>]"
always worked fine, using the check "CE value/score gets 0" for the
same element never worked, because this required a previous change
action for changing the CE value or CE score in the same game frame,
but CEs can only change once in one game frame. (And checking in the
next game frame does not work either, because the CE value or score
does not change in the next frame, so it cannot be checked for zero.)
Resetting the CE's change counter after changing the CE value or score
makes it possible to test for zero directly afterwards.
Holger Schemel [Mon, 13 Apr 2020 15:57:30 +0000 (17:57 +0200)]
fixed drawing old screens for one video frame when skipping fading
This fixes a problem that was introduced with the last commit: When
skipping fading effects (like when changing screens by pressing the
"Escape" key), the special bitmaps used for fading screens are not
updated to the current source or target screens, which can result in
displaying old screens (displayed before pressing "Escape") for one
video frame.
(For example, this happened when pressing "Escape" on a sub-screen
of the setup menu, then pressing "Escape" again on the setup main
screen, which then resulted in displaying the setup sub-screen in the
main menu for a single video frame, causing "garbage flickering".)
(This change effectively reverts commit
5eabbc4d. Negative effects
on cross-fading were not observed during tests, but may still exist.)
Holger Schemel [Mon, 13 Apr 2020 15:26:01 +0000 (17:26 +0200)]
fixed drawing global animations when switching screens without fading
Before, when switching screens without fading (like leaving sub-menus
with default settings for screen fading, or screen changes after
pressing the "Escape" key), a single video frame was drawn without
global animations, which could cause flickering of animations.
With this fix, global animations will also be drawn for this video
frame.
Holger Schemel [Wed, 8 Apr 2020 12:15:40 +0000 (14:15 +0200)]
added option to generally set global animations to block clicks
Holger Schemel [Mon, 6 Apr 2020 08:55:11 +0000 (10:55 +0200)]
added (optional) main menu button to switch between ECS and AGA chipset
Holger Schemel [Mon, 6 Apr 2020 08:48:31 +0000 (10:48 +0200)]
added support for check buttons on menu screens
Holger Schemel [Tue, 31 Mar 2020 19:35:50 +0000 (21:35 +0200)]
added missing handling of animation mode "random" for global animations
Holger Schemel [Sat, 28 Mar 2020 10:57:35 +0000 (11:57 +0100)]
fixed selecting ECS/AGA graphics if only ECS or AGA graphics exists
In rare cases (like in EMC level set "emc_no_one_mine_19"), there are
only ECS or AGA graphics available, but not both (as it is usually the
case). If this happened, the available graphics set was not selected
if the ECS/AGA preference settings did not match (for example, if ECS
graphics are preferred, but only AGA graphics are available). As no
level set specific graphics were selected at all in such a case, this
resulted in falling back to the R'n'D default graphics.
This bug was fixed by ignoring the ECS/AGA graphics preference in such
cases, but always using the only available graphics set instead.
Holger Schemel [Fri, 20 Mar 2020 01:01:20 +0000 (02:01 +0100)]
added option to swap game elements in EM caves using V5/V6 EMC graphics
When having EMC level sets with EMC graphics that were originally
played with the EMC player program, but that have cave files in old
cave file format, setting "use_emc_tiles" to "true" causes certain
game elements to be swapped just like when loading cave files with new
EMC file format (version V5 or V6), like swapping dirt and grass and
some wall elements.
This is a level set option, not a graphics set option, so it is still
possible to override graphics for classic style EM level sets with
modern EMC graphics without game elements being changed (so dirt does
not change to grass in this case).
Holger Schemel [Fri, 20 Mar 2020 00:54:14 +0000 (01:54 +0100)]
fixed frame counter for EM engine for single step mode and engine snapshots
Holger Schemel [Mon, 2 Mar 2020 07:52:24 +0000 (08:52 +0100)]
fixed centering screen to active player(s) at game start for EM engine
Holger Schemel [Sat, 29 Feb 2020 13:49:35 +0000 (14:49 +0100)]
fixed bug with playing EM level with inactive player
Holger Schemel [Sat, 29 Feb 2020 13:45:30 +0000 (14:45 +0100)]
moved removing inactive players to separate loop
Holger Schemel [Sat, 29 Feb 2020 13:40:36 +0000 (14:40 +0100)]
fixed initializing locally connected player in single player mode
Holger Schemel [Wed, 26 Feb 2020 07:59:24 +0000 (08:59 +0100)]
added drawing player twice when wrapping-around in fully visible levels
Holger Schemel [Wed, 26 Feb 2020 07:28:59 +0000 (08:28 +0100)]
fixed initialization of flag for wrap-around levels in EM engine
Holger Schemel [Sat, 22 Feb 2020 16:51:24 +0000 (17:51 +0100)]
changed element mapping for native EM levels (V4/V5/V6 element filters)
Holger Schemel [Sat, 22 Feb 2020 16:50:37 +0000 (17:50 +0100)]
changed element mapping for native EM levels (final cave elements)
Holger Schemel [Sat, 22 Feb 2020 13:46:52 +0000 (14:46 +0100)]
fixed bad formatting
Holger Schemel [Sat, 22 Feb 2020 13:29:19 +0000 (14:29 +0100)]
fixed using correct wall elements for different EM level versions
Holger Schemel [Sat, 22 Feb 2020 12:04:07 +0000 (13:04 +0100)]
added byte positions to mapping tables for EM engine
Holger Schemel [Sat, 22 Feb 2020 11:52:25 +0000 (12:52 +0100)]
improved game element display names
Holger Schemel [Fri, 21 Feb 2020 16:03:59 +0000 (17:03 +0100)]
minor code cleanup
Holger Schemel [Fri, 21 Feb 2020 15:14:37 +0000 (16:14 +0100)]
changed type of some variables
Holger Schemel [Fri, 21 Feb 2020 11:01:23 +0000 (12:01 +0100)]
improved code for loading native EM levels
Holger Schemel [Fri, 21 Feb 2020 08:34:27 +0000 (09:34 +0100)]
renamed some variables and changed some initializations
Holger Schemel [Thu, 20 Feb 2020 21:04:45 +0000 (22:04 +0100)]
minor change of initialization for EM engine caves
Holger Schemel [Thu, 20 Feb 2020 17:36:53 +0000 (18:36 +0100)]
renamed and removed some variables
Holger Schemel [Thu, 20 Feb 2020 17:17:11 +0000 (18:17 +0100)]
changed order of some structures in EM engine
Holger Schemel [Thu, 20 Feb 2020 14:44:56 +0000 (15:44 +0100)]
added flags for test mode, teamwork mode and infinite levels to EM engine
Holger Schemel [Thu, 20 Feb 2020 12:56:59 +0000 (13:56 +0100)]
fixed incorrectly using steelwall border for non-R'n'D engine levels
Holger Schemel [Thu, 20 Feb 2020 10:42:34 +0000 (11:42 +0100)]
added setup option to force scroll delay when using the EM engine
The default value is not to force the configured scroll delay value
when playing levels with the EM engine, but always center the screen.
Holger Schemel [Thu, 20 Feb 2020 10:08:06 +0000 (11:08 +0100)]
fixed wrong variable type
Holger Schemel [Thu, 20 Feb 2020 09:57:27 +0000 (10:57 +0100)]
fixed keeping vertical player position when wrapping in EM engine
Holger Schemel [Thu, 20 Feb 2020 08:55:47 +0000 (09:55 +0100)]
renamed some variables to better describe their purpose
Holger Schemel [Thu, 20 Feb 2020 01:12:01 +0000 (02:12 +0100)]
fixed broken screen blitting if cave is smaller than screen for EM engine
Holger Schemel [Thu, 20 Feb 2020 01:02:49 +0000 (02:02 +0100)]
cleanup of code to blit screen bitmap to target bitmap for EM engine
Holger Schemel [Thu, 20 Feb 2020 00:31:59 +0000 (01:31 +0100)]
extended maximum number of android clone elements from 16 to 32
This change was needed because some native EM/EMC levels (like level
71 from level set "EMC Mine 4") filled more than 16 clone elements
into the element list for the "android" game element, so it was not
possible to inspect all clone elements in the level editor (or build
a similar level in the editor). While the level ran just fine in the
native EM engine, the maximum number of android clone elements was
increased to 32 for the R'n'D level editor and level format. (Levels
using the previous chunk that was limited to 16 game elements can
still be loaded and played, but new levels will now be saved with the
new, extended chunk.)
Holger Schemel [Wed, 19 Feb 2020 21:13:50 +0000 (22:13 +0100)]
added support for text above drawing areas in level editor
Holger Schemel [Wed, 19 Feb 2020 16:15:06 +0000 (17:15 +0100)]
improved setting android clone elements
Holger Schemel [Wed, 19 Feb 2020 15:20:36 +0000 (16:20 +0100)]
improved error handling code when mapping EM engine cave/game elements
Holger Schemel [Wed, 19 Feb 2020 15:10:06 +0000 (16:10 +0100)]
renamed constant
Holger Schemel [Wed, 19 Feb 2020 15:03:00 +0000 (16:03 +0100)]
changed order of some game elements in EM engine
Holger Schemel [Wed, 19 Feb 2020 15:00:15 +0000 (16:00 +0100)]
added using separate constants for tiles in EM engine caves and game logic
Holger Schemel [Wed, 19 Feb 2020 14:49:21 +0000 (15:49 +0100)]
removed unused declarations
Holger Schemel [Wed, 19 Feb 2020 11:28:02 +0000 (12:28 +0100)]
changed some initial cave elements for EM engine
Holger Schemel [Wed, 19 Feb 2020 11:15:06 +0000 (12:15 +0100)]
changed name of game element in EM engine
Holger Schemel [Tue, 18 Feb 2020 17:48:38 +0000 (18:48 +0100)]
fixed checking position of inactive players
Holger Schemel [Tue, 18 Feb 2020 17:05:10 +0000 (18:05 +0100)]
removed repeated code
Holger Schemel [Tue, 18 Feb 2020 17:02:33 +0000 (18:02 +0100)]
changed function interface
Holger Schemel [Tue, 18 Feb 2020 15:37:17 +0000 (16:37 +0100)]
changed frame counter for EM engine counting upward instead of downward
Holger Schemel [Tue, 18 Feb 2020 15:02:09 +0000 (16:02 +0100)]
moved calling EM engine logic to corresponding source file
Holger Schemel [Tue, 18 Feb 2020 14:59:54 +0000 (15:59 +0100)]
removed empty function
Holger Schemel [Tue, 18 Feb 2020 14:24:47 +0000 (15:24 +0100)]
changed handling of chain explosions in EM engine
So far, chain explosions in the native EM game engine were not handled
like in the original Kingsoft or EMC player on the Amiga, which can be
tested with a burning dynamite surrounded by eight bugs, which explode
to only one diamond (and lots of emeralds) instead of four diamonds.
This was changed now (while keeping the old behaviour for old tapes).
Holger Schemel [Tue, 18 Feb 2020 12:22:33 +0000 (13:22 +0100)]
minor change to handle explosion sound for EM engine
Holger Schemel [Tue, 18 Feb 2020 10:56:16 +0000 (11:56 +0100)]
changed name of game element in EM engine
Holger Schemel [Mon, 17 Feb 2020 09:15:42 +0000 (10:15 +0100)]
minor comments changes
Holger Schemel [Sun, 16 Feb 2020 20:58:41 +0000 (21:58 +0100)]
cleanup of some source files and functions for EM engine
Holger Schemel [Sun, 16 Feb 2020 20:21:48 +0000 (21:21 +0100)]
renamed variable
Holger Schemel [Sun, 16 Feb 2020 20:20:32 +0000 (21:20 +0100)]
moved global random variable for EM engine to game structure
Holger Schemel [Sun, 16 Feb 2020 18:50:50 +0000 (19:50 +0100)]
changed order of some game elements in EM engine
Holger Schemel [Sat, 15 Feb 2020 21:01:47 +0000 (22:01 +0100)]
minor comments changes
Holger Schemel [Sat, 15 Feb 2020 20:53:01 +0000 (21:53 +0100)]
added internal explosion objects in EM engine
Holger Schemel [Sat, 15 Feb 2020 17:37:00 +0000 (18:37 +0100)]
changed handling of pushed objects in EM engine
Holger Schemel [Sat, 15 Feb 2020 16:57:08 +0000 (17:57 +0100)]
added pushed objects going into acid (with compile time option)
Holger Schemel [Fri, 14 Feb 2020 21:54:49 +0000 (22:54 +0100)]
cleanup of code for loading native EM levels
Holger Schemel [Thu, 13 Feb 2020 20:07:18 +0000 (21:07 +0100)]
renamed field in level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 19:50:41 +0000 (20:50 +0100)]
fixed initialization of level structure values for EM engine
Holger Schemel [Thu, 13 Feb 2020 19:48:27 +0000 (20:48 +0100)]
changed order of some level structure values for EM engine
Holger Schemel [Thu, 13 Feb 2020 17:41:22 +0000 (18:41 +0100)]
renamed some fields in level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 17:22:08 +0000 (18:22 +0100)]
added separate initial and runtime level structure definitions for EM engine
Holger Schemel [Thu, 13 Feb 2020 17:12:19 +0000 (18:12 +0100)]
completed setting runtime from initial level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 17:07:37 +0000 (18:07 +0100)]
changed setting runtime from initial level structure for EM engine