Автор Тема: Пара вопросиков о z80 и gameboy  (Прочитано 6170 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Пара вопросиков о z80 и gameboy
« : 26 Сентябрь 2009, 15:53:08 »
В общем пытаюсь понять и вникнуть в отличая оригинального z80 и тот что используется в GB
Может кто-нить поможет понять?
1) Значит посмотрел я эмуль GB. Там все опкоды забиты начиная от 0x00 до 0xFF.  Но в отличае от кастомного проца в настоящем есть
такая комманда к примеру push ix. Т.е. работа со стеком и регистром  ix, который убрали из GB.
Вопрос такой. Как в оригинале могла использоваться эта комманда
если все опкоды занята. Написано что они совместимы же.
КАк так полчуется?
2) Как вскрыли это чёрный ящик. Что-то я понять не могу. У меня GB есть я его раскрутил а там кастомная микроха производства Nintendo написано. Помню писали в игромании что вскрул эту приставку МАрат Фазалин. ОН что участвовал в производстве чтоль. В инете лежит мега дока на всю архитекутуру приставки. Откуда он всё узнал. Что там z80 да и ещё немного именённый. Если учесть ещё то что не было почти инета, да и поисковиков не было. Было это в 95 году. Вот
Извините, может я туплю, но мне както это всё в голову не лезет?

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #1 : 26 Сентябрь 2009, 16:27:55 »
Я вообще до сих пор не понимаю, почему все говорят, что в GB в Z80. Z80 имеет раздельные пространства памяти и ввода / вывода, GB CPU - нет, кроме того, на шине GB CPU имеется сигнал Ф2, совершенно не характерный для Z80. Про префиксные команды я вообще молчу.
Файзуллин, как я понимаю, просто занимался раверс - инженерингом

Добавлено позже:
А вообще где-то в районе 95 года я держал в руках зарубежный журнал, где был кратенький обзор приставок, имевшихся в продаже в тот момент, и там было написано, что в GB стоит 6502.
К сожалению, мне его дали полистать на пять минут, кое-что выписал на бумажку, даже названия не помню.

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #2 : 26 Сентябрь 2009, 16:47:01 »
Цитата
Я вообще до сих пор не понимаю, почему все говорят, что в GB в Z80
Фига себе? А как тогда правильно говорить то? Что тогда в нём?
Сорри, но так написано везде
Цитата
на шине GB CPU имеется сигнал Ф2, совершенно не характерный для Z80
Это что синхроимпульс? А то я не силён в микросхемах :blush:
Цитата
просто занимался раверс - инженерингом

Чего? Рома, катриджа или проца. Как можно по рому узнать так много о приставке. Темболее что нужно было ещё иметь правильный дизассемблер характреный для z80. НУжно было его иметь в начличие или иметь доку на тот кастомный проц.
 НЕ мог же он сидеть с тестером и все подряд тожки тыкать, их там уйма, даещё сколько комбинаций то. А внутренние регистры. Как он узнавал во что они устанавливаются
Цитата
и там было написано, что в GB стоит 6502.
o_0 o_0 o_0
Я с ума схожу. ТАк что тама на самом деле.
Цитата
даже названия не помню.
Обидно что не помниш, просто интересно что за магазин был. Да ещё в таком году да и ещё буржуйский

Добавлено позже:
Re: Пара вопросиков о z80 и gameboy
« Ответ #2 : Сегодня в 13:41:36 »
Чё за на, пост сделан 5 мин назад в 16:39? o_0

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #3 : 26 Сентябрь 2009, 17:10:01 »
Я никогда серьёзно не занимался GB, просто некоторые вопросы мне не понятны и внятных ответов я пока не получил:
1. несоответствие архитектуры
2. несоответствие интерфейса
3. а нахрена вообще Нинтендо при разработке переносной восьмибитки взяло другой проц?

Ф (в обиходе "фаза") - один из сигналов шины, характерный для 6502

Про Файзуллина тоже мало что знаю.

Добавлено позже:
Re: Пара вопросиков о z80 и gameboy
« Ответ #2 : Сегодня в 13:41:36 »
Чё за на, пост сделан 5 мин назад в 16:39? o_0
Это даблпост, который автоматически сливается с предыдущим как "Добавленно позже"

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #4 : 26 Сентябрь 2009, 17:51:16 »
Спасибо, посмотрим, может другие знатоки процессора этого или эмуляторщики скажут.
Ещё тут про какого-то санчюза пишут, типа может он скажет, я так понял он друг фазалина

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #5 : 26 Сентябрь 2009, 19:26:50 »
Посмотрел WIKI и увидел:
Цитата
CPU: Custom 8-bit Sharp LR35902[22][unreliable source?] core at 4.19 MHz which is similar to an Intel 8080 in that all of the registers introduced in the Z80 are not present. However, some of the Z80's instruction set enhancements over the stock 8080, particularly bit manipulation, are present. Still other instructions are unique to this particular flavor of Z80 CPU. The core also contains integrated sound generation
Сноска [22].
Через меня лет 15 назад проходил один GB черно-белый. И там действительно был чип, на котором было написано CPU и Sharp (там на всех микрухах Sharp был если честно).

PS Никогда не читайте Русскую WIKI, там такого понапишут:
Цитата
Процессор    6502, 8-бит (архитектура Z80)
 :D :lol: :D :lol:

PPS Посмотрел опкоды LR35902 и увидел, что реально схоже с i8080 (основной набор) и Z80 (дополнительный набор, префикс CB). Перфикса ED нет, как и нету альтернативного набора регистров Z80 (B',C',D',E',H',L',A',IX,IY).

PPPS Ну вот, что-то проясняется:
The GameBoy uses a computer chip similar to an Intel 8080. It contains all of the instructions of an 8080 except there are no exchange instructions. In many ways the processor is more similar to the Zilog Z80 processor. Compared to the Z80, some instructions have been added and some have been taken away.
The following are added instructions:
ADD SP,nn ;nn = signed byte
LDI (HL),A ;Write A to (HL) and increment HL
LDD (HL),A ;Write A to (HL) and decrement HL
LDI A,(HL) ;Write (HL) to A and increment HL
LDD A,(HL) ;Write (HL) to A and decrement HL
LD A,($FF00+nn)
LD A,($FF00+C)
LD ($FF00+nn),A
LD ($FF00+C),A
LD (nnnn),SP
LD HL,SP+nn ;nn = signed byte
STOP ;Stop processor & screen until
button press
SWAP r ;Swap high & low nibbles of r
The following instructions have been removed:
Any command that uses the IX or IY registers.
All IN/OUT instructions.
All exchange instructions.
All commands prefixed by ED (except remapped RETI).
All conditional jumps/calls/rets on parity/overflow
and sign flag.
The following instructions have different opcodes:
LD A,[nnnn]
LD [nnnn],A
RETI
RETI у Z80 был под преффиксом ED. Примечательно, что:
Цитата
Sources by: Pan of Anthrox, GABY, Marat Fayzullin,
Pascal Felber, Paul Robson, Martin Korth, kOOPa, Bowser
« Последнее редактирование: 26 Сентябрь 2009, 19:48:32 от HardWareMan »

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #6 : 26 Сентябрь 2009, 20:01:51 »
Цитата
1) Значит посмотрел я эмуль GB. Там все опкоды забиты начиная от 0x00 до 0xFF.  Но в отличае от кастомного проца в настоящем есть
такая комманда к примеру push ix. Т.е. работа со стеком и регистром  ix, который убрали из GB.
Вопрос такой. Как в оригинале могла использоваться эта комманда
если все опкоды занята. Написано что они совместимы же.
КАк так полчуется?
Кто на это ответит,плиз?

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #7 : 26 Сентябрь 2009, 22:21:38 »
XXXX DD E5   PUSH IX ;Z80
PUSH IX состоит из двух байт: 0хDD как префикс, переключающий регистровую пару HL на IX и опкода 0хE5, который является командой PUSH HL. Код 0xDD отсутствует в таблице Sharp LR35902. Если таблица полная, и этого кода действительно нет, то все зависит от конкретной аппаратной реализации процессора. Например, некоторые "пустые" опкоды у i8080 действуют как команда NOP, некоторые как ожидаемые фантомные команды. У Z80 ИМХО все несуществующие коды (в первых двух страниц их нет, только с префиксом #ED) работают как NOP, однако, многие команды работы с регистрами H и L поотдельности вполне ожидаемо работают как IXh/IXl/IYh/IYl, так что здесь без тестов на железе прямо не ответить. Есть мнение, что это просто антиотладочная техника (и код 0xDD этим процем воспринимается как NOP), тогда реально получается:
XXXX DD   NOP
YYYY E5   PUSH HL
А дизассемблер спотыкается. Такое было во времена спектрума: вставляешь пару преффиксов 0xDD/0xFD перед командой использования IX/IY через .DB директиву и гарантированно дизассемблер вылетит. А процу пофигу, применится только последний префикс, который будет в самой команде.

Достаточно?

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #8 : 26 Сентябрь 2009, 22:48:18 »
Цитата
PUSH IX состоит из двух байт: 0хDD как префикс, переключающий регистровую пару HL на IX и опкода 0хE5, который является командой PUSH HL. Код 0xDD отсутствует в таблице Sharp LR35902.
 

Странно,а вот в другой доке и ещё вот пример из эмуля - есть опкод  ДД.
Вот что он значит.
А вот есть у мня книжка Королёва про приставки, там тоже
нету, там у комманды set другой опкод да ещё и другой 
Цитата
case 0xDD: //SET 3,L
          HL.B.l |= 0x08;


Добавлено позже:
Да, вот ,прикольно я прочёлдо конца, спасибо тебе. А вот такой вопросик. Смотри попоробую объяснить. Допустим фазалин тогда задампил кард.
И начил его дизасмить. А откуда он знал какого размера команда? 8 или 16.
Т.е. с префиксом или нет. Может это 2 разщные команды. А может это Комманды и аргументы, или вообще ОДНА КОММАНДА. Кстати насчёт одной комманды, которая описывается двойным опкодом,т.е. 0xABCD. Проц то восмибитный, как он это всё это съедал, такую команду. Сорри за такую вычурность ^_^

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #9 : 27 Сентябрь 2009, 16:39:00 »
Да, вот ,прикольно я прочёлдо конца, спасибо тебе. А вот такой вопросик. Смотри попоробую объяснить. Допустим фазалин тогда задампил кард.
И начил его дизасмить. А откуда он знал какого размера команда? 8 или 16.
Т.е. с префиксом или нет. Может это 2 разщные команды. А может это Комманды и аргументы, или вообще ОДНА КОММАНДА. Кстати насчёт одной комманды, которая описывается двойным опкодом,т.е. 0xABCD. Проц то восмибитный, как он это всё это съедал, такую команду. Сорри за такую вычурность ^_^
А откуда я знаю? Может интуиция, может еще что. Но, к примеру, код i8080 я быстро опознаю по хексу. Достаточно просмотреть пару блоков (1 блок = 256 байт) и станет ясно, может i8080 исполнять этот код или нет.
PS i8080 (точнее КР580ВМ80А) знаю с 1989 года, "читаю" бинарники примерно через пару лет, как первый раз изучил - на 3м году посещения кружка.
« Последнее редактирование: 27 Сентябрь 2009, 19:00:40 от HardWareMan »

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #10 : 27 Сентябрь 2009, 18:16:30 »
Файзулин в Интел работает на сколько я знаю и не занимался он разработкой, но занимался емуляцией - он и эмуляторы одно и тоже - денди первые и геймбои это его

чтобы показать свой успех в эмуляции он на своем сайте написал что может за деньги заэмулировать что угодно на чем угодно
чтобы не быть голословным сделал эмуляторы гембоя и MSX для N64 и они работают, правда там инициализации нехватает - но это не в этом суть

я ему предложил кое-что заэмулировать год назад, он сказал что у него другие дела есть, на русском разговаривать отказался :-\

Оффлайн Yaranga

  • Администратор
  • Сообщений: 13537
  • Пол: Мужской
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #11 : 27 Сентябрь 2009, 19:58:18 »
sergi, Марселя с ним попробуй по-татарски попросить поговорить... А вообще, я его где-то понимаю в смысле того что по-русски к нему могут обращаться лишь халявщики, только время зря терять с убытком для себя.

Оффлайн sergi

  • Пользователь
  • Сообщений: 1650
    • ВКонтакте
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #12 : 27 Сентябрь 2009, 20:00:44 »
Ну сначала то спросил на инглише, он ответил что ему уже это не интересно

халява - ну я его не бесплатно просил, тем более он сам сказал что может

Оффлайн Yaranga

  • Администратор
  • Сообщений: 13537
  • Пол: Мужской
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #13 : 27 Сентябрь 2009, 21:07:26 »
Ну стало быть ему сейчас это будет просто сложно. Я сам вспоминаю что то, что я умел десять лет назад уже совершенно не могу вспомнить сегодня...

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #14 : 27 Сентябрь 2009, 21:53:21 »
Если кому очень интересно - Файзуллин

А вообще просьба завязывать с оффтопом

Оффлайн pristavkin

  • Пользователь
  • Сообщений: 13
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #15 : 28 Сентябрь 2009, 12:32:51 »
Цитата
дела есть, на русском разговаривать отказался
Не, со мной пообщался на русском, но отвечает очень кратко, ничего подробно не рассказывает, всё скрывает. Зазнался чел помойму.

Оффлайн romanich

  • Пользователь
  • Сообщений: 26
  • Пол: Мужской
  • пришёл
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #16 : 28 Сентябрь 2009, 13:02:29 »
Не, со мной пообщался на русском, но отвечает очень кратко, ничего подробно не рассказывает, всё скрывает. Зазнался чел помойму.

1. Общаться с Файзуллиным - себя не уважать!  :cool: Во-первых свалил в USA, во-вторых его менталитет давно сгнил - сейчас его интересует одно - бабки. Это ж додуматься надо - торговать эмулями, ктороых в инете пруд пруди ...  :lol: В-третьих - на его помощь не рассчитывайте - особенно чайникиновички.

Хорошо что меня не дёргнуло ему написать в своё время, а почитав ваши посты и sergi убедился в этом. Всё-таки глядя на человека, могу сделать сразу вывод (:

2. Если вы хотите всерьёз заняться эмуляцией - нужно посвятить этому всю жизнь большую часть своего времени. Писать эмуль с нуля глупо. А вот собрать из опенсорца - очень даже реально.

Почти все эмули писались на ОС Linux (я не рассматриваю убогие эмуляторы на Basic или Pascal), поэтому необходимы знания в cygwin, mingw, а может даже и в djgpp. Необходимы навыки сборки библиотек из сорцов (sdl, allegro,zlib,fmod и др.).

По вашим вопросам (в разных темах) видно, что вы воспринимаете сборку эмуля как должно само себе получающееся, но спешу огорчить, что это не так!

Это в теории мы можем портировать или собрать эмуль без проблем, на самом деле так не бывает! Сборка эмулей - это искусство!  :wow: Тут надо очень сильно напрягать поиск интернета, обходить проблемы несоответствия версий компилятора, библиотек, ликвидировать линковочные крэши, подправлять синтаксис, корруптить библиотеки, переписывать-менять, вставлять заглушки... отключать временно некоторые модули. Правильный выбор компилятора тоже играет немаловажную роль (курить доки как собирать конкретный эмуль)

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
Re: Пара вопросиков о z80 и gameboy
« Ответ #17 : 28 Сентябрь 2009, 16:28:53 »
Поскольку тема упорно уходит от основного вопроса куда-то в сторону, то считаю её исчерпанной и закрываю.