Перейти к содержимому

SHooTeR

Пользователи
  • Публикации

    30
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    4

Все публикации пользователя SHooTeR

  1. Sonic 1: Egg Factory - мой минихак, который я недавно упоминал в топике для скриншотов, наконец закончен и я рад представить его вам! Что же в нём нового? 1. Полностью новый уровень с новой графикой 2. Новые и изменённые враги 3. Разные щиты с разными способностями Белый - Двойной прыжок Синий - Защита от мелких снарядов врагов Красный - Jumpdash Желтый - Притягивание колец 4. Секретики! На уровне есть несколько секретов, с одним из них можно взаимодействовать. 5. Новые боссы. 6. Оригинальный саундтрек, который написал Ivan YO. Большое Спасибо! 7. Много прочих мелких улучшений, которые и так будут заметны. 8. В конце все умрут. Ссылки на скачивание: Яндекс Диск Dropbox
  2. Неправильно называть это хаком. Это патч на оригинальную игру, даже можно сказать "официальный", ведь делал его не рандомный ромхакер, а основатель компании Traveller's Tales, создавшие оригинальную игру. Он ничего не взламывал, у него есть все оригинальные исходники. Это просто новая и улучшенная версия, но никак не хак.
  3. Решил сделать свою версию перевода с исправленными шрифтами. Перевёл всё, кроме хада и подсчёта очков в конце актов/спецуровней, но мог что-то и упустить. https://yadi.sk/d/i_pDTpL13Mffu7 Загрузчик модов можно найти одним сообщением выше.
  4. В s2.asm сравни PlrList_Ehz1 и PlrList_Ehz2 с PlrList_Hpz1 и PlrList_Hpz2. Часть проблем ты решишь после этого.
  5. В Obj79_Main замени move.w #$7A0,2(a0) на move.w #$6C0,2(a0) Если в хаке есть спиндеш, арт чекпоинта загружается в другое место памяти. Готовый код в том гайде делался без расчёта на спиндеш. Та же проблема может и со звёздочками случится, заменишь эти же значения в Obj79_MakeStarsLoop.
  6. Спасибо всем за отзывы, рад что вам понравилось, не зря старался. Хотелось бы сделать уровень гораздо больше, но он и так занимает всю доступную площадь, да и строитель из меня не лучший. Мне пришлось их сделать такими, чтобы уровень казался длиннее и проходился дольше. Когда они были нелинейными, то проходились примерно вдвое быстрее. Весь этот уровень я планировал сделать двумя отдельными уровнями для своего прошлого хака, но большие хаки я не потяну один, поэтому решил сделать маленький. Получилось лучше, чем я планировал это раньше, так что я не жалею, что решил сделать именно минихак. Если вдруг кому-то будет интересно посмотреть на всю карту уровня или кто-то не может найти секреты, то можете глянуть ниже. Катсцена, Уровень, Финальный босс
  7. Даже не думал, что парочка правок в коде перед релизом смогу так поломать хак. Спасибо за обнаружение. Вот исправленная версия. Протестировал только в Regen и MD.emu Dropbox Яндекс Диск
  8. Частичка финального босса из моего будущего минихака.
  9. Всегда хотел тут что-то написать, но не знал что. Вот наконец придумал. Вход в спецуровни через чекпоинты (как в 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 Гайд составлен мною, в кредитах указывать не обязательно. Всё-равно никто не укажет :)
  10. Вторая строчка в Obj21_Main move.w #$90,8(a0)
  11. Замени весь код 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 Движение воды полностью отключится. Но есть один минус. Если ты будешь менять уровень воды, то вода будет изменяться резко, а не плавно.
  12. Никогда бы не подумал, что это LZ. Выглядит классно.
  13. SonicMen210, лично тебе нравится играть в свой хак? Ты получаешь удовольствие, когда в него играешь?
  14. Привет всем любителям хаков. Прошло чуть больше года с момента релиза первой версии моего хака (на тот момент ещё безымянного) и теперь я хочу показать новую версию. Изменения: Новые способности Новые уровни Новая графика Новая музыка (Большое спасибо Ivan YO за помощь с музыкой) Новый игровой режим Меню настроек (не из Sonic 2) Изменены боссы Меню бонусов (откроется после прохождения любого режима) И прочие изменения. Всё рассказывать не буду. Эта версия ещё не является финальной и я собираюсь продолжать работу над хаком. Скачать http://yadi.sk/d/TZlcPQXGHzZwD https://www.dropbox.com/s/wospz91zd3d8g43/S1TE.bin
  15. Я к нему вернулся из-за двух причин. 1) Ivan YO меня уговаривает добавить английский язык и выложить хак на иностранных форумах (скорее всего так и будет). 2) Я ещё не смог придумать русское название уровня, поэтому специально для видео поставил английское (которое мне Иван предложил). Ага
  16. Это потрясающе. Выглядит великолепно. Мне бы твои навыки) Несомненно докажет. Желаю удачи!
  17. Если кто-то пробовал запустить SYZ, то они могли увидеть новый дизайн и не законченость уровня. Примерно так будет выглядеть эта зона. (возможно будут ещё какие-то изменения) Это не единственное, что было сделано за эти 2 месяца, но остальное пока что показывать рано. Всему своё время.
  18. При загрузке следующего уровня идёт проверка, какой уровень щас. В этом файле проверяется, что должно идти после этого уровня. Редактировать его довольно просто. Например мы хотим сделать, что бы после 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 -> Особых отличий нет, просто этот файл будет легче редактировать.
  19. https://www.dropbox.com/s/b6thhizf4ax7agh/SCAA.zip
  20. Можешь просто изменить маппинг хада (_maps/obj21.asm), либо в Obj21_Main изменить вторую и третью строчку, отвечающие за место расположение хада на экране. Если я правильно понял, тебе именно это надо.
  21. Загрузка босса GHZ происходит в Resize_GHZ3. Можешь просто скопировать весь код и поместить его на место Resize_SYZ1 (переименовав все лейблы, что бы названия не повторялись). То же самое и с боссом SLZ. Resize_SLZ3 на Resize_SYZ2. Если не понятно, вот готовый пример http://yadi.sk/d/TowTkqDsKCAmY. Тут только босс GHZ добавлен (графика кривая, думаю сможешь исправить), босса на второй акт думаю сможешь поставить сам по примеру первого акта.
  22. Я бы тебе, как новичку, посоветовал хотя бы уровни изменить. И изменить нормально, а не передвинуть 3 объекта и поменять местами 2 чанка. Пока что в хаке нет ничего особенного. Кстати, ты снова выложил не туда. Выкладывай в этой теме.
  23. Он не теряет кольца, потому что становиться Супер Соником не от 50 колец или не от разбитого S-монитора. Он сделан как отдельный персонаж. Босс в водохранилище будет. Сейчас его нет, потому что я ещё не придумал, какой он будет. Смену языка на английский, как в прошлой версии, я не стал делать, потому что посчитал это не нужным. Выкладывать хак где-то на иностранных форумах я скорее всего не стану. В прошлый раз я сделал смену языка просто для эксперимента, и не стал убирать из релизной версии. Четвёртый акт я использовал для разных тестов, но перед релизом я его сделал пустым и бесконечным. Так же он используется в титульнике.
  24. Случайно вчера нашёл свой первый хак, который был сделан в декабре 2009 года. Почему бы не выложить такое старьё. Изменения: Новая палитра (зимняя) Новые уровни (все уровни изменены) Новый спрайт соника (который уже некоторые видели) https://www.dropbox.com/s/oue4mkpacjf2ecn/S1NewYear.bin http://yadi.sk/d/OuBiZ857JByUt
  25. Спасибо. Я очень рад, что не зря старался). Никогда бы не подумал, что это можно отнести к плюсам. Хотя я с этим согласен, т.к. не очень хорошо отношусь к самонаводке. Не уследил :(. Со всеми бывает. Надеюсь к следующей версии я смогу найти себе бетатестеров в помощь.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×