public GameState GetGameState()
        {
            try
            {
                if (GameProcess == null || GameProcess.HasExited)
                {
                    return(GameState.None);
                }
                CurrentMap.Deref(GameProcess, out int rawMapAddr);
                var cm = new DeepPointer(new IntPtr(rawMapAddr));
                cm.DerefString(GameProcess, 1024, out string rawMap);

                if (string.IsNullOrWhiteSpace(rawMap))
                {
                    return(GameState.None);
                }
                rawMap = rawMap.ToLower();

                string formattedMap = rawMap.Replace(".unr", "").Replace(".UNR", "");

                if (OldMap == "DEFAULT")
                {
                    OldMap = formattedMap;
                }

                if (formattedMap != OldMap)
                {
                    OldMap = formattedMap;

                    if (formattedMap == "book_frontend")
                    {
                        return(GameState.Reset);
                    }
                    if (formattedMap == "book_story_1")
                    {
                        return(GameState.NewGame);
                    }

                    if (Shrek2Variables.ExcludedSplitMaps.Any(p => p == formattedMap))
                    {
                        return(GameState.None);
                    }
                    return(GameState.Split);
                }

                return(GameState.None);
            }
            catch
            {
                return(GameState.None);
            }
        }