diff --git a/src/renderer.cpp b/src/renderer.cpp
index a2970a3d..b6987538 100644
--- a/src/renderer.cpp
+++ b/src/renderer.cpp
@@ -1,18 +1,26 @@
 #include "renderer.hpp"
 
 #include <algorithm>
+#include <unordered_map>
 
 Renderer::Renderer(GPU& gpu, const std::array<u32, regNum>& internalRegs) : gpu(gpu), regs(internalRegs) {}
 Renderer::~Renderer() {}
 
 std::optional<RendererType> Renderer::typeFromString(std::string inString) {
-	// case-insensitive
+	// Transform to lower-case to make the setting case-insensitive
 	std::transform(inString.begin(), inString.end(), inString.begin(), [](unsigned char c) { return std::tolower(c); });
 
-	if (inString == "null")
-		return RendererType::Null;
-	else if (inString == "opengl")
-		return RendererType::OpenGL;
+	// Huge table of possible names and misspellings
+	// Please stop misspelling Vulkan as Vulcan
+	static const std::unordered_map<std::string, RendererType> map = {
+		{"null", RendererType::Null}, {"nil", RendererType::Null},      {"none", RendererType::Null},
+		{"gl", RendererType::OpenGL}, {"ogl", RendererType::OpenGL},    {"opengl", RendererType::OpenGL},
+		{"vk", RendererType::Vulkan}, {"vulkan", RendererType::Vulkan}, {"vulcan", RendererType::Vulkan},
+	};
+
+	if (auto search = map.find(inString); search != map.end()) {
+		return search->second;
+	}
 
 	return std::nullopt;
 }