diff --git a/src/doomdef.h b/src/doomdef.h
index 8506dd7b3d6892184abc0966fba4277d3c5fc70d..6abf6c378772b565070055773546b29ba91eff7e 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -224,7 +224,7 @@ extern char logfilename[1024];
 // NOTE: it needs more than this to increase the number of players...
 
 #define MAXPLAYERS 32
-#define MAXSKINS 32
+#define MAXSKINS 255
 #define PLAYERSMASK (MAXPLAYERS-1)
 #define MAXPLAYERNAME 21
 
diff --git a/src/info.c b/src/info.c
index 3f0f5361f376eb8e74cbca1561f37741e7ad5d75..97e510187c6ca61d86a7c2dd4b10490a69a6464d 100644
--- a/src/info.c
+++ b/src/info.c
@@ -22016,7 +22016,7 @@ void P_PatchInfoTables(void)
 	INT32 i;
 	char *tempname;
 
-#if NUMSPRITEFREESLOTS > 1000
+#if NUMSPRITEFREESLOTS > 9999
 "Update P_PatchInfoTables, you big dumb head"
 #endif
 
@@ -22024,8 +22024,8 @@ void P_PatchInfoTables(void)
 	for (i = SPR_FIRSTFREESLOT; i <= SPR_LASTFREESLOT; i++)
 	{
 		tempname = sprnames[i];
-		tempname[0] = 'F';
-		tempname[1] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)/100));
+		tempname[0] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)/1000));
+		tempname[1] = (char)('0' + (char)(((i-SPR_FIRSTFREESLOT+1)/100)%10));
 		tempname[2] = (char)('0' + (char)(((i-SPR_FIRSTFREESLOT+1)/10)%10));
 		tempname[3] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)%10));
 		tempname[4] = '\0';
diff --git a/src/info.h b/src/info.h
index 9aa26a97a922e8673652ce0096e9f2913cd0294f..e14af6cea74bb5a4a9c1b7264cf6de53f253ef86 100644
--- a/src/info.h
+++ b/src/info.h
@@ -561,7 +561,7 @@ void A_ChangeHeight();
 extern boolean actionsoverridden[NUMACTIONS];
 
 // ratio of states to sprites to mobj types is roughly 6 : 1 : 1
-#define NUMMOBJFREESLOTS 512
+#define NUMMOBJFREESLOTS 1024
 #define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS
 #define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8)
 
diff --git a/src/m_menu.c b/src/m_menu.c
index 0a623c0c88d72b3870db048a425c164835c26cfe..d2ca7c0617c42a6868471e28b2e4894532ecb3f6 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -3077,7 +3077,7 @@ static void M_ChangeCvar(INT32 choice)
 	{
 		if (cv == &cv_playercolor)
 		{
-			SINT8 skinno = R_SkinAvailable(cv_chooseskin.string);
+			INT32 skinno = R_SkinAvailable(cv_chooseskin.string);
 			if (skinno != -1)
 				CV_SetValue(cv,skins[skinno].prefcolor);
 			return;