Разработка и ромхакинг > Ромхакинг и программирование
Messida - Sega Genesis Debugger for IDA Pro
<< < (2/4) > >>
DrMefistO:
evgeny, Можешь проверить в иде 6.6 поддержку проца? Вроде они этот проц уже делали.
evgeny:
Вижу только 65C02. 65SC02 - не вижу.
DrMefistO:
evgeny, исходники 65C02 есть. Если их доработать, то можно и второй поддерживать. Надо только различия найти.
MESS, говорят, поддерживает TurboGrafx.
evgeny:
Как я понял в 65SC02 добавлено 32 комманды.

добавлены инструкции BBR,BBS,RMB,SMB.


Branch on Bit Reset (BBRi)
 
Function  The  i  th bit value in zero page memory location ZZ is tested. If it is clear, a branch is taken; if it is set, the instruction immediately following the

three-byte BBRi instruction is executed. If the branch is taken, a one-byte signed displacement, fetched from the third byte of the instruction, is added to the

program counter. Once the branch address has been calculated, the result is loaded into the program counter, transferring control to that location. The allowable

range of the displacement is -128 to +127  from the instruction immediately following the branch  .

 Adressing Modes & Opcodes 
Addressing Mode Syntax Opcode # of bytes # of cycles 
Zero Page, Relative BBR0 ZZ, hhll 0F ZZ rr 3 6 
Zero Page, Relative BBR1 ZZ, hhll 1F ZZ rr 3 6 
Zero Page, Relative BBR2 ZZ, hhll 2F ZZ rr 3 6 
Zero Page, Relative BBR3 ZZ, hhll 3F ZZ rr 3 6 
Zero Page, Relative BBR4 ZZ, hhll 4F ZZ rr 3 6 
Zero Page, Relative BBR5 ZZ, hhll 5F ZZ rr 3 6 
Zero Page, Relative BBR6 ZZ, hhll 6F ZZ rr 3 6 
Zero Page, Relative BBR7 ZZ, hhll 7F ZZ rr 3 6 

 

Branch on Bit Set (BBSi)

 Function  The  i  th bit value in zero page memory location ZZ is tested. If it is set, a branch is taken; if it is clear, the instruction immediately following the

three-byte BBSi instruction is executed. If the branch is taken, a one-byte signed displacement, fetched from the third byte of the instruction, is added to the

program counter. Once the branch address has been calculated, the result is loaded into the program counter, transferring control to that location. The allowable

range of the displacement is -128 to +127  from the instruction immediately following the branch  .

 Adressing Modes & Opcodes 
Addressing Mode Syntax Opcode # of bytes # of cycles 
Zero Page, Relative BBS0 ZZ, hhll 8F ZZ rr 3 6 
Zero Page, Relative BBS1 ZZ, hhll 9F ZZ rr 3 6 
Zero Page, Relative BBS2 ZZ, hhll AF ZZ rr 3 6 
Zero Page, Relative BBS3 ZZ, hhll BF ZZ rr 3 6 
Zero Page, Relative BBS4 ZZ, hhll CF ZZ rr 3 6 
Zero Page, Relative BBS5 ZZ, hhll DF ZZ rr 3 6 
Zero Page, Relative BBS6 ZZ, hhll EF ZZ rr 3 6 
Zero Page, Relative BBS7 ZZ, hhll FF ZZ rr 3 6 



Reset Memory Bit i (RMBi)

 Function  Clear the specified bit in the zero page memory location specified in the operand. The bit to clear is specified by a number concatenated to the end of

the mnemonic, resulting in 8 distinct Opcodes.

 Adressing Modes & Opcodes 
Addressing Mode Syntax Opcode # of bytes # of cycles 
Zero page RMB0 ZZ 07 ZZ 2 7 
Zero page RMB1 ZZ 17 ZZ 2 7 
Zero page RMB2 ZZ 27 ZZ 2 7 
Zero page RMB3 ZZ 37 ZZ 2 7 
Zero page RMB4 ZZ 47 ZZ 2 7 
Zero page RMB5 ZZ 57 ZZ 2 7 
Zero page RMB6 ZZ 67 ZZ 2 7 
Zero page RMB7 ZZ 77 ZZ 2 7 



Set Memory Bit i (SMBi)

 Function  Set the specified bit in the zero page memory location specified in the operand. The bit to clear is specified by a number concatenated to the end of the

mnemonic, resulting in 8 distinct Opcodes.

 Adressing Modes & Opcodes 
Addressing Mode Syntax Opcode # of bytes # of cycles 
Zero page SMB0 ZZ 87 ZZ 2 7 
Zero page SMB1 ZZ 97 ZZ 2 7 
Zero page SMB2 ZZ A7 ZZ 2 7 
Zero page SMB3 ZZ B7 ZZ 2 7 
Zero page SMB4 ZZ C7 ZZ 2 7 
Zero page SMB5 ZZ D7 ZZ 2 7 
Zero page SMB6 ZZ E7 ZZ 2 7 
Zero page SMB7 ZZ F7 ZZ 2 7 



DrMefistO:
evgeny, а можно источник?
evgeny:
Вобщем инструкции BBR,BBS,RMB,SMB.
Во вложении вся таблица.

Вероятно 65SC02 еще не учитывает инструкций st0,st1,st2,tai,tam,tma,tdd,tia,tii,tin
они вроде бы под железо приставки заточены. Скорее всего 65SC02 этим отличается от HuC6280.
И в итоге нужен даже не 65SC02, а HuC6280.  В таблице эти инструкции есть.



worm:

--- Цитата: DrMefistO от 03 Сентябрь 2015, 21:50:50 ---Окей, будем на Вы)

--- Конец цитаты ---
Да это просто привычка еще с детства - со всеми, с кем мало знаком, на Вы, даже если человек младше)) В принципе, можно и на ты)

--- Цитата ---Можно пример, когда делается что-то не так, как хотелось с адресами? По шагам, чтобы я проверил.
--- Конец цитаты ---
Вот пример кода, который дизассемблируется только после дебаггинга.

--- Код: ---move.l  #$B6D6,d7
--- Конец кода ---
$B6D6 не определяется как ссылка на массив указателей, исправляется горячей клавишей O.
Естественно, массив указателей остается в виде необработанных байтов)
Вот правильный вариант)

--- Код: ---move.l  #unk_B6D6,d7
--- Конец кода ---
DrMefistO:
worm, а, ну это лучше оставить как есть. И руками колбасить. А то по-дефолту там выдает такой упоротый код, если давать Иде идентификацию таких смещений. Поэтому и убрал. Да, вручную по O.
worm:
Ну ничего, дебаггер и так выполняет 99% всей работы)
Я с детства мечтал создавать и изменять любимые игры, кто бы знал, что моя мечта сбудется)
MetalliC:
DrMefistO, не надо TurboGrafx, сделай лучше дрим/наоми, а ? в МАМЕ оно тоже более-менее работает.
хотя я буду счастлив и просто от лоадера бинарника рамы, прописывающего сегменты аудио-видео памятей, метки регистров итп.
DrMefistO:
MetalliC, ну, если ида тянет проц этот, и ты мне дашь инфы по нем, то можно попробовать будет.
А лодырь - тоже надо инфу, и могу сделать.

Добавлено позже:
А пока, зарелизил версию v1.4: https://github.com/DrMefistO/messida/releases/tag/v1.4

* Added VRAM, VSRAM, CRAM segments;
* Added VDP registers (Debugger windows->VDP Registers).
MetalliC:
DrMefistO,
инфа вот
pdf-ка с докой на проц, плюс мои конфиг с метками внутренних регистров, и скриптик который создает сегменты для них (почему-то командами area в конфиге они не создаются)

в ида он обзывается Renesas SH-4 (little endian), модель 7750
думаю что зная М68К разобраться будет не сложно, тут заместо мотороловских отдельных по 8 штук регистров данных и адреса - 16 штук универсальных, последний тоже используется как стек, да и в остальном оно имхо схоже.
шина адреса - 29бит, старшие три бита используются для управления кешем.
т.е. допустим 0x8C000000 или 0x0C000000 - это первый адрес RAM, чтение/запись будет через кеш, 0xAC000000 - тот же адрес, но доступ будет напрямую. к сожалению ида это не хавает ( и считает за разные адреса.

дока на дрим вот , карта памяти на 16й странице

а вот пример базы  - это  VF4 с наоми2 но там те же яйца, только всего по два штука - видеопамятей, регистров, по Program Segmentation я надеюсь будет понятно.

собсно что хотелось бы получить - загрузчик, который будет хавать дамп всей оперативки, спросит куда его грузить (бывает 2 варианта - с 0x8C000000 или 0x0C000000), и потом пропишет сегменты, регистры и тому подобное. т.е. в принципе то же что делают мои sh3.cfg и sh4.idc но в более цивильном виде.

понятно, что всяких регистров много и они для тебя все не знакомые, так что вполне устроит "скелет" загрузчика, со всем основным, в который я уже сам смогу подобавлять еще меток регистров или там сегментов.
DrMefistO:
Ну что ж, попробую.
worm:

--- Цитата: DrMefistO от 05 Сентябрь 2015, 00:09:48 ---зарелизил версию v1.4

--- Конец цитаты ---
Сейчас заценим) спасибо

А вообще как у MESS с эмуляцией дела обстоят, лучше, чем у Kega/Regen?
DrMefistO:
worm, он по крайней мере всякие мапперы держит. В отличии от Кеги. Но в плане звука и некоторых других фич, Кега лучше.
tgitv:

--- Цитата: DrMefistO от 14 Июль 2015, 01:34:48 ---Обновил до версии 1.1. Тестируйте, не стесняйтесь.

--- Конец цитаты ---
Спасибо! Работает!
MetalliC:

--- Цитата: worm ---А вообще как у MESS с эмуляцией дела обстоят, лучше, чем у Kega/Regen?
--- Конец цитаты ---

с эмуляцией таймингов доступа к VDP так почти никак, так что играм к этому критичным будет не хорошо.

на счет звука не согласен, он лучше/точнее чем в Кега, хотя и может звучать не так сочно т.к. нет интерполяций и прочих улучшательств.
worm:
Иногда вылетает. Возможно из-за моего вмешательства в дизассемблируемый код?
DrMefistO:
worm, было бы неплохо, если ты сможешь понять, когда и при каких обстоятельствах происходит вылет. Тогда я смог бы пофиксить.

MetalliC, лодырь готов: https://github.com/DrMefistO/sdc_loader. Только убери арии из конфига.
MetalliC:
супер, спасибо. буду пробовать.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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