| Разработка и ромхакинг > Ромхакинг и программирование |
| SegaSoundDriver ripped from Sonic1 |
| << < (5/6) > >> |
| Segaman:
--- Цитата: Smoke от 02 Октябрь 2009, 17:17:58 ---Регистры. Флаги это другое --- Конец цитаты --- да точно! забыл как их звать |
| Ti_:
в оба адреса если писать, получается много раз жмется кнопка. потому что видишь тут отдельно 2 адреса, а у тебя в драйвере тока 1. вот тут они 3-ем тусят. загрузить этот ром с сейва , тимплеер в меню включить. Добавлено позже: вот в оригинальном роме - 1-ый пульт зажимаем вверх. w. FFC282 - тут 0100 - держится пока держим кнопку w. FFC28С - тут 0100 - записывается и сразу стирается w. FFC29C - тут тоже 0100 - пока кнопку не отпустим.(и вообще у меня и без него пашет) для 2-ого пульта. w. FFC284 w. FFC28E w. FFC29E ты можешь сделать чтобы твой драйвер также работал тоже? тогда возится не придется с переделыванием игры! я пока так прописал, и адреса в игре сменил, 3джоя пашут все (у 3-ей тачки в сейве АИ отрублен). но кнопки везде как турбо жмутся. --- Код: --- lea ($FFFFC280).w,a1 ; 1-ый move.l $ffc280, $ffc28a bsr.w sub_0_9188 lea ($FFFFC284).w,a1 ; 2-ый move.l $ffc284, $ffc28e bsr.w sub_0_9196 lea ($FFFFC292).w,a1 ; 3-ий move.l $ffc292, $ffc296 --- Конец кода --- |
| Segaman:
Вчера вырезал мелодию из баттл тодса. мелодия рейсинг попалась (какое удачное совпадение). вот как доведу до ума (мелодия для з80 проца, все поинты надо ковырять), мона буит гордица. |
| Segaman:
Весь день сёня вручную писал асм мелодии и при этом исправил возможные баги. Переписал все каналы кроме fm5, но она и без него звучит идентично той шо в бт. Завтра доделаю и вылажу, а потом возьмусь за ресы. |
| Марат:
--- Цитата: Ti_ от 01 Октябрь 2009, 13:43:20 --- --- Код: --- ROM:000107BC ; =============== S U B R O U T I N E ======================================= ROM:000107BC ROM:000107BC ROM:000107BC CONTROL: ; CODE XREF: RACE+A4p ROM:000107BC ; RACE+134p ROM:000107BC bsr.w UNKNOWN__ ROM:000107C0 ROM:000107C0 firstcar: ROM:000107C0 moveq #0,d0 ROM:000107C2 bsr.w Control_all ROM:000107C6 ROM:000107C6 secondcar: ROM:000107C6 moveq #1,d0 ROM:000107C8 bsr.w Control_all ROM:000107CC ROM:000107CC thirdcar: ROM:000107CC moveq #2,d0 ROM:000107CE bsr.w Control_all ROM:000107D2 ROM:000107D2 fourthcar: ROM:000107D2 moveq #3,d0 ROM:000107D4 ROM:000107D4 Control_all: ; CODE XREF: CONTROL+6p ROM:000107D4 ; CONTROL+Cp ... ROM:000107D4 lea dword_0_FFD0EA-FF8000(a4),a0 ROM:000107D8 tst.b (a0,d0.w) ROM:000107DC beq.s Control_Player ROM:000107DE bra.w Control_AI ROM:000107E2 ; --------------------------------------------------------------------------- ROM:000107E2 ROM:000107E2 Control_Player: ; CODE XREF: CONTROL+20j ROM:000107E2 tst.b byte_0_FFB936-FF8000(a4) ROM:000107E6 bne.w SECOND_JOYSTICK ROM:000107EA cmpi.b #1,d0 ROM:000107EE beq.w SECOND_JOYSTICK ROM:000107F2 cmpi.b #2,d0 ROM:000107F6 beq.w UNKNOWN_ ROM:000107FA bsr.w Player_car_delete_autopress ROM:000107FE move.w RAM_JOY1_DATA-FF8000(a4),d1 ROM:00010802 bsr.w controlplayer_BC_DPAD_mode ROM:00010806 move.w RAM_JOY1_DATA1-FF8000(a4),d1 ROM:0001080A bsr.w control_A_XYZ_ENTER ROM:0001080E clr.w RAM_JOY1_DATA1-FF8000(a4) ROM:00010812 rts ROM:00010812 ; End of function CONTROL ROM:00010812 ROM:00010814 ROM:00010814 ; =============== S U B R O U T I N E ======================================= ROM:00010814 ROM:00010814 ROM:00010814 SECOND_JOYSTICK: ; CODE XREF: CONTROL+2Aj ROM:00010814 ; CONTROL+32j ROM:00010814 bsr.w Player_car_delete_autopress ROM:00010818 move.w RAM_JOY2_DATA-FF8000(a4),d1 ROM:0001081C bsr.w controlplayer_BC_DPAD_mode ROM:00010820 move.w RAM_JOY2_DATA2-FF8000(a4),d1 ROM:00010824 bsr.w control_A_XYZ_ENTER ROM:00010828 clr.w RAM_JOY2_DATA2-FF8000(a4) ROM:0001082C rts ROM:0001082C ; End of function SECOND_JOYSTICK ROM:0001082C ROM:0001082E ROM:0001082E ; =============== S U B R O U T I N E ======================================= ROM:0001082E ROM:0001082E ROM:0001082E UNKNOWN_: ; CODE XREF: CONTROL+3Aj ROM:0001082E bsr.w Player_car_delete_autopress ROM:00010832 move.w word_0_FFC286-FF8000(a4),d1 ROM:00010836 bsr.w controlplayer_BC_DPAD_mode ROM:0001083A move.w word_0_FFC290-FF8000(a4),d1 ROM:0001083E bsr.w control_A_XYZ_ENTER ROM:00010842 clr.w word_0_FFC290-FF8000(a4) ROM:00010846 rts ROM:00010846 ; End of function UNKNOWN_ ROM:00010846 ROM:00010848 ROM:00010848 ; =============== S U B R O U T I N E ======================================= --- Конец кода --- в конце смотри че это за FFC286? FFC290? да тут наверняка они хотели чтобы на троих было! Эти адреса они тока тут есть. и чего в дебага запустил этот код не используется даже, а что такое beq.w. --- Конец цитаты --- код и не будет использоваться, потому что разработчики так захотели и изолировали эту часть кода дополнительной проверкой. Надо вместо этой проверки два nop'a записать. Т.е. вместо --- Код: ---bne.w SECOND_JOYSTICK --- Конец кода --- , надо записать --- Код: ---nop nop --- Конец кода --- . Сам не проверял - компа сейчас нет. А то бы поковырялся в коде, поэксперементировал. |
| Ti_:
--- Цитата: Марат от 08 Октябрь 2009, 21:13:49 ---Сам не проверял - компа сейчас нет. А то бы поковырялся в коде, поэксперементировал. --- Конец цитаты --- не изолировали, просто d0 будет равно 2, только в случае если для 3-ей машины отключен АИ. а это никогда не случается. в загрузке lea dword_0_FFD0EA-FF8000(a4),a0 (это 4байта аи/не аи для 1234 машины) я и для 4дописал сравнение. и адреса новые. на 4джоев версия выложена , на троих еще вчера выкладывал. |
| Марат:
Мда, ошибочка вышла. Что-то я проглядел со сравнениями. Ну да ладно, комп появится разберусь что к чему. |
| Ti_:
вообщем, как я понял, мне сейчас нужно только , чтобы драйвер джойстика писал в 1адрес как сейчас , а во второй писал только один раз, и при дальнейшем удерживании кнопки , его не перезаписывал. пример в FFC282 (RAM_JOY1_DATA) - здесь цифра всё время остается, пока мы удерживаем кнопку. в FFC28C (RAM_JOY1_DATA1) - суда записывается один раз, при нажатии, и дальше не перезаписывается при удерживании кнопки. clr.w RAM_JOY1_DATA1-FF8000(a4) , вот тут после действия (A,C, X, Start) - то есть стрельба, этот адрес обнуляется. а RAM_JOY1_DATA , нет, он работает как нужно. то есть пока держим все время записан. а уменя сейчас пока так сделано: --- Код: --- lea ($FFFFC280).w,a1 ; адрес для первого пада move.l $ffc280, $ffc28a bsr.w sub_0_9188 --- Конец кода --- то есть, в FFC282 и FFC28C , одно и тоже, и после стирания FFC28C , драйвер его заново опять записывает , отсуда "турбо" стрельба получается.; на самом деле в игре самой, это не сильно мешает - но вот с менюшками просто ужас), вот линк на версию с 4-мя: (в этой теме тож выложу) RRR 4players 2игроков выбирать в меню!(если сумеете :)) ), для первого пада pad-multiplayer. |
| Segaman:
Ti_, я магу спецально для тя ковырнуть ридер и сделать 2адреса. А ещё разобраться как чекать тимплеер. ща дамой приеду, попробую шо нить сделать. |
| Ti_:
--- Цитата: Segaman от 09 Октябрь 2009, 15:34:53 ---Ti_, я магу спецально для тя ковырнуть ридер и сделать 2адреса. --- Конец цитаты --- да было бы неплохо, а вообще там список то нехилый игр на 4 джоя. может в другой игре какой уже есть готовый? |
| Segaman:
Та мне тока узнать как чекать, а код прекрасный, там штоб тебе подошол пару строк над приписать. тем более легче вывести чтение падов куданибудь далеко и оттуда после чтения копирование сделать туда куда надо. Я просто у компа дет через час буду |
| Марат:
B International Super Star Soccer посмотрите, там джой 6 - и кнопочный, даже mode работает. И еще он вроде на 8 джойстиков. |
| Ti_:
мы уже разобрались частично. просто тут 4байта, 3-ий зажатие ; а 4-ый нажатие. теперь копируем тока 1 байт нажатия; турбо пропало, но кнопки стрельбы почему-то не всегда срабатывать стали lea ($FFFFC280).w,a1 ; адрес для первого пада bsr.w sub_0_9188 move.b $ffc283, $ffc28c Добавлено позже: --- Цитата: Марат от 09 Октябрь 2009, 17:30:14 ---B International Super Star Soccer посмотрите, там джой 6 - и кнопочный, даже mode работает. И еще он вроде на 8 джойстиков. --- Конец цитаты --- 6кнопочный да лучше бы было, но 8джоев ненад) Добавлено позже: +урезали до ворда удалив эту строчку.: move.w #0,(a1) (теперь можно вернуть старые адреса, а то путаница была) вот сейчас так у меня: --- Код: --- lea ($FFFFC282).w,a1 ; адрес для первого пада bsr.w Init1pad move.b $ffc283, $ffc28c lea ($FFFFC284).w,a1 ; второго bsr.w Init2pad move.b $ffc285, $ffc28e lea ($FFFFC286).w,a1 ; третьего bsr.w Init3pad move.b $ffc287, $ffc290 lea ($FFFFC288).w,a1 ; четвёртого bsr.w Init4pad move.b $ffc289, $ffc292 rts Init1pad: moveq #0,d0 move.b #$C,($A10005).l bra.w ReadPad Init2pad: moveq #1,d0 move.b #$1C,($A10005).l bra.w ReadPad Init3pad: moveq #2,d0 move.b #$2C,($A10005).l bra.w ReadPad Init4pad: moveq #3,d0 move.b #$3C,($A10005).l bra.w ReadPad ReadPad: lea ($A10003).l,a0 moveq #0,d0 move.b #0,(a0) nop nop nop move.b (a0),d0 move.b #$40,(a0) nop nop nop move.b (a0),d1 asl.b #2,d0 andi.b #$C0,d0 andi.b #$3F,d1 or.b d1,d0 not.b d0 move.b (a1),d1 eor.b d0,d1 move.b d0,(a1)+ and.b d0,d1 move.b d1,(a1)+ rts --- Конец кода --- Ром залил: RRR 4players v2 |
| Марат:
Вот здесь смотри процедуру HardWareMan'a для опроса 6 - и кнопочного джойстика http://gendev.spritesmind.net/forum/viewtopic.php?t=602 |
| Segaman:
Марат, пасибо за сылу, много полезного отдуда извлёк. |
| Segaman:
Сейчас сделал сорс пак с прогами для постройки, чтобы не класть его в каждый мой сорс. там проги для постройки, починки заголовка, поинтеров(удобно), сплитер и т.д. ещо сделал архив с плеером включающий мануал по портингу. сегодня ночью толно вылажу, а то я всё обещаю, да обещаю. кстати ридер 4 падов аргументировал и удалил заполнение ненужных 2х байтов. теперь на каждый пад по 2 байта: 1й - зажатие 2й - нажатие (при нажатии указывается, а затем тут же перемещается в 1й). нащёт 8 падов и 6 кнопок ещё недумал. надо для начала ром скачать, а затем тестить. Добавлено позже: В каждый архив теперь буду класть ридми на русском )). в этих уже лежат. кстати я так и не закончил мелодию бт. ещё там коечто не так. не знаю почему, но после 4 циклов громкость глючить начинает в каналах fm2 и fm3. надо кароче над ними работать. кстати если нужен мануал по портингу музыки из других игр, магу тож состряпать в хтмл со скринами. если ещо чтото надо пишите, йа ещё 2-3 дня буду заниматься всякой асм-бурдой. Добавлено позже: Всё, выложил: http://segaman.wen.ru/programming/gen/index.html |
| Segaman:
давайте голоса из игр собирать. все пишите, где вы слышали офигенные голса. например comix zone, отличный голос пианино, или road rash3 - гитара. нарипаю голосов и засуну в драйвер, чтобы дифицита не было. неплохоб было добыть голос схожий с миди-lead, кто знаед, где есть такой? |
| Segaman:
Нарыл прожку сжимающю вавки под формат из проигрывателя сэмплов. осталось тока нарыть, какие вавки там используются. Добавлено позже: Я щас в ближайшее время собираюсь изучать ещё один драйвер музыки GEMS. может напишу конвертер музыки gems2smps :) |
| Segaman:
Этот формат музыки использован в большем кол-ве игр чем смпс. он использован в таких избестных играх, как Earthworm Jim, Cool Spot, Vectorman(должно быть), Dune II и т.д. вроде бы музон мона будет катать :) |
| evgeny:
Тогда лучше сделать smps2gems. А еще лучше VGM/GYM2gems/smps. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |