Spox :)
Postaram się wyjaśnić, co po kolei należy zrobić. Tyle tylko, że nie mam doświadczenia w tworzeniu podobnych programów i mogę sugerować rozwiązania niekoniecznie najwłaściwsze.
Jeśli chcesz zrobić to tak, jak napisałeś, czyli najpierw wgrywa się ROBBO, a potem Twój trainer, który modyfikuje właściwą komórkę pamięci (domyślam się, że wzbogaciłeś go o własny ekran, możliwość wyboru gry z trainerem lub bez i może inne dodatki), to rzeczywiście prawdą jest, że należy szukać rozwiązania poprzez wymienione przez Ciebie adresy - wektory. Równie ważne jest jednak i to, żeby Twój trainer nie kolidował w pamięci z samą grą. Upewnij się, czy oby na pewno nie znajdzie się on w tej jego części, która powinna być pozostawiona do dyspozycji samej gry. To nie takie proste, nawet stwierdzenie obszarów do których gra jest wczytywana (po nagłówkach bloków) nie daje gwarancji, że wybrany obszar pamięci nie zostanie przez grę zagospodarowany. Żeby to definitywnie stwierdzić wymagana byłaby szczegółowa analiza kodu. Można też spróbować prostrzej metody, polegającej na podglądnięciu zawartości pamięci podczas samej zabawy grą jakimś freezerem, czy też pod emulatorem wywołując monitor pamięci. Znalezienie obszaru wolnego tym sposobem polegałoby na wyszukaniu wystarczająco długiego ciągu zer, ale i tutaj w wyborze wolnego obszaru pamięci na trainer, należy zachować ostrożność, ponieważ nie każdy taki obszar rzeczywiście jest do "wzięcia". Jednak jest to dość skuteczny sposób, który bym polecał.
Co zrobić, żeby wczytując Robbo, nie spowodować równocześnie jego natychmiastowego uruchoienia? Wystarczy pozbawić plik gry, stanowiący naprzemienny ciąg nagłowków i danych, tego z nich, który odnosi się do komórek pamięci RUNADR. Zwykle, i na pewno jest tak w przypadku gry Robbo, jest to osobny blok (nagłowek plus dane, na które składają się dwa bajty), który umieszczany jest na samym końcu pliku gry. Skada się z 6 bajtów: [e0 02 e1 02 xx yy]; yyxx to adres uruchomienia gry. Te 6 bajtów może być poprzedzone jeszcze dwoma bajtami FF, jeśli tak jest, to prawie na pewno to część nagłówka (równie dobrze mogłoby jej wogóle nie być, program działałby dokładnie tak samo), którą jednak też należy usunąć (zwykle jednak jej tam nie ma).
Po tej czynności łączysz grę z trainerem, (w sumie kolejność łączenia w przypadku takiego rodzaju trainera, nie gra roli, skoro i tak adresy nie kolidują ze sobą) i wstawiasz nagłowek [e0 02 e1 02 xx yy] (też w dowolnem miejscu pliku między blokami, ale ładnie jest umieścić go na samym końcu) z adresem uruchomienia swojego trainera - tam gdzie ma się rozpocząć jego wykonywanie. Sam trainer musi już skoczycz pod adres, który został usunięty w samej grze (blok z RUNADR) instrukcją najlepiej JMP yyxx. I to już chyba cała recepta na to jak ma wygładać prawidłowo działający trainer do gry, mam nadzieję, że choć trochę pomogłem. Powodzenia!