| Разработка и ромхакинг > Ромхакинг и программирование |
| Портирование игр с SegaMD/G на SegaCD/MegaCD |
| << < (5/5) |
| Smoke:
В том то и дело, что грузится в этом режиме (моде1), во втором да, не грузится. А так моде1 и подразумевает инициализацию с картриджа (boot from cartridge) |
| Segaman:
я понял. значит гдето инициализация этого режима и только тогда можно прогу записать.... но почему то мой код все записывал а работать все отказывалось. проц сега сд просто вешался :-\ все равно не пойму |
| Ti_:
Взломал я вообщем этого соника1моуд: нефига там всё лишнее,только плеер нужен (тот что 35e-54A) asm+bin: как сделал: Добавлено позже: вот что надо было сделать чтобы работало: 1)добавлена хрен какая-задержка, без нее не запускалось. --- Цитата ---sub_0_5BA: moveq #$40,d1 wait: nop nop nop dbf d0,wait move.w #$7FFF,d0 dbf d1,wait --- Конец цитаты --- какие-то настойки вдп - то,что оставлено. --- Цитата --- bsr.w vdp_init move.w #$2300,sr --- Конец цитаты --- move.b #$81,d0 bsr.w play_music_id ; 4730 копипист таблицы треков вбланк должно быть 5-ть нопов. если d0-a6, то 1ноп или jsr: --- Код: ---VBLANK: movem.l d0-a5,-(sp) nop nop nop nop nop moveq #0,d0 move.w ($A12000).l,d0 bset #8,d0 move.w d0,($A12000).l movem.l (sp)+,d0-a5 rte --- Конец кода --- Добавлено позже: При загрузке картриджа+диска не пашет дма из рома, только из рама - как пофиксить? rrr mode 1 :lol:: http://www.youtube.com/watch?v=6El2laAXzt0 |
| Smoke:
Ti_, красавец. Избавил меня от разбирания всей этой шняги. Теперь можно без особых проблем вставлять куда угодно :) --- Цитата: Ti_ ---При загрузке картриджа+диска не пашет дма из рома, только из рама - как пофиксить? --- Конец цитаты --- Может быть эти самые какие то настройки вдп повлияли? |
| Ti_:
--- Цитата: Smoke от 12 Март 2012, 22:04:00 ---Теперь можно без особых проблем вставлять куда угодно :) Может быть эти самые какие то настройки вдп повлияли? --- Конец цитаты --- Нет, баг возникает даже без добавления в игру плеера. Просто при загрузке диска. И не важно в какой игре. Например откроем оригинальный dune2 + пустой CD диск - артефакты много где. |
| Segaman:
--- Цитата: Segaman от 08 Декабрь 2011, 17:12:51 --- lea ($416000).l,a0 lea ($420000).l,a1 bsr.w KosDec --- Конец цитаты --- короче ром успевает когда то загрузить в $416000 архив биоса. который в свою очередь извлекается в $420000 щас я сдамплю этот биос и попробую с ним что нибудь сделать. как я понял для воспроизведения нужны две вещи. биос и код проигрывания... и прямые руки. щас буду пробовать, об успехах отпишусь Добавлено позже: короче биос сжатый там по дефолту обитает при инициализации моде 1 вообще. так что виснет ром у меня не поэтому. Добавлено позже: биос запустил, прогу в саб кпу отправил и успешно запустил. а отклика от сега сд ноль. Ti_, выручай. |
| Ti_:
--- Цитата: Segaman от 14 Сентябрь 2012, 14:04:39 ---Ti_, выручай. --- Конец цитаты --- Я уже выкладывал рип-плеера. Правда там был небольшой косячок. Так что вот еще раз рабочая версия, та что у меня в хаке RRR лежит. Этот код надо запустить 1раз после стандратной инициализации. Далее управление плеером осуществляется со стороны обычной сеги : --- Код: ---stop_cd_music: tst.b (sega_cd_flag).w beq.s no_scd_stop lea ($A1200F).l,a0 scd_wait: move.b (a0),d0 bne.s scd_wait move.b d0,1(a0) stop #$2500 scd_wait2: cmpi.b #$42,(a0) beq.s scd_wait2 move.b #-1,1(a0) no_scd_stop: rts --- Конец кода --- play track (d0 - номер трека) (повторяемая игра трека) --- Код: --- lea ($A12012).l,a0 move.w d0,(a0) move.b #3,-2(a0) stop #$2500 loc_0_48D2: cmpi.b #$42,-3(a0) beq.s loc_0_48D2 move.b #-1,-2(a0) move.w #0,(a0) rts --- Конец кода --- Кроме этих двух плеер ещё много чего держит, можешь проверять разными комбами - там в коде плеера 9 условий где-то, вот ты ими и управляешь - запись #3 как раз нужна для запуска трека. Самое главное чтобы всё работало нужно в VBLANK добавить строчку: --- Код: ---VBLANK: movem.l d0-a6,-(sp) bset #8,($A12000).l --- Конец кода --- Без нее ничего работать не будет. Так же не будет работать если сейвишь меньше регистров (например d0-d2/a0-a2). Вообщем она не должна выполняться сразу же при прерывании, только чуть позже - так что если не работает пихай чуть после, или добавляй нопы после сейва регов. |
| Segaman:
все равно ничего не работает. --- Цитата: Ti_ от 14 Сентябрь 2012, 18:06:50 ---Далее управление плеером осуществляется со стороны обычной сеги : --- Код: ---stop_cd_music: tst.b (sega_cd_flag).w beq.s no_scd_stop lea ($A1200F).l,a0 scd_wait: move.b (a0),d0 bne.s scd_wait move.b d0,1(a0) stop #$2500 scd_wait2: cmpi.b #$42,(a0) beq.s scd_wait2 move.b #-1,1(a0) no_scd_stop: rts --- Конец кода --- --- Конец цитаты --- что это? куда это встяавлять? |
| Ti_:
--- Цитата: Segaman от 15 Сентябрь 2012, 11:45:39 ---все равно ничего не работает.что это? куда это встяавлять? --- Конец цитаты --- Что это а ты читаешь умеешь? Stop cd music - то есть остановка проигрывания. У меня после выхода с гонки это вставлено. А следующий за ним запуска трека по его номеру, номер трека в d0. Перед запуском трека надо остановить вначале. Если ничего не получится - скидывай асм я тебе поправлю. |
| Segaman:
попробую новый ром собрать. внутри моего не пашет |
| Ti_:
Вверх играть следующий трек, вниз играть предыдущий. Только нажимать и отпускать сразу не учтено нажатие. |
| Segaman:
спасибо, посмотрем |
| Segaman:
я так думаю чтобы дма работало надо на лету вырубать моде 1 т.е. заставить сегу играть трек, а моде 1 отрубить Добавлено позже: надо доку почитать, и поискать как включать и отключать моде 1 |
| Segaman:
щас копал демку. и обнаружил что сабрутины, чтоб музыку играть там нет. но не в этом суть. суть в том, что сабротину грузящую инфу с диска можно слямзить и отсюда. итог такой, вместе с музыкой, можно будет и читать что либо с диска. на сколько я помню сегасд грузит в память 200000, а там ром не часто обитает) ну это я на будущее. щас такая проблема. кто знает, как заставить сега сд завершать воспроизведение музыки плавно? или игру подскажите на сега сд, где это реализовано |
| ALEX_230_VOLT:
Segaman, отлично, надеюсь это приближает к воплощению мою мечту создать сборник ромов для Sega CD :) А что касается игр с плавным затиханием, то эффект довольно редкий. Я вот щас пока нашёл такое только в Ecco the Dolphin. Там при пропуске заставки мелодия плавно стихает Добавлено позже: вот как это выглядит http://ru.twitch.tv/alex_230_volt/b/333454928 |
| Segaman:
не воспроизводится. в общем посмотрел в тюбике. значит надо будет покопать образ. |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |