| Разработка и ромхакинг > Ромхакинг и программирование |
| [?] асм процедура для вывода изображения на экран (sega genesis). |
| (1/1) |
| Гламурная киса:
Как вывести изображение,хранящееся в определённой области памяти на экран? Т.к. mc68000 не на прямую юзает видео-ОЗУ меня интересует какой процедуркой можно осуществить это. Добавлено позже: Ах да, и как сконвертить картинку под сеговский формат? |
| saniok:
Помоему ничего сложно, просто прочитать изображения из области в которой оно хранится и потом уже выводить на экран. :) |
| Segaman:
ага, вот пример трололо http://narod.ru/disk/31316829001/TrollFace%20SMD.7z.html Добавлено позже: ну вообщето обычно сначала нужно настроить видюху под отображение а для вывода нужны 3 ещи графика, карта тайлов и палитра. вся эта мишура грузится в видяху и готово. привожу пример настройки --- Код: --- move.w #$8004,(VCTRL).l ; Enable palette select move.w #$8144,(VCTRL).l ; Enable Display move.w #$8238,(VCTRL).l; set plane a to $E000; move.w #$8407,(VCTRL).l; set plane b to $E000; move.w #$8560,(VCTRL).l; sprite table begins at $c000 move.w #$8C81,(VCTRL).l; Screen is 40x28 cells move.w #$8f02,(VCTRL).l; set VDP increment register to increment one word after each write move.w #$9001,(VCTRL).l; Plane A/B are 64x32 cells --- Конец кода --- у мну проги все юзают эту настрйку VCTRL = $C00004 а вот так у мну карта тайлов грузится в адрес E000 видео памяти. именно оттуда видюха отображает две плоскости --- Код: --- lea Map,a0 move.l #$60000003,(VCTRL).l; point to VRAM $E000 move.w #($E00)/2-1,d1 -: move.w (a0)+,(VDATA).l; dbf d1,- --- Конец кода --- опиши подробнее свою ситуацию и я да тебе более подробный гайд |
| Гламурная киса:
во, это оно... А по подробнее можно? В частности нарезка изображения на тайлы и как их потом загнать в ROM. Добавлено позже: кстати,Segaman, какой компилятор асма используете? У меня в эмуле Gens когда захожу в Debug - винда (седьмая) сообщает, об ошибке и приложение накрывается,хотя сам эмуль стабильно функционирует если гамать в игры. |
| Nemesis_c:
Сигамана слушай больше... ололо, тынц тынц, гы... а толку никакого. Smoke на пальцах все намного понятнее и проще оьяснил . Думаю он простит мне сей копипаст.. Проверено опытным путем, инфа 100%... : Smoke (22:45) ; Установка палитры (стандартнаЯ радуга 16ти цветных полос в первой палитре) move.l #$c0000000,$c00004 move.l #$0000,$c00000 move.l #$0000,$c00000 move.l #$0C00,$c00000 move.l #$000C,$c00000 move.l #$0C0C,$c00000 move.l #$00C0,$c00000 move.l #$0CC0,$c00000 move.l #$00CC,$c00000 move.l #$0CCC,$c00000 move.l #$0E44,$c00000 move.l #$044E,$c00000 move.l #$0E4E,$c00000 move.l #$04E4,$c00000 move.l #$0EE4,$c00000 move.l #$04EE,$c00000 move.l #$0EEE,$c00000 Smoke (22:45) Это загрузка палитры поцветно Smoke (22:46) то есть одна команда, один цвет Smoke (22:47) смотри, пишем данные всегда в $c00000, а в $c00004 записываем управляющие команды Smoke (22:48) то есть нам нужно записать палитру, записываем адрес в $c00004: move.l #$c0000000,$c00004 ВДП тоже имеет свое адресное пространство как и м68к. с "адреса" $c0000000 начинаются данные палитры Smoke (22:49) потом пишем данные в $c00000 Smoke (22:49) далее Smoke (22:51) графика лежит с адреса $0 до $1FFFF (всего может быть $1000 тайлов в врам). Чтобы перейти на начало (0) нужно записать move.l #$40000000,$c00004 Smoke (22:51) move.w #$8f02,$c00004 ; move.l #$40000000,$c00004 ; lea (font).l,a5 ;Адрес хранени шрифта и картинки move #$29FF,d5 ;Размер шрифта и картинки (8Кб) ; Пересылка символов VramFont: move.w (a5)+,$c00000 ;Отправим слово dbra d5,VramFont Smoke (22:52) дальше грузим в a5 адрес графики и записываем словами ее Smoke (22:56) есть регистры отвечающие за адреса тайловых карт. они хранятся в врам вместе с графикой! Я точно не помню номера, но это вроде 1 и 4 регистры Smoke (22:57) Так вот нужно записать туды адреса планов, толкьо там цена деления не байт и не тайл вроде, это надо экспериментирвать, записывать значение и смотреть куда записалось Smoke (22:58) потом выставить в порт $C00004 адрес куда пишем данные и также как графику записываем словами тайловую карту Smoke (22:59) вообще чтобы было наглядно, ты можешь в проге GSSV открыть сейв, посмотреть адреса планов А и Б и в сейве записать туда какие-нибудь значения и посмотреть в игре что изменилось. так будет проще понять, что в вдп происходит Smoke (22:59) gssv - genesis savestate viewer |
| Навигация |
| Главная страница сообщений |