rocksndiamonds.git
4 years agoadded missing handling of animation mode "random" for global animations
Holger Schemel [Tue, 31 Mar 2020 19:35:50 +0000 (21:35 +0200)]
added missing handling of animation mode "random" for global animations

4 years agofixed selecting ECS/AGA graphics if only ECS or AGA graphics exists
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.

4 years agoadded option to swap game elements in EM caves using V5/V6 EMC graphics
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).

4 years agofixed frame counter for EM engine for single step mode and engine snapshots
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

4 years agofixed centering screen to active player(s) at game start for EM engine
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

4 years agofixed bug with playing EM level with inactive player
Holger Schemel [Sat, 29 Feb 2020 13:49:35 +0000 (14:49 +0100)]
fixed bug with playing EM level with inactive player

4 years agomoved removing inactive players to separate loop
Holger Schemel [Sat, 29 Feb 2020 13:45:30 +0000 (14:45 +0100)]
moved removing inactive players to separate loop

4 years agofixed initializing locally connected player in single player mode
Holger Schemel [Sat, 29 Feb 2020 13:40:36 +0000 (14:40 +0100)]
fixed initializing locally connected player in single player mode

4 years agoadded drawing player twice when wrapping-around in fully visible levels
Holger Schemel [Wed, 26 Feb 2020 07:59:24 +0000 (08:59 +0100)]
added drawing player twice when wrapping-around in fully visible levels

4 years agofixed initialization of flag for wrap-around levels in EM engine
Holger Schemel [Wed, 26 Feb 2020 07:28:59 +0000 (08:28 +0100)]
fixed initialization of flag for wrap-around levels in EM engine

4 years agochanged element mapping for native EM levels (V4/V5/V6 element filters)
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)

4 years agochanged element mapping for native EM levels (final cave elements)
Holger Schemel [Sat, 22 Feb 2020 16:50:37 +0000 (17:50 +0100)]
changed element mapping for native EM levels (final cave elements)

4 years agofixed bad formatting
Holger Schemel [Sat, 22 Feb 2020 13:46:52 +0000 (14:46 +0100)]
fixed bad formatting

4 years agofixed using correct wall elements for different EM level versions
Holger Schemel [Sat, 22 Feb 2020 13:29:19 +0000 (14:29 +0100)]
fixed using correct wall elements for different EM level versions

4 years agoadded byte positions to mapping tables for EM engine
Holger Schemel [Sat, 22 Feb 2020 12:04:07 +0000 (13:04 +0100)]
added byte positions to mapping tables for EM engine

4 years agoimproved game element display names
Holger Schemel [Sat, 22 Feb 2020 11:52:25 +0000 (12:52 +0100)]
improved game element display names

4 years agominor code cleanup
Holger Schemel [Fri, 21 Feb 2020 16:03:59 +0000 (17:03 +0100)]
minor code cleanup

4 years agochanged type of some variables
Holger Schemel [Fri, 21 Feb 2020 15:14:37 +0000 (16:14 +0100)]
changed type of some variables

4 years agoimproved code for loading native EM levels
Holger Schemel [Fri, 21 Feb 2020 11:01:23 +0000 (12:01 +0100)]
improved code for loading native EM levels

4 years agorenamed some variables and changed some initializations
Holger Schemel [Fri, 21 Feb 2020 08:34:27 +0000 (09:34 +0100)]
renamed some variables and changed some initializations

4 years agominor change of initialization for EM engine caves
Holger Schemel [Thu, 20 Feb 2020 21:04:45 +0000 (22:04 +0100)]
minor change of initialization for EM engine caves

4 years agorenamed and removed some variables
Holger Schemel [Thu, 20 Feb 2020 17:36:53 +0000 (18:36 +0100)]
renamed and removed some variables

4 years agochanged order of some structures in EM engine
Holger Schemel [Thu, 20 Feb 2020 17:17:11 +0000 (18:17 +0100)]
changed order of some structures in EM engine

4 years agoadded flags for test mode, teamwork mode and infinite levels to 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

4 years agofixed incorrectly using steelwall border for non-R'n'D engine levels
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

4 years agoadded setup option to force scroll delay when using the EM engine
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.

4 years agofixed wrong variable type
Holger Schemel [Thu, 20 Feb 2020 10:08:06 +0000 (11:08 +0100)]
fixed wrong variable type

4 years agofixed keeping vertical player position when wrapping in EM engine
Holger Schemel [Thu, 20 Feb 2020 09:57:27 +0000 (10:57 +0100)]
fixed keeping vertical player position when wrapping in EM engine

4 years agorenamed some variables to better describe their purpose
Holger Schemel [Thu, 20 Feb 2020 08:55:47 +0000 (09:55 +0100)]
renamed some variables to better describe their purpose

4 years agofixed broken screen blitting if cave is smaller than screen for EM engine
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

4 years agocleanup of code to blit screen bitmap to target bitmap 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

4 years agoextended maximum number of android clone elements from 16 to 32
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.)

4 years agoadded support for text above drawing areas in level editor
Holger Schemel [Wed, 19 Feb 2020 21:13:50 +0000 (22:13 +0100)]
added support for text above drawing areas in level editor

4 years agoimproved setting android clone elements
Holger Schemel [Wed, 19 Feb 2020 16:15:06 +0000 (17:15 +0100)]
improved setting android clone elements

4 years agoimproved error handling code when mapping EM engine cave/game 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

4 years agorenamed constant
Holger Schemel [Wed, 19 Feb 2020 15:10:06 +0000 (16:10 +0100)]
renamed constant

4 years agochanged order of some game elements in EM engine
Holger Schemel [Wed, 19 Feb 2020 15:03:00 +0000 (16:03 +0100)]
changed order of some game elements in EM engine

4 years agoadded using separate constants for tiles in EM engine caves and game logic
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

4 years agoremoved unused declarations
Holger Schemel [Wed, 19 Feb 2020 14:49:21 +0000 (15:49 +0100)]
removed unused declarations

4 years agochanged some initial cave elements for EM engine
Holger Schemel [Wed, 19 Feb 2020 11:28:02 +0000 (12:28 +0100)]
changed some initial cave elements for EM engine

4 years agochanged name of game element in EM engine
Holger Schemel [Wed, 19 Feb 2020 11:15:06 +0000 (12:15 +0100)]
changed name of game element in EM engine

4 years agofixed checking position of inactive players
Holger Schemel [Tue, 18 Feb 2020 17:48:38 +0000 (18:48 +0100)]
fixed checking position of inactive players

4 years agoremoved repeated code
Holger Schemel [Tue, 18 Feb 2020 17:05:10 +0000 (18:05 +0100)]
removed repeated code

4 years agochanged function interface
Holger Schemel [Tue, 18 Feb 2020 17:02:33 +0000 (18:02 +0100)]
changed function interface

4 years agochanged frame counter for EM engine counting upward instead of downward
Holger Schemel [Tue, 18 Feb 2020 15:37:17 +0000 (16:37 +0100)]
changed frame counter for EM engine counting upward instead of downward

4 years agomoved calling EM engine logic to corresponding source file
Holger Schemel [Tue, 18 Feb 2020 15:02:09 +0000 (16:02 +0100)]
moved calling EM engine logic to corresponding source file

4 years agoremoved empty function
Holger Schemel [Tue, 18 Feb 2020 14:59:54 +0000 (15:59 +0100)]
removed empty function

4 years agochanged handling of chain explosions in EM engine
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).

4 years agominor change to handle explosion sound for EM engine
Holger Schemel [Tue, 18 Feb 2020 12:22:33 +0000 (13:22 +0100)]
minor change to handle explosion sound for EM engine

4 years agochanged name of game element in EM engine
Holger Schemel [Tue, 18 Feb 2020 10:56:16 +0000 (11:56 +0100)]
changed name of game element in EM engine

4 years agominor comments changes
Holger Schemel [Mon, 17 Feb 2020 09:15:42 +0000 (10:15 +0100)]
minor comments changes

4 years agocleanup of some source files and functions for EM engine
Holger Schemel [Sun, 16 Feb 2020 20:58:41 +0000 (21:58 +0100)]
cleanup of some source files and functions for EM engine

4 years agorenamed variable
Holger Schemel [Sun, 16 Feb 2020 20:21:48 +0000 (21:21 +0100)]
renamed variable

4 years agomoved global random variable for EM engine to game structure
Holger Schemel [Sun, 16 Feb 2020 20:20:32 +0000 (21:20 +0100)]
moved global random variable for EM engine to game structure

4 years agochanged order of some game elements in EM engine
Holger Schemel [Sun, 16 Feb 2020 18:50:50 +0000 (19:50 +0100)]
changed order of some game elements in EM engine

4 years agominor comments changes
Holger Schemel [Sat, 15 Feb 2020 21:01:47 +0000 (22:01 +0100)]
minor comments changes

4 years agoadded internal explosion objects in EM engine
Holger Schemel [Sat, 15 Feb 2020 20:53:01 +0000 (21:53 +0100)]
added internal explosion objects in EM engine

4 years agochanged handling of pushed 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

4 years agoadded pushed objects going into acid (with compile time option)
Holger Schemel [Sat, 15 Feb 2020 16:57:08 +0000 (17:57 +0100)]
added pushed objects going into acid (with compile time option)

4 years agocleanup of code for loading native EM levels
Holger Schemel [Fri, 14 Feb 2020 21:54:49 +0000 (22:54 +0100)]
cleanup of code for loading native EM levels

4 years agorenamed field in level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 20:07:18 +0000 (21:07 +0100)]
renamed field in level structure for EM engine

4 years agofixed initialization of level structure values 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

4 years agochanged order of some 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

4 years agorenamed some fields in level structure 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

4 years agoadded separate initial and runtime level structure definitions 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

4 years agocompleted setting runtime from initial level structure 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

4 years agochanged 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

4 years agoadded using separate level structures (initial and runtime) for EM engine
Holger Schemel [Thu, 13 Feb 2020 01:24:37 +0000 (02:24 +0100)]
added using separate level structures (initial and runtime) for EM engine

4 years agomoved initial cave data to level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 01:04:22 +0000 (02:04 +0100)]
moved initial cave data to level structure for EM engine

4 years agochanged order of some level structure values for EM engine
Holger Schemel [Thu, 13 Feb 2020 00:54:10 +0000 (01:54 +0100)]
changed order of some level structure values for EM engine

4 years agorenamed level pointer in level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 00:48:30 +0000 (01:48 +0100)]
renamed level pointer in level structure for EM engine

4 years agomoved initial player position to level structure for EM engine
Holger Schemel [Thu, 13 Feb 2020 00:27:05 +0000 (01:27 +0100)]
moved initial player position to level structure for EM engine

4 years agoremoved runtime values from level structure for EM and SP engine
Holger Schemel [Thu, 13 Feb 2020 00:12:28 +0000 (01:12 +0100)]
removed runtime values from level structure for EM and SP engine

4 years agomoved setting android clone data back to previous function
Holger Schemel [Wed, 12 Feb 2020 22:17:55 +0000 (23:17 +0100)]
moved setting android clone data back to previous function

This commit effectively revokes commit ccae7930.

(The old behaviour is needed when splitting the EM level structure
into static level data and runtime game data, because levels converted
from R'n'D to EM allow for more android clone elements than the
original EM engine would handle, so the android clone data array must
be part of the upcoming level data structure.)

4 years agomoved change of "grass" to "dirt" for pre-V5 EM levels to filter table
Holger Schemel [Mon, 10 Feb 2020 22:10:50 +0000 (23:10 +0100)]
moved change of "grass" to "dirt" for pre-V5 EM levels to filter table

4 years agochanged order of cave parameter initializations in EM engine
Holger Schemel [Mon, 10 Feb 2020 00:38:51 +0000 (01:38 +0100)]
changed order of cave parameter initializations in EM engine

4 years agoadded macros to get and put 16 bit big endian values
Holger Schemel [Mon, 10 Feb 2020 00:15:47 +0000 (01:15 +0100)]
added macros to get and put 16 bit big endian values

4 years agochanged some numbers from hexadecimal to decimal
Holger Schemel [Sun, 9 Feb 2020 22:52:56 +0000 (23:52 +0100)]
changed some numbers from hexadecimal to decimal

4 years agomoved setting android clone data to different function
Holger Schemel [Sun, 9 Feb 2020 13:03:35 +0000 (14:03 +0100)]
moved setting android clone data to different function

4 years agomoved function to different source file
Holger Schemel [Sun, 9 Feb 2020 12:56:45 +0000 (13:56 +0100)]
moved function to different source file

4 years agomoved cave handling code for EM engine to new source file
Holger Schemel [Sun, 9 Feb 2020 10:49:29 +0000 (11:49 +0100)]
moved cave handling code for EM engine to new source file

4 years agoadded missing handling of bumper element in EM engine
Holger Schemel [Thu, 6 Feb 2020 18:27:04 +0000 (19:27 +0100)]
added missing handling of bumper element in EM engine

4 years agochanged some EM engine game element names
Holger Schemel [Thu, 6 Feb 2020 18:16:22 +0000 (19:16 +0100)]
changed some EM engine game element names

4 years agochanged order of switch cases in EM engine source file
Holger Schemel [Thu, 6 Feb 2020 17:55:48 +0000 (18:55 +0100)]
changed order of switch cases in EM engine source file

4 years agochanged order of switch cases in EM engine source file
Holger Schemel [Wed, 5 Feb 2020 19:56:25 +0000 (20:56 +0100)]
changed order of switch cases in EM engine source file

4 years agoadded using some more game element tables in EM engine
Holger Schemel [Wed, 5 Feb 2020 17:52:42 +0000 (18:52 +0100)]
added using some more game element tables in EM engine

4 years agomoved game element tables to game logic source file
Holger Schemel [Wed, 5 Feb 2020 08:59:30 +0000 (09:59 +0100)]
moved game element tables to game logic source file

4 years agorenamed functions
Holger Schemel [Tue, 4 Feb 2020 23:22:54 +0000 (00:22 +0100)]
renamed functions

4 years agoremoved unused declarations
Holger Schemel [Tue, 4 Feb 2020 23:19:32 +0000 (00:19 +0100)]
removed unused declarations

4 years agomoved global variables for graphic info to graphics code
Holger Schemel [Tue, 4 Feb 2020 23:12:34 +0000 (00:12 +0100)]
moved global variables for graphic info to graphics code

4 years agocleanup of EM engine initialization
Holger Schemel [Tue, 4 Feb 2020 23:04:14 +0000 (00:04 +0100)]
cleanup of EM engine initialization

4 years agoremoved unused graphics initializations from EM engine
Holger Schemel [Tue, 4 Feb 2020 22:36:48 +0000 (23:36 +0100)]
removed unused graphics initializations from EM engine

4 years agoremoved unused bitmaps from EM engine
Holger Schemel [Tue, 4 Feb 2020 22:22:48 +0000 (23:22 +0100)]
removed unused bitmaps from EM engine

4 years agoremoved test/debug code for EM graphics engine
Holger Schemel [Tue, 4 Feb 2020 22:09:11 +0000 (23:09 +0100)]
removed test/debug code for EM graphics engine

This commit removes the testing and debugging capabilities for the
native Emerald Mine graphics engine (that can, but does not have to
be used with the native Emerald Mine game engine). The main purpose
of this test code was to check if the R'n'D "graphicsinfo.conf" style
graphics definitions, when used with the native Emerald Mine engine,
map exactly to this engine's hard-coded graphics definitions, to be
able to flexibly use R'n'D style graphics definitions also for the
native Emerald Mine game engine.

To test a given "graphicsinfo.conf" file against the internal graphics
definitions of the native Emerald Mine engine, its definitions have to
match an "objects" and "players" graphics file which is hard-coded in
the R'n'D graphics configuration file "conf_gfx.c" using the tokens
"emc_object" and "emc_sprite". (To prevent the game from using them in
non-debugging context, it normally refers to existing default artwork
instead of the test graphics files mentioned above.)

When testing or debugging, set these file names to "emc_objects.png"
and "emc_players.png" and enable upscaling to double size (assuming
the tiles in the test artwork have their original 16x16 pixel size).
Also set "DEBUG_EM_GFX" to "TRUE" in "src/tools.c". Then recompile.

When starting, the program performs the test, outputs all graphics
definitions that differ from the hard-coded internal definitions and
exits. To perform the test against the correct artwork, select the
artwork to test against before running the test. Usually the test is
executed using the graphics set "gfx_classic_emc.aga" from the Emerald
Mine Club level package, which uses the original artwork that is also
used by the game "Emerald Mine for X11".

(To perform the test described above, use a version of the code prior
to this commit.)

4 years agochanged some EM engine game element names
Holger Schemel [Tue, 4 Feb 2020 18:31:44 +0000 (19:31 +0100)]
changed some EM engine game element names

4 years agoremoved pre-processor directive for newly added EM engine elements
Holger Schemel [Tue, 4 Feb 2020 18:19:12 +0000 (19:19 +0100)]
removed pre-processor directive for newly added EM engine elements

4 years agofixed handling of fake acid for EM engine
Holger Schemel [Mon, 3 Feb 2020 22:43:15 +0000 (23:43 +0100)]
fixed handling of fake acid for EM engine

4 years agoadded fast player relocation for level wrap-around in EM engine
Holger Schemel [Sun, 2 Feb 2020 23:37:43 +0000 (00:37 +0100)]
added fast player relocation for level wrap-around in EM engine

4 years agochanged function from public to static
Holger Schemel [Sun, 2 Feb 2020 22:38:03 +0000 (23:38 +0100)]
changed function from public to static

4 years agoremoved unused function
Holger Schemel [Sun, 2 Feb 2020 22:33:45 +0000 (23:33 +0100)]
removed unused function