-
Публикации
30 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
4
Все публикации пользователя SHooTeR
-
Sonic 1: Egg Factory - мой минихак, который я недавно упоминал в топике для скриншотов, наконец закончен и я рад представить его вам! Что же в нём нового? 1. Полностью новый уровень с новой графикой 2. Новые и изменённые враги 3. Разные щиты с разными способностями Белый - Двойной прыжок Синий - Защита от мелких снарядов врагов Красный - Jumpdash Желтый - Притягивание колец 4. Секретики! На уровне есть несколько секретов, с одним из них можно взаимодействовать. 5. Новые боссы. 6. Оригинальный саундтрек, который написал Ivan YO. Большое Спасибо! 7. Много прочих мелких улучшений, которые и так будут заметны. 8. В конце все умрут. Ссылки на скачивание: Яндекс Диск Dropbox
-
Неправильно называть это хаком. Это патч на оригинальную игру, даже можно сказать "официальный", ведь делал его не рандомный ромхакер, а основатель компании Traveller's Tales, создавшие оригинальную игру. Он ничего не взламывал, у него есть все оригинальные исходники. Это просто новая и улучшенная версия, но никак не хак.
-
Решил сделать свою версию перевода с исправленными шрифтами. Перевёл всё, кроме хада и подсчёта очков в конце актов/спецуровней, но мог что-то и упустить. https://yadi.sk/d/i_pDTpL13Mffu7 Загрузчик модов можно найти одним сообщением выше.
-
В s2.asm сравни PlrList_Ehz1 и PlrList_Ehz2 с PlrList_Hpz1 и PlrList_Hpz2. Часть проблем ты решишь после этого.
-
В Obj79_Main замени move.w #$7A0,2(a0) на move.w #$6C0,2(a0) Если в хаке есть спиндеш, арт чекпоинта загружается в другое место памяти. Готовый код в том гайде делался без расчёта на спиндеш. Та же проблема может и со звёздочками случится, заменишь эти же значения в Obj79_MakeStarsLoop.
-
Спасибо всем за отзывы, рад что вам понравилось, не зря старался. Хотелось бы сделать уровень гораздо больше, но он и так занимает всю доступную площадь, да и строитель из меня не лучший. Мне пришлось их сделать такими, чтобы уровень казался длиннее и проходился дольше. Когда они были нелинейными, то проходились примерно вдвое быстрее. Весь этот уровень я планировал сделать двумя отдельными уровнями для своего прошлого хака, но большие хаки я не потяну один, поэтому решил сделать маленький. Получилось лучше, чем я планировал это раньше, так что я не жалею, что решил сделать именно минихак. Если вдруг кому-то будет интересно посмотреть на всю карту уровня или кто-то не может найти секреты, то можете глянуть ниже. Катсцена, Уровень, Финальный босс
-
Даже не думал, что парочка правок в коде перед релизом смогу так поломать хак. Спасибо за обнаружение. Вот исправленная версия. Протестировал только в Regen и MD.emu Dropbox Яндекс Диск
-
Частичка финального босса из моего будущего минихака.
-
Всегда хотел тут что-то написать, но не знал что. Вот наконец придумал. Вход в спецуровни через чекпоинты (как в sonic2) Прежде чем начать делать всё по этому гайду, предлагаю вам скачать готовый ром и оценить результат. Вдруг он вам не понравится. Скачать Портировать звездочки для чекпоинта будем из дизасембла Sonic2 от Xenowhirl (Скачать тут) Откроем исходники обоих соников и перейдем к Obj79. Они в основном похожи, но в sonic2 у чекпоинта есть одна дополнительная роутина, которая как раз нам и нужна. Приступаем к портированию. В sonic1.asm найдите Obj79_Index и после строки dc.w Obj79_Twirl-Obj79_Index вставьте dc.w Obj79_Star-Obj79_Index Теперь в s2.asm найдите Obj79_MakeSpecialStars и скопируйте весь код до строки JmpTo2_AnimateSprite и вставьте его в sonic1.asm перед Map_obj79. Obj79_MakeSpecialStars: moveq #4-1,d1 ; execute the loop 4 times (1 for each star) moveq #0,d2 - bsr.w SingleObjLoad2 bne.s return_1F534 _move.b 0(a0),0(a1) ; load obj79 move.l #Obj79_MapUnc_1F4A0,mappings(a1) move.w #$47C,art_tile(a1) move.b #4,render_flags(a1) move.b #8,routine(a1) ; => Obj79_Star move.w x_pos(a0),d0 move.w d0,x_pos(a1) move.w d0,objoff_30(a1) move.w y_pos(a0),d0 subi.w #$30,d0 move.w d0,y_pos(a1) move.w d0,objoff_32(a1) move.b priority(a0),priority(a1) move.b #8,width_pixels(a1) move.b #1,mapping_frame(a1) move.w #-$400,x_vel(a1) move.w #0,y_vel(a1) move.w d2,objoff_34(a1) ; set the angle addi.w #$40,d2 ; increase the angle for next time dbf d1,- ; loop return_1F534: rts ; =========================================================================== ; loc_1F536: Obj79_Star: move.b collision_property(a0),d0 beq.w loc_1F554 andi.b #1,d0 beq.s + move.b #1,($FFFFF7CD).w move.b #$10,(Game_Mode).w ; => SpecialStage + clr.b collision_property(a0) loc_1F554: addi.w #$A,objoff_34(a0) move.w objoff_34(a0),d0 andi.w #$FF,d0 jsr (CalcSine).l asr.w #5,d0 asr.w #3,d1 move.w d1,d3 move.w objoff_34(a0),d2 andi.w #$3E0,d2 lsr.w #5,d2 moveq #2,d5 moveq #0,d4 cmpi.w #$10,d2 ble.s + neg.w d1 + andi.w #$F,d2 cmpi.w #8,d2 ble.s loc_1F594 neg.w d2 andi.w #7,d2 loc_1F594: lsr.w #1,d2 beq.s + add.w d1,d4 + asl.w #1,d1 dbf d5,loc_1F594 asr.w #4,d4 add.w d4,d0 addq.w #1,objoff_36(a0) move.w objoff_36(a0),d1 cmpi.w #$80,d1 beq.s loc_1F5BE bgt.s loc_1F5C4 loc_1F5B4: muls.w d1,d0 muls.w d1,d3 asr.w #7,d0 asr.w #7,d3 bra.s loc_1F5D6 ; =========================================================================== loc_1F5BE: move.b #$D8,collision_flags(a0) loc_1F5C4: cmpi.w #$180,d1 ble.s loc_1F5D6 neg.w d1 addi.w #$200,d1 bmi.w JmpTo10_DeleteObject bra.s loc_1F5B4 ; =========================================================================== loc_1F5D6: move.w objoff_30(a0),d2 add.w d3,d2 move.w d2,x_pos(a0) move.w objoff_32(a0),d2 add.w d0,d2 move.w d2,y_pos(a0) addq.b #1,anim_frame(a0) move.b anim_frame(a0),d0 andi.w #6,d0 lsr.w #1,d0 cmpi.b #3,d0 bne.s + moveq #1,d0 + move.b d0,mapping_frame(a0) bra.w JmpTo_MarkObjGone ; =========================================================================== JmpTo10_DeleteObject jmp DeleteObject ; =========================================================================== nop JmpTo_MarkObjGone jmp MarkObjGone В таком виде код работать не будет, поэтому надо его поправить. В Obj79_MakeSpecialStars замените - (минус) на Obj79_MakeStarsLoop: Ниже замените bsr.w SingleObjLoad2 на jsr SingleObjLoad2 Ниже _move.b 0(a0),0(a1) на move.b 0(a0),0(a1) Перед return_1F534 замените dbf d1,- на dbf d1Obj79_MakeStarsLoop В Obj79_Star замените плюсы на loc_1F553 В loc_1F554 замените плюсы на loc_1F555 В loc_1F594 замените плюсы на loc_1F595 В loc_1F5D6 замените плюсы на loc_1F5D7 Теперь нам надо заменить все константы на байты. Можно конечно сами константы добавить, но я их не особо люблю и поэтому предлагаю избавиться от них. Во всём новом коде находим и заменяем: Obj79_MapUnc_1F4A0 -> Map_obj79b mappings ->$04 art_tile -> $02 render_flags -> $01 routine -> $24 x_pos -> $08 y_pos -> $0C objoff_30 -> $30 objoff_32 -> $32 priority -> $18 width_pixels -> $19 mapping_frame -> $1A x_vel -> $10 y_vel -> $12 objoff_34 -> $34 collision_property -> $21 Game_Mode -> $FFFFF600 objoff_36 -> $36 collision_flags -> $20 anim_frame -> $1B Проверяем... ага, нету мапингов... да и скажу сразу, арта звездочек тоже нету. Не буду рассказывать как их выдрать, а просто приложу архив с уже готовым артом и мапингами. https://yadi.sk/d/lDeBb4Pykc8fP Теперь в коде добавим новые мапинги. Рядом с Map_obj79 добавьте Map_obj79b: include "_maps\obj79b.asm" Снова проверяем и... Скомпилировалось, но звездочки не появляются. Если ещё раз сравнить код из sonic1 и sonic2, то можно увидеть ещё одну важную деталь. В s2.asm в Obj79_CheckActivation в конце есть 3 строчки, которые нам нужны. Копируем и переносим в sonic1.asm перед loc_16F76. Замените в этом коде Ring_count на $FFFFFE20, а loc_1F206 на loc_16F76. При компиляции будет ошибка. Проблема в том, что код стал длинне и некоторые быстрые переходы уже не достают до нужного им кода. В Obj79_HitLamp найдите строчку bcc.s locret_16F90 и сотрите в ней .s Снова проверяем. Работает! Работает, но не совсем. Звездочки отображаются не правильно и мы не попадаем в спец уровень при их прикосновении. Исправляем. Переходим к Obj79_MakeStarsLoop, находим там строчку move.w #$47C,$02(a1) и меняем тут значение с $47C на $7A0. Это адресс, из которого будет браться арт для звездочек. В sonic2 этот арт лежит в другом месте, поэтому такой баг получился. Если у вас в хаке есть спиндеш, то адрес надо указать $6C0 (или $D800/$20, как предлагается в гиде по добавлению спиндеша). Осталось исправить одну вещь, перемещение в спец уровень. Переходим к Obj79_Star. Честно скажу, не знаю в чём проблема, просто замените эти 6 строк на это move.b #$D7,$20(a0) tst.b $21(a0) beq.s loc_1F554 move.b #$10,($FFFFF600).w (первые 2 строчки взяты из кода бампера) Готово. Всё должно работать как надо. Если у вас что-то не получилось, то вот полный готовый код чекпоинта. ; --------------------------------------------------------------------------- ; Object 79 - lamppost ; --------------------------------------------------------------------------- Obj79: ; XREF: Obj_Index moveq #0,d0 move.b $24(a0),d0 move.w Obj79_Index(pc,d0.w),d1 jsr Obj79_Index(pc,d1.w) jmp MarkObjGone ; =========================================================================== Obj79_Index: dc.w Obj79_Main-Obj79_Index dc.w Obj79_BlueLamp-Obj79_Index dc.w Obj79_AfterHit-Obj79_Index dc.w Obj79_Twirl-Obj79_Index dc.w Obj79_Star-Obj79_Index ; =========================================================================== Obj79_Main: ; XREF: Obj79_Index addq.b #2,$24(a0) move.l #Map_obj79,4(a0) move.w #$7A0,2(a0) move.b #4,1(a0) move.b #8,$19(a0) move.b #5,$18(a0) lea ($FFFFFC00).w,a2 moveq #0,d0 move.b $23(a0),d0 bclr #7,2(a2,d0.w) btst #0,2(a2,d0.w) bne.s Obj79_RedLamp move.b ($FFFFFE30).w,d1 andi.b #$7F,d1 move.b $28(a0),d2 ; get lamppost number andi.b #$7F,d2 cmp.b d2,d1 ; is lamppost number higher than the number hit? bcs.s Obj79_BlueLamp ; if yes, branch Obj79_RedLamp: bset #0,2(a2,d0.w) move.b #4,$24(a0) ; run "Obj79_AfterHit" routine move.b #3,$1A(a0) ; use red lamppost frame rts ; =========================================================================== Obj79_BlueLamp: ; XREF: Obj79_Index tst.w ($FFFFFE08).w ; is debug mode being used? bne.w locret_16F90 ; if yes, branch tst.b ($FFFFF7C8).w bmi.w locret_16F90 move.b ($FFFFFE30).w,d1 andi.b #$7F,d1 move.b $28(a0),d2 andi.b #$7F,d2 cmp.b d2,d1 bcs.s Obj79_HitLamp lea ($FFFFFC00).w,a2 moveq #0,d0 move.b $23(a0),d0 bset #0,2(a2,d0.w) move.b #4,$24(a0) move.b #3,$1A(a0) bra.w locret_16F90 ; =========================================================================== Obj79_HitLamp: move.w ($FFFFD008).w,d0 sub.w 8(a0),d0 addq.w #8,d0 cmpi.w #$10,d0 bcc.w locret_16F90 move.w ($FFFFD00C).w,d0 sub.w $C(a0),d0 addi.w #$40,d0 cmpi.w #$68,d0 bcc locret_16F90 move.w #$A1,d0 jsr (PlaySound_Special).l ; play lamppost sound addq.b #2,$24(a0) jsr SingleObjLoad bne.s loc_16F76 move.b #$79,0(a1) ; load twirling lamp object move.b #6,$24(a1) ; use "Obj79_Twirl" routine move.w 8(a0),$30(a1) move.w $C(a0),$32(a1) subi.w #$18,$32(a1) move.l #Map_obj79,4(a1) move.w #$7A0,2(a1) move.b #4,1(a1) move.b #8,$19(a1) move.b #4,$18(a1) move.b #2,$1A(a1) move.w #$20,$36(a1) cmpi.w #$32,($FFFFFE20).w bcs.s loc_16F76 bsr.w Obj79_MakeSpecialStars loc_16F76: move.b #1,$1A(a0) ; use "post only" frame, with no lamp bsr.w Obj79_StoreInfo lea ($FFFFFC00).w,a2 moveq #0,d0 move.b $23(a0),d0 bset #0,2(a2,d0.w) locret_16F90: rts ; =========================================================================== Obj79_AfterHit: ; XREF: Obj79_Index rts ; =========================================================================== Obj79_Twirl: ; XREF: Obj79_Index subq.w #1,$36(a0) bpl.s loc_16FA0 move.b #4,$24(a0) loc_16FA0: move.b $26(a0),d0 subi.b #$10,$26(a0) subi.b #$40,d0 jsr (CalcSine).l muls.w #$C00,d1 swap d1 add.w $30(a0),d1 move.w d1,8(a0) muls.w #$C00,d0 swap d0 add.w $32(a0),d0 move.w d0,$C(a0) rts ; =========================================================================== ; --------------------------------------------------------------------------- ; Subroutine to store information when you hit a lamppost ; --------------------------------------------------------------------------- Obj79_StoreInfo: ; XREF: Obj79_HitLamp move.b $28(a0),($FFFFFE30).w ; lamppost number move.b ($FFFFFE30).w,($FFFFFE31).w move.w 8(a0),($FFFFFE32).w ; x-position move.w $C(a0),($FFFFFE34).w ; y-position move.w ($FFFFFE20).w,($FFFFFE36).w ; rings move.b ($FFFFFE1B).w,($FFFFFE54).w ; lives move.l ($FFFFFE22).w,($FFFFFE38).w ; time move.b ($FFFFF742).w,($FFFFFE3C).w ; routine counter for dynamic level mod move.w ($FFFFF72E).w,($FFFFFE3E).w ; lower y-boundary of level move.w ($FFFFF700).w,($FFFFFE40).w ; screen x-position move.w ($FFFFF704).w,($FFFFFE42).w ; screen y-position move.w ($FFFFF708).w,($FFFFFE44).w ; bg position move.w ($FFFFF70C).w,($FFFFFE46).w ; bg position move.w ($FFFFF710).w,($FFFFFE48).w ; bg position move.w ($FFFFF714).w,($FFFFFE4A).w ; bg position move.w ($FFFFF718).w,($FFFFFE4C).w ; bg position move.w ($FFFFF71C).w,($FFFFFE4E).w ; bg position move.w ($FFFFF648).w,($FFFFFE50).w ; water height move.b ($FFFFF64D).w,($FFFFFE52).w ; rountine counter for water move.b ($FFFFF64E).w,($FFFFFE53).w ; water direction rts ; --------------------------------------------------------------------------- ; Subroutine to load stored info when you start a level from a lamppost ; --------------------------------------------------------------------------- ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| Obj79_LoadInfo: ; XREF: LevelSizeLoad move.b ($FFFFFE31).w,($FFFFFE30).w move.w ($FFFFFE32).w,($FFFFD008).w move.w ($FFFFFE34).w,($FFFFD00C).w move.w ($FFFFFE36).w,($FFFFFE20).w move.b ($FFFFFE54).w,($FFFFFE1B).w clr.w ($FFFFFE20).w clr.b ($FFFFFE1B).w move.l ($FFFFFE38).w,($FFFFFE22).w move.b #59,($FFFFFE25).w subq.b #1,($FFFFFE24).w move.b ($FFFFFE3C).w,($FFFFF742).w move.b ($FFFFFE52).w,($FFFFF64D).w move.w ($FFFFFE3E).w,($FFFFF72E).w move.w ($FFFFFE3E).w,($FFFFF726).w move.w ($FFFFFE40).w,($FFFFF700).w move.w ($FFFFFE42).w,($FFFFF704).w move.w ($FFFFFE44).w,($FFFFF708).w move.w ($FFFFFE46).w,($FFFFF70C).w move.w ($FFFFFE48).w,($FFFFF710).w move.w ($FFFFFE4A).w,($FFFFF714).w move.w ($FFFFFE4C).w,($FFFFF718).w move.w ($FFFFFE4E).w,($FFFFF71C).w cmpi.b #1,($FFFFFE10).w bne.s loc_170E4 move.w ($FFFFFE50).w,($FFFFF648).w move.b ($FFFFFE52).w,($FFFFF64D).w move.b ($FFFFFE53).w,($FFFFF64E).w loc_170E4: tst.b ($FFFFFE30).w bpl.s locret_170F6 move.w ($FFFFFE32).w,d0 subi.w #$A0,d0 move.w d0,($FFFFF728).w locret_170F6: rts ; End of function Obj79_LoadInfo Obj79_MakeSpecialStars: moveq #4-1,d1 ; execute the loop 4 times (1 for each star) moveq #0,d2 Obj79_MakeStarsLoop: jsr SingleObjLoad2 bne.s return_1F534 move.b 0(a0),0(a1) ; load obj79 move.l #Map_obj79b,$04(a1) move.w #$7A0,$02(a1) move.b #4,$01(a1) move.b #8,$24(a1) ; => Obj79_Star move.w $08(a0),d0 move.w d0,$08(a1) move.w d0,$30(a1) move.w $0C(a0),d0 subi.w #$30,d0 move.w d0,$0C(a1) move.w d0,$32(a1) move.b $18(a0),$18(a1) move.b #8,$19(a1) move.b #1,$1A(a1) move.w #-$400,$10(a1) move.w #0,$12(a1) move.w d2,$34(a1) ; set the angle addi.w #$40,d2 ; increase the angle for next time dbf d1,Obj79_MakeStarsLoop ; loop return_1F534: rts ; =========================================================================== ; loc_1F536: Obj79_Star: move.b #$D7,$20(a0) tst.b $21(a0) beq.s loc_1F554 move.b #$10,($FFFFF600).w loc_1F553: clr.b $21(a0) loc_1F554: addi.w #$A,$34(a0) move.w $34(a0),d0 andi.w #$FF,d0 jsr (CalcSine).l asr.w #5,d0 asr.w #3,d1 move.w d1,d3 move.w $34(a0),d2 andi.w #$3E0,d2 lsr.w #5,d2 moveq #2,d5 moveq #0,d4 cmpi.w #$10,d2 ble.s loc_1F555 neg.w d1 loc_1F555: andi.w #$F,d2 cmpi.w #8,d2 ble.s loc_1F594 neg.w d2 andi.w #7,d2 loc_1F594: lsr.w #1,d2 beq.s loc_1F595 add.w d1,d4 loc_1F595: asl.w #1,d1 dbf d5,loc_1F594 asr.w #4,d4 add.w d4,d0 addq.w #1,$36(a0) move.w $36(a0),d1 cmpi.w #$80,d1 beq.s loc_1F5BE bgt.s loc_1F5C4 loc_1F5B4: muls.w d1,d0 muls.w d1,d3 asr.w #7,d0 asr.w #7,d3 bra.s loc_1F5D6 ; =========================================================================== loc_1F5BE: move.b #$D8,$20(a0) loc_1F5C4: cmpi.w #$180,d1 ble.s loc_1F5D6 neg.w d1 addi.w #$200,d1 bmi.w JmpTo10_DeleteObject bra.s loc_1F5B4 ; =========================================================================== loc_1F5D6: move.w $30(a0),d2 add.w d3,d2 move.w d2,$08(a0) move.w $32(a0),d2 add.w d0,d2 move.w d2,$0C(a0) addq.b #1,$1B(a0) move.b $1B(a0),d0 andi.w #6,d0 lsr.w #1,d0 cmpi.b #3,d0 bne.s loc_1F5D7 moveq #1,d0 loc_1F5D7: move.b d0,$1A(a0) bra.w JmpTo_MarkObjGone ; =========================================================================== JmpTo10_DeleteObject jmp DeleteObject ; =========================================================================== nop JmpTo_MarkObjGone jmp MarkObjGone ; =========================================================================== ; --------------------------------------------------------------------------- ; Sprite mappings - lamppost ; --------------------------------------------------------------------------- Map_obj79: include "_maps\obj79.asm" Map_obj79b: include "_maps\obj79b.asm" Так же выложу дизасембл с уже выполненым гайдом. https://yadi.sk/d/z_rjrPVskc8wc Гайд составлен мною, в кредитах указывать не обязательно. Всё-равно никто не укажет :)
-
Вторая строчка в Obj21_Main move.w #$90,8(a0)
-
Замени весь код LZMoveWater на этот LZMoveWater: clr.b ($FFFFF64E).w cmp.w #$101,($FFFFFE10).w beq.s LZMoveWater2 moveq #0,d0 move.b ($FFFFFE60).w,d0 lsr.w #1,d0 LZMoveWater2: add.w ($FFFFF648).w,d0 move.w d0,($FFFFF646).w move.w ($FFFFF646).w,d0 sub.w ($FFFFF704).w,d0 bcc.s loc_3C1A tst.w d0 bpl.s loc_3C1A move.b #-$21,($FFFFF625).w move.b #1,($FFFFF64E).w Движение воды полностью отключится. Но есть один минус. Если ты будешь менять уровень воды, то вода будет изменяться резко, а не плавно.
-
Никогда бы не подумал, что это LZ. Выглядит классно.
-
SonicMen210, лично тебе нравится играть в свой хак? Ты получаешь удовольствие, когда в него играешь?
-
Привет всем любителям хаков. Прошло чуть больше года с момента релиза первой версии моего хака (на тот момент ещё безымянного) и теперь я хочу показать новую версию. Изменения: Новые способности Новые уровни Новая графика Новая музыка (Большое спасибо Ivan YO за помощь с музыкой) Новый игровой режим Меню настроек (не из Sonic 2) Изменены боссы Меню бонусов (откроется после прохождения любого режима) И прочие изменения. Всё рассказывать не буду. Эта версия ещё не является финальной и я собираюсь продолжать работу над хаком. Скачать http://yadi.sk/d/TZlcPQXGHzZwD https://www.dropbox.com/s/wospz91zd3d8g43/S1TE.bin
-
Я к нему вернулся из-за двух причин. 1) Ivan YO меня уговаривает добавить английский язык и выложить хак на иностранных форумах (скорее всего так и будет). 2) Я ещё не смог придумать русское название уровня, поэтому специально для видео поставил английское (которое мне Иван предложил). Ага
-
Это потрясающе. Выглядит великолепно. Мне бы твои навыки) Несомненно докажет. Желаю удачи!
-
Если кто-то пробовал запустить SYZ, то они могли увидеть новый дизайн и не законченость уровня. Примерно так будет выглядеть эта зона. (возможно будут ещё какие-то изменения) Это не единственное, что было сделано за эти 2 месяца, но остальное пока что показывать рано. Всему своё время.
-
При загрузке следующего уровня идёт проверка, какой уровень щас. В этом файле проверяется, что должно идти после этого уровня. Редактировать его довольно просто. Например мы хотим сделать, что бы после MZ1 запускался сразу SYZ3. Находим в файле уровень MZ1 (третья строчка, первый столбик), вписываем туда 04 02. Я не умею нормально объяснять, но надеюсь ты понял. Так же можно заменить bin файл на asm с таким содержимым ; ---------------------------------------------------------------------------------------- ; Порядок уровней ; ---------------------------------------------------------------------------------------- dc.b $00,$01 ; GHZ1 -> GHZ2 dc.b $00,$02 ; GHZ2 -> GHZ3 dc.b $02,$00 ; GHZ3 -> MZ1 dc.b $00,$00 ; GHZ4 -> dc.b $01,$01 ; LZ1 -> LZ2 dc.b $01,$02 ; LZ2 -> LZ3 dc.b $03,$00 ; LZ3 -> SLZ1 dc.b $05,$02 ; LZ4 -> SBZ3 dc.b $02,$01 ; MZ1 -> MZ2 dc.b $02,$02 ; MZ2 -> MZ3 dc.b $04,$00 ; MZ3 -> SYZ1 dc.b $00,$00 ; MZ4 -> dc.b $03,$01 ; SLZ1 -> SLZ2 dc.b $03,$02 ; SLZ2 -> SLZ3 dc.b $05,$00 ; SLZ3 -> SBZ1 dc.b $00,$00 ; SLZ4 -> dc.b $04,$01 ; SYZ1 -> SYZ2 dc.b $04,$02 ; SYZ2 -> SYZ3 dc.b $01,$00 ; SYZ3 -> LZ1 dc.b $00,$00 ; SYZ4 -> dc.b $05,$01 ; SBZ1 -> SBZ2 dc.b $01,$03 ; SBZ2 -> LZ4 dc.b $00,$00 ; SBZ3 -> dc.b $00,$00 ; SBZ4 -> Особых отличий нет, просто этот файл будет легче редактировать.
-
https://www.dropbox.com/s/b6thhizf4ax7agh/SCAA.zip
-
Можешь просто изменить маппинг хада (_maps/obj21.asm), либо в Obj21_Main изменить вторую и третью строчку, отвечающие за место расположение хада на экране. Если я правильно понял, тебе именно это надо.
-
Загрузка босса GHZ происходит в Resize_GHZ3. Можешь просто скопировать весь код и поместить его на место Resize_SYZ1 (переименовав все лейблы, что бы названия не повторялись). То же самое и с боссом SLZ. Resize_SLZ3 на Resize_SYZ2. Если не понятно, вот готовый пример http://yadi.sk/d/TowTkqDsKCAmY. Тут только босс GHZ добавлен (графика кривая, думаю сможешь исправить), босса на второй акт думаю сможешь поставить сам по примеру первого акта.
-
Я бы тебе, как новичку, посоветовал хотя бы уровни изменить. И изменить нормально, а не передвинуть 3 объекта и поменять местами 2 чанка. Пока что в хаке нет ничего особенного. Кстати, ты снова выложил не туда. Выкладывай в этой теме.
-
Он не теряет кольца, потому что становиться Супер Соником не от 50 колец или не от разбитого S-монитора. Он сделан как отдельный персонаж. Босс в водохранилище будет. Сейчас его нет, потому что я ещё не придумал, какой он будет. Смену языка на английский, как в прошлой версии, я не стал делать, потому что посчитал это не нужным. Выкладывать хак где-то на иностранных форумах я скорее всего не стану. В прошлый раз я сделал смену языка просто для эксперимента, и не стал убирать из релизной версии. Четвёртый акт я использовал для разных тестов, но перед релизом я его сделал пустым и бесконечным. Так же он используется в титульнике.
-
Случайно вчера нашёл свой первый хак, который был сделан в декабре 2009 года. Почему бы не выложить такое старьё. Изменения: Новая палитра (зимняя) Новые уровни (все уровни изменены) Новый спрайт соника (который уже некоторые видели) https://www.dropbox.com/s/oue4mkpacjf2ecn/S1NewYear.bin http://yadi.sk/d/OuBiZ857JByUt
-
Спасибо. Я очень рад, что не зря старался). Никогда бы не подумал, что это можно отнести к плюсам. Хотя я с этим согласен, т.к. не очень хорошо отношусь к самонаводке. Не уследил :(. Со всеми бывает. Надеюсь к следующей версии я смогу найти себе бетатестеров в помощь.
-
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу