Implement debug seed sync

This commit is contained in:
galaxyhaxz 2019-05-20 20:03:44 -05:00 committed by Anders Jenbo
commit c3630c6a55
2 changed files with 66 additions and 0 deletions

View file

@ -1,5 +1,13 @@
#include "diablo.h"
#ifdef _DEBUG
BOOL update_seed_check = FALSE;
#endif
int seed_index;
int level_seeds[NUMLEVELS];
int seed_table[4096];
void *pSquareCel;
char dMonsDbg[NUMLEVELS][MAXDUNX][MAXDUNY];
char dFlagDbg[NUMLEVELS][MAXDUNX][MAXDUNY];
@ -15,6 +23,58 @@ void FreeDebugGFX()
MemFreeDbg(pSquareCel);
}
#ifdef _DEBUG
void init_seed_desync()
{
int i;
for(i = 0; i < 4096; i++) {
seed_table[i] = -1;
}
seed_index = 0;
for(i = 0; i < NUMLEVELS; i++) {
level_seeds[i] = 0;
}
}
void seed_desync_index_get()
{
if(currlevel == 0) {
return;
}
update_seed_check = TRUE;
seed_index = level_seeds[currlevel];
}
void seed_desync_index_set()
{
if(currlevel == 0) {
return;
}
update_seed_check = FALSE;
level_seeds[currlevel + 1] = seed_index;
}
void seed_desync_check(int seed)
{
if(!update_seed_check || seed_index == 4096 || currlevel == 0) {
return;
}
if(seed_table[seed_index] == -1) {
seed_table[seed_index] = seed;
} else if(seed != seed_table[seed_index]) {
app_fatal("Seeds desynced");
}
seed_index++;
}
#endif
void CheckDungeonClear()
{
int i, j;

View file

@ -8,6 +8,12 @@ extern char dFlagDbg[NUMLEVELS][MAXDUNX][MAXDUNY];
void LoadDebugGFX();
void FreeDebugGFX();
#ifdef _DEBUG
void init_seed_desync();
void seed_desync_index_get();
void seed_desync_index_set();
void seed_desync_check(int seed);
#endif
void CheckDungeonClear();
#ifdef _DEBUG
void GiveGoldCheat();