projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0f5b7f6
)
rnd-20090724-1-src
author
Holger Schemel
<info@artsoft.org>
Fri, 24 Jul 2009 12:18:00 +0000
(14:18 +0200)
committer
Holger Schemel
<info@artsoft.org>
Sat, 30 Aug 2014 08:57:31 +0000
(10:57 +0200)
src/conftime.h
patch
|
blob
|
history
src/game_sp/Globals.c
patch
|
blob
|
history
src/game_sp/MainForm.c
patch
|
blob
|
history
src/game_sp/MainForm.h
patch
|
blob
|
history
src/game_sp/MainGameLoop.c
patch
|
blob
|
history
src/game_sp/main.c
patch
|
blob
|
history
src/game_sp/vb_lib.c
patch
|
blob
|
history
diff --git
a/src/conftime.h
b/src/conftime.h
index 208d098edc7bffe03e65baa32ce59d160eba91a1..c194c8e944ced28c27320589a5c429dcee8ccb4e 100644
(file)
--- a/
src/conftime.h
+++ b/
src/conftime.h
@@
-1
+1
@@
-#define COMPILE_DATE_STRING "2009-07-2
2 12:30
"
+#define COMPILE_DATE_STRING "2009-07-2
4 14:16
"
diff --git
a/src/game_sp/Globals.c
b/src/game_sp/Globals.c
index 36034f5b63ba5159e42c90531836a1063eb5ec90..67491f730a84fb7ba0801094b6088131c5462628 100644
(file)
--- a/
src/game_sp/Globals.c
+++ b/
src/game_sp/Globals.c
@@
-331,26
+331,40
@@
void ReadLevel()
long i;
// byte T;
long i;
// byte T;
+#if 1
+ // CurPath = "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/supaplex/levels.dat";
+ CurPath = "/home/aeglos/projects/rocksndiamonds/supaplex_demo_JENS0001.sp";
+ LevelNumber = 1;
+#endif
+
DemoAvailable = False;
if (STRING_IS_LIKE(CurPath, "*.mpx"))
{
DemoAvailable = False;
if (STRING_IS_LIKE(CurPath, "*.mpx"))
{
+ printf("::: reading MPX file ...\n");
+
ReadMPX();
return;
}
if (STRING_IS_LIKE(CurPath, "*.sp"))
{
ReadMPX();
return;
}
if (STRING_IS_LIKE(CurPath, "*.sp"))
{
+ printf("::: reading SP file ...\n");
+
ReadDemo();
return;
}
if (DemoFlag != 0)
{
ReadDemo();
return;
}
if (DemoFlag != 0)
{
+ printf("::: reading demo file ...\n");
+
ReadDemo();
return;
}
ReadDemo();
return;
}
+ printf("::: reading level file ...\n");
+
FileMax = 0;
FieldWidth = 60;
FieldHeight = 24;
FileMax = 0;
FieldWidth = 60;
FieldHeight = 24;
@@
-366,11
+380,6
@@
void ReadLevel()
// --- On Error GoTo ReadLevelEH
// --- On Error GoTo ReadLevelEH
-#if 1
- CurPath = "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/supaplex/levels.dat";
- LevelNumber = 1;
-#endif
-
printf("::: '%s', %d\n", CurPath, LevelNumber);
FNum = fopen(CurPath, "rb");
printf("::: '%s', %d\n", CurPath, LevelNumber);
FNum = fopen(CurPath, "rb");
@@
-381,6
+390,7
@@
void ReadLevel()
#else
FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
#endif
#else
FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
#endif
+
i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
@@
-426,8
+436,8
@@
void ReadLevel()
}
#endif
}
#endif
- AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *FieldWidth);
- AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *FieldWidth);
+ AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *
FieldWidth);
+ AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *
FieldWidth);
TerminalState = REDIM_1D(sizeof(byte), FieldWidth, LevelMax - FieldWidth);
GravityFlag = LInfo.InitialGravity;
TerminalState = REDIM_1D(sizeof(byte), FieldWidth, LevelMax - FieldWidth);
GravityFlag = LInfo.InitialGravity;
@@
-455,31
+465,42
@@
static void ReadDemo()
FieldWidth = 60;
FieldHeight = 24;
HeaderSize = 96;
FieldWidth = 60;
FieldHeight = 24;
HeaderSize = 96;
+
FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
LevelMax = (FieldWidth * FieldHeight) - 1;
// --- On Error GoTo ReadDemoEH
FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
LevelMax = (FieldWidth * FieldHeight) - 1;
// --- On Error GoTo ReadDemoEH
+
FileMax = FileLen(CurPath) - 1;
FileMax = FileLen(CurPath) - 1;
+
PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
+
// FNum = FreeFile();
// FNum = FreeFile();
+
FNum = fopen(CurPath, "rb");
FNum = fopen(CurPath, "rb");
+
i = (LevelNumber - 1) * ((long)(FieldMax) + 1) + 1;
#if 1
FILE_GET(FNum, i, PlayField8, FileMax + 1);
#else
FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
#endif
i = (LevelNumber - 1) * ((long)(FieldMax) + 1) + 1;
#if 1
FILE_GET(FNum, i, PlayField8, FileMax + 1);
#else
FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
#endif
+
i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
+
fclose(FNum);
fclose(FNum);
+
// --- On Error GoTo 0
if (FieldMax < FileMax)
DemoAvailable = True;
ReadSignature();
// --- On Error GoTo 0
if (FieldMax < FileMax)
DemoAvailable = True;
ReadSignature();
+
PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
+
for (i = 0; i <= FieldMax; i++)
{
PlayField16[i] = PlayField8[i];
for (i = 0; i <= FieldMax; i++)
{
PlayField16[i] = PlayField8[i];
@@
-487,18
+508,24
@@
static void ReadDemo()
PlayField8[i] = 0;
}
PlayField8[i] = 0;
}
- AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *FieldWidth);
- AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *FieldWidth);
+ AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 *
FieldWidth);
+ AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 *
FieldWidth);
TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
+
DemoPointer = FieldMax + 1;
DemoOffset = DemoPointer;
DemoKeyRepeatCounter = 0;
DemoPointer = FieldMax + 1;
DemoOffset = DemoPointer;
DemoKeyRepeatCounter = 0;
+
// DemoFlag = 1
// DemoAvailable = True
// DemoFlag = 1
// DemoAvailable = True
+
GravityFlag = LInfo.InitialGravity;
FreezeZonks = LInfo.InitialFreezeZonks;
GravityFlag = LInfo.InitialGravity;
FreezeZonks = LInfo.InitialFreezeZonks;
+
RandomSeed = LInfo.DemoRandomSeed;
RandomSeed = LInfo.DemoRandomSeed;
+
LevelLoaded = True;
LevelLoaded = True;
+
return;
#if 0
return;
#if 0
diff --git
a/src/game_sp/MainForm.c
b/src/game_sp/MainForm.c
index 5c3b85fda28de4470669981ae381b6fe7396c8c3..b04fda82c9a9c15dc29be3cad0e1dbc5f78882b6 100644
(file)
--- a/
src/game_sp/MainForm.c
+++ b/
src/game_sp/MainForm.c
@@
-2523,20
+2523,28
@@
void menPlay_Click()
}
}
-#if 0
-
-static void menPlayDemo_Click()
+// static void menPlayDemo_Click()
+void menPlayDemo_Click()
{
DemoFlag = 1;
RecordDemoFlag = 0;
{
DemoFlag = 1;
RecordDemoFlag = 0;
+
+#if 0
lblStatus = "Demo Playback";
lblStatus = "Demo Playback";
+#endif
+
menPlay_Click();
menPlay_Click();
+
+#if 0
if (LevelStatus != 1)
lblStatus = "Demo Failed";
if (LevelStatus != 1)
lblStatus = "Demo Failed";
+#endif
DemoFlag = 0;
}
DemoFlag = 0;
}
+#if 0
+
static void menRec_Click()
{
Trace("MainForm", "--> menRec_Click()");
static void menRec_Click()
{
Trace("MainForm", "--> menRec_Click()");
diff --git
a/src/game_sp/MainForm.h
b/src/game_sp/MainForm.h
index ae913f8e2732e1e1fc2aa640f9006f4a91e9bc90..9846ce2c594b1b8467b70ca572e0b49e7a1a5182 100644
(file)
--- a/
src/game_sp/MainForm.h
+++ b/
src/game_sp/MainForm.h
@@
-28,6
+28,7
@@
extern void menEdit_Click();
extern void menPlaySpeed_Click(int Index);
extern void menStop_Click();
extern void menPlay_Click();
extern void menPlaySpeed_Click(int Index);
extern void menStop_Click();
extern void menPlay_Click();
+extern void menPlayDemo_Click();
extern void Form_Load();
#endif /* MAINFORM_H */
extern void Form_Load();
#endif /* MAINFORM_H */
diff --git
a/src/game_sp/MainGameLoop.c
b/src/game_sp/MainGameLoop.c
index b4a91d006f98a80db10eb77fbad667a2988256c0..398bc80f1371045cb963fe4ec8dd53a44446c4dd 100644
(file)
--- a/
src/game_sp/MainGameLoop.c
+++ b/
src/game_sp/MainGameLoop.c
@@
-35,12
+35,16
@@
int subMainGameLoop()
if (DemoFlag != 0)
{
if (DemoFlag != 0)
{
+ printf("::: playing demo ...\n");
+
// EP set level success byte: demo, not game
WasDemoFlag = 1;
EP_GameDemoVar0DAA = 0; // demo
}
else // loc_g_1836:
{
// EP set level success byte: demo, not game
WasDemoFlag = 1;
EP_GameDemoVar0DAA = 0; // demo
}
else // loc_g_1836:
{
+ printf("::: playing game ...\n");
+
// EP set level success byte: game, not demo
WasDemoFlag = 0;
EP_GameDemoVar0DAA = 1; // game
// EP set level success byte: game, not demo
WasDemoFlag = 0;
EP_GameDemoVar0DAA = 1; // game
@@
-249,8
+253,13
@@
int subCalculateScreenScrollPos()
Ay = MainForm.picPane.Height / 2;
}
Ay = MainForm.picPane.Height / 2;
}
+#if 1
+ ScreenScrollXPos = Stretch * (MurphyScreenXPos + 16) - ax;
+ ScreenScrollYPos = Stretch * (MurphyScreenYPos + 16) - Ay;
+#else
ScreenScrollXPos = Stretch * (MurphyScreenXPos + 8) - ax;
ScreenScrollYPos = Stretch * (MurphyScreenYPos + 8) - Ay;
ScreenScrollXPos = Stretch * (MurphyScreenXPos + 8) - ax;
ScreenScrollYPos = Stretch * (MurphyScreenYPos + 8) - Ay;
+#endif
#if 0
printf("::: MainGameLoop.c: subCalculateScreenScrollPos(): %d, %d [%d, %d] -> %d, %d\n",
#if 0
printf("::: MainGameLoop.c: subCalculateScreenScrollPos(): %d, %d [%d, %d] -> %d, %d\n",
diff --git
a/src/game_sp/main.c
b/src/game_sp/main.c
index 235d433454c80ec341a2b23aac4b0fbc98e0f6eb..ce409eb4551e3fe882a64f3af7ba37adbb003573 100644
(file)
--- a/
src/game_sp/main.c
+++ b/
src/game_sp/main.c
@@
-5,7
+5,11
@@
void InitGameEngine_SP()
{
void InitGameEngine_SP()
{
+#if 0
menPlay_Click();
menPlay_Click();
+#else
+ menPlayDemo_Click();
+#endif
}
void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
}
void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
diff --git
a/src/game_sp/vb_lib.c
b/src/game_sp/vb_lib.c
index d32a62f85b9a8e2c359f79ebbba75e4267081f56..fa1ef2c64cf312c0dc2d4ccc2687b8247f6dc441 100644
(file)
--- a/
src/game_sp/vb_lib.c
+++ b/
src/game_sp/vb_lib.c
@@
-9,6
+9,8
@@
#include "main_sp.h"
#include "main_sp.h"
+#include <sys/stat.h>
+
/* helper functions for constructs not supported by C */
void *REDIM_1D(int a, int b, int c)
/* helper functions for constructs not supported by C */
void *REDIM_1D(int a, int b, int c)
@@
-55,7
+57,16
@@
char *INT_TO_STR(int a)
boolean STRING_IS_LIKE(char *a, char *b)
{
boolean STRING_IS_LIKE(char *a, char *b)
{
- return 0;
+ if (*b == '*') // something like "*.sp"
+ {
+ return (strSuffix(a, &b[1]));
+ }
+ else
+ {
+ // more sophisticated patterns currently not supported
+
+ return 0;
+ }
}
}
@@
-154,7
+165,16
@@
char *Hex(int a)
int FileLen(char *a)
{
int FileLen(char *a)
{
- return 0;
+ struct stat buffer;
+
+ if (stat(a, &buffer) == 0)
+ {
+ return buffer.st_size;
+ }
+ else
+ {
+ return 0;
+ }
}
long GetTickCount()
}
long GetTickCount()