diff --git a/src/m_menu.c b/src/m_menu.c
index 8be4b7ec3cabef772c4df5f6abc9a60ac86cf311..ee97e9b008433548a76553e59ad12a5364bb96bb 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -4789,17 +4789,17 @@ UINT8 skyRoomMenuTranslations[MAXUNLOCKABLES];
 
 static void M_DrawChecklist(void)
 {
-	INT32 i, j = 0, y = currentMenu->y;
+	INT32 i = 0, j = 0, y = currentMenu->y;
 	UINT32 condnum, previd, maxcond;
 	condition_t *cond;
 
-	for (i = 0; i < MAXUNLOCKABLES;)
+	while (i < MAXUNLOCKABLES)
 	{
 		if (unlockables[i].name[0] == 0 //|| unlockables[i].nochecklist
 		|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS)
 			continue;
 
-		V_DrawString(currentMenu->x, y, ((unlockables[i].unlocked) ? V_GREENMAP : V_TRANSLUCENT), ((unlockables[i].unlocked) ? unlockables[i].name : M_CreateSecretMenuOption(unlockables[i].name)));
+		V_DrawString(currentMenu->x, y, ((unlockables[i].unlocked) ? V_GREENMAP : V_TRANSLUCENT), ((unlockables[i].unlocked || !unlockables[i].nochecklist) ? unlockables[i].name : M_CreateSecretMenuOption(unlockables[i].name)));
 
 		for (j = i+1; j < MAXUNLOCKABLES; j++)
 		{
@@ -4834,9 +4834,9 @@ static void M_DrawChecklist(void)
 								char *title = G_BuildMapTitle(cond[condnum].requirement);
 								if (title)
 								{
-									V_DrawString(currentMenu->x + 8, y, V_ALLOWLOWERCASE, va("%s %s",
+									V_DrawString(currentMenu->x, y, V_ALLOWLOWERCASE, va("\x1E %s %s",
 									((cond[condnum].type == UC_MAPPERFECT) ? "Get every ring in" : "Complete"),
-									((M_MapLocked(cond[condnum].requirement) || (!(mapheaderinfo[cond[condnum].requirement-1]->menuflags & LF2_NOVISITNEEDED) || mapvisited[cond[condnum].requirement-1])) ? M_CreateSecretMenuOption(title) : title)));
+									((M_MapLocked(cond[condnum].requirement) || !((mapheaderinfo[cond[condnum].requirement-1]->menuflags & LF2_NOVISITNEEDED) || mapvisited[cond[condnum].requirement-1])) ? M_CreateSecretMenuOption(title) : title)));
 									Z_Free(title);
 								}
 							}
@@ -4846,24 +4846,24 @@ static void M_DrawChecklist(void)
 							{
 								const char *emeraldtext = ((cond[condnum].type == UC_ALLEMERALDS) ? " with all emeralds" : "");
 								if (cond[condnum].requirement != 1)
-									V_DrawString(currentMenu->x + 8, y,
-									V_ALLOWLOWERCASE,va("Complete the game %d times%s",
+									V_DrawString(currentMenu->x, y,
+									V_ALLOWLOWERCASE,va("\x1E Complete the game %d times%s",
 									cond[condnum].requirement, emeraldtext));
 								else
-									V_DrawString(currentMenu->x + 8, y,
+									V_DrawString(currentMenu->x, y,
 									V_ALLOWLOWERCASE,
-									va("Complete the game%s", emeraldtext));
+									va("\x1E Complete the game%s", emeraldtext));
 							}
 							break;
 						case UC_TOTALEMBLEMS:
-							V_DrawString(currentMenu->x + 8, y,
+							V_DrawString(currentMenu->x, y,
 							V_ALLOWLOWERCASE,
-							va("Collect %s%d emblems", ((M_CountEmblems() == cond[condnum].requirement) ? "all " : ""), cond[condnum].requirement));
+							va("\x1E Collect %s%d emblems", ((M_CountEmblems() == cond[condnum].requirement) ? "all " : ""), cond[condnum].requirement));
 							break;
 						default:
-							V_DrawString(currentMenu->x + 8, y,
+							V_DrawString(currentMenu->x, y,
 							V_ALLOWLOWERCASE,
-							va("id %d, type %d, req %d", cond[condnum].id, cond[condnum].type, cond[condnum].requirement));
+							va("\x1E id %d, type %d, req %d", cond[condnum].id, cond[condnum].type, cond[condnum].requirement));
 							break;
 					}
 					previd = cond[condnum].id;