From 18863a5655e9e07d548e2d673e7f82336703c8fb Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Wed, 24 Feb 2010 00:29:40 +0100 Subject: [PATCH] rnd-20100224-1-src * finished integrating R'n'D graphics engine into Supaplex game engine (although some animations do not support full customizability yet) * done integrating R'n'D graphics engine into file "Infotron.c" * done integrating R'n'D graphics engine into file "OrangeDisk.c" --- ChangeLog | 10 +- src/conf_gfx.c | 18 +- src/conf_gfx.h | 366 ++++++++++++++++--------------- src/conftime.h | 2 +- src/engines.h | 2 + src/game_sp/DDScrollBuffer.c | 4 + src/game_sp/DDSpriteBuffer.c | 4 + src/game_sp/Explosions.c | 60 ++++- src/game_sp/Globals.h | 11 +- src/game_sp/Infotrons.c | 40 ++-- src/game_sp/InitGameConditions.c | 4 + src/game_sp/MainForm.c | 42 ++++ src/game_sp/MainForm.h | 1 + src/game_sp/Murphy.c | 19 ++ src/game_sp/OrangeDisk.c | 5 + src/game_sp/Zonk.c | 1 - src/game_sp/init.c | 9 +- src/game_sp/vb_types.h | 2 +- src/init.c | 2 +- 19 files changed, 387 insertions(+), 215 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb3788ef..7ce8c682 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ +2010-02-23 + * finished integrating R'n'D graphics engine into Supaplex game engine + (although some animations do not support full customizability yet) + +2010-02-22 + * done integrating R'n'D graphics engine into file "Infotron.c" + * done integrating R'n'D graphics engine into file "OrangeDisk.c" + 2010-02-19 - * started integrating snapshot functionality into Supaplex game engine + * integrated engine snapshot functionality into Supaplex game engine 2010-02-16 * fixed bug in native Supaplex engine that broke several demo solutions diff --git a/src/conf_gfx.c b/src/conf_gfx.c index b781128a..28fbd129 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -281,7 +281,7 @@ struct ConfigInfo image_config[] = { "[sp_default].exploding.xpos", "8" }, { "[sp_default].exploding.ypos", "3" }, { "[sp_default].exploding.frames", "8" }, - { "[sp_default].exploding.delay", "3" }, + { "[sp_default].exploding.delay", "4" }, { "[sp_default].exploding.anim_mode", "linear" }, { "sp_zonk", "RocksSP.pcx" }, @@ -753,7 +753,7 @@ struct ConfigInfo image_config[] = { "sp_electron.exploding.xpos", "8" }, { "sp_electron.exploding.ypos", "4" }, { "sp_electron.exploding.frames", "8" }, - { "sp_electron.exploding.delay", "3" }, + { "sp_electron.exploding.delay", "4" }, { "sp_electron.exploding.anim_mode", "linear" }, { "sp_terminal", "RocksSP.pcx" }, @@ -4363,10 +4363,6 @@ struct ConfigInfo image_config[] = /* images not associated to game elements (used for menu screens etc.) */ /* keyword to stop parser: "NO_MORE_ELEMENT_IMAGES" <-- do not change! */ -#if 1 - { "sp_objects", "sp_objects.pcx" }, -#endif - #if 1 /* !!! TEMPORARILY STORED HERE -- PROBABLY TO BE CHANGED !!! */ @@ -4383,6 +4379,16 @@ struct ConfigInfo image_config[] = #endif #endif + { "sp_frame_horizontal", "RocksSP.pcx" }, + { "sp_frame_horizontal.xpos", "7" }, + { "sp_frame_horizontal.ypos", "14" }, + { "sp_frame_vertical", "RocksSP.pcx" }, + { "sp_frame_vertical.xpos", "6" }, + { "sp_frame_vertical.ypos", "14" }, + { "sp_frame_corner", "RocksSP.pcx" }, + { "sp_frame_corner.xpos", "5" }, + { "sp_frame_corner.ypos", "14" }, + { "toon_1", "RocksToons.pcx" }, { "toon_1.x", "2" }, { "toon_1.y", "72" }, diff --git a/src/conf_gfx.h b/src/conf_gfx.h index b5e3e132..a8557b04 100644 --- a/src/conf_gfx.h +++ b/src/conf_gfx.h @@ -1635,188 +1635,190 @@ #define IMG_GROUP_31_EDITOR 1614 #define IMG_GROUP_32 1615 #define IMG_GROUP_32_EDITOR 1616 -#define IMG_SP_OBJECTS 1617 -#define IMG_EMC_OBJECT 1618 -#define IMG_EMC_SPRITE 1619 -#define IMG_TOON_1 1620 -#define IMG_TOON_2 1621 -#define IMG_TOON_3 1622 -#define IMG_TOON_4 1623 -#define IMG_TOON_5 1624 -#define IMG_TOON_6 1625 -#define IMG_TOON_7 1626 -#define IMG_TOON_8 1627 -#define IMG_TOON_9 1628 -#define IMG_TOON_10 1629 -#define IMG_TOON_11 1630 -#define IMG_TOON_12 1631 -#define IMG_TOON_13 1632 -#define IMG_TOON_14 1633 -#define IMG_TOON_15 1634 -#define IMG_TOON_16 1635 -#define IMG_TOON_17 1636 -#define IMG_TOON_18 1637 -#define IMG_TOON_19 1638 -#define IMG_TOON_20 1639 -#define IMG_MENU_CALIBRATE_RED 1640 -#define IMG_MENU_CALIBRATE_BLUE 1641 -#define IMG_MENU_CALIBRATE_YELLOW 1642 -#define IMG_MENU_BUTTON 1643 -#define IMG_MENU_BUTTON_ACTIVE 1644 -#define IMG_MENU_BUTTON_LEFT 1645 -#define IMG_MENU_BUTTON_LEFT_ACTIVE 1646 -#define IMG_MENU_BUTTON_RIGHT 1647 -#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1648 -#define IMG_MENU_BUTTON_UP 1649 -#define IMG_MENU_BUTTON_UP_ACTIVE 1650 -#define IMG_MENU_BUTTON_DOWN 1651 -#define IMG_MENU_BUTTON_DOWN_ACTIVE 1652 -#define IMG_MENU_BUTTON_ENTER_MENU 1653 -#define IMG_MENU_BUTTON_ENTER_MENU_ACTIVE 1654 -#define IMG_MENU_BUTTON_LEAVE_MENU 1655 -#define IMG_MENU_BUTTON_LEAVE_MENU_ACTIVE 1656 -#define IMG_MENU_BUTTON_NEXT_LEVEL 1657 -#define IMG_MENU_BUTTON_NEXT_LEVEL_ACTIVE 1658 -#define IMG_MENU_BUTTON_PREV_LEVEL 1659 -#define IMG_MENU_BUTTON_PREV_LEVEL_ACTIVE 1660 -#define IMG_MENU_BUTTON_NAME 1661 -#define IMG_MENU_BUTTON_NAME_ACTIVE 1662 -#define IMG_MENU_BUTTON_LEVELS 1663 -#define IMG_MENU_BUTTON_LEVELS_ACTIVE 1664 -#define IMG_MENU_BUTTON_SCORES 1665 -#define IMG_MENU_BUTTON_SCORES_ACTIVE 1666 -#define IMG_MENU_BUTTON_EDITOR 1667 -#define IMG_MENU_BUTTON_EDITOR_ACTIVE 1668 -#define IMG_MENU_BUTTON_INFO 1669 -#define IMG_MENU_BUTTON_INFO_ACTIVE 1670 -#define IMG_MENU_BUTTON_GAME 1671 -#define IMG_MENU_BUTTON_GAME_ACTIVE 1672 -#define IMG_MENU_BUTTON_SETUP 1673 -#define IMG_MENU_BUTTON_SETUP_ACTIVE 1674 -#define IMG_MENU_BUTTON_QUIT 1675 -#define IMG_MENU_BUTTON_QUIT_ACTIVE 1676 -#define IMG_MENU_SCROLLBAR 1677 -#define IMG_MENU_SCROLLBAR_ACTIVE 1678 -#define IMG_FONT_INITIAL_1 1679 -#define IMG_FONT_INITIAL_2 1680 -#define IMG_FONT_INITIAL_3 1681 -#define IMG_FONT_INITIAL_4 1682 -#define IMG_FONT_TITLE_1 1683 -#define IMG_FONT_TITLE_2 1684 -#define IMG_FONT_TITLE_2_SETUP 1685 -#define IMG_FONT_MENU_1 1686 -#define IMG_FONT_MENU_1_ACTIVE 1687 -#define IMG_FONT_MENU_2 1688 -#define IMG_FONT_MENU_2_ACTIVE 1689 -#define IMG_FONT_TEXT_1 1690 -#define IMG_FONT_TEXT_1_MAIN 1691 -#define IMG_FONT_TEXT_1_LEVELS 1692 -#define IMG_FONT_TEXT_1_SETUP 1693 -#define IMG_FONT_TEXT_1_PREVIEW 1694 -#define IMG_FONT_TEXT_1_SCORES 1695 -#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1696 -#define IMG_FONT_TEXT_1_PANEL 1697 -#define IMG_FONT_TEXT_1_DOOR 1698 -#define IMG_FONT_TEXT_2 1699 -#define IMG_FONT_TEXT_2_MAIN 1700 -#define IMG_FONT_TEXT_2_LEVELS 1701 -#define IMG_FONT_TEXT_2_SETUP 1702 -#define IMG_FONT_TEXT_2_PREVIEW 1703 -#define IMG_FONT_TEXT_2_SCORES 1704 -#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1705 -#define IMG_FONT_TEXT_3 1706 -#define IMG_FONT_TEXT_3_LEVELS 1707 -#define IMG_FONT_TEXT_3_SETUP 1708 -#define IMG_FONT_TEXT_3_PREVIEW 1709 -#define IMG_FONT_TEXT_3_SCORES 1710 -#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1711 -#define IMG_FONT_TEXT_4 1712 -#define IMG_FONT_TEXT_4_MAIN 1713 -#define IMG_FONT_TEXT_4_LEVELS 1714 -#define IMG_FONT_TEXT_4_SETUP 1715 -#define IMG_FONT_TEXT_4_SCORES 1716 -#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1717 -#define IMG_FONT_ENVELOPE_1 1718 -#define IMG_FONT_ENVELOPE_2 1719 -#define IMG_FONT_ENVELOPE_3 1720 -#define IMG_FONT_ENVELOPE_4 1721 -#define IMG_FONT_INPUT_1 1722 -#define IMG_FONT_INPUT_1_MAIN 1723 -#define IMG_FONT_INPUT_1_ACTIVE 1724 -#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1725 -#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1726 -#define IMG_FONT_INPUT_2 1727 -#define IMG_FONT_INPUT_2_ACTIVE 1728 -#define IMG_FONT_OPTION_OFF 1729 -#define IMG_FONT_OPTION_ON 1730 -#define IMG_FONT_VALUE_1 1731 -#define IMG_FONT_VALUE_2 1732 -#define IMG_FONT_VALUE_OLD 1733 -#define IMG_FONT_LEVEL_NUMBER 1734 -#define IMG_FONT_LEVEL_NUMBER_ACTIVE 1735 -#define IMG_FONT_TAPE_RECORDER 1736 -#define IMG_FONT_GAME_INFO 1737 -#define IMG_FONT_INFO_ELEMENTS 1738 -#define IMG_FONT_INFO_LEVELSET 1739 -#define IMG_GLOBAL_BORDER 1740 -#define IMG_GLOBAL_DOOR 1741 -#define IMG_GLOBAL_BUSY 1742 -#define IMG_EDITOR_ELEMENT_BORDER 1743 -#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1744 -#define IMG_EDITOR_CASCADE_LIST 1745 -#define IMG_EDITOR_CASCADE_LIST_ACTIVE 1746 -#define IMG_BACKGROUND 1747 -#define IMG_BACKGROUND_TITLE_INITIAL 1748 -#define IMG_BACKGROUND_TITLE 1749 -#define IMG_BACKGROUND_MAIN 1750 -#define IMG_BACKGROUND_LEVELS 1751 -#define IMG_BACKGROUND_SCORES 1752 -#define IMG_BACKGROUND_EDITOR 1753 -#define IMG_BACKGROUND_INFO 1754 -#define IMG_BACKGROUND_INFO_ELEMENTS 1755 -#define IMG_BACKGROUND_INFO_MUSIC 1756 -#define IMG_BACKGROUND_INFO_CREDITS 1757 -#define IMG_BACKGROUND_INFO_PROGRAM 1758 -#define IMG_BACKGROUND_INFO_VERSION 1759 -#define IMG_BACKGROUND_INFO_LEVELSET 1760 -#define IMG_BACKGROUND_SETUP 1761 -#define IMG_BACKGROUND_PLAYING 1762 -#define IMG_BACKGROUND_DOOR 1763 -#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1 1764 -#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2 1765 -#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3 1766 -#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4 1767 -#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5 1768 -#define IMG_BACKGROUND_TITLESCREEN_1 1769 -#define IMG_BACKGROUND_TITLESCREEN_2 1770 -#define IMG_BACKGROUND_TITLESCREEN_3 1771 -#define IMG_BACKGROUND_TITLESCREEN_4 1772 -#define IMG_BACKGROUND_TITLESCREEN_5 1773 -#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1 1774 -#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2 1775 -#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3 1776 -#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4 1777 -#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5 1778 -#define IMG_BACKGROUND_TITLEMESSAGE_1 1779 -#define IMG_BACKGROUND_TITLEMESSAGE_2 1780 -#define IMG_BACKGROUND_TITLEMESSAGE_3 1781 -#define IMG_BACKGROUND_TITLEMESSAGE_4 1782 -#define IMG_BACKGROUND_TITLEMESSAGE_5 1783 -#define IMG_BACKGROUND_ENVELOPE_1 1784 -#define IMG_BACKGROUND_ENVELOPE_2 1785 -#define IMG_BACKGROUND_ENVELOPE_3 1786 -#define IMG_BACKGROUND_ENVELOPE_4 1787 -#define IMG_TITLESCREEN_INITIAL_1 1788 -#define IMG_TITLESCREEN_INITIAL_2 1789 -#define IMG_TITLESCREEN_INITIAL_3 1790 -#define IMG_TITLESCREEN_INITIAL_4 1791 -#define IMG_TITLESCREEN_INITIAL_5 1792 -#define IMG_TITLESCREEN_1 1793 -#define IMG_TITLESCREEN_2 1794 -#define IMG_TITLESCREEN_3 1795 -#define IMG_TITLESCREEN_4 1796 -#define IMG_TITLESCREEN_5 1797 +#define IMG_EMC_OBJECT 1617 +#define IMG_EMC_SPRITE 1618 +#define IMG_SP_FRAME_HORIZONTAL 1619 +#define IMG_SP_FRAME_VERTICAL 1620 +#define IMG_SP_FRAME_CORNER 1621 +#define IMG_TOON_1 1622 +#define IMG_TOON_2 1623 +#define IMG_TOON_3 1624 +#define IMG_TOON_4 1625 +#define IMG_TOON_5 1626 +#define IMG_TOON_6 1627 +#define IMG_TOON_7 1628 +#define IMG_TOON_8 1629 +#define IMG_TOON_9 1630 +#define IMG_TOON_10 1631 +#define IMG_TOON_11 1632 +#define IMG_TOON_12 1633 +#define IMG_TOON_13 1634 +#define IMG_TOON_14 1635 +#define IMG_TOON_15 1636 +#define IMG_TOON_16 1637 +#define IMG_TOON_17 1638 +#define IMG_TOON_18 1639 +#define IMG_TOON_19 1640 +#define IMG_TOON_20 1641 +#define IMG_MENU_CALIBRATE_RED 1642 +#define IMG_MENU_CALIBRATE_BLUE 1643 +#define IMG_MENU_CALIBRATE_YELLOW 1644 +#define IMG_MENU_BUTTON 1645 +#define IMG_MENU_BUTTON_ACTIVE 1646 +#define IMG_MENU_BUTTON_LEFT 1647 +#define IMG_MENU_BUTTON_LEFT_ACTIVE 1648 +#define IMG_MENU_BUTTON_RIGHT 1649 +#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1650 +#define IMG_MENU_BUTTON_UP 1651 +#define IMG_MENU_BUTTON_UP_ACTIVE 1652 +#define IMG_MENU_BUTTON_DOWN 1653 +#define IMG_MENU_BUTTON_DOWN_ACTIVE 1654 +#define IMG_MENU_BUTTON_ENTER_MENU 1655 +#define IMG_MENU_BUTTON_ENTER_MENU_ACTIVE 1656 +#define IMG_MENU_BUTTON_LEAVE_MENU 1657 +#define IMG_MENU_BUTTON_LEAVE_MENU_ACTIVE 1658 +#define IMG_MENU_BUTTON_NEXT_LEVEL 1659 +#define IMG_MENU_BUTTON_NEXT_LEVEL_ACTIVE 1660 +#define IMG_MENU_BUTTON_PREV_LEVEL 1661 +#define IMG_MENU_BUTTON_PREV_LEVEL_ACTIVE 1662 +#define IMG_MENU_BUTTON_NAME 1663 +#define IMG_MENU_BUTTON_NAME_ACTIVE 1664 +#define IMG_MENU_BUTTON_LEVELS 1665 +#define IMG_MENU_BUTTON_LEVELS_ACTIVE 1666 +#define IMG_MENU_BUTTON_SCORES 1667 +#define IMG_MENU_BUTTON_SCORES_ACTIVE 1668 +#define IMG_MENU_BUTTON_EDITOR 1669 +#define IMG_MENU_BUTTON_EDITOR_ACTIVE 1670 +#define IMG_MENU_BUTTON_INFO 1671 +#define IMG_MENU_BUTTON_INFO_ACTIVE 1672 +#define IMG_MENU_BUTTON_GAME 1673 +#define IMG_MENU_BUTTON_GAME_ACTIVE 1674 +#define IMG_MENU_BUTTON_SETUP 1675 +#define IMG_MENU_BUTTON_SETUP_ACTIVE 1676 +#define IMG_MENU_BUTTON_QUIT 1677 +#define IMG_MENU_BUTTON_QUIT_ACTIVE 1678 +#define IMG_MENU_SCROLLBAR 1679 +#define IMG_MENU_SCROLLBAR_ACTIVE 1680 +#define IMG_FONT_INITIAL_1 1681 +#define IMG_FONT_INITIAL_2 1682 +#define IMG_FONT_INITIAL_3 1683 +#define IMG_FONT_INITIAL_4 1684 +#define IMG_FONT_TITLE_1 1685 +#define IMG_FONT_TITLE_2 1686 +#define IMG_FONT_TITLE_2_SETUP 1687 +#define IMG_FONT_MENU_1 1688 +#define IMG_FONT_MENU_1_ACTIVE 1689 +#define IMG_FONT_MENU_2 1690 +#define IMG_FONT_MENU_2_ACTIVE 1691 +#define IMG_FONT_TEXT_1 1692 +#define IMG_FONT_TEXT_1_MAIN 1693 +#define IMG_FONT_TEXT_1_LEVELS 1694 +#define IMG_FONT_TEXT_1_SETUP 1695 +#define IMG_FONT_TEXT_1_PREVIEW 1696 +#define IMG_FONT_TEXT_1_SCORES 1697 +#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1698 +#define IMG_FONT_TEXT_1_PANEL 1699 +#define IMG_FONT_TEXT_1_DOOR 1700 +#define IMG_FONT_TEXT_2 1701 +#define IMG_FONT_TEXT_2_MAIN 1702 +#define IMG_FONT_TEXT_2_LEVELS 1703 +#define IMG_FONT_TEXT_2_SETUP 1704 +#define IMG_FONT_TEXT_2_PREVIEW 1705 +#define IMG_FONT_TEXT_2_SCORES 1706 +#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1707 +#define IMG_FONT_TEXT_3 1708 +#define IMG_FONT_TEXT_3_LEVELS 1709 +#define IMG_FONT_TEXT_3_SETUP 1710 +#define IMG_FONT_TEXT_3_PREVIEW 1711 +#define IMG_FONT_TEXT_3_SCORES 1712 +#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1713 +#define IMG_FONT_TEXT_4 1714 +#define IMG_FONT_TEXT_4_MAIN 1715 +#define IMG_FONT_TEXT_4_LEVELS 1716 +#define IMG_FONT_TEXT_4_SETUP 1717 +#define IMG_FONT_TEXT_4_SCORES 1718 +#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1719 +#define IMG_FONT_ENVELOPE_1 1720 +#define IMG_FONT_ENVELOPE_2 1721 +#define IMG_FONT_ENVELOPE_3 1722 +#define IMG_FONT_ENVELOPE_4 1723 +#define IMG_FONT_INPUT_1 1724 +#define IMG_FONT_INPUT_1_MAIN 1725 +#define IMG_FONT_INPUT_1_ACTIVE 1726 +#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1727 +#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1728 +#define IMG_FONT_INPUT_2 1729 +#define IMG_FONT_INPUT_2_ACTIVE 1730 +#define IMG_FONT_OPTION_OFF 1731 +#define IMG_FONT_OPTION_ON 1732 +#define IMG_FONT_VALUE_1 1733 +#define IMG_FONT_VALUE_2 1734 +#define IMG_FONT_VALUE_OLD 1735 +#define IMG_FONT_LEVEL_NUMBER 1736 +#define IMG_FONT_LEVEL_NUMBER_ACTIVE 1737 +#define IMG_FONT_TAPE_RECORDER 1738 +#define IMG_FONT_GAME_INFO 1739 +#define IMG_FONT_INFO_ELEMENTS 1740 +#define IMG_FONT_INFO_LEVELSET 1741 +#define IMG_GLOBAL_BORDER 1742 +#define IMG_GLOBAL_DOOR 1743 +#define IMG_GLOBAL_BUSY 1744 +#define IMG_EDITOR_ELEMENT_BORDER 1745 +#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1746 +#define IMG_EDITOR_CASCADE_LIST 1747 +#define IMG_EDITOR_CASCADE_LIST_ACTIVE 1748 +#define IMG_BACKGROUND 1749 +#define IMG_BACKGROUND_TITLE_INITIAL 1750 +#define IMG_BACKGROUND_TITLE 1751 +#define IMG_BACKGROUND_MAIN 1752 +#define IMG_BACKGROUND_LEVELS 1753 +#define IMG_BACKGROUND_SCORES 1754 +#define IMG_BACKGROUND_EDITOR 1755 +#define IMG_BACKGROUND_INFO 1756 +#define IMG_BACKGROUND_INFO_ELEMENTS 1757 +#define IMG_BACKGROUND_INFO_MUSIC 1758 +#define IMG_BACKGROUND_INFO_CREDITS 1759 +#define IMG_BACKGROUND_INFO_PROGRAM 1760 +#define IMG_BACKGROUND_INFO_VERSION 1761 +#define IMG_BACKGROUND_INFO_LEVELSET 1762 +#define IMG_BACKGROUND_SETUP 1763 +#define IMG_BACKGROUND_PLAYING 1764 +#define IMG_BACKGROUND_DOOR 1765 +#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1 1766 +#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2 1767 +#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3 1768 +#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4 1769 +#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5 1770 +#define IMG_BACKGROUND_TITLESCREEN_1 1771 +#define IMG_BACKGROUND_TITLESCREEN_2 1772 +#define IMG_BACKGROUND_TITLESCREEN_3 1773 +#define IMG_BACKGROUND_TITLESCREEN_4 1774 +#define IMG_BACKGROUND_TITLESCREEN_5 1775 +#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1 1776 +#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2 1777 +#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3 1778 +#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4 1779 +#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5 1780 +#define IMG_BACKGROUND_TITLEMESSAGE_1 1781 +#define IMG_BACKGROUND_TITLEMESSAGE_2 1782 +#define IMG_BACKGROUND_TITLEMESSAGE_3 1783 +#define IMG_BACKGROUND_TITLEMESSAGE_4 1784 +#define IMG_BACKGROUND_TITLEMESSAGE_5 1785 +#define IMG_BACKGROUND_ENVELOPE_1 1786 +#define IMG_BACKGROUND_ENVELOPE_2 1787 +#define IMG_BACKGROUND_ENVELOPE_3 1788 +#define IMG_BACKGROUND_ENVELOPE_4 1789 +#define IMG_TITLESCREEN_INITIAL_1 1790 +#define IMG_TITLESCREEN_INITIAL_2 1791 +#define IMG_TITLESCREEN_INITIAL_3 1792 +#define IMG_TITLESCREEN_INITIAL_4 1793 +#define IMG_TITLESCREEN_INITIAL_5 1794 +#define IMG_TITLESCREEN_1 1795 +#define IMG_TITLESCREEN_2 1796 +#define IMG_TITLESCREEN_3 1797 +#define IMG_TITLESCREEN_4 1798 +#define IMG_TITLESCREEN_5 1799 -#define NUM_IMAGE_FILES 1798 +#define NUM_IMAGE_FILES 1800 #endif /* CONF_GFX_H */ diff --git a/src/conftime.h b/src/conftime.h index 9c1189a4..82b874ad 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "2010-02-20 00:28" +#define COMPILE_DATE_STRING "2010-02-24 00:22" diff --git a/src/engines.h b/src/engines.h index 83368f00..0bdb824a 100644 --- a/src/engines.h +++ b/src/engines.h @@ -44,7 +44,9 @@ void getGraphicSourcePlayerExt_EM(struct GraphicInfo_EM *, int, int, int); /* functions and definitions exported from main program to game_sp */ /* ========================================================================= */ +#if 0 extern void SetBitmaps_SP(Bitmap **); +#endif void getGraphicSource_SP(struct GraphicInfo_SP *, int, int, int, int); int getGraphicInfo_Delay(int); diff --git a/src/game_sp/DDScrollBuffer.c b/src/game_sp/DDScrollBuffer.c index 544b169e..de5b237e 100644 --- a/src/game_sp/DDScrollBuffer.c +++ b/src/game_sp/DDScrollBuffer.c @@ -227,7 +227,11 @@ void UpdatePlayfield(boolean force_redraw) #endif if (graphic < 0) + { + GfxGraphicLast[x][y] = GfxGraphic[x][y]; + continue; + } if (element != GfxElementLast[x][y] && graphic == GfxGraphicLast[x][y]) diff --git a/src/game_sp/DDSpriteBuffer.c b/src/game_sp/DDSpriteBuffer.c index 9663b1cb..36d271f1 100644 --- a/src/game_sp/DDSpriteBuffer.c +++ b/src/game_sp/DDSpriteBuffer.c @@ -375,6 +375,8 @@ static void OLD_Blt(int pX, int pY, int SpriteX, int SpriteY) #endif +#if 0 + void DDSpriteBuffer_BltEx(int pX, int pY, int SpritePos) { int XPos, YPos; @@ -403,6 +405,8 @@ void DDSpriteBuffer_BltEx(int pX, int pY, int SpritePos) Blt(pX, pY, sp_objects, XPos, YPos); } +#endif + void DDSpriteBuffer_BltImg(int pX, int pY, int graphic, int sync_frame) { struct GraphicInfo_SP g; diff --git a/src/game_sp/Explosions.c b/src/game_sp/Explosions.c index 9398d847..8983a378 100644 --- a/src/game_sp/Explosions.c +++ b/src/game_sp/Explosions.c @@ -42,12 +42,28 @@ int subAnimateExplosion(int si) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); +#if 1 + +#if 1 + GfxGraphic[GetX(si)][GetY(si)] = aniDefaultExplosion; +#else + StretchedSprites.BltImg(X, Y, aniDefaultExplosion, bl); +#endif + +#else StretchedSprites.BltEx(X, Y, aniFramesExplosion[bl]); +#endif // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (bl == 8) { PlayField16[si] = 0; ExplosionShake = 0; // nothing explodes + +#if 1 + GfxGraphic[GetX(si)][GetY(si)] = aniSpace; +#else + StretchedSprites.BltImg(X, Y, aniSpace, 0); +#endif } // loc_ret_g_28CF: return subAnimateExplosion; @@ -58,6 +74,15 @@ loc_g_28D0: // explosion produces infotron { PlayField16[si] = fiInfotron; MovLowByte(&ExplosionShake, 0); // nothing explodes + +#if 1 + GfxGraphic[GetX(si)][GetY(si)] = aniInfotron; +#else + X = GetStretchX(si); + Y = GetStretchY(si); + StretchedSprites.BltImg(X, Y, aniInfotron, 0); +#endif + return subAnimateExplosion; } // loc_g_28E3: @@ -65,7 +90,17 @@ loc_g_28D0: // explosion produces infotron // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); +#if 1 + +#if 1 + GfxGraphic[GetX(si)][GetY(si)] = aniElectronExplosion; +#else + StretchedSprites.BltImg(X, Y, aniElectronExplosion, bl - 0x80); +#endif + +#else StretchedSprites.BltEx(X, Y, aniExplosionInfo + bl - 0x80); +#endif // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ return subAnimateExplosion; @@ -116,6 +151,8 @@ void ExplodeFieldSP(int si) LetExplodeFieldSP(si + FieldWidth, cx, dl); LetExplodeFieldSP(si + FieldWidth + 1, cx, dl); + GfxGraphic[GetX(si)][GetY(si)] = -1; // restart for chain-explosions + // loc_g_2C3B: subSoundFXExplosion(); } // ExplodeFieldSP @@ -175,7 +212,7 @@ static void LetExplodeFieldSP(int tsi, int cx, int dh) break; } - GfxGraphic[GetX(tsi)][GetY(tsi)] = -1; + GfxGraphic[GetX(tsi)][GetY(tsi)] = -1; // restart for chain-explosions } static int subExplodeZonk(int tsi, int cx) @@ -287,7 +324,17 @@ int subClearFieldDueToExplosion(int si) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); +#if 1 + +#if 1 + GfxGraphic[GetX(si)][GetY(si)] = aniSpace; +#else + StretchedSprites.BltImg(X, Y, aniSpace, 0); +#endif + +#else StretchedSprites.BltEx(X, Y, fiSpace); +#endif // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ return subClearFieldDueToExplosion; @@ -310,7 +357,18 @@ int subRedDiskReleaseExplosion() // +++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); +#if 1 + +#if 0 + // !!! causes flicker -- fix in Murphy.c !!! + GfxGraphic[GetX(si)][GetY(si)] = aniRedDisk; +#else + StretchedSprites.BltImg(X, Y, aniRedDisk, 0); +#endif + +#else StretchedSprites.BltEx(X, Y, fiRedDisk); +#endif // +++++++++++++++++++++++++++++++++++++++++ RedDiskReleasePhase = RedDiskReleasePhase + 1; if (RedDiskReleasePhase >= 0x28) diff --git a/src/game_sp/Globals.h b/src/game_sp/Globals.h index 45a6ab8c..b8c77496 100644 --- a/src/game_sp/Globals.h +++ b/src/game_sp/Globals.h @@ -248,7 +248,12 @@ #define aniTerminalActive IMG_SP_TERMINAL_ACTIVE -#define aniExplosionInfo (111) +#define aniDefaultExplosion IMG_SP_DEFAULT_EXPLODING +#define aniElectronExplosion IMG_SP_ELECTRON_EXPLODING + +#define imgFrameCorner IMG_SP_FRAME_CORNER +#define imgFrameHorizontal IMG_SP_FRAME_HORIZONTAL +#define imgFrameVertical IMG_SP_FRAME_VERTICAL #else @@ -273,12 +278,12 @@ #define aniExplosionInfo (111) -#endif - #define posFrameCorner (55) #define posFrameHorizontal (111) #define posFrameVertical (110) +#endif + #if 1 diff --git a/src/game_sp/Infotrons.c b/src/game_sp/Infotrons.c index 366a007c..aae2d00e 100644 --- a/src/game_sp/Infotrons.c +++ b/src/game_sp/Infotrons.c @@ -122,8 +122,13 @@ loc_g_1242: // infotron comes falling from above X = GetStretchX(si); Y = GetStretchY(si - FieldWidth); dx = bl & 0x7; +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X, Y + TwoPixels * (dx + 1), aniInfotron, dx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y + TwoPixels * (dx + 1), fiInfotron); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; if (bl == 0x16) @@ -215,25 +220,11 @@ loc_g_1364: // Murphy dies, but not in any case if (bl == 0x29 || bl == 0x25 || bl == 0x26) return subAnimateInfotrons; - - - - - - - - - - loc_g_1386: // someone dies/explodes immediately si = si + FieldWidth; // 1 field down ExplodeFieldSP(si); // Explode return subAnimateInfotrons; - - - - loc_g_138D: // infotron comes rolling from right to left // To Do: draw infotron rolling from right // according to position in (bl And &H07) @@ -241,8 +232,13 @@ loc_g_138D: // infotron comes rolling from right to left X = GetStretchX(si + 1); Y = GetStretchY(si); dx = (bl & 0x7) + 1; +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X - (TwoPixels * dx), Y, aniFramesInfotronRollLeft[dx - 1]); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; // get and increment sequence# if (bl == 0x24) @@ -271,8 +267,13 @@ loc_g_13E9: // infotron comes rolling from left to right X = GetStretchX(si - 1); Y = GetStretchY(si); dx = (bl & 0x7) + 1; +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X + (TwoPixels * dx), Y, aniFramesInfotronRollRight[dx - 1]); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; if (bl == 0x34) @@ -321,8 +322,13 @@ loc_g_1472: // infotron rolls left X = GetStretchX(si); Y = GetStretchY(si); dx = (bl & 0xF) + 1; +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X - (TwoPixels * dx), Y, aniInfotronRollLeft, dx - 1); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X - (TwoPixels * dx), Y, aniFramesInfotronRollLeft[dx - 1]); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; // retrieve and increment sequence# if (bl < 0x52) @@ -358,8 +364,13 @@ loc_g_14E0: // infotron rolls right X = GetStretchX(si); Y = GetStretchY(si); dx = (bl & 0x7) + 1; +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X + (TwoPixels * dx), Y, aniInfotronRollRight, dx - 1); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X + (TwoPixels * dx), Y, aniFramesInfotronRollRight[dx - 1]); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; if (bl < 0x62) @@ -449,4 +460,3 @@ loc_g_1722: return subCleanUpForInfotronsAbove; } // subCleanUpForInfotronsAbove - diff --git a/src/game_sp/InitGameConditions.c b/src/game_sp/InitGameConditions.c index 050533e8..003cedc4 100644 --- a/src/game_sp/InitGameConditions.c +++ b/src/game_sp/InitGameConditions.c @@ -96,7 +96,11 @@ int InitMurphyPosB(int si) MurphyScreenYPos = GetStretchY(si); // Murphy's screen y-position // To Do: draw Murphy in location ax +#if 1 + StretchedSprites.BltImg(MurphyScreenXPos, MurphyScreenYPos, fiMurphy, 0); +#else StretchedSprites.BltEx(MurphyScreenXPos, MurphyScreenYPos, fiMurphy); +#endif MurphyScreenXPos = MurphyScreenXPos / Stretch; MurphyScreenYPos = MurphyScreenYPos / Stretch; diff --git a/src/game_sp/MainForm.c b/src/game_sp/MainForm.c index 1c93dc26..f44177c7 100644 --- a/src/game_sp/MainForm.c +++ b/src/game_sp/MainForm.c @@ -1652,6 +1652,35 @@ static void Form_Resize() #endif +#if 1 + +static void DrawFrame(int Delta) +{ + int i, LX, tY, RX, BY; + + LX = -1 + Delta; + tY = -1 + Delta; + RX = FieldWidth - Delta; + BY = FieldHeight - Delta; + DrawImage(LX, tY, imgFrameCorner); + DrawImage(LX, BY, imgFrameCorner); + DrawImage(RX, tY, imgFrameCorner); + DrawImage(RX, BY, imgFrameCorner); + for (i = LX + 1; i <= RX - 1; i++) + { + DrawImage(i, tY, imgFrameHorizontal); + DrawImage(i, BY, imgFrameHorizontal); + } + + for (i = tY + 1; i <= BY - 1; i++) + { + DrawImage(LX, i, imgFrameVertical); + DrawImage(RX, i, imgFrameVertical); + } +} + +#else + static void DrawFrame(int Delta) { int i, LX, tY, RX, BY; @@ -1677,6 +1706,8 @@ static void DrawFrame(int Delta) } } +#endif + static void RestoreFrame() { int i, LX, tY, RX, BY; @@ -3283,11 +3314,22 @@ void DrawFieldNoAnimated(int X, int Y) } } +#if 1 + +void DrawImage(int X, int Y, int graphic) +{ + StretchedSprites.BltImg(StretchWidth * X, StretchWidth * Y, graphic, 0); +} + +#else + void DrawSprite(int X, int Y, int SpritePos) { StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, SpritePos); } +#endif + #if 0 void InvalidateRect(long XMin, long YMin, long XMax, long YMax) diff --git a/src/game_sp/MainForm.h b/src/game_sp/MainForm.h index 6d8ab117..8265e821 100644 --- a/src/game_sp/MainForm.h +++ b/src/game_sp/MainForm.h @@ -19,6 +19,7 @@ extern void DrawField(int X, int Y); extern void DrawFieldAnimated(int X, int Y); extern void DrawFieldNoAnimated(int X, int Y); extern void DrawSprite(int X, int Y, int SpritePos); +extern void DrawImage(int X, int Y, int graphic); #if 0 extern void InvalidateRect(long XMin, long YMin, long XMax, long YMax); #endif diff --git a/src/game_sp/Murphy.c b/src/game_sp/Murphy.c index f42d8da9..849e685c 100644 --- a/src/game_sp/Murphy.c +++ b/src/game_sp/Murphy.c @@ -1691,12 +1691,15 @@ loc_g_6C8F: MurphyScreenXPos, MurphyScreenYPos, MurphyDX, MurphyDY); #endif +#if 0 + // !!! special two-tile animation currently not used !!! if (dx2 == fiInfotron) // special case of infotron moving left or right { tDeltaX = 0; tDeltaY = 0; } else +#endif { tDeltaX = MurphyDX * LocalStretch * (SeqPos + 1); tDeltaY = MurphyDY * LocalStretch * (SeqPos + 1); @@ -1729,11 +1732,14 @@ loc_g_6C8F: tPos = dxPos + dx2Step; X = GetStretchX(tPos); Y = GetStretchY(tPos); +#if 0 + // !!! special two-tile animation currently not used !!! if (dx2 == fiInfotron) // special case of infotron moving left or right { StretchedSprites.BltEx(X, Y, dx[SeqPos] + dx2Step); } else // pushing something +#endif { #if 1 // (SeqPos iterates from 0 to 7 while pushing) @@ -1764,12 +1770,21 @@ loc_g_6C8F: tDeltaY = MurphyDY * LocalStretch * (SeqPos + 1); X = GetStretchX(dxPos) + tDeltaX; Y = GetStretchY(dxPos) + tDeltaY; +#if 1 + StretchedSprites.BltImg(X, Y, dx1, SeqPos); // plot first murphy +#else StretchedSprites.BltEx(X, Y, dx[SeqPos]); // plot first murphy +#endif tPos = dxPos + dx2Step; X = GetStretchX(tPos); Y = GetStretchY(tPos); +#if 1 + StretchedSprites.BltImg(X + tDeltaX, Y + tDeltaY, dx1, SeqPos); // plot second murphy + StretchedSprites.BltImg(X, Y, fiGraphic[LowByte(PlayField16[tPos])], 0); // replot the port on top +#else StretchedSprites.BltEx(X + tDeltaX, Y + tDeltaY, dx[SeqPos]); // plot second murphy StretchedSprites.BltEx(X, Y, LowByte(PlayField16[tPos])); // replot the port on top +#endif // End of split movement (port) // ------------------------------ } // loc_g_6D1E:'loc_g_6D28: @@ -2668,6 +2683,8 @@ int subSpPortTest(int si) return subSpPortTest; } // subSpPortTest +#if 0 + void subCopyFieldToScreen(int si, int fi) { int X, Y; @@ -2679,6 +2696,8 @@ void subCopyFieldToScreen(int si, int fi) // +++++++++++++++++++++++++++++++++++++++++ } +#endif + void subCopyAnimToScreen(int si, int graphic, int sync_frame) { int X, Y; diff --git a/src/game_sp/OrangeDisk.c b/src/game_sp/OrangeDisk.c index 279ba876..acb5a5dc 100644 --- a/src/game_sp/OrangeDisk.c +++ b/src/game_sp/OrangeDisk.c @@ -57,8 +57,13 @@ loc_g_2804: // disk is falling dx = HighByte(PlayField16[si]) & 0x7; X = GetStretchX(si); Y = GetStretchY(si); +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X, Y + TwoPixels * (dx + 1), aniOrangeDisk, dx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y + TwoPixels * (dx + 1), fiOrangeDisk); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bl = HighByte(PlayField16[si]) + 1; if ((bl & 0x7) != 0) diff --git a/src/game_sp/Zonk.c b/src/game_sp/Zonk.c index d6a31acc..b19c0033 100644 --- a/src/game_sp/Zonk.c +++ b/src/game_sp/Zonk.c @@ -498,4 +498,3 @@ loc_g_16A7: return subCleanUpForZonksAbove; } // subCleanUpForZonksAbove - diff --git a/src/game_sp/init.c b/src/game_sp/init.c index 76e690e1..8ac8804e 100644 --- a/src/game_sp/init.c +++ b/src/game_sp/init.c @@ -3,8 +3,11 @@ #include "global.h" +#if 0 Bitmap *sp_objects; +#endif + Bitmap *screenBitmap; struct EngineSnapshotInfo_SP engine_snapshot_sp; @@ -16,7 +19,7 @@ static void init_struct_functions() Stage.ScrollTowards = &DDScrollBuffer_ScrollTowards; Stage.SoftScrollTo = &DDScrollBuffer_SoftScrollTo; - StretchedSprites.BltEx = &DDSpriteBuffer_BltEx; + // StretchedSprites.BltEx = &DDSpriteBuffer_BltEx; StretchedSprites.BltImg = &DDSpriteBuffer_BltImg; } @@ -37,7 +40,9 @@ void sp_open_all() Form_Load(); +#if 0 SetBitmaps_SP(&sp_objects); +#endif #if 0 /* too small for oversized levels, but too big for graphics performance */ @@ -84,8 +89,6 @@ unsigned int InitEngineRandom_SP(long seed) /* Supaplex game engine snapshot handling functions */ /* ------------------------------------------------------------------------- */ -static ListNode *engine_snapshot_list_sp = NULL; - void SaveEngineSnapshotValues_SP() { int i; diff --git a/src/game_sp/vb_types.h b/src/game_sp/vb_types.h index 0f6d1b88..030e179e 100644 --- a/src/game_sp/vb_types.h +++ b/src/game_sp/vb_types.h @@ -236,7 +236,7 @@ typedef struct void *Surface; void (*Cls)(); - void (*BltEx)(int, int, int); + // void (*BltEx)(int, int, int); void (*BltImg)(int, int, int, int); } DDSpriteBuffer; diff --git a/src/init.c b/src/init.c index 0d7dfe93..abef35e1 100644 --- a/src/init.c +++ b/src/init.c @@ -329,7 +329,7 @@ void SetBitmaps_EM(Bitmap **em_bitmap) } #endif -#if 1 +#if 0 /* !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! */ void SetBitmaps_SP(Bitmap **sp_bitmap) { -- 2.34.1