| Разработка и ромхакинг > Ромхакинг и программирование |
| Геймдев под M68K |
| << < (4/10) > >> |
| Ti_:
а я вот еще что нашел - MOVEM.W - тоже знакорасширяемая. и я тут начал ром сначала изучать и смотрим: ROM:00000294 movem.l (a6),d0-a6 ; видимо решили очистить региcтры? но можно было очистить через movem.w . некоторые вопросы вызывает это: ROM:0000023E loc_0_23E: ; CODE XREF: RESET+24j ROM:0000023E move.w (a4),d0 ROM:00000240 moveq #0,d0 в чем смысл неясно?? (a4= вдп_контроль) потом move.l #'SEGA',$2F00(a1) ; код безопасности сеги который записывается если версия неправильная? вот что за версия - железа? что будет если его записывать если правильная и не записывать если неправильная (т.е. наооборот). далее: moveq #0,d0 movea.l d0,a6 move a6,usp , user stack pointer - что это такое , зачем он нужен еще 1 стак поитер? и в него тут 0 пишут ? дальше: команды для VDP (инициализация) ROM:000002B8 dc.b 4 ; 8004 ROM:000002B9 dc.b $14 ; 8114 ROM:000002BA dc.b $30 ; 8230 ROM:000002BB dc.b $3C ; 833c ROM:000002BC dc.b 7 ; 8407 и т.д. вот есть у кого список всех (или большинства команд?) только не в битах как в мануале. и эта шаблонка (reset+data для регистров) она у всех одинаковая (её сега чтоли выдывала всем?), и зачем её так запутали? (везде циклы, всё от-но берется и т.д.) - то есть это просто им захотелось сильно сэкономить место или от пиратов(чтобы ломали дольше)? можно ж было просто напихать move.w $8004,(a4) и т.д. Добавлено позже: p.s. чтобы в asm68k.exe схавал надо писать move.l a6,usp (а не move). в comix zone тут дизасмил увидел используют во многих местах trap (trap #1) - в других играх не видел (надо бы побольше проверимть) . и ворды после нее потом к какому-то адресу прибавляются. ещё интересно что графику Cкеча сжали?я не нашел (и куда распаковывается в RAM или каждый раз??- но не тормозит?) --- Код: ---ROM:001DBFFE loc_0_1DBFFE: ; CODE XREF: ROM:loc_0_1DBE88p ROM:001DBFFE trap #1 ROM:001DBFFE ; --------------------------------------------------------------------------- ROM:001DC000 dc.w $AF6A ROM:001DC002 ; --------------------------------------------------------------------------- ROM:001DC002 moveq #$1B,d0 ROM:001DC004 jsr loc_0_2E46 ROM:001DC008 rts --- Конец кода --- вот она: --- Код: ---ROM:001CE58A global TRAP1 ROM:001CE58A TRAP1: ROM:001CE58A move.l a5,-(sp) ROM:001CE58C movea.l 6(sp),a5 ROM:001CE590 movea.w (a5)+,a5 ROM:001CE592 adda.l #word_0_138E0E,a5 ROM:001CE598 move.l a5,$30(a0) ROM:001CE59C move.w #1,$34(a0) ROM:001CE5A2 andi.w #unk_0_FFFFFBF7,$A(a0) ROM:001CE5A8 clr.w $2A(a0) ROM:001CE5AC move.w #8,$3A(a0) ROM:001CE5B2 addq.l #2,6(sp) ROM:001CE5B6 movea.l (sp)+,a5 ROM:001CE5B8 rte --- Конец кода --- еще вопрос по z80 что-туда записывают вначале в его RAM (из этой же шаблонки), ведь писали что он в перезагрузке должен быть при включении?? и он не с 0 своей RAM читает а с "C"?? ( у меня в эмуляторе так показывает, да и тут видно что-то нето начинает с XOR, так что там за цифры внаале? --- Код: ---ROM:0000 xor a ROM:0001 ld bc, 1FD9h ROM:0004 ld de, 27h ROM:0007 ld hl, 26h ; '&' ROM:000A ld sp, hl ROM:000B ld (hl), a ROM:000C ldir ROM:000E pop ix ROM:0010 pop iy ROM:0012 ld i, a ROM:0014 ld r, a ROM:0016 pop de ROM:0017 pop hl ROM:0018 pop af ROM:0019 ex af, af' ROM:001A exx ROM:001B pop bc ROM:001C pop de ROM:001D pop hl ROM:001E pop af ROM:001F ld sp, hl ROM:0020 di ROM:0021 im 1 ROM:0023 ld (hl), 0E9h ROM:0025 jp (hl) --- Конец кода --- |
| MetalliC:
нда, книжки ты по-прежнему читать не хочешь ) --- Цитата: Ti_ ---move a6,usp , user stack pointer - что это такое , зачем он нужен еще 1 стак поитер? и в него тут 0 пишут ? --- Конец цитаты --- в процессоре есть два режима - пользовательский и супервизора. в юзер-моде вот как раз этот USP и используется как стек (А7) супервизоре используется свой А7, а доступ к тому пользовательскому регистру стека идет как USP. --- Цитата: Ti_ ---в comix zone тут дизасмил увидел используют во многих местах trap (trap #1) - в других играх не видел (надо бы побольше проверимть) . и ворды после нее потом к какому-то адресу прибавляются. --- Конец цитаты --- я такое встречал раньше - суть в том что таким макаром передают какие-то аргументы обработчику трапа ну а он после возвращает управление не на (A7) а на (A7)+длинааргументов, в твоем случае +2 это кстати четко видно на твоем листинге |
| Ti_:
Существует ли редактор ассемблера для M68K нормальный? В текстовых редакторах не нашел, готовых плагинов тоже нет(то есть может быть есть , но где?) Пробовал редактор из комплекта EASY68K - так он там кривой ужасно. (Стоит ли пробовать IDE68k-может там нормальный?) Идеал это если б как в IDA все показывало , только редактировать можно было, ну и список имен меток,джампы по ним и т.д.... но кажется неосучествимо... |
| Smoke:
Сам искал в свое время, ничерта не нашел. Пришлось писать в блокноте xD |
| Марат:
B Scite есть подсветка синтаксиса, если тебя это интересует. Я себе добавил инструкции мотороллы в sci lexer и подключил его к sci te. |
| worm:
Джентельмены, возможно ли присобачить этот gcc для m68k к code blocks? на мой взгляд - самый удобный ide, а как пользоваться компилятором без ide - понять ума не хватает. Очень хочется написать игру для SMD на С. :) romanich, sergi, обновите ссылки, прошу. Ни сырцов mr.nuts2 ни проекта romanich скачать не получается :( |
| GManiac:
Где-то в этой теме. http://gendev.spritesmind.net/forum/viewtopic.php?t=14 Добавлено позже: Блина, нажимаю на первом посте этой странице Цитировать, и виснет. Скопировал цитату вручную. --- Цитата ---некоторые вопросы вызывает это: ROM:0000023E loc_0_23E: ; CODE XREF: RESET+24j ROM:0000023E move.w (a4),d0 ROM:00000240 moveq #0,d0 в чем смысл неясно?? (a4= вдп_контроль) --- Конец цитаты --- Холостое чтение, VDP_CTRL это порт, а не ОЗУ, поэтому такое чтение на что-то может повлиять. Например, в стандартном коде старта сеговских игр есть такой кусок: --- Код: ---_000002FA: 4A79 00C00004 TST.W VDP:$00C00004 _00000300: 2E79 00000000 MOVEA.L ROM:$00000000,A7 --- Конец кода --- |
| worm:
GManiac, вот спасибо, дружище! =) Добавлено позже: Есть вопрос касательно компиляции исходников totin'a (battlecity).. жалуется на sh.exe, выдает запрет. :( Если кто знаком с решением данной проблемы буду благодарен за помощь. |
| MobNet:
чет неочень хороший исходник уменя вышел( E:\Sega\asm68k>asm68k /p asm.asm,asm.bin SN 68k version 2.53 E:\SEGA\ASM68K\ASM.ASM(44) : Error : xdef/xref can only be used when producing l inkable output global reset E:\SEGA\ASM68K\ASM.ASM(1229) : Error : xdef/xref can only be used when producing linkable output global vblank E:\SEGA\ASM68K\ASM.ASM(1246) : Error : xdef/xref can only be used when producing linkable output global hblank Errors during pass 1 - pass 2 aborted Assembly completed. 3 error(s) from 170615 lines in 0.2 seconds E:\Sega\asm68k>pause Для продолжения нажмите любую клавишу . . . 44 строка --- Код: --- global RESET RESET: ; DATA XREF: sub_694o move #$2700,sr move.b (byte_A10001).l,d7 move.b d7,(byte_FFB036).l andi.b #$F,d7 beq.w loc_222 move.l #$53454741,($A14000).l --- Конец кода --- |
| Segaman:
убери все global --- Код: ---RESET: ; DATA XREF: sub_694o move #$2700,sr move.b (byte_A10001).l,d7 move.b d7,(byte_FFB036).l andi.b #$F,d7 beq.w loc_222 move.l #$53454741,($A14000).l --- Конец кода --- |
| MobNet:
Segaman,спасибо конечно но я уже ранее твоего ответа попробовал убрать но после компиляции ошибок 0 а работать не хочет черный экран( |
| Ti_:
--- Цитата: MobNet от 09 Апрель 2012, 10:41:23 ---попробовал убрать но после компиляции ошибок 0 а работать не хочет черный экран( --- Конец цитаты --- Что за исходник? Дизасм какой-то игры? |
| Segaman:
да, новую игру разбирает |
| worm:
--- Цитата: sergi от 19 Август 2009, 16:05:10 ---Я видел, кстати я даже имею исходники нескольких игр - если кому надо то могу поделиться запросто 2 игры Turrican 3 Mr Nuts 2 проблема одна - исходники то С, но вообще девелоперский софт был на компьютере Амига поэтому нужно както коды эти перекодить уже под ваш девелоперский компилятор но вполне реально думаю - там все есть практически --- Конец цитаты --- Скачал с зофара исходники Mr Nuts 2, в них нет ни намека на C. |
| MetalliC:
--- Цитата: worm ---Скачал с зофара исходники Mr Nuts 2, в них нет ни намека на C. --- Конец цитаты --- от этого не легче - исходники писались под амижным пакетом Hisoft Devpac и скорее всего под чем-то другим не соберутся, плюс там еще есть вагончик скриптов под AmigaOS и всяких утилиток (бинарные файлы начинающиеся с 00 00 03 F3 - это исполняемые файлы под амигаось) |
| worm:
В общем про "забилдить" можно забыть :lol: |
| Segaman:
такой вопрос. никто не пробовал запустить программу для м68к в адресном пространстве з80 заранее отключив сам з80? Добавлено позже: и еще вопрос. помница на вики давным давно находил инфу про техас инструментс из сеги. так вот там было сказано что шумогенератор можно приспособить к проигрыванию звуковой дорожки путём очень частого изменения частот. я даж дему качал, но её увы не сохранилось. там еще говорилось что з80 даже на пару с моторолкой не смогут так часто менять частоту. что там нужен был бы проц в 2 или 3 раза мощнее моторолки. щас копаться в инете времени нет. может кто слыхал такое? |
| MetalliC:
--- Цитата: worm ---В общем про "забилдить" можно забыть --- Конец цитаты --- ну почему же, собрать можно, только нужно разбираться в амижных девелоперских пакетах. при чем авторы зачем-то использовали два ассемблера - вышеупомянутый "Devpac" для Nutz_Sources_11_8 и какой-то немецкий "Optimierender Makro Assembler" для Nutz_Karte_11_8, и плюс еще линковщик SLink от "SAS C" к тому же не хватает еще файлика sega.obj (заголовок рома с инитом и запуском игры), его нужно сделать из "Nutz_Karte_11_8\Startup.asm" у меня всё это получилось, так что встречайте - Mr. Nutz 2 для мегадрайва к сожалению можно только погулять по первому уровню, при попытке зайти на другие - вылет в главное меню :( Добавлено позже: ага, и я уже вижу почему - надо еще билдить уровни в Nutz_Levels_11_8 чтоб получился файлик Levels_all и вшить его в ром. попозжа попробую его собрать. |
| Pain:
Слушай. А игра чтоли должны была выйти и ты её сызнова делаешь или допиливаешь? |
| MetalliC:
Pain, должна была выйти, по сути порт для мегадрайва был полностью готов, но в виду того что МД к 1994г уже устарела игру решили не выпускать. года три назад один из авторов выложил исходники игры, а я вот пытаюсь их собрать. вот последний вариант - всё таки допер я как компилить этот sega.obj и вшил его начало рома, плюс собрал уровни, но увы игра виснет на их загрузке. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |