Oje, ich hab noch nichtmal in die PM geschaut und so die liebe Geburtstagsüberraschung versäumt...!!

Naja, zum Problem:

1) Du überprüfst nicht ob ev != NULL, dadurch crashst du natürlich sofort weil im Titelscreen kein Event #1 vorhanden ist.
2) doesEventPageExist funktioniert nicht weil ich einen Fehler gemacht habe.

Du kannst derweil diese gefixte Version von doesEventPageExist verwenden:

Code:
bool doesEventPageExist(RPG::Event *event, int id) {
		void **script;
		asm volatile("call *%%esi" : "=a" (script), "=d" (RPG::_edx) : "S" (0x47A0D0), "a" ((**reinterpret_cast<void ****>(0x4CDD14))[15]), "d" (event->id) : "ecx", "cc", "memory");
		NamedCatalogPtr<void *> pages;
		pages.ptr = reinterpret_cast<NamedCatalog<void *> *>(script[5]);
		return pages[id] != NULL;
}