| Разработка и ромхакинг > Ромхакинг и программирование |
| [SMD] Sonic 1 hack |
| << < (2/5) > >> |
| HayaoYokogawa:
--- Цитата ---; Vladikcomper: this data was moved to BIN-files, which are updated by S1HS Obj34_ConData: incbin "mapbin\ttlcards_cfg_0.bin" incbin "mapbin\ttlcards_cfg_1.bin" incbin "mapbin\ttlcards_cfg_2.bin" incbin "mapbin\ttlcards_cfg_3.bin" incbin "mapbin\ttlcards_cfg_4.bin" incbin "mapbin\ttlcards_cfg_5.bin" incbin "mapbin\ttlcards_cfg_6.bin" --- Конец цитаты --- Блин, а я искал :lol: Добавлено позже: и еще не открывается блин. Добавлено позже: Все, что мне надо, нашел. Теперь это надо из Эниггмы превратить в нормальный формат, исправить, и обратно сунуть. Добавлено позже: не получилось. |
| Teffycom:
А что тебе именно нужно? |
| HayaoYokogawa:
Надо бы маппинги как-то извлечь, или нужно найти *.sep проект для SonED, чтобы картинку свою поставить. Я анимацию в тайтл скрин вообще убрать хочу. |
| Segaman:
--- Цитата: HayaoYokogawa от 22 Июль 2011, 13:08:07 ---Надо бы маппинги как-то извлечь, или нужно найти *.sep проект для SonED, чтобы картинку свою поставить. Я анимацию в тайтл скрин вообще убрать хочу. --- Конец цитаты --- найди в коде title screen есть вызов титульного соника. найди этот обьект, найди его анимацию и в ней убери изменение спрайта. |
| HayaoYokogawa:
Я не нашел такого файла под тайтл скрин. |
| Teffycom:
Значит так, графа Соника на тайтл скрине - artnem/titleson.bin, мапсы - _maps/obj0E.asm, анимация соответственно - _anim/obj0E.asm. |
| HayaoYokogawa:
Да это я знал, мне нужен не сам Соник, а нужна "рамка", из которой он "вылазит". То есть маппинги. Еще бы поправить маппинги "SONIC HAS PASSED", но я понятия не имею, как. Они в Энигма компрессии и если их расдекомпрессить, то SonMapEd выдает какую-то хрень, а не маппинг. |
| Teffycom:
--- Цитата ---Да это я знал, мне нужен не сам Соник, а нужна "рамка", из которой он "вылазит". --- Конец цитаты --- К сожалению у рамки, о которой ты говоришь, так называемые "плановые" маппинги. Их не отредактируешь сонмапэдом, даже если декомпрессируешь - это да. Редактировать плановые маппинги умеет программа PlaneEd, но работать в ней сложно и неудобно - нужно вручную создавать проект и т.д. В общем, лучше забей на это дело. |
| HayaoYokogawa:
А если я рисунок сделаю, поможете переделать плиз? ^^ |
| vladikcomper:
--- Цитата ---он витает в воздухе и у него нет хвостов на месте. --- Конец цитаты --- То, что объект не касается земли происходит из-за его неверных характеристик. Каждый объект имеет свой "hitbox", условную прямоугольную область, которая задается горизонтальным и вертикальным радиусами. Для границ этой области и просчитываются столкновения, взаимодействие с полом/стенами. Тейлз ниже Соника, и хитбокс и него меньше. А поскольку у твоего объекта остаются все характиристики Соника (ты только заменил спрайт), отсюда и недоставание до пола. За высоту объекта отвечает байт $16 его структуры. Подробнее про структуры объектов можно прочитать здесь: http://vladikcomper.narod.ru/sonic_reference_view.htm?2 Поищи в самом начале кода Obj01 команду move.b #$13,$16(a0) и измени $13 на $F (это значение я называю по памяти, если не подойдет, попробуй сделать его больше/меньше или посмотреть в Соник 2). Помимо этого, тебе придется найти и заменить такую же команду еще в нескольких местах - значение высоты заново задается после прыжка и спина. За хвосты отвечает отдельный объект. Зачем? Это сэкономит на количестве спрайтов для самого Тейлза, к тому же у хвостов есть своя физика - например, они меняют свой угол наклона в прыжке, а в Соник 3 хвосты при полете еще и могут нанести урон врагу. Если хочешь добавить хвосты, придется портировать Obj05 из Соник 2. --- Цитата ---Все, что мне надо, нашел. Теперь это надо из Эниггмы превратить в нормальный формат, исправить, и обратно сунуть. --- Конец цитаты --- Боже, сколько заблуждений по маппингам. Сейчас постараюсь все расставить по своим местам. То, что ты нашел - Obj34_ConData, вообще не то, что тебе нужно. Это не маппинги, а массив положений Тайтл кардсов на экране. Все спрайтовые маппинги (если они есть), находятся по лейбелу с названием Map_ObjXX (кроме Соника - Map_Sonic). Нужны маппинги объекта 34? Ищи Map_Obj34. Но должен предупредить - маппинги Тайтл Кардсов (Obj34), Sonic Has Passed (Obj3A) и Special Stage results (Obj7E) сложны для редактирования в SonMapEd. Дело в том, что в поинтерах (список в самом начале с dc.w, указывает на оффсет маппингов каждого отдельного спрайта) поинтер на спрайт синего овала ссылается на одно и тоже место. То есть, все эти объекты берут спрайт овала из одного места - byte_CB47, что находится внутри Map_Obj34. Если ты вытащищь маппинги Obj7E и Obj3A в отдельный файл, SonMapEd просто не поймет, откуда брать маппинги этого овала. С тайтл кардсами (Obj34) он разберется, но тут поджидает другая беда - при сохранении SonMapEd любит заменять имена всех лейбелов на свои, рандомные. Так что byte_CB47, на который ссылаются другие объекты, станет каким-нибудь SME_c7mzL_192. Добавлено позже: --- Цитата: HayaoYokogawa от 23 Июль 2011, 09:07:34 ---То есть маппинги. Еще бы поправить маппинги "SONIC HAS PASSED", но я понятия не имею, как. Они в Энигма компрессии и если их расдекомпрессить, то SonMapEd выдает какую-то хрень, а не маппинг. --- Конец цитаты --- Спрайтовые маппинги всегда несжатые. Если они не открываются в SonMapEd'е, значит ты загружаешь не то. |
| HayaoYokogawa:
--- Цитата ---Если хочешь добавить хвосты, придется портировать Obj05 из Соник 2. --- Конец цитаты --- Очень хочу. --- Цитата ---Спрайтовые маппинги всегда несжатые. Если они не открываются в SonMapEd'е, значит ты загружаешь не то. --- Конец цитаты --- mapeni - mappings enigma - то есть сжатые маппинги. Дык как быть с рамкой? |
| vladikcomper:
--- Цитата: HayaoYokogawa от 23 Июль 2011, 14:12:23 ---Очень хочу.mapeni - mappings enigma - то есть сжатые маппинги. Дык как быть с рамкой? --- Конец цитаты --- Да, ты прав - маппинги в папке mapeni сжаты алгоритмом Enigma. Но разве я говорил, что в mapeni спрайтовые маппинги? Там-то как раз маппинги планов (aka плановые маппинги, про которые и говорил Cool-Spot). Не будут же весь титульник на спрайтах строить, это выйдет за рамки всех лимитов на Сеге. Как быть с рамкой? Ну, это зависит от того, что ты хочешь с ней сделать. Если просто перерисовать пару надписей - тайловый редактор придет на помощь. Берешь файл artnem/titlefor.bin, разжимаешь его и открываешь в редакторе, после чего можно перерисовать нужные надписи. Если же ты хочешь полностью переделать титульник, изменить его внешний вид, форму или что-то в этом роде, тебе понадобится программа Imagenesis (PlaneEd же нужен, если надо отредактировать маппинги, строить новые в нем не очень удобно). Можешь нарисовать новый титульник в виде обычной картинки, а Imagenesis сгенерирует для него тайлы, маппинги и палитру. |
| HayaoYokogawa:
отлично, нужна ссылка :wow: уже нашел Добавлено позже: при экспорте в тайлы сказал до свидания и вырубился, сказав что ему не понравился какой-то ocx-файл. <_< |
| Teffycom:
Поищи этот файл в гугле и закинь в WINDOWS/System32 |
| HayaoYokogawa:
давно уже догадался, не зря хожу деньги на компах зарабатываю ^_^ Добавлено позже: в общем завтра буду вставлять тайтл скрин, отпишусь об успехах Добавлено позже: щас начал потихоньку возиться, как отключить Соника на тайтл скрине? |
| Teffycom:
Закомментируй или удали код суброутины, которая загружает его арт |
| HayaoYokogawa:
окей, ща попробую Добавлено позже: работает, спасибо, щас буду пытаться вставить свой рисунок. Добавлено позже: PlaneEd такой нелюдимый, что вообще блин. Imagenesis сработал правильно, а палитра неправильно понимается SonMapEd. Проблема остается в маппинге и палитре. Думаю можно попробовать сделать в SonEd по инструкции... Добавлено позже: эх блин, ничего не получается. Добавлено позже: Imagenesis интересно может корректно маппинг сделать? При открытии в PlaneEd он выдает белиберду. Как вариант можно как нибудь сделать следующее: в тайл-редакторах при вставке тайла в редактор (кроме TileMolester) прописывает, где висит тайл. TileEd имеет ограниченное пространство в редакторе 128х128, поэтому хитрый план расставить тайлы по порядку, а потом сверху BMP не работает. Я еще думаю, что можно упростить и так кропотливую работу в PlaneEd тем, что TileMolester вставляет картинку просто так, соответственно все тайлы идут очень по порядку и работа в PlaneEd упрощается. Что думаете? Добавлено позже: вот как выглядит маппинг для моей картинки, его бы переделать под энигму чтоль: --- Цитата ---mapdata_title: dc.w $0000,$0001,$0002,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0004,$0005,$0006,$0007,$0007,$0008,$0009,$000A,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$000B,$000C,$000D,$0003,$0003 dc.w $000E,$000F,$0010,$0011,$0001,$0002,$0003,$0003,$0003,$0003,$0012,$0013,$0014,$0015,$0016,$0017,$0018,$0019,$001A,$001B,$001C,$001D,$0003,$0003,$0003,$0003,$000B,$000C,$001E,$001F,$0020,$0021,$0003,$0003 dc.w $0022,$0023,$0024,$0025,$0025,$0026,$0027,$0028,$0029,$002A,$002B,$002C,$002D,$002E,$002F,$0030,$0031,$0032,$0033,$0034,$0035,$0036,$0037,$0038,$0039,$003A,$003B,$0025,$0025,$003C,$003D,$003E,$0003,$0003 dc.w $0003,$003F,$0040,$0041,$0025,$0025,$0025,$0025,$0025,$0042,$0043,$0044,$0045,$0046,$0047,$0048,$0049,$004A,$004B,$004C,$004D,$004E,$004F,$0025,$0025,$0025,$0025,$0025,$0050,$0051,$0052,$0003,$0003,$0003 dc.w $0003,$0003,$0053,$0054,$0055,$0056,$0025,$0025,$0057,$0058,$0059,$005A,$005B,$005C,$005D,$005E,$005F,$0060,$0061,$0062,$0063,$0064,$0065,$0066,$0025,$0025,$0067,$0068,$0069,$006A,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$006B,$006C,$006D,$006E,$0025,$0025,$006F,$0070,$0071,$0072,$0073,$0074,$0075,$0076,$0077,$0078,$0079,$007A,$007B,$007C,$007D,$007E,$0025,$0025,$007F,$0080,$0081,$0082,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$003F,$0083,$0024,$0025,$0025,$0084,$0085,$0086,$0087,$0088,$0073,$0089,$008A,$008B,$008C,$008D,$008E,$008F,$0090,$0091,$0092,$0093,$0094,$0025,$0025,$003C,$0095,$0052,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0096,$0097,$0041,$0025,$0098,$0099,$009A,$009B,$0073,$0073,$0073,$009C,$009D,$009E,$009F,$00A0,$0073,$00A1,$00A2,$00A3,$00A4,$00A5,$0025,$0050,$00A6,$00A7,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$00A8,$00A9,$00AA,$00AB,$00AC,$00AD,$00AE,$0073,$00AF,$00B0,$00B1,$00B2,$00B3,$00B4,$0073,$00B5,$00B6,$0025,$00B7,$00B8,$00B9,$00BA,$00BB,$00BC,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$00BD,$00BE,$00BF,$00C0,$00C1,$00C2,$00C3,$00C4,$00C5,$00C6,$00C7,$00C8,$00C9,$00CA,$00CB,$00CC,$00CD,$00CE,$00CF,$00D0,$00D1,$00D2,$00D3,$00D4,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$00D5,$00D6,$00D7,$00D8,$00D9,$00DA,$00DB,$00DC,$00DD,$00DE,$00DF,$00E0,$00E1,$00E2,$00E3,$00E4,$00E5,$00E6,$00E7,$00DF,$00E8,$00E9,$0003,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$0003,$00EA,$00EB,$00EC,$00ED,$00EE,$00EF,$00F0,$00F1,$00F2,$00F3,$00F4,$00F5,$00F6,$00F7,$00F8,$00F9,$00FA,$00FB,$00FC,$00FD,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$0003,$00FE,$00FF,$00FF,$00FF,$00FF,$00FF,$0100,$0101,$0102,$0103,$0104,$0105,$0106,$0107,$00FF,$00FF,$00FF,$00FF,$00FF,$0108,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0109,$010A,$010B,$010C,$00FF,$00FF,$00FF,$00FF,$00FF,$010D,$010E,$010F,$0110,$0111,$0112,$0113,$0114,$00FF,$00FF,$00FF,$00FF,$00FF,$0115,$0116,$0117,$0118,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0119,$011A,$011B,$011C,$011D,$011E,$011F,$0120,$0121,$0122,$0123,$0124,$0124,$0124,$0124,$0124,$0124,$0125,$0126,$0127,$0120,$011F,$0128,$0129,$012A,$012B,$012C,$012D,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$012E,$0025,$012F,$0130,$0131,$0003,$0003,$0003,$0132,$0133,$0134,$0135,$0136,$0137,$0138,$0139,$013A,$013B,$0003,$0003,$0003,$013C,$013D,$013E,$0025,$013F,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0140,$0141,$0142,$0143,$0144,$0145,$0003,$0003,$0003,$0003,$0146,$0147,$0148,$0149,$014A,$014B,$014C,$014D,$0003,$0003,$0003,$0003,$014E,$014F,$0150,$0151,$0152,$0153,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0154,$00FF,$0155,$0156,$0157,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0158,$0159,$015A,$00FF,$015B,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$015C,$015D,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$015E,$015F,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003 dc.w $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003,$0160,$0161,$0162,$0163,$0164,$0165,$0166,$0167,$0168 --- Конец цитаты --- Добавлено позже: Пфф, снова облом. Слишком мало места под тайлы. Добавлено позже: Знать все на свете нереально, Но я, мечту свою лелея, Решил проблему гениально! Нет, не в Галилео это было мне сказано, но я подумал, и сделал по-другому - переделал тайлы и маппинги titleson.bin, но встала проблема - нужно как-то избавится от анимации. и от рамки. Добавлено позже: но, конечно, лучяше сделать так, как я хотел |
| Teffycom:
Анимация - _anim/obj0E.asm, рамка - artnem/titlefor.bin |
| HayaoYokogawa:
О хвостах: нашел в STHOSP: ; ---------------------------------------------------------------------------- ; Object 8D - Tails' tails ; ---------------------------------------------------------------------------- ; Sprite_1D200: Obj8D: moveq #0,d0 move.b routine(a0),d0 move.w Obj8D_States(pc,d0.w),d1 jmp Obj8D_States(pc,d1.w) ; =========================================================================== ; off_1D20E: Obj8D_States: dc.w Obj8D_Init-Obj8D_States dc.w Obj8D_Main-Obj8D_States ; =========================================================================== ; loc_1D212 Obj8D_Init: addq.b #2,routine(a0) ; => Obj8D_Main move.l #Map_Tails,mappings(a0) move.w #$7A0,art_tile(a0) ; bsr.w Adjust2PArtPointer move.b #2,priority(a0) move.b #$18,width_pixels(a0) move.b #4,render_flags(a0) ; loc_1D23A: Obj8D_Main: ; movea.w parent(a0),a2 ; a2=character lea ($FFFFD000).l,a2 ; a2=character move.b angle(a2),angle(a0) move.b status(a2),status(a0) move.w x_pos(a2),x_pos(a0) move.w y_pos(a2),y_pos(a0) andi.w #$7FFF,art_tile(a0) tst.w art_tile(a2) bpl.s loc_1D286 ori.w #$8000,art_tile(a0) loc_1D286: moveq #0,d0 move.b anim(a2),d0 btst #5,status(a2) beq.s loc_1D287 moveq #4,d0 loc_1D287: cmp.b objoff_30(a0),d0 beq.s loc_1D288 move.b d0,objoff_30(a0) move.b Obj8DAniSelection(pc,d0.w),anim(a0) loc_1D288: lea (Obj8DAniData).l,a1 bsr.w Tails_Animate_Part2 bsr.w LoadTailsTailsDynPLC jsr (DisplaySprite).l rts ; =========================================================================== ; animation master script table for the tails ; chooses which animation script to run depending on what Tails is doing ; byte_1D29E: Obj8DAniSelection: dc.b 0,0 ; TailsAni_Walk,Run -> dc.b 3 ; TailsAni_Roll -> Directional dc.b 3 ; TailsAni_Roll2 -> Directional dc.b 9 ; TailsAni_Push -> Pushing dc.b 1 ; TailsAni_Wait -> Swish dc.b 0 ; TailsAni_Balance -> Blank dc.b 2 ; TailsAni_LookUp -> Flick dc.b 1 ; TailsAni_Duck -> Swish dc.b 0,0,0 ; TailsAni_Dummy1,2,3 -> dc.b 0 ; TailsAni_HaulAss -> dc.b 8 ; TailsAni_Stop -> Skidding dc.b 0,0 ; TailsAni_Float,2 -> dc.b 0 ; TailsAni_Spring -> dc.b 0 ; TailsAni_Hang -> dc.b 0,0 ; TailsAni_Blink,2 -> dc.b $A ; TailsAni_Hang2 -> Hanging dc.b 0 ; TailsAni_Bubble -> dc.b 0,0,0,0 ; TailsAni_Death,2,3,4 -> dc.b 0,0 ; TailsAni_Hurt,Slide -> dc.b 0 ; TailsAni_Blank -> dc.b 0,0 ; TailsAni_Dummy4,5 -> dc.b 7 ; TailsAni_Spindash -> Spindash dc.b 0 ; TailsAni_Fly -> dc.b 0 ; TailsAni_FlyTired dc.b 0 ; TailsAni_Swim dc.b 0 ; TailsAni_Swim2 dc.b 0 ; TailsAni_SwimTired even ; --------------------------------------------------------------------------- ; Animation script - Tails' tails ; --------------------------------------------------------------------------- ; off_1D2C0: Obj8DAniData: dc.w Obj8DAni_Blank-Obj8DAniData ; 0 dc.w Obj8DAni_Swish-Obj8DAniData ; 1 dc.w Obj8DAni_Flick-Obj8DAniData ; 2 dc.w Obj8DAni_Directional-Obj8DAniData ; 3 dc.w Obj8DAni_DownLeft-Obj8DAniData ; 4 dc.w Obj8DAni_Down-Obj8DAniData ; 5 dc.w Obj8DAni_DownRight-Obj8DAniData ; 6 dc.w Obj8DAni_Spindash-Obj8DAniData ; 7 dc.w Obj8DAni_Skidding-Obj8DAniData ; 8 dc.w Obj8DAni_Pushing-Obj8DAniData ; 9 dc.w Obj8DAni_Hanging-Obj8DAniData ;$A Obj8DAni_Blank: dc.b $20, 0,$FF Obj8DAni_Swish: dc.b 7, 9, $A, $B, $C, $D,$FF Obj8DAni_Flick: dc.b 3, 9, $A, $B, $C, $D,$FD, 1 Obj8DAni_Directional: dc.b $FC,$49,$4A,$4B,$4C,$FF ; Tails is moving right Obj8DAni_DownLeft: dc.b 3,$4D,$4E,$4F,$50,$FF ; Tails is moving up-right Obj8DAni_Down: dc.b 3,$51,$52,$53,$54,$FF ; Tails is moving up Obj8DAni_DownRight: dc.b 3,$55,$56,$57,$58,$FF ; Tails is moving up-left Obj8DAni_Spindash: dc.b 2,$81,$82,$83,$84,$FF Obj8DAni_Skidding: dc.b 2,$87,$88,$89,$8A,$FF Obj8DAni_Pushing: dc.b 9,$87,$88,$89,$8A,$FF Obj8DAni_Hanging: dc.b 9,$81,$82,$83,$84,$FF even ; =========================================================================== Я все правильно понял, только не понял, куда тыкать в sonic1.asm. |
| Teffycom:
Там много надо чего править. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |