Flash Advance

На самом деле картридж Flash Advance это не один Flash картридж, а целая серия Flash картриджей.

Вы можете прочитать про эти картриджи в статье История появления и зарождения Flash картриджей для Game Boy Advance. Часть 1. Атака клонов.

По своей сути Flash картридж — это как жесткий диск для Game Boy Advance и как жесткий диск на компьютере его можно использовать, как для пиратства, так и для обычной работы. Вы можете записать пиратские игры на Flash картридж (если скачать ROM файл игры из интернета), а можете использовать Flash картридж по другому назначению, например, скачав открытые ROM файлы или просто закачав свою программу. То есть использовать Flash картридж как средство разработки.

Но помните, что вся ответственность за эти действия лежит на Вас!

В данном гайде мы рассмотрим, как пользоваться этим картриджем и как на него, что-нибудь записать.

Как выглядит картридж?

В комплекте с картриджем шло устройство Reader. Оно нужно для записи игр/программ на Flash картридж.

Flash Advance

  • Flash Advance Box
  • Flash Advance Reader
  • Flash Advance Reader
  • Flash Advance Reader
  • Flash Advance картридж

Что нам нужно еще приобрести?

Поскольку этот картридж самый первый, то вопрос, что нужно докупить зависит от того, что есть на данный момент у вас. Будем считать, что по умолчанию у вас есть только сам Flash картридж.

1. Нужен Flash Advance Linker.

2. Нужен LPT кабель к нему.

3. Нужен компьютер с LPT входом.

Теперь рассмотрим все подробнее:

1. Flash Advance Linker – это устройство, которое используется для записи информации на сам картридж.

На самом деле в нем нет ничего сложного и требующего пояснения, кроме одного момента. Питание этого устройства может осуществляться двумя способами: с помощью 6х АА батареек и с помощью блока питания (который не идет в комплекте).

Сразу советую Вам купить блок питания. Потому что батарейки он высаживает очень быстро (даже на час не хватит).

Какой блок питания нужно купить?

Он должен быть на 9 вольт, 300 миллиампер и по центру него должна быть отрицательная полярность.

Я купил универсальный блок питания Robiton SN500s, у него можно выставить нужное количество вольт и у него меняется полярность. Кроме того, у него в комплекте идет много разных насадок и одна из них точно подойдет к ридеру.

2. LPT кабель.

Вот здесь есть несколько проблем.

1. LPT кабель должен быть не больше двух метров.

2. Он должен быть Папа – Папа. DB25M – DB25M.

3. У него должен быть соединены все контакты один к одному. То есть 1 к 1, 2 к 2 и так вплоть до 25 к 25.

В целом, я купил простой LPT кабель (1,8 метра) Папа – Папа, разобрал вход и посмотрел, что там и как подсоединено. После чего перепаял все контакты (там было соединено только 8 контактов, так что пришлось поверх еще 17 проводов припаять), один к одному и все заработало.

3. Компьютер с LPT выходом.

Сейчас днем с огнем не сыщешь нужную LPT плату. И дело даже не в том, что самой платы нет (хотя и с ними проблемы), а в том, что, во-первых, Windows начиная с Висты не дает переопределить LPT порт на нужный адрес, а во-вторых, это откровенно устаревшая технология.

Что делать в этом случае? Я поступил просто и купил за 2,5 тысячи рублей на Авито старый ноутбук, в котором был встроен LPT порт.

На что обратить внимание:

Windows должен быть не позднее XP (то есть XP и раньше).

В BIOS должны быть следующие настройки LPT режима: EPP/ECP mode. (Возможно наличие только одного из них).

В настройках самого Windows, LPT должен сидеть на адресе: 0378-037F.

Настройки LPT должны выглядеть так:

Flash Advance LPT

Стоит ли этот картридж таких заморочек? Учитывая, что за 2500 рублей можно купить EZ Flash Omega решать Вам.

Как записать игры на картридж?

Для начала вам понадобится программа: FlashAdvanceWriter32.zip

В этом архиве находятся, как файлы для работы с LPT (DLPORTIO.dll/.sys), так и сама программа (они должны лежать в одном месте).

Запускаем faw32nt.exe и попадаем в меню программы:

Flash Advance LPT

Как понять, что картридж нормально читается и все сработало?

Для начала предлагаю начать Вам с очистки картриджа и нажать EraseFlash. И сразу отказаться. Если картридж нашелся, то он отобразится (картинкой) в меню сверху. А если не находится, то будет написано “Flash not found!!!”. У меня Flash not found в основном было связано с батарейками (либо они сели, либо блок питания не плотно прилегал к ридеру).

Начнем с левой верхней части программы:

FlashAdvanceWriter 3.2

Здесь 6 кнопок и картинка картриджа, если ридеру удалось его найти.

Write Flash – записать ROM файлы не Flash картридж.

Verify Flash – проверить записанные файлы на Flash картридж (сравнивает ROM файл, с тем как он записался на Flash картридж).

Backup Game – сделать бэкап файл игры.

Write Saver – записать sav файл игры на Flash картридж.

Backup Saver – сделать бэкап sav файла игры на компьютер.

Config. – настройки программы.

Именно с настроек программы мы и начнем. Если нажать на кнопку Config. То откроется такое меню:

FlashAdvanceWriter 3.2

Вкладки:

Printer Port No. – выбираем порт, который в настройках.

Speed - скорость закачки на картридж. По умолчанию стоит 4, понижать нужно только в том случае, если с закачкой происходит что-то не, то.

Option - (самая интересная вкладка, по старой доброй традиции убил сутки времени, чтобы понять, что тут все делает, потому что писать документацию никто не стал).

IPS Apply – тут все понятно, просто добавить к игре IPS патч.

Verify – автоматическая проверка закачанных игр на Flash картридж (соответствует кнопке Verify Flash)

Fix Data – Добавляет заголовок в программу (или игру) если его нет, правит размер игры и так далее (вот эта функция должна быть единственной включенной).

Cut 32K – самая непонятная функция, если перевести с английского на русский, то это означает отрезать 32К, но от чего и для чего?

Сделаем маленькое отступление. Некоторые игры, в конце ROM файла имеют красивое и большое Intro. И все бы хорошо, но мультизагрузка картриджей Flash Advance (то есть, чтобы было меню с двумя и более играми) выполнена таким образом, что она как раз использует то самое место занятое этим Intro. То есть, программа изменяет встраивает в первый ROM файл игры код на мультизагрузочное меню. И раньше, для того, чтобы сделать мультизагрузочный картридж, нужно было удалить это самое Intro. Для этого были специальные программы.

Функция CUT 32K очищает то самое нужное место (только в первом ROM файле) и кладет туда данные о мультизагрузке.

GBA Pre. Boot

GB Pre. Boot

В нынешних реалиях эти кнопки устарели, они нужны были для того, чтобы выбрать тот самый мультизагрузочный файл, для которого мы освобождали место выше. Но в последней версии программы его просто вшили в программу и теперь выбирать ничего не нужно. Ну если только вы не напишите, что-то свое.

Меню по центру слева:

FlashAdvanceWriter 3.2

Это, фактически, консоль. В ней пишется, все, что происходит, ошибки и другие вещи.

Правая часть — это файловый менеджер. Тут мы выбираем нужную нам папку, где находится наш ROM файл и перетягиваем его в нижнюю часть. После того, как мы перетянем нужный нам ROM файл в нижнюю часть, активируется кнопка Write Flash сверху.

FlashAdvanceWriter 3.2

Нижняя часть:

FlashAdvanceWriter 3.2

Здесь две кнопки:

Clear All ¬– просто очищает список снизу от игр которые мы туда перетянули.

EraseFlash – очищает Flash картридж от игр.

Работа с картриджем.

На самом деле, в этом картридже нет каких-либо функций и секретных сочетаний кнопок.

Только в стартовом меню, при нажатии B или L или R можно будет выбрать соответствующий размер сохранения, но о них дальше.

Работа с сохранением (Теория).

Работа с сохранениями — это фишка Flash Advance картриджей.

Причем очень странная фишка. Если работа с этим картриджем простая и после записи игры на картридж ее можно только запустить или выключить, как с обычного картриджа, то работа с сохранениями на этом картридже выполнена очень муторно, и чтобы разобраться в этом, пришлось попотеть.

Итак, в картридж встроено 256 килобайт памяти для сохранений. И работа с этими 256 килобайтами, как по мне, сильно усложнена, хотя для как первого в истории Flash картриджа это сразу был прорыв.

Для понимания работы с этой памятью, нужно понимать, что для каждой отдельной игры или программы используется разное количество памяти нужной для сохранений.

И исходя из этого, можно самому задать размер сохранения, для каждой конкретной игры.

Возможно задать три размера сохранения: 64 килобайта, 32 килобайта и 8 килобайт. Соответственно весь размер памяти для сохранений можно разбить на разное количество сохранений, от 4 (по 64 килобайта) до 32 (по 8 килобайт).


Размер сохранения Кол-во сохранений Название банков (можно заменить словом слотов, то есть в каком месте лежит сохранение) Какую кнопку нажать?
64k 4 1, 2, 3, 4 B
32k 8 1a, 1b, 2a, 2b, 3a, 3b, 4a, 4b L
8k 32 1a1, 1a2, 1a3, 1a4, 1b1, 1b2, 1b3, 1b4
2a1, 2a2, 2a3, 2a4, 2b1, 2b2, 2b3, 2b4
3a1, 3a2, 3a3, 3a4, 3b1, 3b2, 3b3, 3b4
4a1, 4a2, 4a3, 4a4, 4b1, 4b2, 4b3, 4b4
R

Рассмотрим таблицу выше:

Первый ряд: возможно 4 сохранения по 64 килобайта с названием банков 1, 2, 3, 4. Нужно понимать, что дефолтно именно такой размер сохранения и используется. То есть если записать на картридж 4 игры, то все будет нормально, каждой выделится по 64 килобайта SRAM памяти и все нормально. Соответственно первой игре присвоится банк 1, второй игре банк 2 и так далее.

Что интересно, если записать 5 игр, то автоматически первым трем играм выделится по 64 килобайта на сохранения, а последние две игры разделят оставшийся размер сохранения. Если записать 6 игр, то первым трем все равно выделится по 3 слота по 64 килобайта, а последние три разделят 64 килобайта.

Если по какой-то причине вы записали бэкап сейв файла не в тот банк, который соответствует игре в ее порядковом списке, то вы нажимаете на консоле кнопку B и выбираете нужный банк.

Вы обязаны выбрать нужный банк! Или испортите сейв файл.

То есть фактически, весь менеджмент сейв файлов лежит на вас. В идеальном варианте, вы можете использовать 4 игры (с 4мя банками по 64 килобайта) и все будет нормально.

Предполагается, что после записи игр на картридж, перед началом игры вы будете сами выставлять нужное значение для каждой игры (с помощью кнопок B L R). Но, на практике, это конечно сомнительно.

Нужно понимать, что банк под номером 1, а также: 1а, 1b, 1a1, 1a2, 1a3, 1a4, 1b1, 1b2, 1b3, 1b4 использует одни и теже 64 килобайта памяти. То есть, если вы использовали 1а1 для 8 килобайт сохранения, то вы уже не можете использовать банк 1 для 64 килобайт сохранения.
Учитывая, что система с сохранениями достаточно сложна, а также, что сохранения не должны пересекаться (вы можете для игры с сохранением 64 килобайта задать значение 1, но не можете для второй игры с сохранением на 32 килобайта задать значение 1А или 1B, нужно уже начинать с 2), хорошим вариантом было бы записывать игры, в зависимости от размера сохранений от большего к меньшему. То есть в первый слот записать игру с сохранением на 64 килобайта, во второй на 32 килобайта, в третий на 8 килобайт и так далее.
В этом картридже есть только одна проблема. При использовании игры с EEPROM 4kbit все будет нормально, но если игра использует 64kbit EEPROM, то нужно патчить ROM для сохранения! Например, с помощью программы GBATA.

Как сделать бэкап и восстановление сэйвов.

В левой верхней части есть две кнопки Write Saver и Backup Saver.

Они открывают одинаковое меню:

FlashAdvanceWriter 3.2

По началу это меню может показаться странным, но в целом ничего сложного тут нет.

Обе процедуры, как для бэкапа сейва, так и для записи на картридж одинаковые. Разница лишь в том, какую кнопку вы выберете сначала Write Saver или Backup Saver.

Опять же, тонкие настройки тут нужны только если вы, как и предполагалось выше, изначально выставили нужный размер сохранения.

Для сохранения на 64 килобайта, в первой вкладке 64К нужно выбрать лишь номер нужного банка от 1 до 4. И в последней вкладке Size Select выбрать нужный размер сохранения, то есть 64 килобайта.

Для сохранения на 32 килобайта, нужно уже выбрать больше вкладок, как вы помните (из таблицы выше) сохранения по 32 килобайта обозначаются не только цифрами, а еще и буквами: 1A, 1B, 2A, 2B и так далее. Соответственно, чтобы записать (или сделать бэкап) в ячейку, например 2B нужно в первой вкладке 64К выбрать номер банка, в нашем случае 2, во второй вкладке 32K выбрать A или B, в нашем случае B, третью вкладку не трогать, а в Size Select выбрать 32K (но это значение там стоит автоматически).

Для сохранения на 8 килобайт, такая же процедура как на 32 килобайта, но нужно еще и в третьей вкладке выбрать нужное значение, то есть для 3B3 нужно последовательно выбрать в первой вкладке 3, во второй B, в третьей 3, а в четвертой значение .

Перед запуском игры, (после процедуры записи сейва), вы должны выбрать точнее месторасположение сейва. То есть для 3B3 вы должны нажать кнопку R и пролистать (с помощью кнопки UP) до значения 3B3 и только после этого запустить игру.

Эпилог

У Flash Advance картриджей было всего 1 ощутимый минус:

LPT подключение и соответственно, поиск старого оборудования и проводов, чтобы это работало. Проблемой это было даже тогда, ведь еще тогда у всех была куча вопросов, почему это не работает как надо. (В дальнейшем это было исправлено в обоих ветках развития этих картриджей, как в Flash Advance xTreme, так и в Flash 2 Advance).

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

Но в 2020 году, с таким количеством конкурентов, такой сложной системой подключения он может быть нужен только для любителей покопаться в старине и разобраться как оно работало тогда.