Разработка и ромхакинг > Ромхакинг и программирование
Геймдев под 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 и вшил его начало рома, плюс собрал уровни, но увы игра виснет на их загрузке.


Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии