#define fiRAMLeft (26)
#define fiRAMRight (27)
#define fiHWFirst (28)
-
-#define fiHW_0 (fiHWFirst + 0)
-#define fiHW_1 (fiHWFirst + 1)
-#define fiHW_2 (fiHWFirst + 2)
-#define fiHW_3 (fiHWFirst + 3)
-#define fiHW_4 (fiHWFirst + 4)
-#define fiHW_5 (fiHWFirst + 5)
-#define fiHW_6 (fiHWFirst + 6)
-#define fiHW_7 (fiHWFirst + 7)
-#define fiHW_8 (fiHWFirst + 8)
-#define fiHW_9 (fiHWFirst + 9)
-
+#define fiHW0 (fiHWFirst + 0) // fiHWFirst
+#define fiHW1 (fiHWFirst + 1)
+#define fiHW2 (fiHWFirst + 2)
+#define fiHW3 (fiHWFirst + 3)
+#define fiHW4 (fiHWFirst + 4)
+#define fiHW5 (fiHWFirst + 5)
+#define fiHW6 (fiHWFirst + 6)
+#define fiHW7 (fiHWFirst + 7)
+#define fiHW8 (fiHWFirst + 8)
+#define fiHW9 (fiHWFirst + 9) // fiHWLast
#define fiHWLast (37)
#define fiRAMTop (38)
#define fiRAMBottom (39)
#if 1
-#define aniSpace IMG_EMPTY_SPACE
+// graphics and animations directly related to file elements
+#define aniSpace IMG_EMPTY_SPACE
+#define aniZonk IMG_SP_ZONK
+#define aniBase IMG_SP_BASE
#define aniMurphy IMG_SP_MURPHY
+#define aniInfotron IMG_SP_INFOTRON
+#define aniRAM IMG_SP_CHIP_SINGLE
+#define aniHardWare IMG_SP_HARDWARE_GRAY
+#define aniExit IMG_SP_EXIT_CLOSED
+#define aniOrangeDisk IMG_SP_DISK_ORANGE
+#define aniPortRight IMG_SP_PORT_RIGHT
+#define aniPortDown IMG_SP_PORT_DOWN
+#define aniPortLeft IMG_SP_PORT_LEFT
+#define aniPortUp IMG_SP_PORT_UP
+#define aniSpPortRight IMG_SP_GRAVITY_PORT_RIGHT
+#define aniSpPortDown IMG_SP_GRAVITY_PORT_DOWN
+#define aniSpPortLeft IMG_SP_GRAVITY_PORT_LEFT
+#define aniSpPortUp IMG_SP_GRAVITY_PORT_UP
+#define aniSnikSnak IMG_SP_SNIKSNAK
+#define aniYellowDisk IMG_SP_DISK_YELLOW
+#define aniTerminal IMG_SP_TERMINAL
+#define aniRedDisk IMG_SP_DISK_RED
+#define aniPortUpAndDown IMG_SP_PORT_VERTICAL
+#define aniPortLeftAndRight IMG_SP_PORT_HORIZONTAL
+#define aniPortAllDirections IMG_SP_PORT_ANY
+#define aniElectron IMG_SP_ELECTRON
+#define aniBug IMG_SP_BUGGY_BASE
+#define aniRAMLeft IMG_SP_CHIP_LEFT
+#define aniRAMRight IMG_SP_CHIP_RIGHT
+#define aniHWFirst IMG_SP_HARDWARE_BASE_1
+#define aniHW0 IMG_SP_HARDWARE_BASE_1
+#define aniHW1 IMG_SP_HARDWARE_GREEN
+#define aniHW2 IMG_SP_HARDWARE_BLUE
+#define aniHW3 IMG_SP_HARDWARE_RED
+#define aniHW4 IMG_SP_HARDWARE_YELLOW
+#define aniHW5 IMG_SP_HARDWARE_BASE_2
+#define aniHW6 IMG_SP_HARDWARE_BASE_3
+#define aniHW7 IMG_SP_HARDWARE_BASE_4
+#define aniHW8 IMG_SP_HARDWARE_BASE_5
+#define aniHW9 IMG_SP_HARDWARE_BASE_6
+#define aniHWLast IMG_SP_HARDWARE_BASE_6
+#define aniRAMTop IMG_SP_CHIP_TOP
+#define aniRAMBottom IMG_SP_CHIP_BOTTOM
+#define aniWallSpace IMG_INVISIBLE_WALL
+#define aniHWTrash1
+#define aniHWTrash2
+#define aniHWMurphy
+
+
+// graphics and animations related to in-game animations for element actions
+
#define aniMurphyDropping IMG_SP_MURPHY_DROPPING
#define aniMurphySleepLeft IMG_SP_MURPHY_SLEEPING_LEFT
#define aniMurphySleepRight IMG_SP_MURPHY_SLEEPING_RIGHT
-#define aniMurphyTouchDown IMG_SP_MURPHY_SNAPPING_DOWN
#define aniMurphyTouchLeft IMG_SP_MURPHY_SNAPPING_LEFT
#define aniMurphyTouchRight IMG_SP_MURPHY_SNAPPING_RIGHT
#define aniMurphyTouchUp IMG_SP_MURPHY_SNAPPING_UP
+#define aniMurphyTouchDown IMG_SP_MURPHY_SNAPPING_DOWN
#define aniMurphyYawn IMG_SP_MURPHY_BORING_1
#define aniPushLeft IMG_SP_MURPHY_PUSHING_LEFT
#define aniPushRight IMG_SP_MURPHY_PUSHING_RIGHT
#define aniPushUpDown IMG_SP_MURPHY_PUSHING_RIGHT
+#define aniBugActivating IMG_SP_BUGGY_BASE_ACTIVATING
+#define aniBugDeactivating IMG_SP_BUGGY_BASE_ACTIVATING
+#define aniBugActive IMG_SP_BUGGY_BASE_ACTIVE
+#define aniZonkRollLeft IMG_SP_ZONK_MOVING_LEFT
+#define aniZonkRollRight IMG_SP_ZONK_MOVING_RIGHT
+#define aniEatInfotronLeft IMG_SP_MURPHY_COLLECTING_LEFT
+#define aniEatInfotronRight IMG_SP_MURPHY_COLLECTING_RIGHT
+#define aniInfotronRollLeft IMG_SP_INFOTRON_MOVING_LEFT
+#define aniInfotronRollRight IMG_SP_INFOTRON_MOVING_RIGHT
+#define aniMurphyMoveLeft IMG_SP_MURPHY_MOVING_LEFT
+#define aniMurphyMoveRight IMG_SP_MURPHY_MOVING_RIGHT
+#define aniMurphyMoveUpLeft IMG_SP_MURPHY_MOVING_LEFT
+#define aniMurphyMoveUpRight IMG_SP_MURPHY_MOVING_RIGHT
+#define aniMurphyDigLeft IMG_SP_MURPHY_DIGGING_LEFT
+#define aniMurphyDigRight IMG_SP_MURPHY_DIGGING_RIGHT
+#define aniMurphyDigUpLeft IMG_SP_MURPHY_DIGGING_LEFT
+#define aniMurphyDigUpRight IMG_SP_MURPHY_DIGGING_RIGHT
+#define aniMurphyEatLeft IMG_SP_MURPHY_COLLECTING_LEFT
+#define aniMurphyEatRight IMG_SP_MURPHY_COLLECTING_RIGHT
+#define aniMurphyEatUpLeft IMG_SP_MURPHY_COLLECTING_LEFT
+#define aniMurphyEatUpRight IMG_SP_MURPHY_COLLECTING_RIGHT
+#define aniSplitUpDown IMG_SP_MURPHY
+#define aniMurphyExit IMG_SP_MURPHY_SHRINKING
+#define aniElectron IMG_SP_ELECTRON
+#define aniExplosion IMG_SP_DEFAULT_EXPLODING
+#define aniTouchBase IMG_SP_BASE_SNAPPING
+#define aniTouchInfotron IMG_SP_INFOTRON_COLLECTING
+#define aniTouchRedDisk IMG_SP_DISK_RED_COLLECTING
+#define aniYellowDisk IMG_SP_DISK_YELLOW
+#define aniOrangeDisk IMG_SP_DISK_ORANGE
+#define aniRedDisk IMG_SP_DISK_RED
+
#define aniSnikSnakDown 167
#define aniSnikSnakLeft 239
#define aniSnikSnakRight 247
#define aniSnikSnakUp 159
-#define aniTerminal IMG_SP_TERMINAL
#define aniTerminalActive IMG_SP_TERMINAL_ACTIVE
#define aniExplosionInfo (111)
#if 1
-extern int aniBug[], aniZonkRollRight[], aniZonkRollLeft[];
-extern int aniEatInfotronLeft[], aniEatInfotronRight[];
-extern int aniInfotronRollRight[], aniInfotronRollLeft[];
-extern int aniMurphyEatLeft[], aniMurphyEatRight[];
-extern int aniMurphyEatUpLeft[], aniMurphyEatUpRight[], aniSplitUpDown[];
-extern int aniMurphyExit[];
-extern int aniSnikSnak[], aniElectron[], aniExplosion[];
-extern int aniTouchBase[], aniTouchInfotron[], aniTouchRedDisk[];
-extern int aniYellowDisk[], aniOrangeDisk[], aniRedDisk[];
+extern int aniFramesBug[], aniFramesZonkRollRight[], aniFramesZonkRollLeft[];
+extern int aniFramesEatInfotronLeft[], aniFramesEatInfotronRight[];
+extern int aniFramesInfotronRollRight[], aniFramesInfotronRollLeft[];
+extern int aniFramesMurphyEatLeft[], aniFramesMurphyEatRight[];
+extern int aniFramesMurphyEatUpLeft[], aniFramesMurphyEatUpRight[], aniFramesSplitUpDown[];
+extern int aniFramesMurphyExit[];
+extern int aniFramesSnikSnak[], aniFramesElectron[], aniFramesExplosion[];
+extern int aniFramesTouchBase[], aniFramesTouchInfotron[], aniFramesTouchRedDisk[];
+extern int aniFramesYellowDisk[], aniFramesOrangeDisk[], aniFramesRedDisk[];
#else
extern void ReadLevel();
+extern int getSequenceLength(int sequence);
+extern boolean isSnappingSequence(int sequence);
+
extern boolean Alignments;
extern boolean BlockingSpeed;
extern boolean Cracked;