Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - DrMefistO

Страницы: Назад 1 ... 32 33 34 35 [36] 37 38 39 40 ... 45 Далее
1051
Подскажите, где можно почитать толковую доку по использованию DMA? А то в Sega_Tech_Rus как-то все неопределенно.
Добавлено позже:
Вопрос возник потому, что:
ROM:0000135E sub_135E:                               ; CODE XREF: sub_1256+4Ap
ROM:0000135E                                         ; sub_13F4+Cj ...
ROM:0000135E                 move.l  #$C0000000,d1
ROM:00001364                 move.l  #RAM_Palette1,d2
ROM:0000136A                 move.w  #$40,d3 ; '@'
ROM:0000136E                 jsr     sub_10CA        ; d1 = VDP Command
ROM:0000136E                                         ; d2 = ?
ROM:0000136E                                         ; d3 = DMA Size (WORDS)
ROM:00001372                 rts
ROM:00001372 ; End of function sub_135E
RAM_Palette1 = 0xFFB098
Затем, по ходу процедуры значения d1 и d3 применяются так как я и написал в комментарии к процедуре, но d2 в итоге записывается в VDPControl как 0x7FD84C (это ведь 0xFFD84C?) (адрес для источника DMA), что странно...

Вот и интересно стало: при пересылке через DMA есть какие-то хитрости при указании адреса источника?

Игра: Tecmo Cup Football.bin

1052
а применение?

1053
Я тоже как-то не очень понимаю практическую суть этой программы. Наверное, это paul_met'а спец-заказ)

1054
У меня ROXL, с единичным сдвигом. Т.е. старший выдавливаемый бит идет в X, а то что в X до этого было (у меня значение X, которое "до этого", устанавливается командой asl.l 8, d5) идет в младший бит.
Добавлено позже:
Цитата: GManiac
Эквивалентные команды для x86: rcl, rcr

Все бы хорошо, но мне надо до следующего раза таскать CR тогда. Как?

1055
Пасибо. В принципе, я суть уловил. Главное знать, где до этого устанавливается X флаг, и совать его на место освободившегося бита. А выдавленный бит совать в X.

1056
Подскажите, как реализовать команды ROXL и ROXR на языке высокого уровня (Delphi, C)? Допускается использование ассемблерной вставки.

И сопутствующий вопрос: при каких условиях устанавливается X флаг?

1057
В частности для двух: Fantastic Dizzy, и Second Samurai.

1058
Сорри) Искал тоталом автоматически.

1059
Оно-то, конечно, спасибо, но если делать редактор игры, данный вариант - не вариант)
Добавлено позже:
А с упаковкой как быть?

1060
Ахз) длл-ка вроде да.

1061
http://testaware.bplaced.net/Toolz/toolz.htm - WinLZH, говорят, анпачит IMP!.
Добавлено позже:
Там же есть fimp.dll v1.0.0.0, которую можно использовать в своем проекте: можно паковать, распаковывать.

1062
Собственно, доволе популярный упаковщик, встречается во многих сеговских играх (Art of Fighting, Comix Zone, Cosmic Spacehead, Fantastic Dizzy, Lawnmower Man, Man Overboard!, серия игр Micro Machines, Pete Sampras Tennis, Second Samurai, Ren and Stimpy Show, Street Fighter II и еще парочке не самых известных).

Кто может выложить его (с сорсами, если можно)?

1063
Да, видимо так и есть.

1064
Цитата: MetalliC
в смысле Fantastic Dizzy

Да, и SRAM там нету.
Цитата: MetalliC
я думаю это ошибка/глюк игры.

но эта "ошибка" много где в начале игры есть.
Цитата: MetalliC
если попытку записи в ром то нет.

да, думал что может так как-то)

1065
Dizzy Adventures (SMD).
Добавлено позже:
А запись по "Bad address" может обрабатываться каким-то исключением?

1066
Не похоже, т.к. в хедере SRAM поле пустое.

1067
ROM:00073A12 sub_73A12:                              ; CODE XREF: sub_739B8+44p
ROM:00073A12                                         ; sub_73AA0+16p
ROM:00073A12                 movea.l a0,a1
ROM:00073A14                 move.w  #$EB,d1 ; 'ы'
ROM:00073A18                 moveq   #0,d2
ROM:00073A1A
ROM:00073A1A loc_73A1A:                              ; CODE XREF: sub_73A12+Aj
ROM:00073A1A                 move.l  d2,(a1)+
ROM:00073A1C                 dbf     d1,loc_73A1A
ROM:00073A20                 rts

В начале процедуры в a0 идет адрес 7679E (ROM). Как такое возможно? Отладчиком проверяю: действительно в цикле оно пишет по адресу в a1.

1068
Цитата: Segaman
имхо моя прога дает более детальный ответ нежели твоя.

Опять же я делал эту программу для пометок на полях иды. А не для дотошного анализа команды.
Цитата
в моей можно команду на лету редактировать, я только дма не доделал
У меня не для создания этих команд, а для анализа того, что они делают.

1069
ГенВайдео меня не устроила тем, что она просто галочки выставляет где и что. Да и не все команды понимает (столкнулся с этим).
А эту программу я писал для того, чтобы было удобно делать пометки в Иде для посылаемых в VDP команд.

1070

Данная программа предназначена для упрощения рутинной работы по определению того, что делает та или иная команда, посылаемая в VDP Control приставки Sega Genesis. Писал для себя, но решил поделиться: а вдруг кому-то еще понадобится?!)

Из возможностей:
  • определение команд записи значений в регистры;
  • определение команд чтения/записи в VRAM/CRAM/VSRAM;
  • возможность разбора Long-word команд;
  • автоматический подхват значения в буфере обмена;
  • получение описания команды сразу же во время ее ввода в поле.

1071
Извини и ты, но функция чексуммы не мной писана, и не SGCExplorer'ом изменена. А она именно пропускает кусок C0000 байт.

1072
MetalliC, не знаю, не знаю. Т.к. адресация в роме указывает и на второй кусок (я просто щас эту игру полностью ковыряю). Так что если просто слепить два куска - получится какашка. Так что дамп, который (REV01) [a1][c][!] - он как есть оригинал, а (REV01) [!] - просто с забитым нулями C0000 блоком, для совпадения чексуммы в любом эмуле. И всего-то.

1073
Насчет квакшота я не совсем понял что там кто добавлял, но данная версия игры сама по себе такая, с левыми 0xC0000 байтами. И даже процедура проверки чексуммы берет только куски до и после этого промежутка. И игра запускается как надо во многих эмулях (должна и в Genesis Plus GX).

1074
http://en.wikibooks.org/wiki/68000_Assembly
Тут написано про биты, но не для всех битов написано пояснение. В частности
I0 Interrupt priority mask bit 1
I1 Interrupt priority mask bit 2
I2 Interrupt priority mask bit 3
Что за маска?

1075
Поясните, плиз назначение команд типа:
move    #$XXXX,srИли:
or    #$XXXX,srНу и всех подобных с регистром sr.

1076
В квакшоте практически все основные процедуры распаковки данных вызываются через трапы. Ну а так код нормальный.
А Tecmo Cup практически весь на F0 XX опкодах и сделан. Но, мне кажется, обработка исключений должна как-то сказываться либо на скорости, либо на обработке команд эмулятором. Все ли они такое понимают?

1077
Игра: Tecmo Cup Football (J).bin
Например процедура: адрес процедуры 0x63C, на 0x67E - опкод.
Добавлено позже:
Уверен, что код, т.к. эти опкоды даже не перепрыгиваются. И процедура нормальная.
Добавлено позже:
Вызывается в начале первого матча.

1078
Точно код, т.к. посреди процедуры частяком в этой игре встречаются такие опкоды. И очень много F0 XX таких. 100% код. Возможно вектор один всего, это пока не проверил.

1079
Спасибо, конечно, только я не понял, где в этой таблице эти коды?

1080
Bad Opcode.
В хексе выглядит как F0 XX. К примеру F0 12. Как игра (Tecmo Cup) понимает такие команды? IDA их не знает. Но это точно код.

Добавлено позже:
Хм, при выполнении F0 12 отладчик идет на RESERV1. Как с этим разобраться?

Еще позже:
Я так понял, что F0 XX - это переход на вектор, где XX - номер вектора. Забавно.

Непонятка:
Но F0 42 куда идет?

Страницы: Назад 1 ... 32 33 34 35 [36] 37 38 39 40 ... 45 Далее