как игра, по твоему мнению, узнает где 1 миссия, а где 2, а где 3, а где ваще дом харконенов? ты же не просто приложил файлы-миссии к игре и она сама все поняла, верно? смотрим где эти файлы-миссии прикладываются к рому - а это файл maps_64.asm к примеру. и нас интересует эта часть:
scena001:
incbin missions\atr\scena001.bin
scena002:
incbin missions\atr\scena002.bin
scena003:.....и причем они не просто файлы друг за другом
incbin missions\atr\scena001.bin
incbin missions\atr\scena002.bin
incbin missions\atr\scena003.bin....а именно каждому файлу есть своя метка - scena001: или scena002: или scena003: и так далее. получается у каждого добавленного в проект файла есть своя метка, сиречь свой адрес. значит где-то должно быть место в коде игры, где эти адреса лежат, это место игра знает и знает что там адреса лежат друг за другом - сиречь таблица. если мы сделаем поиск в том-же insclude.asm по слову scena001 - то найдется это место:
atreides_missions:
dc.l scena001
dc.l scena002
dc.l scena003
dc.l scena004...вот наша таблица и есть. то есть игра изначально понятия не имеет где лежит миссия номер 3 к примеру. но у ней есть ссылка на таблицу - atreides_missions:
и тогда игра расчитывает место, где лежит миссия что-то типа по такой формуле:
адрес метки atreides_missions: + ((номер миссии - 1) * 4)
вот скажем миссия номер 2:
atreides_missions: + ((2 - 1) * 4) = то есть прыгнет на 2 ячейку в этой таблице - scena002 и начнет её грузить.
ты-же получается новые миссии добавил, но ссылки-метки остались неправленные. если 1 миссия еще ладно совпадает со старой 1 миссией, то уже начиная со 2 - у тебя таблица будет ссылаться на неверное место и все посыплется. однако если ты в этой таблице внесешь изменения, с правкой новых адресов на конец рома, на реальные места расположения новых миссий - все должно заработать адекватно.
конечно есть много НО - сейчас мы пишем тупо в конец рома, не разбираясь. но может там 4 мегабайта уже ром (распоследние версии сборки там что-то намудрили, я сам хз зачем это - какую-то приблуду про 4 мегабайта там добавили), следовательно допись новых миссий будет происходить за пределами 4 мегабайт, а значит с тем-же Fusion вылезут проблемы и игра зависнет, даже если все вроде как верно в ром внесли и в таблицы тоже. в Gens проблем по идее не возникнет.
Добавлено позже:
так-же этим самым НО может быть обязательная кратность двум. поэтому то я и написал про even. скажем каким-то образом оригинальный ром весит не 2 мегабайта ровно, а типа 1999. значит при дописывании новых файлов миссий - у них адрес будет нечетный. это может непонравится системе. вот команда эта самая even - следит за четностью, и дописывает нолик где нужно, чтобы последующие данные лежали уже по четному адресу.