-
Публикации
19 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем DelayHacks
-
-
Я бы тебе посоветовал юзать не это, а скачать дизассембл и хакать на нём самостоятельно. Так будет намного лучшеСкажи, на XP она идёт?
Отправлено с моего Wileyfox Spark + через Tapatalk
0 -
14 часа назад, Donat сказал:Как установить?
Распаковывай файлы архива в любую папку (рекомендую в какую-нибудь папку диска C:\) и запускаешь .exe файл
0 -
В 18.04.2018в00:58, DanilVEK12 сказал:А у меня вопрос? как можно поменять титульник? (где соник вылезает из слов SEGA снизу)
Изменять код игры никто не запрещал
0 -
Моя фан-игра (3-ий скрин это не первая зона, это бонус, просто поиграть ещё, если на обычных уровнях скучно)
1 -
Здесь я собрал и буду собирать свои гайды по хакингу.
1. Как добавить Jump Dash в S3K?
Ищем роутину "Sonic_InstaShield" и заменяем её на это:
ЦитатаSonic_InstaShield: ; Jumpdash code for sonic, written by DelayHacks
btst #Status_Shield,status_secondary(a0) ; does Sonic have an S2 shield (The Elementals were already filtered out at this point)?
bne.s locret_11A14 ; if yes, branch
move.b #1,double_jump_flag(a0)
btst #Status_Facing,status(a0) ; is Sonic facing left?
bne.w Sonic_JumpdashLeft ; if yes, branch
move.b #0,y_vel(a0) ; Clear y velocity
move.w #3000,x_vel(a0) ; Set x velocity
move.w #$47,d0 ; play Jumpdash sound
jmp (Play_Sound_2).l
Sonic_JumpdashLeft:
move.b #0,y_vel(a0) ; Clear y velocity
move.w #-3000,x_vel(a0) ; Set x velocity
move.w #$47,d0 ; play Jumpdash sound
jmp (Play_Sound_2).l2. Как добавить камеру как в Sonic CD в S1?
(Если вы используете GitHub дизассембл, то вам сюда.)
Всем привет, с вами я.
Приступим...
Сперва перед "end of rom" вставляем эту строчку
Цитатаinclude "_inc\Sonic_PanCamera.asm" ; ++add this++
Потом меняем роутину "Obj01_Control" на эту:
ЦитатаObj01_Control: ; XREF: Obj01_Index
bsr.s Jmpto_Sonic_PanCamera ; ++add this++
tst.w ($FFFFFFFA).w ; is debug cheat enabled?
beq.s loc_12C58 ; if not, branch
btst #iC,(Joypad|Press) ; is button C pressed?
beq.s loc_12C58 ; if not, branch
move.w #1,($FFFFFE08).w ; change Sonic into a ring/item
clr.b ($FFFFF7CC).w
rts
Jmpto_Sonic_PanCamera:
jmp Sonic_PanCamera
bsr Obj01_ControlПотом создаём новый файл в папке "_inc" под названием "Sonic_PanCamera.asm" и вставляем туда этот код:
Цитата; ---------------------------------------------------------------------------
; Subroutine to horizontally pan the camera view ahead of the player
; (Ported from the US version of Sonic CD's "R11A__.MMD" by Nat The Porcupine, ported to Hivebrain disasm by DelayHacks)
; ---------------------------------------------------------------------------; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
Sonic_PanCamera:
move.w ($FFFFF7A0).w,d1 ; get the current camera pan value
move.w $14(a0),d0 ; get sonic's inertia
bpl.s Sonic_PanCamera_abs_inertia ; if sonic's inertia is positive, branch ahead
neg.w d0 ; otherwise, we negate it to get the absolute valueSonic_PanCamera_abs_inertia:
; These lines were intended to prevent the Camera from panning while
; going up the very first giant ramp in Palmtree Panic Zone Act 1.
; However, given that no such object exists in Sonic 1, I just went
; ahead and commented these out.
; btst #1,$2C(a0) ; is sonic going up a giant ramp in PPZ?
; beq.s Sonic_PanCamera_skip ; if not, branch
; cmpi.w #$1B00,($FFFFD008).w ; is sonic's x position lower than $1B00?
; bcs.s Sonic_PanCamera_reset_pan ; if so, branch; These lines aren't part of the original routine; I added them myself.
; If you've ported the Spin Dash, uncomment the following lines of code
; to allow the camera to pan ahead while charging the Spin Dash:
tst.b $39(a0) ; is sonic charging up a spin dash?
beq.s Sonic_PanCamera_skip ; if not, branch
btst #0,$22(a0) ; check the direction that sonic is facing
bne.s Sonic_PanCamera_pan_right ; if he's facing right, pan the camera to the right
bra.s Sonic_PanCamera_pan_left ; otherwise, pan the camera to the leftSonic_PanCamera_skip:
cmpi.w #$600,d0 ; is sonic's inertia greater than $600
bcs.s Sonic_PanCamera_reset_pan ; if not, recenter the screen (if needed)
tst.w $14(a0) ; otherwise, check the direction of inertia (by subtracting it from 0)
bpl.s Sonic_PanCamera_pan_left ; if the result was positive, then inertia was negative, so we pan the screen leftSonic_PanCamera_pan_right:
addq.w #2,d1 ; add 2 to the pan value
cmpi.w #224,d1 ; is the pan value greater than 224 pixels?
bcs.s Sonic_PanCamera_update_pan ; if not, branch
move.w #224,d1 ; otherwise, cap the value at the maximum of 224 pixels
bra.s Sonic_PanCamera_update_pan ; branch
; ---------------------------------------------------------------------------Sonic_PanCamera_pan_left:
subq.w #2,d1 ; subtract 2 from the pan value
cmpi.w #96,d1 ; is the pan value less than 96 pixels?
bcc.s Sonic_PanCamera_update_pan ; if not, branch
move.w #96,d1 ; otherwise, cap the value at the minimum of 96 pixels
bra.s Sonic_PanCamera_update_pan ; branch
; ---------------------------------------------------------------------------Sonic_PanCamera_reset_pan:
cmpi.w #160,d1 ; is the pan value 160 pixels?
beq.s Sonic_PanCamera_update_pan ; if so, branch
bcc.s Sonic_PanCamera_reset_left ; otherwise, branch if it greater than 160
Sonic_PanCamera_reset_right:
addq.w #2,d1 ; add 2 to the pan value
bra.s Sonic_PanCamera_update_pan ; branch
; ---------------------------------------------------------------------------Sonic_PanCamera_reset_left:
subq.w #2,d1 ; subtract 2 from the pan valueSonic_PanCamera_update_pan:
move.w d1,($FFFFF7A0).w ; update the camera pan value
rts ; return
; End of function Sonic_PanCameraТеперь ищем роутину "ScrollHoriz2" и заменяем всё начиная c "ScrollHoriz2:" до "bra.s loc_65CC" (влючительно) на это:
ЦитатаScrollHoriz2:
move.w ($FFFFD008).w,d0
sub.w ($FFFFF700).w,d0 ; Sonic's distance from left edge of screen
sub.w ($FFFFF7A0).w,d0 ; Horizontal camera pan value
beq.s SH_ProperlyFramed ; if zero, branch
bcs.s SH_BehindMid ; if less than, branch
bra.s SH_AheadOfMid ; branch
; ===========================================================================SH_ProperlyFramed:
clr.w ($FFFFF73A).w
rts
; ===========================================================================SH_AheadOfMid:
cmpi.w #16,d0 ; is Sonic within 16px of middle area?
blt.s SH_Ahead16 ; if yes, branch
move.w #16,d0 ; set to 16 if greaterSH_Ahead16:
add.w ($FFFFF700).w,d0
cmp.w ($FFFFF72A).w,d0
blt.s SH_SetScreen
move.w ($FFFFF72A).w,d0SH_SetScreen:
move.w d0,d1
sub.w ($FFFFF700).w,d1
asl.w #8,d1
move.w d0,($FFFFF700).w ; set new screen position
move.w d1,($FFFFF73A).w ; set distance for screen movement
rts; ===========================================================================
SH_BehindMid:
cmpi.w #-16,d0 ; is Sonic within 16px of middle area?
bge.s SH_Behind16 ; if no, branch
move.w #-16,d0 ; set to -16 if lessSH_Behind16:
add.w ($FFFFF700).w,d0
cmp.w ($FFFFF728).w,d0
bgt.s SH_SetScreen
move.w ($FFFFF728).w,d0
bra.s SH_SetScreen
; End of function MoveScreenHoriz; ===========================================================================
tst.w d0
bpl.s loc_6610
move.w #$FFFE,d0
bra.s SH_Behind16
; ===========================================================================loc_6610:
move.w #2,d0
bra.s SH_AheadOfMidДалее ищем роутину "LevelSizeLoad" и перед бранчем в конце вставляем вот эту строчку:
Цитатаmove.w #160,($FFFFF7A0).w ; reset the horizontal camera pan value to 160 pixels
3. Как добавить Spinboost (способность из Sonic Advance) в S3K?
Сперва добавляем эту роутину после строчки "; End of function Player_Spindash":
ЦитатаSonic_Spinboost: ; Sonic Advance feature, code by DelayHacks, original code from STHOSP
move.b ($FFFFF603).w,d0 ; read controller
andi.b #$10,d0 ; pressing B?
beq.w Sonic_SpinboostRts ; if not, return
addq.l #4,sp ; increment stack ptr
move.b #1,$3D(a0) ;Set Spindash flag
move.w #0,$3E(a0) ; set charge count to 0
Sonic_SpinboostRts:
rtsДалее ищем роутину "Sonic_MdNormal:" и добавляем эту строчку в начале:
Цитатаbsr.w Sonic_Spinboost
4. Как добавить экран опций (из S2) в S1?
Сперва скачиваем этот архив,
Распаковываем файлы и папки из него в ваш дизассембл.
После чего добавляем эту строчку в самом начале кода:
Цитатаinclude "s2_constants.asm"
Теперь добавляем эти строчки перед роутиной "LevelSelect":
ЦитатаMenuScreen:
include "s2_beginning.asm"
; ===========================================================================
; ---------------------------------------------------------------------------
; Sonic 2 Menu Option
; ---------------------------------------------------------------------------
include "s2_option.asm"
; ===========================================================================
include "s2_end.asm"
; end of function MenuScreen
; ===========================================================================Осталось только исправить баг, ищем роутину "Obj37_MakeRings" и нужно заменить эту строчку:
Цитатаbsr.w CalcSine
На эту:
Цитатаjsr CalcSine
Весь код добавлен, теперь нужно сделать так, чтобы игра могла загрузить палитру.
Заходим в "_inc/Pallet Pointers.asm" и вставляем эти строчки в конце:
Цитатаdc.l Menu_Palette; pallet address
dc.w $FB00 ; RAM address
dc.w $1F ; (pallet length / 2) - 1Сейчас вы должны придумать как открыть экран опций...
Вы можете использовать такой вариант:
Ищем роутину "loc_3230" и в начале добавляем эти две строчки:
Цитатаtpress B,(Joypad) ; is B button pressed?
bhi MenuScreenOpts ; if yes, branch to options screenЧтобы изменить тексты, ищите эти строчки в файле "_inc\s2_option.asm":
ЦитатаTextOptScr_PlayerSelect: dc.b $10,_st,__,_P,_L,_A,_Y,_E,_R,__,_S,_E,_L,_E,_C,_T,__,_st
TextOptScr_Sonic: dc.b $E,__,__,__,__,_S,_O,_N,_I,_C,__,__,__,__,__,__
TextOptScr_Miles: dc.b $E,__,__,__,__,_M,_I,_L,_E,_S,__,__,__,__,__,__
TextOptScr_Tails: dc.b $E,__,__,__,__,_T,_A,_I,_L,_S,__,__,__,__,__,__
TextOptScr_Knuckles: dc.b $E,__,__,__,_K,_N,_U,_C,_K,_L,_E,_S,__,__,__,__
TextOptScr_VsModeItems: dc.b $10,_st,__,__,_S,_O,_U,_N,_D,_T,_R,_A,_C,_K,__,__,__,_st
TextOptScr_AllKindsItems: dc.b $E,__,__,_H,_Y,_P,_E,_R,_D,_R,_I,_V,_E,__,__,__
TextOptScr_TeleportOnly: dc.b $E,__,__,__,_O,_R,_I,_G,_I,_N,_A,_L,__,__,__,__
TextOptScr_SoundTest: dc.b $10,_st,__,__,_S,_O,_U,_N,_D,__,_T,_E,_S,_T,__,__,__,_st
TextOptScr_0: dc.b $10,__,__,__,__,__,__,__,_0,__,__,__,__,__,__,__,__,__(Надписи Soundtrack, hyperdrive, original были добавлены мной)
Чтобы изменить кол-во вариантов ищите эти строчки:
ЦитатаOptionScreen_Choices:
dc.l (3-1)<<24|($FFFF8A&$FFFFFF)
dc.l (2-1)<<24|($FFFFBE&$FFFFFF)
dc.l ($FF)<<24|($FFFF84&$FFFFFF)Чтобы добавить варианты, вы должны сперва добавить для них текст, потом добавить его сюда:
Цитатаoff_92D2:
dc.l TextOptScr_Sonic
dc.l TextOptScr_Tails
dc.l TextOptScr_Knuckles
off_92DE:
dc.l TextOptScr_Sonic
dc.l TextOptScr_Miles
dc.l TextOptScr_Knuckles
off_92EA:
dc.l TextOptScr_AllKindsItems
dc.l TextOptScr_TeleportOnly
off_92F2:
dc.l TextOptScr_0(off_92D2 - это player select, off_92DE - это player select, только с консолью японии, off_92EA - это "soundtrack" или же вторая опция)
Адресы в RAM:
Выбор персонажа - $FFFFFF8B
"Soundtrack" или же вторая опция - $FFFFFFBF
Вот все мои гайды, пользуйтесь.
3 -
-
Ты какие смпски выбирал? Формата sonic 1? Надо было выбрать Sonic 1 Sound Driver.
А если формата sonic 2, то я не знаю, почему там ошибка после выбора смпски.
0 -
3 минуты назад, E-123 Omega сказал:Штукенция очень глючная
Какие именно глюки?
0 -
Нужно научиться смотреть сквозь всё.
О боже, там нет мармеладок от haribo, только от какой-то другой компании.
0 -
В 30.03.2018в15:01, Elving сказал:Бери, буду только рад =)
Пасибки
0 -
В 02.08.2017в00:44, Elving сказал:Захотелось изобразить бумовского Тейлза в супер-форме. Пусть это и полнейший неканон, но мне просто было интересно узнать, что в итоге получится =)
Скрытое содержимое
Ларко, Бенгальский Лис, Kyubi the Fox, Kouzvay, Lonic the Hedgehog, Kaoma777, Exception, Post, спасибо за плюсы!
Можно для аватарки возьму?
0 -
(Надеюсь тут дизлайков не будет)
(не кидайте в меня тапки, за то что я спиз*ил название, если хотите, могу поменять)
Привет всем, я представляю вам мою программу...
Sonic 2 Hacking Studio
Возможности:
Изменение музыки
Изменение уровней (через SonLVL)
Изменение текстов
Выбор между звуковыми драйверами
Изменение названия хака
Jumpdash
Удаление Speed Cap
Проигрывать SMPSок первого соника
Также имеется пак музык
И так далее...
Другое:
Нужно выбрать расположение программы вот такое: "C:\S2HS" или "D:\S2HS" (чтобы багов в программе не было),
Дополнительный файл добавьте в одно расположение вместе с установщиком (без него не откроется установщик).
Скриншоты и сама программа:
https://yadi.sk/d/BHebdcAG3Trv4F - дополнительный файл (обязательно)
setup.exe - установщик
1 -
Для первой игры очень даже не плохо. Я сам делаю игры на Sonic Worlds, но то что под первой картинкой, я бы точно не придумал.
0
Sonic 2 Hacking Studio
в Хакинг и фанатские игры
Опубликовано:
Передний и задний план через SonLVL (раздел "Утилиты"), а названия уровней - Sonic 2 text code generator и "Исправление бага" (это всё в разделе "Тексты")