Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Прошивка DREAMCAST
Автор Сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #21
RE: Прошивка DREAMCAST
Мне вот интересно, если Дримкастовский .exe-шник скремблируется (данные и команды перемешиваются в псевдо-случайном порядке), как потом Sh4 знает в каком порядке эти команды нужно потом опять выполнять?
07.09.2012 10:27
Найти все сообщения Цитировать это сообщение
ValeraK Не на форуме
Пользователь
**

Сообщений: 96
Зарегистрирован: 20.04.2012
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщ.
Сообщение: #22
RE: Прошивка DREAMCAST
(07.09.2012 10:27)Rio писал(а):  Мне вот интересно, если Дримкастовский .exe-шник скремблируется (данные и команды перемешиваются в псевдо-случайном порядке), как потом Sh4 знает в каком порядке эти команды нужно потом опять выполнять?


Исполняемый bin файл во время загрузки дескремблируется биосом и записывается в память в нормальном порядке, а уже затем исполняется.

Кстати у SH4 данные и команды не разделяются, а сосуществуют в одном пространстве, в частности команды вызовов/переходов адреса тянут как данные за самими кодами команды...

Скремблирование не псевдо-случайное, а фиксированными блоками просто поменянных местами, потому так быстро хакнули алгоритм.
07.09.2012 13:57
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #23
RE: Прошивка DREAMCAST
Ясно, спасибо!
А информация о секциях хранится где-нибудь? Или их нет как таковых?
07.09.2012 20:35
Найти все сообщения Цитировать это сообщение
ValeraK Не на форуме
Пользователь
**

Сообщений: 96
Зарегистрирован: 20.04.2012
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщ.
Сообщение: #24
RE: Прошивка DREAMCAST
(07.09.2012 20:35)Rio писал(а):  А информация о секциях хранится где-нибудь? Или их нет как таковых?

А зачем её хранить, считываем последовательно (по моему блоки в 32 байта, давно было забыл уже) и по фиксированному алгоритму меняем их местами всегда одно и то же, что для перемешивания то и для раскладывания, алгоритм тот же...
08.09.2012 06:05
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #25
RE: Прошивка DREAMCAST
Не я имею в виду при загрузке образа бинарника в память наверняка же файл разбивается в разные страницы памяти, например сегмент констант только для чтения, .bss тоже свои права доступа, для кода тоже не имеет смысл устанавливать права на запись ну и т.д.
08.09.2012 08:58
Найти все сообщения Цитировать это сообщение
ValeraK Не на форуме
Пользователь
**

Сообщений: 96
Зарегистрирован: 20.04.2012
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщ.
Сообщение: #26
RE: Прошивка DREAMCAST
(08.09.2012 08:58)Rio писал(а):  Не я имею в виду при загрузке образа бинарника в память наверняка же файл разбивается в разные страницы памяти, например сегмент констант только для чтения, .bss тоже свои права доступа, для кода тоже не имеет смысл устанавливать права на запись ну и т.д.

Да блин как всё запущено... Может пора сорваться с крючка некрософта, в частности у ARM была куча режимов юзвер, супервизор etc, но посмотрите к чему пришло - кортекс.
Народ давно уже понял, есть ряд задач для изоляции, но консоль тем и отличается от писюка (хорошую машину писюком не назовут), что для софта _все_ ресурсы доступны, виртуализация ни к чему, главное геймплей без тормозов.
Да я согласен с разделением архитектур классики ФонНеймана и Гарвардской, но сейчас народ объединяет лучшие стороны обеих подходов. Хотя лично мне импонирует машина Тьюринга. Hitachi SuperH очень грамотная архитектура, сочетающая/сбалансировшаяся в себе ряд подходов.
Конечно с одной стороны нехорошо иметь права на запись в область машинного кода из программы, но тем самым мы лишаем себя возможности модификации кода во время работы, а это уже снижает гибкость ПО при разработки.

IMHO общий подход прост - незачем перекладывать свои огрехи на других - разработал софт для платформы - вот и отвечай перед юзверями - ты сам полностью в ответе за всё - одна задача в один момент времени - ну уж если настолько ленив, то неси ответственность и за поставщиков моторчиков.
08.09.2012 11:04
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #27
RE: Прошивка DREAMCAST
Ну хорошо, а как быть с такой ситуацией, когда программа (по ошибке) обратится в сегмент (область данных) кода и затрет там что-то, чисто случайно? Как выловить такой exception? Такие ошибки ведь очень сложно обнаружить. К примеру, выход за границы массива, без использования C++11 контейнеров вроде array или "старого" std'шного vector (где есть операторы безопасного доступа at())?
Ведь если такое случится, увидеть (найти) в коде программы это будет очень трудно, а все что ты увидишь, это (в лучшем случае) "unknown opcode" или что-то в этом духе. в худшем ход программы может измениться так, что вообще хрен поймешь что происходит.
(Последний раз сообщение было отредактировано 09.09.2012 в 17:02, отредактировал пользователь Rio.)
09.09.2012 17:00
Найти все сообщения Цитировать это сообщение
cybdyn Не на форуме
Ветеран
*****

Сообщений: 1368
Зарегистрирован: 20.12.2011
Рейтинг: 8
Сказал спасибо: 4
Поблагодарили 98 раз(а) в 75 сообщ.
Сообщение: #28
RE: Прошивка DREAMCAST
грамотно написанная программа ничего не затрёт))) поэтому этот класс ошибок скорее на совести программера....

а так :
1 - в процах есть возможность установить эксепшн на область памяти как на доступ в неё на исполнение команд (execution) так и на при запись-чтеиние (store/load) . но я не встречал чтобы этим часто пользовались. хотя как вариант может использоваться в конструкции try-catch...

2- сырую программу никто не выкладывает - её тестируют, долго и упорно, и с опытом прогера приходит то что такое может случиться с малой вероятностью...

3- данныые в программе расположены в определённом порядке, вначале код , далее много чего, в конце динамическая область heap, какбы в ней если чё затрётся то на код не повлияет. но всё равно будет абра-катабра твориться)) кстати встречная проблема это стэк. которыы растёт с конца памяти вниз.

4- как вариант проблема локализуется при разработке в более крутой среде (IDE), котор отслеживает выход за пределы массива, переполнение стэка и т.д. но полностью автоматизировать не получиться , так как процесс динамический...

вообщем всё в руках программиста..

кстати код и данные хранящиеся в одном пространстве и у процов MIPS ,, используются в ps1, ps2, psp .... ))) народ играет, никто не жаловался пока на данную особенность )))
(Последний раз сообщение было отредактировано 10.09.2012 в 00:17, отредактировал пользователь cybdyn.)
10.09.2012 00:12
Найти все сообщения Цитировать это сообщение
ValeraK Не на форуме
Пользователь
**

Сообщений: 96
Зарегистрирован: 20.04.2012
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщ.
Сообщение: #29
RE: Прошивка DREAMCAST
(09.09.2012 17:00)Rio писал(а):  а как быть с такой ситуацией, когда программа (по ошибке) обратится в сегмент (область данных)
а все что ты увидишь, это (в лучшем случае) "unknown opcode"

Ну используй нормальный компилятор не допускающий подобных ошибок.
При обращении к памяти как к массиву выравняй его размерность кратной степени двойки, в этом случае примени к индексу обычный AND с битовой маской размерности, а уж затем добавляй смещение на адрес массива - это гарантирует, что не вылетеш за его пределы.
По поводу стека, ну не используй рекурсивных алгоритмов с вызовом самого себя, кроме того, что они нестабильны по времени исполнения, дык они-то и в состоянии переполнить стек.
Динамическое изменение машинного кода по мере исполнения пишутся на ассемблере и людьми понимающими, что они делают - так-что аварии по опкоду маловероятны.

В общем случае софт для консоли пишется с максимальной оптимизацией по времени исполнения и использованием по максимуму всего железа. Поскольку одна задача-игра монопольно использует всё ресурсы, бессмысленно тратится на всякие ловушки на эксепшены, хотя во время тестирования дебаг допустим.
Да и проще изначально продумать алгоритм без багов, чем потом бета-тестеры будут их вылавливать.
10.09.2012 08:03
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #30
RE: Прошивка DREAMCAST
Вот уж обленились все со временем, подавай им умный дебаг и т.п. чтоб все за программиста делалось само.
Это не то поколение, сравнивать с текущим совсем не стоит. Раньше по другому все делалось и было на совести программистов. Раньше нельзя было выпустить патч для игры (консольной), не доделок не выпускали практически, все тестировалось и загонялось до дыр, а главное без всех этих наворотов. А сейчас когда все делается за прогеров, они начинают лениться и отдаляться от "внутренностей" своей программы, он может в общем то и не знать что там происходит, он только в IDE кнопочки по нажимал.

[Изображение: barbers.png]
10.09.2012 08:33
Вебсайт Найти все сообщения Цитировать это сообщение
cybdyn Не на форуме
Ветеран
*****

Сообщений: 1368
Зарегистрирован: 20.12.2011
Рейтинг: 8
Сказал спасибо: 4
Поблагодарили 98 раз(а) в 75 сообщ.
Сообщение: #31
RE: Прошивка DREAMCAST
да и разница, писанёт оно в область кода и выйдет на эксепшн по исполнению, или - в область данных, всё равно результат не предсказуем , косяк гденить в другом месте вылезет. так что от архетектуры в данном случае мало зависит.
10.09.2012 13:26
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #32
RE: Прошивка DREAMCAST
Ой ну прям вообще, обленились все... Сват, а откуда такое знание, кто когда и как писал? Сам лично в игровой компании в то время работал, аки ассемблерные листинги ковырял?
Конечно можно и что-то в духе:
#define MAX_AR_SIZE 10
for(i=0; i<MAX_AR_SIZE; i++)
a[i] = ...;
написать, и то же выхода за границы не будет, но производительно ли такое программирование?
Конечно хорошо, что писался такой крутой сверх-оптимизированный код, без ошибок, прямо в ассемблере в дебаге многократно прогнанный и т.п., но наверное все-таки время диктует изменения?
Быстрее пишется код, быстрее деньги зарабатываются. И с этим уже ничего не поделаешь. Пускай даже и в ущерб стилю.
10.09.2012 20:43
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #33
RE: Прошивка DREAMCAST
Я ковырял SDK и примеры того времени, я думаю этого достаточно, чтобы иметь хотя бы небольшое представление о том, как и что делалось.
В общем то и сейчас программирование под дрим, далеко не ушло от этого.
На счет скорости разработки я лично как то сомневаюсь, достойные игры делать быстрей не стали, а вот качество пострадало.
Никто не говорит про сверх оптимизированный код, ошибки есть всегда и везде, не нужно утрировать. Но вот ради интереса вспомни в скольких играх на предыдущих платформах ты видел баги и сколько их сейчас в играх, которые только вышли (без учета патчей, которые потом это исправляют и то не всегда).

[Изображение: barbers.png]
11.09.2012 07:03
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #34
RE: Прошивка DREAMCAST
Ну я тоже ковырял и могу сказать что выглядит это все просто как низкоуровневое программирование на Си, и ничего такого крутого там нет абсолютно. Большинство библиотек катаны, по-сути, предоставляют стандартный сишный API, и ничего там сверхъестественного нет абсолютно. Я понимаю там бы были паттерны, обобщенное программирование, какие-то крутые оптимизации, но ничего такого я там, к сожалению, не увидел.
Насчет современных игр не знаю, т.к. в них практически не играю.
11.09.2012 08:57
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #35
RE: Прошивка DREAMCAST
Так об этом и речь! Что раньше не было ничего!

[Изображение: barbers.png]
11.09.2012 14:32
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #36
RE: Прошивка DREAMCAST
Кстати не в курсах есть ли возможность дебага с одновременной поддержкой графического вывода?
16.09.2012 14:01
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #37
RE: Прошивка DREAMCAST
В смысле?

[Изображение: barbers.png]
16.09.2012 19:18
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #38
RE: Прошивка DREAMCAST
Запустить свою прогу в консоли\эмуляторе, поиграть , и когда произойдет достижение какого-либо условия (к примеру, число хитпоинтов снизят с 200 до 100), выйти на точку останова в отладчике.
17.09.2012 19:25
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #39
RE: Прошивка DREAMCAST
Ну если только UBC заюзать, он в общем то как раз для этого и существует. Я с помощью него проверяю не решила ли игра затереть мой загрузчик Smile

[Изображение: barbers.png]
19.09.2012 14:36
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 365
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #40
RE: Прошивка DREAMCAST
Хех, круто, почитал, удобная шняжка этот UBC, я даже и не знал что в Sh4 есть он =)
Ну и как, не затирает?)
19.09.2012 14:43
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  how can I get the value of I/O in the Dreamcast? kof888 8 22363 18.12.2020 18:04
Посл. сообщение: kof888
Лампочка Портирование на dreamcast slavikmalo 50 142296 25.08.2014 15:44
Посл. сообщение: SuperClaw
  Dreamcast FLASH ROM sc_maxim 11 34287 05.09.2013 13:36
Посл. сообщение: sc_maxim
  Программирование на dreamcast WinCE SDK alex 18 64962 31.10.2011 20:39
Посл. сообщение: Rivelrite
  Quake 2 Dreamcast Василий 20 60143 12.07.2010 18:26
Посл. сообщение: SWAT
Видео видео dreamcast dreamfan 7 25408 01.07.2010 11:35
Посл. сообщение: dreamfan

Переход:


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