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

Туториалы по хакингу Sonic (Genesis/Mega Drive)

Рекомендуемые сообщения

 

 

Я имею ввиду то что я хочу узнать каким образом работает спосоность ток под щитом,а пил аут мне для веселья.Тем более способности соника мне нужны для того чтобы веселиться а не делать хаки и выкладывать в интернет и говорить "Ой смотрите какой я молодец!"

Изменено пользователем FantomTheHedgehog

Поделиться сообщением


Ссылка на сообщение

@@T.N., прекрати. Это уже давно никому не смешной баян.

  • Лайк 1
  • Дизлайк 1

Поделиться сообщением


Ссылка на сообщение

Пилю дополнение к гайду владиккомпера по PeelOut'у.

 

Как сделать бег Соника как в Sonic CD, или же PeelOut с анимацией пробежки.

 

Основу можно посмотреть в теме про PSC.

 

 

Буду продолжать гайд, будто он один, не разделён.

Нужно копировать не много спрайтов Peel Out'а и вставить их в artunc\sonic.bin через SonMapED.

 

 

После этого мы создаём ещё одну анимацию и называем к примеру: SSOR, и пишем это после анимации самого PeelOut'а:

SonAni_SSOR:	        dc.b 3, $5E, $5F, $60, $61, $FF

Потом лезем в sonic1.asm и ищем этот код:

loc_13A9C:
        lea    (SonAni_Run).l,a1; use    running    animation
        cmpi.w    #$600,d2; is Sonic at running speed?
        bcc.s    loc_13AB4; if yes, branch
        lea    (SonAni_Walk).l,a1; use walking animation

И перед этим:

        lea    (SonAni_Run).l,a1; use    running    animation

Пишем это:

		lea	(SonAni_SSOR).l,a1
		cmpi.w	#$A00,d2	; is Sonic at running speed?
		bcc.s	loc_13AB4	; if yes, branch

Потом вы можете откомпилировать РОМ и проверить. Всё работает замечательно.

 

Думаю этот гайд кому нибудь пригодится. Надеюсь на это.

  • Лайк 1
  • Дизлайк 1

Поделиться сообщением


Ссылка на сообщение

 

T.N., ты так точно предупреждение получишь.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
гайд

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

Изменено пользователем Mr. Cat

Поделиться сообщением


Ссылка на сообщение

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

 

Я так и написал, просто сократил. Я же об этом знаю. И у меня всё работает. Кстати, можно использовать спрайты из STHOSP, но если у вас есть и другие спрайты, то самому, так я и сделал.

Поделиться сообщением


Ссылка на сообщение

У меня тут гайд есть один!Ни кому не надо?(Гайд как сделать музон при разбитии монитора ускорения)

Поделиться сообщением


Ссылка на сообщение

У меня тут гайд есть один!Ни кому не надо?(Гайд как сделать музон при разбитии монитора ускорения)

Либо гайд с SF21, либо гайд с SF21.

  • Лайк 4

Поделиться сообщением


Ссылка на сообщение

Либо гайд с SF21, либо гайд с SF21.

это даа!но нубы которые ничего не знают про SF21 то им это приготдится(ну и пусть пополнится коллекция гидов а-то маловато будет)

Поделиться сообщением


Ссылка на сообщение

это даа!но нубы которые ничего не знают про SF21 то им это приготдится(ну и пусть пополнится коллекция гидов а-то маловато будет)

Если что, отвечаю про нубов.

Зачем нубам такие финти-флюшки в хак? Ты понимаешь, как это будет выглядеть, если положить бисер на высер?

Лучше запили гайд о пользе комментариев в файле sonic1.asm. Я практическу всему, что делал (за ислючением первого кода стрельбы по окружности - Владиккомпер помог) научился благодаря тому, что внимательно облазил львиную часть sonic1.asm.

По причине того, что даже ПК у меня тогда только-только появился, я был тотальным нубом, по сравнению даже с многими школолетками. (Я тогда переходил с 8-го на 9 класс)

Я зарегался на CIS в феврале 2012 года - через пол года после появления ПК. Я выложил свой первый хак - с прямыи скучным строением, но зато с переделанным боссом, которым, естественно, привлёк к себе некоторое внимание.

Это был первый сделанный мною босс GHZ - битва с ним была не затянутой и интересной, а тот факт, что вообще боссов мало кто делает, помог найти некоторых людей, которые могли стать командой со мной. (Но моя привычка работать в одиночку не позволила)

А сделан был этот босс без достаточных знаний ASM: я выборочно удалял строки, менял значения констант, пытался понять, чем отличаются bne и beq (тут мне уже мануал помог - без этого никак). Я опирался, в основном, на комментарии, заботливо расставленные в S1HS её автором, а также автором исходного кода.

(З.Ы.: В конце концов, я забросил хакинг к чертям, потому, что то, что я хочу сделать, не позволяет железо. Ллл. Перехожу на ПК уровень. ^_^

А то, что успел сделать, возможно, придётся стереть: гиговая папка хака, забитая мусором, всё не даёт мне покоя. Будут покоиться мои боссы...)

Поделиться сообщением


Ссылка на сообщение

Информация,много её! t:}

да ты прав!Но я привык всё не очень быстро делать.Хотя я ношусь чуть -ли не со свехзвуковой скоростью

 

Я тоже код зырю(ещё чуть-чуть и я что-нибудь да и напишу)

 

З.Ы а про коменты это я могу!

 

Upt:

Дааа...насчёт нубов ты прав(появятся хаки с вырвиглазной палитрой,кривым строением уровней,ужасным музоном но зато с музыкой при ускорении)

Изменено пользователем ogyck the hedghog

Поделиться сообщением


Ссылка на сообщение

но нубы которые ничего не знают про SF21 то им это приготдится

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

  • Лайк 2
  • Дизлайк 1

Поделиться сообщением


Ссылка на сообщение

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

Я знал про него очень давно!

ПСЫ:Оффтоп прекращаем!

Изменено пользователем ogyck the hedghog
  • Лайк 2
  • Дизлайк 4

Поделиться сообщением


Ссылка на сообщение

Ребят,можете кинуть дизассембл S3K с нормальным исходником.
А то у исходника с Sonic Retro строчки склеины с друг другом,ничго не понять.
Помню был дизассембл,но найти его не могу :(

Изменено пользователем FramiX
  • Дизлайк 1

Поделиться сообщением


Ссылка на сообщение

Всем хорошего результата! :D

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

Поделиться сообщением


Ссылка на сообщение

Стоило более грамотно перевести и оформить.

Изменено пользователем VladislavSavvateev

Поделиться сообщением


Ссылка на сообщение
Итак, если быстро, очень быстро крутиться в клубке и врезаться в Катеркиллера, то игрок получит урон

 

 

Разве это баг, а не фича? 

Поделиться сообщением


Ссылка на сообщение

Разве это баг, а не фича? 

Почему это должно быть фичей?

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

По-моему логично, что, если Соник со всей скорости врежется в катеркиллера, то заденет колючки.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

По-моему логично, что, если Соник со всей скорости врежется в катеркиллера, то заденет колючки.

Но он же при этом вращается в клубке. Хотя, в данном случае однозначно ничего сказать нельзя.

Поделиться сообщением


Ссылка на сообщение
Но он же при этом вращается в клубке

 

Даже если соник вращается в клубке и заденет колючки - он потеряет кольца.

  • Лайк 2

Поделиться сообщением


Ссылка на сообщение

Даже если соник вращается в клубке и заденет колючки - он потеряет кольца.

Но Катеркиллер всё-таки бадник, а не колючки, а бадников Соник в таком состоянии уничтожает.

Поделиться сообщением


Ссылка на сообщение

Простой гайд.
Автовключение Level Select в Sonic 2 SMS
 
Зачем? Ну, дело в том, что в S2SMS это геморрой полный, а при хакинге это очень надо.
 
Ищем в /src/s2.asm этот код:
 

LABEL_24BE_48:
    ;check for level select trigger
    ld    a, (LevelSelectTrg)
    cp    $0D
    jr    nz, +
    xor   a
    ld    ($D294), a
    call  LevelSelectMenu     ;run the level select
    call  PaletteFadeOut
    ld    b, $2A
-:  ei
    halt
    djnz  -
+:  xor     a
    ld    ($D292), a
    ld    (GlobalTriggers), a
    ret

И заменяем на:
 

LABEL_24BE_48:
    ;check for level select trigger
    call  LevelSelectMenu     ;run the level select
    ;ld    a, (LevelSelectTrg)
    ;cp    $0D
    ;jr    nz, +
    ;xor   a
    ;ld    ($D294), a
    ;call  LevelSelectMenu     ;run the level select
    call  PaletteFadeOut
    ld    b, $2A
-:  ei
    halt
    djnz  -
+:  xor     a
    ld    ($D292), a
    ld    (GlobalTriggers), a
    ret
  • Лайк 2

Поделиться сообщением


Ссылка на сообщение

Пилю дополнение к гайду владиккомпера по PeelOut'у.

 

Как сделать бег Соника как в Sonic CD, или же PeelOut с анимацией пробежки.

 

Основу можно посмотреть в теме про PSC.

 

 

Буду продолжать гайд, будто он один, не разделён.

Нужно копировать не много спрайтов Peel Out'а и вставить их в artunc\sonic.bin через SonMapED.

 

 

После этого мы создаём ещё одну анимацию и называем к примеру: SSOR, и пишем это после анимации самого PeelOut'а:

SonAni_SSOR:	        dc.b 3, $5E, $5F, $60, $61, $FF

Потом лезем в sonic1.asm и ищем этот код:

loc_13A9C:
        lea    (SonAni_Run).l,a1; use    running    animation
        cmpi.w    #$600,d2; is Sonic at running speed?
        bcc.s    loc_13AB4; if yes, branch
        lea    (SonAni_Walk).l,a1; use walking animation

И перед этим:

        lea    (SonAni_Run).l,a1; use    running    animation

Пишем это:

		lea	(SonAni_SSOR).l,a1
		cmpi.w	#$A00,d2	; is Sonic at running speed?
		bcc.s	loc_13AB4	; if yes, branch

Потом вы можете откомпилировать РОМ и проверить. Всё работает замечательно.

 

Думаю этот гайд кому нибудь пригодится. Надеюсь на это.

It's not working, all what I see it's error :(

Изменено пользователем Какой-то чел

Поделиться сообщением


Ссылка на сообщение

Как сделать Сонику напарника  (Тейлза) в Sonic 1

Нужно портировать графику Тейлза и его объект из Sonic 2, параллельно подстраивая под новый движок.

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

Что-ж, решил я написать свой простой и понятный гид, надеюсь он сможет ХОТЬ КОМУ-ТО помочь.

 

Как починить петли в уровнях.

 

Если вы когда-нибудь переделывали Грин Хилл, то могли заметить, что если поставить мертвую петлю на уровень, то Соник пробегает сквозь неё. Как это исправить? Выхода два:

 

Способ 1.

 

Это самый лёгкий способ, нужно найти готовый чанк с петлёй (вроде той, что Сониктимовцы поставили в конец первого акта) и скопировать, дальше просто ставим на нужное место. Но что делать, если вы переделали уровень под корень, или там нет петли? Тут нам поможет второй способ.

 

Способ 2.

 

ВНИМАНИЕ! Я пробовал только в S1LE. Насчёт других редакторов не знаю точно, но по идее должно быть примерно так-же.

 

Причина "сломанности" петли - неправильный тип чанка. Чтобы это исправить нужно нажать ПКМ, выбрать вкладку "Тип" и нажать "Петля". Всё, проблема исправлена! Удачи в построении уровней! Всем печенек! :3

 

P.S. Надеюсь, теперь я не увижу хаков со сломанной петлёй.

  • Лайк 2

Поделиться сообщением


Ссылка на сообщение

Многие начинающие ромхакеры , глядя на папку с исходником , наверняка видели там файл macro.asm  , но либо не задумывались о его значении , либо просто не находили ответа на этот вопрос. Итак , давайте разложим всё по полочкам.

Для начала , давайте разберёмся : Что же такое макрос ?

Макрос – это определённый набор кода , который можно вызвать одной командой.
Макросы могут находиться как в macro.asm , так и в самом исходном коде.

Рассмотрим применение макросов на примере добавления эффекта вспышки перед боссом:

Итак , для начала нам необходимо открыть sonic1.asm , и найти там :

 

Resize_GHZ3boss:
		cmpi.w	#$960,($FFFFF700).w
		bcc.s	loc_6EB0
		subq.b	#2,($FFFFF742).w

loc_6EB0:
		cmpi.w	#$2960,($FFFFF700).w
		bcs.s	locret_6EE8
		bsr.w	SingleObjLoad
		bne.s	loc_6ED0
		move.b	#$3D,0(a1)	; load GHZ boss	object
		move.w	#$2A60,8(a1)	; X-position
		move.w	#$280,$C(a1)	; Y-position

loc_6ED0:
		move.w	#$9C,d0
		bsr.w	PlaySound	; play boss music
		move.b	#1,($FFFFF7AA).w ; lock	screen
		addq.b	#2,($FFFFF742).w
		moveq	#$11,d0
		bra.w	LoadPLC		; load boss patterns



Здесь  нам  понадобиться изменить только 1 лок , а именно :
 

loc_6ED0:
		move.w	#$9C,d0
		bsr.w	PlaySound	; play boss music
		move.b	#1,($FFFFF7AA).w ; lock	screen
		addq.b	#2,($FFFFF742).w
		moveq	#$11,d0
		bra.w	LoadPLC		; load boss patterns



Итак , добавляем  после  bsr.w              PlaySound          ; play boss music  следующий код:

                            

                             jsr	(Pal_MakeWhite).l   ;  вспышка
                             jsr	(Pal_FadeTo).l  ; выход из вспышки



Компилируем , проверяем. Если всё работает , то читаем дальше.

Итак , давайте разберемся , что же мы именно сделали.


 

jsr           (Pal_MakeWhite).l   ;  вспышка 



Этот макрос вызывает непосредственно вспышку : Экран становится белым , управление персонажем отключается. Но как же тогда мы будем сражаться с боссом? Надо как-то выйти из такого состояния , и в этом нам поможет…

 

jsr           (Pal_FadeTo).l  ; выход из вспышки



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

Итак , мы разобрались с использованием макросов из исходника.

Теперь попробуем использовать макрос из
macro.asm

Итак , допустим , вы хотите , чтобы при появлении босса не только была вспышка , но ещё и ускорялась музыка. В этом нам помогут макросы от товарища Савватеева , предусмотрительно добавленные мной в исходник Romhacker Starter Pack

Итак , открываем  macro.asm  и находим там :

 

SpeedUp                             macro
                               move.b                #$E2,d0
                               jsr                          PlaySound_Special
                               endm



Из всего этого нам понадобиться только  SpeedUp
Это – название макроса.
Итак ,  переходим к уже знакомым нам:



                           

                             jsr             (Pal_MakeWhite).l   ;  вспышка

                             jsr             (Pal_FadeTo).l  ; выход из вспышки



И добавляем перед ними:

                          

   SpeedUp ; Заюзать макрос


Весьма просто , не правда ли?
Компилируем , проверяем.

А теперь , попробуем написать свой собственный макрос!

Итак  , чтобы каждый раз не писать один и тот же код , при появлении босса  ,давайте напишем свой собственный макрос.
Открываем
macro.asm и в самый конец вставляем:







 

; =============================================================

; Новый макрос!

; -------------------------------------------------------------

BossAppear       macro

                               SpeedUp ; Заюзать макрос

                               jsr           (Pal_MakeWhite).l   ;  вспышка

                            jsr              (Pal_FadeTo).l  ; выход из вспышки

endm


Сохраняем , и  снова открываем  sonic1.asm .
Находим там :

                         

       SpeedUp ; Заюзать макрос

                               jsr           (Pal_MakeWhite).l   ;  вспышка

                            jsr              (Pal_FadeTo).l  ; выход из вспышки


И заменяем на:


             

BossAppear ; Заюзать макрос




Как всегда , компилируем и проверяем , всё ли работает.

Ну а теперь , давайте разбираться : Что же мы собственно сделали?

Итак , сначала рассмотрим вот этот код:

; =============================================================

; Новый макрос!

; -------------------------------------------------------------

BossAppear       macro


BossAppear  - это название макроса , которое будет использоваться для его вызова
macro идентифицирует этот код как макрос

Теперь переходим непосредственно , к содержанию макроса:
                         

    SpeedUp ; Заюзать макрос

                               jsr           (Pal_MakeWhite).l   ;  вспышка

                            jsr              (Pal_FadeTo).l  ; выход из вспышки


Как мы видим , содержание нового макроса BossAppear полностью идентично тому коду , который мы использовали раньше , однако теперь , если мы захотим добавить тот же самый эффект , при появлении других боссов , то вместо трёх строчек кода , мы используем всего одну!

Ну и наконец :


endm – эта команда всегда ставится в конце макроса , и является его завершением

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

 

Изменено пользователем Rеb Brown

Поделиться сообщением


Ссылка на сообщение

Мой туториал "как  добавить выбор уровней из соника 2 в соник 1" (Он полностью работает).

Скачиваем "s2menu.rar" (он снизу) и разархивируем в свой дизассембл.

Теперь добавляем выбор уровней в игру:

заходим в "sonic1.asm",

Идём в конец и видим:

; end of 'ROM'
EndOfRom:


		END

добавляем над этим кодом вот эту строчку:

 include "s2_menu.asm" ; Sonic 2 Level Select

Теперь ищем вот это:

Title_ChkLevSel:
		tst.b	($FFFFFFE0).w		; check	if level select	code is	on
		beq.w	PlayLevel		; if not, play level
		btst	#iA,(Joypad|Held).w	; check if A is held
		beq.w	PlayLevel		; if not, play level
		moveq	#2,d0
		bsr.w	PalLoad2		; load level select pallet
		lea	($FFFFCC00).w,a1
		moveq	#0,d0
		move.w	#$DF,d1

и заменяем на это

Title_ChkLevSel:
		tst.b	($FFFFFFE0).w		; check	if level select	code is	on
		beq.w	PlayLevel		; if not, play level
		btst	#iA,(Joypad|Held).w	; check if A is held
		beq.w	PlayLevel		; if not, play level
		jmp     Level_Select_Menu ; if yes, goto Sonic 2 level select
		moveq	#2,d0
		bsr.w	PalLoad2		; load level select pallet
		lea	($FFFFCC00).w,a1
		moveq	#0,d0
		move.w	#$DF,d1

Выбор уровней добавлен!

Теперь заходим в "_inc\Pallet Pointers.asm"

и добавляем в самый низ вот это:

    dc.l Menu_Palette
    dc.w $FB00
    dc.w $1F

Теперь заходим в "s2_menu.asm" и ищем:

Menu_Level_Select_Text: 
                dc.b    $0E, _G, _R, _E, _E, _N, __, _H, _I, _L, _L, __, __, __, __, __
                dc.b    $0E, _L, _A, _B, _Y, _R, _I, _N, _T, _H, __, __, __, __, __, __
                dc.b    $0E, _M, _A, _R, _B, _L, _E, __, __, __, __, __, __, __, __, __
                dc.b    $0E, _S, _P, _R, _I, _N, _G, __, _Y, _A, _R, _D, __, __, __, __
                dc.b    $0E, _S, _T, _A, _R, __, _L, _I, _G, _H, _T, __, __, __, __, __
                dc.b    $0E, _S, _C, _R, _A, _P, __, _B, _R, _A, _I, _N, __, __, __, __
                dc.b    $0E, _F, _I, _N, _A, _L, __, __, __, __, __, __, __, __, __, __   
                dc.b    $0E, _S, _P, _E, _C, _I, _A, _L, __, _S, _T, _A, _G, _E, __, __
                dc.b    $0E, _E, _N, _D, _I, _N, _G, __, _S, _E, _Q, _U, _E, _N, _C, _E
                dc.b    $0E, _S, _O, _U, _N, _D, __, _T, _E, _S, _T, __, __, _st,__, __              

теперь изменяем тексты...

Видите в начале "s2_menu.asm" вот эти строчки?

Level_Select_Menu_snd   = $0081
Emerald_Snd             = $0093
Ring_Snd                = $00B5
Volume_Down             = $00E0
Stop_Sound              = $00E4

Я скажу что они делают:

Level_Select_Menu_snd   = $0081 ; Это музыка в выборе уровней
Emerald_Snd             = $0093 ; Это звук после наведения кода на все изумруды
Ring_Snd                = $00B5 ; Это звук после кода на Debug
Volume_Down             = $00E0 ; Это НЕ трогать)
Stop_Sound              = $00E4 ; Это тоже))

Всё! Легко не правда ли?

s2menu.rar

Изменено пользователем Tihon12
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×