Well I do not know if I will be able to replicate precisely how it is rendered due to the different structures of both Game Maker and the Game Boy, but this is how I draw the outer frame of my menus currently for any size of menu I want:
startxm = argument0;
startym = argument1;
lengm = argument2 - 2;
heigm = argument3 - 2;
draw_sprite(spr_font,98,startxm,startym);
draw_sprite(spr_font,104,startxm, startym + ((heigm + 1) * 8));
draw_sprite(spr_font,100,startxm + ((lengm + 1) * 8),startym);
draw_sprite(spr_font,106,startxm + ((lengm + 1) * 8),startym + ((heigm + 1) * 8));
for (a = 1; a <= lengm; a += 1)
{
draw_sprite(spr_font,99,startxm + (a * 8),startym);
draw_sprite(spr_font,105,startxm + (a * 8),startym + ((heigm + 1) * 8));
}
for (b = 1; b <= heigm; b += 1)
{
draw_sprite(spr_font,101,startxm,startym + (b * 8));
draw_sprite(spr_font,103,startxm + (a * 8),startym + (b * 8));
}
It could even be more simplified if I replaced the variable names in the bottom part with just the argument names. I am trying to make it so that when I draw static text that it does not refer back to the variables in this script; which should be easy enough, I just have to change the way blank white space and text are allocated when drawn. Right now I have it all set up so that draw_menu, draw_txts, and draw_arro are all separate. Somewhat of an issue comes up when when calling draw_txts because the white space extends to where the arrows drawn x-coordinate, but it is not that much to worry about.