Maybe you can diff against my version. I did add an extra BGTABLE entry for the bottom row, you seemed to be missing that. I also added some extra data for the last row of MAP$. I also changed one of the sprite definitions (#2) origin Y to make things easier for myself, and recalculated the position to match too. I am missing some code between lines 28 and 33 too. Oh, and I commented out the GRP load as I don't have it. You should leave that one as you have it. You also might have been missing the data label, I added one.
I am typing this manually so there may be missing data or type-o's.
ACLS SPDEF 0, 8, 11, 80, 100, 16, 0 'Title screen (Early, Unused) SPDEF 1, 88, 19, 21, 42, 29, 0 'Chris (Idle Sprite) SPDEF 2, 0, 56, 94, 39, 0, 0, 'Title Screen (New, Used) 'Doesn't work...? Maybe BGSCREEN 0, 127, 127 'Data variables DIM BGTABLE[9] -- <-- Now 9 entries DIM MAP$[13] 'Misc Variables VAR I#, J# VAR NS VAR x = (400 - (94 * 2)) / 2, Y = ((13 * 16) - (39 * 2)) / 2 LOAD "GRP4:SP.GRP", 0 SPSET 2 OUT NS SPOFS NS, 80, 240 SPSCALE NS, 2, 2 LOCATE 17, 27 'Moved this down a few lines. PRINT "PRESS [A] BUTTON!"; 'Added a semicolon so you don't get a new line at the end. Real thing has the correct A button symbol. DEF MAPREAD V1 'Read map data RESTORE "@MAP_0" + STR$(V1) FOR I# = 0 TO LEN(BGTABLE) - 1 READ BGTABLE[I#] NEXT FOR I# = 0 to LEN(MAP$) - 1 READ MAP$[I#] NEXT END DEF MAPRENDER FOR I# = 0 TO LEN(MAP$) - 1 FOR J# = 0 TO LEN(MAP$[I#]) - 1 BGPUT 0, j#, I#, BGTABLE[(ASC(MID$(MAP$[I#], J#, 1))) - 48] '48 = 0 in ASCII NEXT NEXT END @MAP_01 'Might have been missing this? DATA 0 '0 DATA 291 '1 DATA 291 + #BGROT90 '2 DATA 292 '3 DATA 292 + #BGROT90 + #BGREVV '4 DATA 292 + #BGROT90 '5 DATA 291 + #BGROT270 '6 DATA 291 + #BGROT270 + #BGREVV '7 DATA 292 + #BGREVV '8 DATA "133333333333333333333333333332" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "400000000000000000000000000005" DATA "688888888888888888888888888887" '8 is the new one I added MAPREAD 1 MAPRENDER 1 WHILE 1 SPOFS NS, X, Y B = BUTTON(0) IF (B AND #A) != 0 THEN BREAK ENDIF IF (B AND #UP) != 0 THEN Y = MAX(16, Y - 1) ENDIF IF (B AND #DOWN) != 0 THEN Y = MIN((13 * 16) - 16 - (39 * 2), Y + 1) ENDIF IF (B AND #LEFT) != 0 THEN X = MAX(16, X - 1) ENDIF IF (B AND #RIGHT) != 0 THEN X = MIN(400 - 16 - (94 * 2), X + 1) ENDIF VSYNC WENDSurprisingly I only had problem on your bgput line when I tried adding a table entry you didn't have for the bottom row border. The code I posted above appears to work on my 3DS, but I am probably missing a bunch of stuff.