Оригинальный гид - Sonic 65.
Итак, для начала закинем арт нашего нового перса в папку artunc (графика должна быть не пожата, как вы уже, наверное знаете). Назовем его, к примеру, newplayer.bin.
Теперь приступим к программной части. Идите к Art_Sonic, там будет это:
; --------------------------------------------------------------------------- ; Uncompressed graphics - Sonic ; --------------------------------------------------------------------------- Art_Sonic: incbin artunc\sonic.bin; Sonic even
Ниже добавьте следующие строки:
; --------------------------------------------------------------------------- ; Uncompressed graphics - Player ; --------------------------------------------------------------------------- Art_NewPlayer: incbin artunc\newplayer.bin; New Player even
Теперь давайте сделаем так, чтобы игра загружала арт нашего нового персонажа после нажатия кнопки "В" на Title Screen'e. Найдем loc_3230 там будет:
loc_3230: tst.w ($FFFFF614).w beq.w Demo andi.b #$80,($FFFFF605).w; нажата кнопка Start? beq.w loc_317C; если нет, переходим
После beq.w Demo вставьте следующие строки:
Title_CheckForB: cmpi.b #$10, ($FFFFF605).w ; кнопка В нажата? bne.s StartCheck ; если нет, переходим на проверку Start Title_SecondCharacter: move.b #$01, ($FFFFFFFE).w ; устанавливаем флаг персонажа на$01 move.b #$B5,d0 ; закладываем значение звука колец в d0 bsr.w PlaySound_Special ; переходим на суброутину, которая проигрывает этот звук ($B5) StartCheck:
Этот код проверяет нажатие кнопки "B" на титульнике и устанавливает флаг $FFFFFFFE, если она нажата. После нажатия на кнопку "В" проигрывается звук поднятия кольца, вы можете самостоятельно изменить проигрываемый звук на любой, просто посмотрев его значение в Sound Test'e и заменить $B5 этим значением.
Теперь идем к суброутине LoadSonicDynPLC и найдем там следующую строку:
lea (Art_Sonic).l,a1
Заменим ее этим:
cmpi.b #$01, ($FFFFFFFE).w ; Флаг персонажей установлен на $01? bne.s SonicArtLoad ; Если нет, загружаем арт Соника lea (Art_NewPlayer).l,a1 ; Загружаем арт нового персонажа bra.s ContLoadPLC ; Переходим SonicArtLoad: lea (Art_Sonic).l, a1 ; Загружаем арт Соника ContLoadPLC:
Код проверяет, установлен ли флаг $FFFFFFFE (который устанавливается на $01 при нажатии "В" на титл скрине) на $01. Если флаг не установлен, загружается обычный арт Соника. Если же он установлен, то загружается арт нового перса.
Все! Компилим ром, проверяем и радуемся!