yeah, you know what sucks?  the three/four option select menus are done differently!
800A0FCC	0x	
800A0FEC	0x	
800A100C	0x	
calls 800A0DF4 with A2= 2,3,4 respectively

what happens is it improperly copies to buffer.  string 3/4 gets copied to string 2 spot
Seriously, why am I even mucking with this copy-from-buffer nonsense anyway?
skip buffer copy - read directly from the string samples @ 80142700
That's 0x140 from 801425C0
sizes can still be retained at +0x5C (8014261C)


parts of the width testing routine to determine window width
#8006536C	0x138EC	
ADDIU	S1,A0,0034	;->0140 would pull from original buffer
BLEZ	S4,800653A8	;if there wasn't anything to display you'd quit out
OR	S0,A0,R0
SLL	T6,S4,0x2
ADDU	S3,T6,A0		;S3=cutoff for entries
#80065380:		READ IN... STUFF
LW	A1,005C (S0)	;A1=strlen
OR	A0,S1,R0		;A0=address of string
JAL	800902CC		;ret V0=width of string (pixels)
OR	A2,R0,R0
SLT	AT,S2,V0		;test if current widest (S2) is smaller than width for this one (V0)
BEQ	AT,R0,800653A0
ADDIU	S0,S0,0004	;next strlen base
OR	S2,V0,R0		;save longest as S2
//800653A0:
BNE	S0,S3,80065380
ADDIU	S1,S1,000A	;next entry (fixed size)

800902CC iterates through string pulling characters
uses 8009028C to deterimine width, then adds value to running total
returns V0=width in pixels

As far as I can tell, they've already error-tested this routine away if no strings occur.
worst case, set the recall routines so they fail with content, not blank entries
that way, no possiblility of a menu with no options...
So, kill the test above and cross your fingers folks!
#rewrite!!	in progress
#8006536C	0x138EC
	ADDIU	S1,A0,0034	;->0140 would pull from original buffer
00808025	OR	S0,A0,R0
00147080	SLL	T6,S4,0x2
01C49821	ADDU	S3,T6,A0		;S3=cutoff for entries
#8006537C:		READ IN... STUFF
8E05005C	LW	A1,005C (S0)	;A1=strlen
02202025	OR	A0,S1,R0		;A0=address of string
00B18821	+ADDU	S1,S1,A1		;next entry
0C0240B3	JAL	800902CC		;ret V0=width of string (pixels)
00003025	OR	A2,R0,R0
0242082A	SLT	AT,S2,V0		;test if current widest (S2) is smaller than width for this one (V0)
10200002	BEQ	AT,R0,800653A0
26100004	ADDIU	S0,S0,0004	;next strlen base
00409025	OR	S2,V0,R0		;save longest as S2
//800653A0:
1613FFF6	*BNE	S0,S3,80065380
00000000	+NOP
could use T2 in 800902CC

+-+
0x7C in table (number of strings displayed) is fried by 80065198 subroutine:
SW	R0,007C (A0)
JR	RA
NOP

800651A4 is important and stuff but can't remember why at the moment ;*)