projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20091024-1-src
[rocksndiamonds.git]
/
src
/
game_sp
/
file.c
diff --git
a/src/game_sp/file.c
b/src/game_sp/file.c
index cd183a2471e3eaed80be66032e60ec331229c5db..4e7b6bc06ca93b35a32acca6c66ba53b1f4ab9f3 100644
(file)
--- a/
src/game_sp/file.c
+++ b/
src/game_sp/file.c
@@
-43,8
+43,8
@@
void setLevelInfoToDefaults_SP()
port->FreezeEnemies = 0;
}
port->FreezeEnemies = 0;
}
- native_sp_level.demo_available = FALSE;
- native_sp_level.demo
_
length = 0;
+ native_sp_level.demo
.is
_available = FALSE;
+ native_sp_level.demo
.
length = 0;
}
void copyInternalEngineVars_SP()
}
void copyInternalEngineVars_SP()
@@
-60,7
+60,7
@@
void copyInternalEngineVars_SP()
FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
LevelMax = (FieldWidth * FieldHeight) - 1;
FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
LevelMax = (FieldWidth * FieldHeight) - 1;
- FileMax = FieldMax + native_sp_level.demo
_
length;
+ FileMax = FieldMax + native_sp_level.demo
.
length;
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);
@@
-80,12
+80,14
@@
void copyInternalEngineVars_SP()
}
}
}
}
- if (native_sp_level.demo_available)
+ if (native_sp_level.demo
.is
_available)
{
DemoAvailable = True;
{
DemoAvailable = True;
- for (i = 0; i < native_sp_level.demo_length; i++)
- PlayField8[FieldMax + i + 1] = native_sp_level.demo[i];
+ PlayField8[FieldMax + 1] = native_sp_level.demo.level_nr;
+
+ for (i = 0; i < native_sp_level.demo.length; i++)
+ PlayField8[FieldMax + i + 2] = native_sp_level.demo.data[i];
}
AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
}
AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
@@
-159,7
+161,7
@@
static void LoadNativeLevelFromFileStream_SP(FILE *file, boolean demo_available)
the 16 bit value here calculates as 2 * (x + (y * 60)) (this is twice
of what may be expected: Supaplex works with a game field in memory
which is 2 bytes per tile) */
the 16 bit value here calculates as 2 * (x + (y * 60)) (this is twice
of what may be expected: Supaplex works with a game field in memory
which is 2 bytes per tile) */
- port->PortLocation = getFile16BitBE(file);
+ port->PortLocation = getFile16BitBE(file);
/* yes, big endian */
#if 0
{
#if 0
{
@@
-190,9
+192,9
@@
static void LoadNativeLevelFromFileStream_SP(FILE *file, boolean demo_available)
header->CheckSumByte = getFile8Bit(file);
/* random seed used for recorded demos */
header->CheckSumByte = getFile8Bit(file);
/* random seed used for recorded demos */
- header->DemoRandomSeed = getFile16BitLE(file);
+ header->DemoRandomSeed = getFile16BitLE(file);
/* yes, little endian */
-#if
1
+#if
0
printf("::: file.c: DemoRandomSeed == %d\n", header->DemoRandomSeed);
#endif
printf("::: file.c: DemoRandomSeed == %d\n", header->DemoRandomSeed);
#endif
@@
-211,11
+213,19
@@
static void LoadNativeLevelFromFileStream_SP(FILE *file, boolean demo_available)
if (demo_available)
{
if (demo_available)
{
+ int level_nr = getFile8Bit(file);
+
+ level_nr &= 0x7f; /* clear highest bit */
+ level_nr = (level_nr < 1 ? 1 :
+ level_nr > 111 ? 111 : level_nr);
+
+ native_sp_level.demo.level_nr = level_nr;
+
for (i = 0; i < SP_MAX_TAPE_LEN && !feof(file); i++)
{
for (i = 0; i < SP_MAX_TAPE_LEN && !feof(file); i++)
{
- native_sp_level.demo[i] = getFile8Bit(file);
+ native_sp_level.demo
.data
[i] = getFile8Bit(file);
- if (native_sp_level.demo
[i] == 0xff)
/* "end of demo" byte */
+ if (native_sp_level.demo
.data[i] == 0xff)
/* "end of demo" byte */
{
i++;
{
i++;
@@
-223,8
+233,8
@@
static void LoadNativeLevelFromFileStream_SP(FILE *file, boolean demo_available)
}
}
}
}
- native_sp_level.demo
_
length = i;
- native_sp_level.demo
_available = (native_sp_level.demo_
length > 0);
+ native_sp_level.demo
.
length = i;
+ native_sp_level.demo
.is_available = (native_sp_level.demo.
length > 0);
}
}
}
}