Okay, at least for the stat screen, the format is a little different.
[pointerUp][pointerDown][pointerLeft][pointerRight][x][y][textID][00 00 00 00][pointer to routine]
The final pointer is for getting dynamic text such as character names/classes and stuff. If not found it displays the default text ID as a backup.
You can edit with Event Assembler as usual:
#define RMenu(up,down,left,right,x,y,TID) "POIN up down left right;BYTE x y; SHORT TID; WORD 0 0"
#define RMenu(up,down,left,right,x,y,BackupTID,TIDGetter) "POIN up down left right; BYTE x y; SHORT TID; POIN 0 TIDGetter|1"
//
#define NameDescGetter $88bd5
#define ClassDescGetter $88c01
//
ORG $8a00b38 //original location
ST_Name:
RMenu(0,ST_Class,0,ST_Luk,$18,$50,0,NameDescGetter)
ST_Class:
RMenu(ST_Name,ST_Lv,0,ST_Res,$6,$68,$6E8,ClassDescGetter)
ST_Lv:
RMenu(ST_Class,ST_HP,0,ST_Exp,$6,$78,$542)
ST_Exp:
RMenu(ST_Class,ST_HP,ST_Lv,ST_Res,$26,$78,$543)
ST_HP:
RMenu(up, down, left, right, you get the drill)
//
//..and so on