чесно сказать... очень сложно разобраться в коде, я не знаю какого размера объекты и где они должны стоять... короче для меня было проще написать свою маленькую реализацию подгрузки файлов игр, смотри аттач.
код главного меню:

; делаем файл первой игры как функцию
; ПРИМЕЧАНИЕ: в файле game1.bb должна отсутствовать команда END,
; иначе мы не сможем вернуться в главное меню
function game1()
include "game1.bb"
end Function
; делаем файл второй игры как функцию
; ПРИМЕЧАНИЕ: в файле game2.bb должна отсутствовать команда END,
; иначе мы не сможем вернуться в главное меню
function game2()
Include "game2.bb"
End Function
; теперь функция меню
Function mainmenu%()
определяем граф.режим и выставляем буфер
graphics3d 800,600,32,2
setbuffer BackBuffer()
; загружаем и устанавливаем шрифт
font=LoadFont("Arial",20,True,False,False)
SetFont font
; цикл меню
Repeat
; проверяем если мышка внутри первого пункта
If MouseX()>250 And MouseY()>100 And MouseX()<550 And MouseY()<150
; изменяем его цвет
Color 100,255,100
; а если еще и кнопка нажата, то запускаем игру1
If MouseDown(1)
game1():return 1:exit
; выходим из функции меню вернув положительное значение
EndIf
Else
Color 255,100,100
EndIf
; рисуем сам квадрат первого пункта меню
Rect 250,100,300,50,1
; точно так-же для второго пункта меню
If MouseX()>250 And MouseY()>250 And MouseX()<550 And MouseY()<300
Color 100,255,100
If MouseDown(1)
game2():return 1:exit
EndIf
Else
Color 255,100,100
EndIf
Rect 250,250,300,50,1
; и так-же для третьего пункта
If MouseX()>250 And MouseY()>400 And MouseX()<550 And MouseY()<450
If MouseDown(1)
; только тут нам ничего запускать не нужно, нужно только вернуть ложь
return 0:exit
EndIf
Color 100,255,100
Else
Color 255,100,100
EndIf
Rect 250,400,300,50,1
; выводим надписи меню на экран
Color 255,255,255
Text 350,117,"First game"
Text 342,267,"Second game"
Text 385,417,"Exit"
; еще если нажата ESC, то возвращаем ложь и выходим
If KeyHit(1) Then Return 0:exit
Flip
Forever
end function
; теперь главный цикл программы,
; запускаем меню пока оно не возвратит ложь, как только ложь, так сразу END
while mainmenu()
wend
end
теперь маленько поподробнее, зачем такой гемор с функцией меню спросите вы, ответ прост, функция Graphics3d очищает мир полностью, удаляет все объекты и текстуры из памяти... и чтоб это все всегда подгружалось нужно делать такую меню-функцию (не тащить-же все объекты меню (если меню 3Д например) через всю игру)
надеюсь, что тебе это поможет в твоей проблеме
