Index: ram/scadv.c
===================================================================
--- ram/scadv.c	(revision 210d8960913194d9309f24679eaab4ec1a707673)
+++ ram/scadv.c	(revision d1ecb9468204b3e6324676d748d7dcacfa1e127f)
@@ -18,8 +18,8 @@
 /* initialized stuff */
 
-int16_t	nbmoff = 3;
-int16_t	wrdoff = 3;
-
-int16_t	nbmasks[4] = {		/* nybble masks */
+int16_t		nbmoff = 3;
+int16_t		wrdoff = 3;
+
+uint16_t	nbmasks[4] = {		/* nybble masks */
 
 	0x000F,
@@ -40,5 +40,6 @@
 void sc_adv(void)
 {
-	int16_t masksl, maskpx, i;
+	uint16_t masksl, maskpx;
+	int16_t i;
 	uint16_t sword;
 	int32_t tl;
@@ -185,5 +186,5 @@
 	uslice(nxtsl, maskpx, masksl, gdstbn);		/* update right edge */
 
-	scrl  = 0x8000 | ((soffset >> 1) ^ 0x0001);
+	scrl  = 0x8000 | (((uint16_t)soffset >> 1) ^ 0x0001);
 
 	/* only update VSDD registers if score is up and scrl changed */
@@ -221,5 +222,6 @@
 void scupd(void)
 {
-	int16_t masksl, maskpx, i;
+	uint16_t masksl, maskpx;
+	int16_t i;
 	uint16_t sword;
 	int32_t tl;
Index: ram/scadv.x
===================================================================
--- ram/scadv.x	(revision 210d8960913194d9309f24679eaab4ec1a707673)
+++ ram/scadv.x	(revision d1ecb9468204b3e6324676d748d7dcacfa1e127f)
@@ -15,5 +15,5 @@
 */
 
-extern	int16_t		nbmasks[4];
+extern	uint16_t	nbmasks[4];
 extern	int16_t		nbmoff;
 extern	int16_t		wrdoff;
