projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added handling 64-bit random value bug with old tapes in EM engine
[rocksndiamonds.git]
/
src
/
game_em
/
logic.c
diff --git
a/src/game_em/logic.c
b/src/game_em/logic.c
index ba9c05e5301b331f4cb64afc8398aff3d84190ca..ba823a0ca86b20e6855ad35ba49d80862e5b36e6 100644
(file)
--- a/
src/game_em/logic.c
+++ b/
src/game_em/logic.c
@@
-12,6
+12,8
@@
#define ACID_ROLL /* rolling objects go into acid rather than remove it */
#define ACID_PLAYER /* player gets killed by acid, but without explosion */
#define ACID_ROLL /* rolling objects go into acid rather than remove it */
#define ACID_PLAYER /* player gets killed by acid, but without explosion */
+#define RANDOM_BUG /* handle problem with old tapes using 64-bit random */
+
#define RANDOM(x) ((seed = seed << 31 | seed >> 1) % x)
static short **cave, **next, **boom;
#define RANDOM(x) ((seed = seed << 31 | seed >> 1) % x)
static short **cave, **next, **boom;
@@
-165,7
+167,7
@@
static void Lboom_eater(int x, int y)
boom[x][y+1] = lev.eater_array[lev.eater_pos][7];
boom[x+1][y+1] = lev.eater_array[lev.eater_pos][8];
boom[x][y+1] = lev.eater_array[lev.eater_pos][7];
boom[x+1][y+1] = lev.eater_array[lev.eater_pos][8];
- lev.eater_pos = (lev.eater_pos + 1) %
8
;
+ lev.eater_pos = (lev.eater_pos + 1) %
lev.num_eater_arrays
;
#if PLAY_ELEMENT_SOUND
play_element_sound(x, y, SOUND_boom, Xeater_n);
#if PLAY_ELEMENT_SOUND
play_element_sound(x, y, SOUND_boom, Xeater_n);
@@
-7485,7
+7487,11
@@
static void logic_globals(void)
int x;
int y;
int count;
int x;
int y;
int count;
- unsigned int random;
+#ifdef RANDOM_BUG
+ uint64_t random;
+#else
+ uint32_t random;
+#endif
cave = lev.cave;
next = lev.next;
cave = lev.cave;
next = lev.next;
@@
-7531,6
+7537,11
@@
static void logic_globals(void)
Lamoeba(x, y);
random = random * 129 + 1;
Lamoeba(x, y);
random = random * 129 + 1;
+
+#ifdef RANDOM_BUG
+ if (!game_em.use_random_bug)
+ random = (uint32_t)random;
+#endif
}
game_em.random = random;
}
game_em.random = random;