PDA

Просмотр полной версии : Новая версия Unreal Speccy



Страницы : [1] 2 3 4 5 6 7 8

SMT
29.05.2005, 22:59
доступна по адресу
http://sourceforge.net/projects/unrealspeccy

быстрее качаем, пока не пришёл PP и не забрал все хиты у моего счётчика :)

Almaz
29.05.2005, 23:30
наконецто появился постоянный (надеюсь) адрес у этого эмулятора...

SMT
30.05.2005, 06:58
а чего-то счётчик скачиваний 0 показывает. неужели никто за ночь сюда не зашёл...

CityAceE
30.05.2005, 07:10
быстрее качаем, пока не пришёл PP и не забрал все хиты у моего счётчика
Был бы не плохо, если бы здесь можно было созерцать список изменений по сравнению с предыдущими версиями.

CityAceE
30.05.2005, 07:15
а чего-то счётчик скачиваний 0 показывает. неужели никто за ночь сюда не зашёл...
Счётчик по всей видимости просто глючит, ибо как минимум я скачал эмулятор.

Dut_Norshi
30.05.2005, 07:20
И я! И я! Правда я сырцы выкачивал :-)

P.S А список изменений можно посмотреть на сайте, Release notes.

CityAceE
30.05.2005, 08:02
А список изменений можно посмотреть на сайте, Release notes
Я в курсе, просто было бы удобнее прямо здесь прочитать о том, что вышла новая версия и сразу же прочесть, что в ней нового, да ещё и на родном языке :)

Almaz
30.05.2005, 09:32
как сделать чтобы он установки при выходе сохранял и потом восстанавливал их?

Wlodek
30.05.2005, 13:03
Поставил ради интереса на машину, которая используется в качестве этакой разухабистой рабочей станции, на которой я произвожу тестирование всего нового софта прежде, чем ставить в класс (машина-программопомойка, одним словом). Всё Ok! Пошёл ставить в класс (на пару машин; мало ли, вдруг в будущем году какого-нибудь спектрумиста в школу занесёт). Засада: нет msvcr71.dll !!! Недолго думая, взял её с первоупомянутой машины. Ok! Интересно, что я такое ставил, что на своей рабочей станции эта dll нашлась? Правильнее задаться вопросом: что ставил такое, чего не ставил в класс? Ну, кучу медиаплееров (штук шесть), Camedia Master для фотоаппарата, всякие мелочи типа WinPatrol и т.п. средства контроля безопасности/производительности... ХЗ. В Инете эту шнягу одни игроманы ищут. Ни одна игра не пересекала порога серверной. Отпадает. Ну да ладно. Первая же проверенная ссылка, где можно взять шнягу:
http://www.diablozone.net/download/files/msvcr71.zip

Вопрос на другую тему по сабжу: а как переназначить Symbol Shift на левый Alt ? И Extended Mode - на Tab ?

Almaz
30.05.2005, 19:25
так как выйти в этот самый GRM Service ROM? все перепробовал...

SMT
30.05.2005, 19:58
Был бы не плохо, если бы здесь можно было созерцать список изменений [...] бы удобнее прямо здесь прочитать о том, что вышла новая версия и сразу же прочесть, что в ней нового, да ещё и на родном языкевот именно, переводить, мне кажется, нет никакой необходимости. в пределах спектрумовской лексики тут все понимают. а кидать как есть news.txt я не стал, ибо тут будет странно выглядеть. хотя, если возражений против english нет, в другой раз могу скопировать

как сделать чтобы он установки при выходе сохранял и потом восстанавливал их?дописать пару сотен строк...

Инете эту шнягу одни игроманы ищут. Ни одна игра не пересекала порога сервернойдаже спектрумовская, в образах диска или ленты? не верю! :)

как переназначить Symbol Shift на левый Altчтобы что-то повесить на Alt, придётся написать AltLock=0, и желательно перепахать все кнопки управления, чтобы они случайно не задевали SS. Alt изначально задумывался как системная кнопка, но всё перенастраивается в ini

посто поначалу немного испугался, не услышав крутой музон в игровом меню ВОльфен-штАйнда, с одной стороны старые игры (Vixen, Fernandez, ...) выдают мусор в SD. а если его выключить, то можно пропустить музыку или эффекты в новых программах. даже не знаю, как лучше поставить по умолчанию

Авторский проект на SF это крутоцелую неделю пытался регистриваться, еле добился, чтобы рег. данные полностью удовлетворили админов. обязательно нужно резюме к себе и к проекту. лучше бы они на вход робота поставили :) хотел закачать html-ку на http://unrealspeccy.sourceforge.net, так нельзя по ftp. есть только shell с видом на web-директорию. как я понимаю, нужно регистрировать какой-то другой сайт, заливать туда а потом переливать ftp-клиентом из shell. короче, бросил я эту затею. и ещё пока не разобрался, как заглушить трекеры багов, пожеланий и новостей. так что ничего туда не пишите, всё равно прибью, когда разберусь :)

А есть ли план добавить красивый GUI в духе blueMSX?а зачем он нужен? тулбар и меню нельзя использовать, когда мышь захвачена спектрумом. да и горячие кнопки намного удобнее (если их предварительно выучить) ;)


так как выйти в этот самый GRM Service ROM?нужно скачать ПЗУ service.rom. изначально там был GRM-сервис (ссылка на grmdb.rom есть где-то тут на форуме). мою хакерскую версию сервиса можно найти на virtual tr-dos (описание - в предыдущих релизах unreal в файле service.rus)

Almaz
31.05.2005, 10:55
сейчас в режиме ATM TURBO2+ запустил принца персии...
таких тормозов я уже давно не видел.
есть в эмуляторе возможность увеличить скорость в 2x или 4х?
Num Lock не прет - слишком быстро...

PheeL
31.05.2005, 12:23
сейчас в режиме ATM TURBO2+ запустил принца персии...
таких тормозов я уже давно не видел.
есть в эмуляторе возможность увеличить скорость в 2x или 4х?
Num Lock не прет - слишком быстро...
Миллион раз писали про увеличение значения кол-ва тактов в прерывании. Вбей туда не 71000, а допустим 200000 или 300000.

lvd
31.05.2005, 12:55
Кста, никто не напомнит, как в унреале сделан scorpion-1024 - по каким портам и битам?

Spectre
31.05.2005, 13:03
Хотелось бы Frame resampler double. :) А то маленькое окошко на 17" мониторе - приходится вглядываться, а так сам режим замечательный. Кстати, а почему в этом режиме черный цвет выглядит как серый? Интуитивно догадываюсь что так и задумано, просто интересно почему. ;)

Spectre
31.05.2005, 13:08
Кста, никто не напомнит, как в унреале сделан scorpion-1024 - по каким портам и битам?

#7FFD + 4, 6 и 7-ой биты #1FFD.

SMT
31.05.2005, 20:50
Хотелось бы Frame resampler double. :) А то маленькое окошко на 17" мониторе - приходится вглядываться, а так сам режим замечательный. Кстати, а почему в этом режиме черный цвет выглядит как серый? Интуитивно догадываюсь что так и задумано, просто интересно почему. ;)

можно поставить minres=0, чтобы шло на весь экран. но в разрешении 320x240 windows у меня не может поставить частоты выше 60hz. то есть думает, что выше, а на самом деле остаётся 60 и очень заметна рассинхронизация


Кстати, а почему в этом режиме черный цвет выглядит как серый? Интуитивно догадываюсь что так и задумано, просто интересно почему

упрощение арифметики. расчёты переводились из double в int, чтобы избавится от отрицательных чисел прибавлялась константа

kyv
08.06.2005, 08:25
У меня такой трабл:
Начитая с версии 0,27 ,не играют эффекты под GS(музыка есть,а эффектов нет).Попросил нормально работающую версию(0,29) у Ice^Di(у него всё в норме),таже фигня :confused:

SMT
08.06.2005, 18:11
спасибо за тестирование. исправлю с след. версии. пока можно слушать в режиме GSType=Z80

PheeL
08.06.2005, 18:57
Кстати, идея с frame compensation получила развитие - см. WinUAE 1.0 Там тоже дельты меж. кадровые просчитываются. А лучший фильтр для картинки всё-таки в BlueMSX (Noise Composite Blurry).

lvd
08.06.2005, 22:38
Кстати, идея с frame compensation получила развитие - см. WinUAE 1.0 Там тоже дельты меж. кадровые просчитываются. А лучший фильтр для картинки всё-таки в BlueMSX (Noise Composite Blurry).

Ну ещёб - как только не из##нёшся, когда 50гц-15кгц в принципе на убогом железе нельзя сделать, да ещё и плюс звук хрен засинхришь с кадровой... Убогое железо, чего ж поделать =)

SMT
18.06.2005, 02:40
dhau: а нету 6x0... :(

Alex/AT
18.06.2005, 10:26
2SMT: багрепорт... может уже не ново, но все же.

Приложенный снапшот работает в режиме FIR+3Color, пока не включаем режим бордюра FULL. Если включить оный, то снапшот вешается и грохает эмулятор (!) - можно попробовать после зависа резетнуть по F12, получаем интересную картинку ;).

P.S. И еще FEATURE REQUEST... нельзя ли к FIR добавить возможность регулирования яркости получаемой картинки (3колор виден слабовато...).

SMT
18.06.2005, 14:14
да, глюк такой старый, что я и забыл про него. буду исправлять

а насчёт яркости (хотя тут не хватает контрастности), могу посоветовать ручки на мониторе :)

Alex/AT
18.06.2005, 14:59
могу посоветовать ручки на мониторе
Если вывернуть - на винду становится жутко смотреть после ;) А каждый раз крутить задалбывает...

SMT
18.06.2005, 17:58
да этот режим скорее задумывался как proof of concept, и чтобы сравнить с идеей кладова о немерцающем сложении (этот режим называется у меня simple average). особенно развивать (оконный режим и 8/16 бит) я его не собирался

Alex/AT
18.06.2005, 18:29
да этот режим скорее задумывался как proof of concept
Если речь про FIR, то из этого режима можно взять 1 хорошую вещь - tricolor noflic, и ее развить ;)

SMT
18.06.2005, 20:32
так кокретно 3color делается намого проще - смешением трёх предыдущих экранов в одинаковой пропорции, ничего интересного

Alex/AT
19.06.2005, 09:25
Так вот его бы и надо ;)
Конечно, можно самому дописать, но разбираться в коде буду дольше...

deathsoft
01.07.2005, 21:29
Обнаружил глюк в Unreal'е, в режиме scorpion после входа в теневой монитор из главного меню (спектрума) при выборе пункта "Continue Program" скорп выходит в режим 48к(сбрасывается), а на реальном компьютере должен происходить возврат в главное меню (проверял на своем железном скорпе).

Еще один глюк с SMUC, пишет версию 5.5, а должен писать 1.2 или 1.3 (в RealSpectrum пишет правильно), это видимо из за того, что регистры SMUC не документированы и происходит чтение из несуществующего порта.

Еще один глюк: при использовании profrom 4.01 при полной перезагрузке наблюдаются глюки с бордюром (мигание) и посторонние звуки из динамика (такие глюки были в первых ленинградах из за неполной дешифрации портов).

SMT
02.07.2005, 02:10
>>скорп выходит в режим 48к(сбрасывается)<<

magic попадает на пзу. на железном скорпе этот момент блокируется

>>SMUC, пишет версию 5.5, а должен писать<<

скорее всего, разная версия пзу. а если взять одинаковые образы?

>>резагрузке наблюдаются глюки с бордюром (мигание) и посторонние звуки из динамика<<

нужно включить контроллер HDD (его чётные порты попадают на #FE)

jtn
02.07.2005, 12:44
нужно включить контроллер HDD (его чётные порты попадают на #FE)
даешь програмную эмуляцию IORQGE!!

SMT
02.07.2005, 12:51
даешь програмную эмуляцию IORQGEэто как? кнопочкой, что-ли ;) если HDD-контроллер отключен, значит, он вынут. значит, некому генерить GE. (хотя на реальном скорпионе FE выбирается не одним битом, поэтому там такого безобразия нет ;)

deathsoft
02.07.2005, 15:26
>>SMUC, пишет версию 5.5, а должен писать<<

скорее всего, разная версия пзу. а если взять одинаковые образы?

Прошивка, естественно, одинаковая profrom 4.01 (512kb)

deathsoft
02.07.2005, 15:31
>>резагрузке наблюдаются глюки с бордюром (мигание) и посторонние звуки из динамика<<

нужно включить контроллер HDD (его чётные порты попадают на #FE)
Да, забыл включить SMUC в конфигурации IDE, но после включения глюки с бордюром не прошли (окрашивается в черный и розовый цвет), посторонний звук из динамика пропал.

deathsoft
02.07.2005, 15:33
хотя на реальном скорпионе FE выбирается не одним битом, поэтому там такого безобразия нет
А почему в эмуляторе это нельзя сделать? Чтобы когда выбираешь в конфигурации скорпион, дешифрация портов была полной, а не частичной (как на реальном скорпе).

deathsoft
02.07.2005, 15:44
>>скорп выходит в режим 48к(сбрасывается)<<

magic попадает на пзу. на железном скорпе этот момент блокируется
А почему в эмуляторе это не сделать?

SMT
02.07.2005, 18:27
нельзя сделать? Чтобы когда выбираешь в конфигурации скорпион, дешифрация портов была полной, а не частичной
так это надо все схемы клонов искать, чтобы посмотреть, какими битами выбирается каждый порт во всех моделях

с другой стороны, в RealSpectrum i/o строго зависит от модели: если scorp, то только SMUC, если pent, то свои порты. а у меня конструктор: можно к скорпу HDD контроллер ATM подвесить, к Profi пентагоновскй порт #EFF7, к пентагону тайминги от скорпа и т.п. если делать строго, возможностей будет меньше и с приоритетами каждого устройства в каждой модели возиться неохота

а ещё многие клоны доработаны так, что дешифрация портов переделана, чтобы шли программы. в ATM есть доработки #7FFD для доступа через out(#FD),a. если их не учитывать (эмулировать только "плату с завода"), много чего не пойдёт. сейчас дешифрация сделана так, чтобы пошло максимальное количество разного софта. эмуль задумывался не для разработки и тестирования совместимости, а для кряка и пользования


SMUC в конфигурации IDE, но после включения глюки с бордюром не прошли
может, так и должно быть в реале? вывод в какой порт вызвал окрашивание бордюра?


magic попадает на пзу. на железном скорпе этот момент блокируется
А почему в эмуляторе это не сделать?лениво целую строчку писать. тем более, блокировка magic в ПЗУ происходит не во всех моделях - опять где-то брать схемы, смотреть, в каких...

deathsoft
02.07.2005, 20:16
Ну, значит придется все это самому фиксить (благо исходники есть). Насчет порта #FD - это глючные программы, которые вместо #7FFD используют #FD (обычно этим грешат разные демки, и проги от групп типа code busters), собственно это их личные проблемы (для таких кривых прог можно сделать галочуку в меню "неполная дешифрация портов"), а по умолчанию сделать так, как для каждой модели положено. Такие глючные проги обычно работали на пентагоне, но не работали везде где была правильная дешифрация портов.

Меня в частности интересует только скорпион (т.к. в железе у меня есть только он), а все остальные модели представляют для меня скорее академический интерес (посмотреть, что где и по чему может не работать и какие железки были разработаны для спека). Схема того же скорпиона есть в виде pdf (векторная) (лежит в ветке про железо, я ее нарисовал по отсканеной схеме зеленого скорпиона, плюс люди помогли дорисовать недостающие части и исправить ошибки).

deathsoft
05.07.2005, 01:47
лениво целую строчку писать.
Ну, одной строчкой там не обойтись (при этом PC всегда будет равен 38h из за синхронной работы шага процессора и опроса клавиатуры). Я сделал флажок, который взводится если поступило NMI в момент когда его вызвать нельзя, а когда выполняется step() если адрес >= 4000h вызывается обработчик NMI и флажок сбрасывается.

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

deathsoft
05.07.2005, 01:54
кряка и пользования
Ну, так я его для кряка и использую. Есть у меня Лаптевская дисковая версия игры Shadow Of The Beast, которая на скорпе сбрасывается после подгрузки доп. уровня, так вот я взял tzx файл с оригинальной игрой с world of spectrum и хочу ее к диску нормально адаптировать. Лаптевская версия глючила как раз из за кривой работы с #FD (помню проверял на эмуле Шалаева, она под пентагоном нормально работала). Так вот для этого и нужна нормальная эмуляция железа, чтобы реал не нужно было включать для тестирования. Кстати этой игры нет даже на Virtual TR-DOS (впрочем как и игры Sacred Sword).

SMT
05.07.2005, 07:42
бордер в эмуле чернеет на совершенно непонятной команде (выполняется пустой цикл для задержки, если пройти его за один шаг, то бордер чернеетчернеет по ходу луча. если луч в середине экрана, вывод в порт бордюра видно через несколько тактов. а если в начале, то видно через несколько тысяч тактов

Conan
05.07.2005, 10:12
Есть у меня Лаптевская дисковая версия игры Shadow Of The Beast, которая на скорпе сбрасывается после подгрузки доп. уровня, так вот я взял tzx файл с оригинальной игрой с world of spectrum и хочу ее к диску нормально адаптировать. Лаптевская версия глючила как раз из за кривой работы с #FD (помню проверял на эмуле Шалаева, она под пентагоном нормально работала).
Шура Лаптев (кстати "Лаптев" это не фамилия, а псевдоним) тестировал дискованные игрушки на "Пентагоне" (у него самого был фирменный ZX Spectrum 128). Игрушку Shadow Of The Beast он привез на кассете из Польши летом 1993. Тогда же у него сгорела магнитофонная читалка в компьютере, и мы поехали ко мне, для того, что бы сбросить блоки на диск с подошью LCopy. В то время про "ZS Scorpion" еще ничего не было известно. Разумеется эмуляторов, под которыми можно было тестировать игры на разном железе, не было и в помине.

goodboy
05.07.2005, 13:12
лаптевская версия на скорпе не шла из за не очень стандартных обращений к пзу трдос

deathsoft
05.07.2005, 15:58
"ZS Scorpion"
Вообщето он производился начиная с 92года. (По крайней мере у нас в Питере)

deathsoft
05.07.2005, 16:01
"Пентагоне"
Так пентагон и позволял фокусы с обращением по #FD вместо #7FFD (это глюк пентагона, а не фича, как многие думают)

deathsoft
05.07.2005, 16:03
чернеет по ходу луча
А на реальном компе то это не так. Видеоконтроллер работает независимо от процессора, нельзя ли в эмуле сделать также (по крайней мере с бордюром). Т.е. вывел значение в порт бордюра, и он в том же такте окрасился в нужный цвет (это существенно упростило бы отладку).

deathsoft
05.07.2005, 16:13
Скомпилил анреал в отладочном режиме, пропустил его через BoundChecker, он нашел целую пачку мелких глючков:

Глюки с объекатми GDI, когда одна кисть выбирается на несколько DC, удаление DC в котором выбрана кисть или шрифт.

Обращение к непроинициализированному массиву (pixels) массив заполняется только при некотором условии, а данные из него используются при другом условии, которое невсегда пересекается с первым.

Использование memcpy для копирования пересекающихся блоков памяти (надо использовать memmove) - в модуле чтения конфига.

Адресная арифметика с указателями на разные массивы.

конструкции типа
for(int x=0;....) some code;
x=10;
....
в компиляторах которые не поддерживают for scope (старый стандарт c++ до 98 года) все компилится, а в новых нет, т.к. второй x не объявлен, а первый является локальной переменной цикла.

универсальнее писать так:
int x;
for(x=0;....) some code;
x=10;
....

это компилится любой версией компилятора (необязательно msvc, я например исполюзую icl)

в своей версии я изменения касающиеся циклов сделал, глюки с GDI пока не фиксил

SMT
05.07.2005, 19:04
чернеет по ходу лучаА на реальном компе то это не так. Видеоконтроллер работает независимо от процессора, нельзя ли в эмуле сделать также (по крайней мере с бордюром). Т.е. вывел значение в порт бордюра, и он в том же такте окрасился в нужный цвет (это существенно упростило бы отладку)

как же независимо, если от одного генератора? если процессор стоит, то и луч не двигается. это позволяет отлаживать разные полоски на бордюре и мультиколоры. а иначе мультиколор рассыпется во время отладки


Глюки с объекатми GDI, когда одна кисть выбирается на несколько DC, удаление DC в котором выбрана кисть или шрифтнет такого, boundchecker гонит


Обращение к непроинициализированному массиву (pixels) массив заполняется только при некотором условии, а данные из него используются при другом условии, которое невсегда пересекается с первымэто ерунда. например, noflic делает сумму текущего кадра и предыдущего, на первом кадре предыдущий не определён. неужели из-за одного кадра добавлять проверку, которая подавляет смешивание на нём?


Использование memcpy для копирования пересекающихся блоков памяти (надо использовать memmove) - в модуле чтения конфигатам только копирование назад. memmove тут менее эффективен


Адресная арифметика с указателями на разные массивыну и? у icl с этим проблемы? ;)

deathsoft
05.07.2005, 19:44
как же независимо, если от одного генератора? если процессор стоит, то и луч не двигается. это позволяет отлаживать разные полоски на бордюре и мультиколоры. а иначе мультиколор рассыпется во время отладки
При остановке проца (на реале) генератор то не останавливается, и тем более на реале проц никогда не останавливается, а выполняет код отладчика, а пошаговая отладка эмулируется постановкой точек останова (аппаратных средств отладки в спектрумовском Z80 нет). Видеоконтроллер (на сколько мне известно) выбирает данные из памяти сам (при этом процессор вэйтится, (возможно не во всех схемах)). К томуже, видеопамять никак не влияет на бордюр. Бордюр вообще рисуется отдельно и для этого на схеме есть отдельный сигнал.

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

SMT
05.07.2005, 21:38
deathsoft: OK, сделай ;)

Conan
05.07.2005, 22:27
Вообщето он [ZS Scorpion] производился начиная с 92года. (По крайней мере у нас в Питере)
В 92-м и даже 93-м ;) информация распространялась не так быстро как сейчас. Начало производства «ZS Scorpion» вовсе не означало то, что о нем все сразу узнавали. Как правило, известность приходила с началом массовых продаж на рынках или в магазинах. На рынках в Тушино (1992-93), Митино (1993) и Царицио активных продаж указанного клона не было.


Так пентагон и позволял фокусы с обращением по #FD вместо #7FFD (это глюк пентагона, а не фича, как многие думают)Виталий, я не сужу, плохи фокусы с #FDили хороши (хотя адресовать нужно именно #7FFD– IMHO). Лаптев проверял свои программы не только на фирменной машине, но и на «Пентагоне». Был бы тогда массовым «ZSScorpion», думаю, проверял бы и на нем, потому как с пользователями он общался лично на радиорынке, почти каждые выходные. Кстати, большинство хакеров того времени вообще не тестировало свои программы на компьютерах отличных от своего собственного.

deathsoft
06.07.2005, 00:20
Почему в эмуляторе при нажатии сброс (F12) происходит окрашивание бордюра в черный цвет (сброс всех разрядов порта FE)? Смотрел схемы реальных машин (Scorpion, Ленинград, Композит), там вывод сброса TM9 отвечающего за порт FE напаян на +5В, а значит бордюр красится в черный (или произвольный, в зависимости от состояния регистра) цвет только при включении питания компьютера. При перезагрузке по Reset должен сохраняться предыдущий цвет бордюра (до первой записи в порт FE).

deathsoft
06.07.2005, 00:29
Виталий, я не сужу, плохи фокусы с #FDили хороши (хотя адресовать нужно именно #7FFD– IMHO). Лаптев проверял свои программы не только на фирменной машине, но и на «Пентагоне»
Не берусь судить, поскольку уже прошло много лет, но я помню, что версии программ адаптированых Лаптевым, а также нашим Питерским товарищем Васильевым Антоном работали криво (в играх не хватало уровней, программы сбрасывались после загрузки) и мы с братом постоянно переделывали такие программы (у меня они до сих пор валяются на дискетах). Обычно глючили программы содержащие в загрузчиках всякие "извраты", после переделки под стандартные процедуры загрузки через #3d13 никаких проблем небыло (тестировали на разных компьютерах). А Васильев Антон обычно еще в программах вставлял бегущую строку "Vasiliev Anton is The BEST" и поливал грязью всех остальных (включая Лаптева, Скоробогатова и прочих), хотя сам мало от них чем отличался. Мы никогда не распространяли версии собственной адаптации, только делились с друзьями и знакомыми. Вся адаптация была исключительно бесплатной. Поэтому и делали качественно, и игры проверяли полным прохождением, т.к. никакой комерческой выгоды не приследовали.

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

deathsoft
06.07.2005, 00:56
Выяснил почему при подключенном SMUC бордюр окрашивается при перезагрузке в розовый цвет:
в недрах ПЗУ есть вывод в порт #7BFE (видимо порт SMUC), который к бордюру не имеет никакого отношения, а результат попадает и в порт #FE.
В своей версии однозначно буду исправлять, чтобы в #FE мусор не писался (сделаю приоритет портов, если #7BFE, значит это не #FE, а то могут найтись проги, которые к порту FE еще через какой нибудь адрес обращаются).

deathsoft
09.07.2005, 22:13
В дебагере анреала неверно дизассемблируется команда JR nn, значение nn показывается на 1 больше чем надо. Например код команды #18 #00 должен делать переход на следующую команду, а печатается адрес на 1 больший. Выполнение команды происходит правильно (глюк только в дизассемблере).

SMT
09.07.2005, 22:27
а у меня правильно дизасмится

deathsoft
10.07.2005, 13:54
а у меня правильно дизасмится
Как оказалось глюк возникает только при компиляции интеловским компилятором.

Глюк возникает на строке
disasm_address(ln, current+cm-st + *(signed char*)cm++ + 1, labels);
из за использования cm++
(вообще таких выражений следует избегать, чтобы глюков не было, но это дело вкуса)

При изменении на
disasm_address(ln, current+cm-st + *(signed char*)cm + 1, labels); cm++;
все работает как надо

Собственно несколько строками ниже сделана аналогичная конструкция с cm+=2

deathsoft
10.07.2005, 14:11
Еще при компиляции интеловским компилятором выводится куча предупреждений типа:
dxr_atm0.cpp(3): warning #880: omission of explicit type is nonstandard ("int" assumed)
const ega1_ofs = 0;
^^^^^^^^^^^^^^
Нужно явно тип указывать int или unsigned

vars.cpp(97): warning #68: integer conversion resulted in a change of sign
unsigned dbg_stophere = -1, dbg_stopsp = -1;
А тут, если уж хочется присвоить -1 вместо UINT_MAX, то нужно явно тип приводить unsigned dbg_stophere = (unsifned)-1;

gsz80.cpp(110): warning #1461: null (zero) character in input line ignored
case 0x05: gsstat &= 0xFE; return;
^
Откуда взялся символ с кодом 0 внутри файа вообще непонятно

tape.cpp(174): warning #167: argument of type "const char *" is incompatible with parameter of type "void *"
named_cell("CSW tape image");
^
Тут нужен параметр const void*, а не void*

dxrend.cpp(234): (col. 7)warning #997: function uses MMX(TM) instructions, but contains no EMMS instruction
В конце функции нет EMMS, если после этого будут вызваны функции работающие с плавающей точкой, то будут глюки

dbgoth.cpp(95): warning #268: the format string ends before this argument
sprintf(ln, "?????", i);
^
Забыт символ печати параметра

В форуме глюки с форматированием, т.ч. стрелочки могут указывать не туда куда нужно (удаляются ведущие пробелы)

deathsoft
10.07.2005, 14:14
Кстати, к анреалу можно сделать поддержку реальных дисководов, я разобрался с программированием драйвера, который используется в реалспектруме.

SMT
10.07.2005, 15:15
deathsoft:


case 0x05: gsstat &= 0xFE; return;
я исправлю. сам не понял, откуда взялось


const ega1_ofs = 0;
это нормально. например func() {} имеет тип int, если нет явного указания


unsigned dbg_stophere = -1это задекларировано стандартом си++, как ведёт себя арифметика при переполнении


dxrend.cpp(234): (col. 7)warning #997: function uses MMX(TM) instructions, but contains no EMMS instruction

функция, рисующая одну строку, не выходит из режима MMX, а когда нарисованы все строки экрана, в главной функции отрисовки один EMMS на все вызовы.


sprintf(ln, "?????", i);опечатка, которая, впрочем, ни на что не влияет. а компилятор слишком много на себя берёт. откуда он знает, что sprintf - стандартная функция. может, я подключил свою библиотеку и у моей sprintf другая семантика


Кстати, к анреалу можно сделать поддержку реальных дисководов, я разобрался с программированием драйвера, который используется в реалспектруме
я скачал SDK, собираюсь заняться, как время будет. пока не смотрел. можно сделать две независимых реализации. если твоя лицензия не будет закрытой, можно будет потом собрать гибрид :)

deathsoft
10.07.2005, 17:21
это нормально
Это все понятно, что и так работать будет, но хочется. чтобы варнинги лишние не писались

deathsoft
10.07.2005, 17:23
если твоя лицензия не будет закрытой
Я не Билл Гейтс, чтобы делать лицензии, если я чтото делаю или исправляю, то делюсь со всеми, если мои переделки кому нибудь интересны

deathsoft
10.07.2005, 17:26
откуда он знает, что sprintf - стандартная функция. может, я подключил свою библиотеку и у моей sprintf другая семантика
Вообщето он видит, что подключен файл string.h или stdio.h и функция ничем не перегружена. Т.ч. на самодельную функцию он ничего писать не будет.

SMT
10.07.2005, 17:44
а почему именно intel c++? чем он хорош?

если компилер глючит или не понимает стандарт, лучше сменить его на правильный (от билли калиткина), чем подстраиваться под глюкодром

SMT
10.07.2005, 17:55
Вообщето он видит, что подключен файл string.h или stdio.h и функция ничем не перегружена. Т.ч. на самодельную функцию он ничего писать не будет
это не даёт ему права предполагать семантику функции. а вдруг я дописал стандартную либу (CRT source, надеюсь, открыт в intel c++) так, что она понимает кроме printf("%d",i) ещё и printf("$d",i) с каким-то спец-отличием? string.h/stdio.h я не трогаю. (зы: хотя, конечно, прикольная вешь - нашла мне ошибку :) )

deathsoft
10.07.2005, 18:42
а почему именно intel c++? чем он хорош?

если компилер глючит или не понимает стандарт
Интел C++ поддерживает оптимизацию под все интеловские процессоры, включая автоматическую генераию кода с MMX,SSE,SSE2. Например функции очистки и копирования памяти используют SSE,SSE2 если проц это поддерживает.
Интеловский компилер прекрасно поддерживает стандарт, только стандартов на C++ несколько, старый стандарт и стандарт 98года.

Компилятор от билли оптимизировать вообще не умеет, хуже него может быть только борланд (который я использую только для написания гуевых прог со сложным пользовательским интерфейсом).

Из преимуществ компилятора билли можно отметить поддержку асмовых инструкций от АМД (3DNow), интеловский компилер их не поддерживает

Если взять например gcc и компильнуть unreal, то появятся еще каке нибудь предупреждения, в этом нет ничего страшного, или плохого, просто если использовать определенный стиль кодирования (не полагаться на всякие умолчания и компиляторно зависимые конструкции), то этих предупреждений не будет.

deathsoft
10.07.2005, 18:48
Глюк с профROM от скорпиона остался. Если войти в 128 TR-DOS, потом перезагрузиться F12, потом снова войти в 128 TR-DOS, то устанавливается совершеноо левый банк ПЗУ (заполненый нулями). Этот банк находится по смещению 38000h в файле profrom401.rom (512K) его сигнатура (по адресу 110h от начала банка)
0C 08 04 00-FB ED 4D 7E-F7 0B 2B 02-E6 80 23 28
F6 F1 E3 C9-00 00 00 00-00 00 00 00-00 00 00 00

проверял с profrom39f.rom (128K) такаяже проблема

неплохо, если бы в дебагере вместо SERVM писался бы номер банка profrom (например SRV n, где n от 0 до F)

P.S. Обязательно нужно чтобы в дисководе был образ диска

Пропатчил свою версию, чтобы писался номер банка, при глюке пишется SRV E (в профПЗУ 4.01) и SRV 6 (в профПЗУ 3.9f), а при обычной работе монитора SRV 2.

Кстати профПЗУ версии 3.2а (с моего реала) работает нормально, в 128 TR-DOS можно входить сколько угодно раз (только необходимо пропатчить значение в регистре DE, очем писалось в ветке про профПЗУ)

deathsoft
10.07.2005, 19:55
нашел еще один глюк с профПЗУ 3.2а. Ставим брекпоинт на адрес #47F и при чтении из порта #1FFD наблюдаем #FF, а значение из этого порта должно читаться через параллельный порт музпроцессора (см. схему Turbo+), правда пока не смотрел каков адрес этого порта в схеме (#1FFD или другой)

deathsoft
10.07.2005, 20:33
Обнаружил тут новое назначение портов скорпиона:
чтение #1FFD - выключение турбо режима
чтение #7FFD - включение турбо режима

deathsoft
10.07.2005, 20:59
похоже нашел, почему не работала моя прошивка профROM 3.2а, там идет не проверка доп. оборудования, а включение/выключение турборежима и замер количества тактов, таким образом вычисляется значение регистра DE, т.к. анреал режим турбо не поддерживает, то прошивка не работает.

SMT
10.07.2005, 22:09
deathsoft: а приаттачь сюда плиз бинарник, сделанный в intel c++, посмотрю, насколько он быстрее.

Компилятор от билли оптимизировать вообще не умеет

imho, лучший оптимизатор!

msvc тоже поддерживает стандарт 98года, только я его выключил прагмой, потому что так код получается более громоздким

deathsoft
11.07.2005, 01:22
я думаю ускорения не будет
программа скомпилирована под P4 Northwood

deathsoft
11.07.2005, 01:38
imho, лучший оптимизатор!
Советую посмотреть Intel и gcc для сравнения.

deathsoft
11.07.2005, 01:43
насколько он быстрее
Для того чтобы было бычтрее нужно чтобы прога была написана на C,C++ а не на асме (асмовые вставки компилятор оптимизировать не умеет).
Например если фильтр для кадра написан на C, то intel компилятор может автоматом использовать SSE или MMX инструкции (msvc это не умеет), выполнить оптимизацию для конвейера конкретного процессора (включая подсемейство).

Функции типа sin,cos и прочие есть в разных вариантах, для FPU и для SSE/SSE2 выбираются автоматом в зависимости от типа процессора, есть функции работаеющие с float а не с double, что увеличивает скорость в ущерб точности.

deathsoft
11.07.2005, 03:37
вот мои результаты тестирования:
msvc - 3000fps
intel - 4300fps
intel - 5100fps (с опцией /fast)
Использовался режим MAX SPEED и GS=NONE, прирост производительности составил 43% и 70% при компиляции icl, опции компиляции одинаковые.

SMT
11.07.2005, 19:50
хотел на работе поглядеть - на атлонах вообще не работает. и ладно бы цивильно предупреждал, а то просто ошибка при обращении к памяти

дома, со всеми настройками по умолчанию (оконный режим) msvc даёт 3380-3400 fps просто при нажатии numlock (ресет в tr-dos), этот даёт 3180-3200. причём при компиляции в msvc с оптимизацией под p4 и sse2, получается меньше - 3300 fps

SMT
11.07.2005, 19:56
Советую посмотреть Intel и gcc для сравнения
смотрел djgpp, вроде основан на коде gcc, оптимиатор совершенно не впечатлил

deathsoft
11.07.2005, 21:53
djgpp, вроде основан на коде gcc
Это старье основанное на gcc 2.95, а щас уже gcc 4.0

deathsoft
11.07.2005, 21:55
на атлонах вообще не работает
атлоны не держат SSE2. А вылетает с ошибкой, потому что я скомпилил чисто под П4, там можно поставить опцию, чтобы если нету нужных фич работал другой код, но это будет тормознее

deathsoft
11.07.2005, 21:58
дома, со всеми настройками по умолчанию (оконный режим) msvc даёт 3380-3400 fps просто при нажатии numlock (ресет в tr-dos), этот даёт 3180-3200. причём при компиляции в msvc с оптимизацией под p4 и sse2, получается меньше - 3300 fps

Я же написал методику тестирования: отключить GS и включить в конфиге максимальную скорость (тестировал с ПЗУ от скорпиона ПРОФ 4.01 на заставке, где меню)

deathsoft
11.07.2005, 21:59
Тот вариант, который я выложил не самый быстрый, самый быстрый - компильнутый с ключом /fast
Возможно у тебя целерон, а я под нортвуд компилировал

SMT
11.07.2005, 22:43
да, пока celeron-320. а что значит "методика без GS"? то есть ты выбрал конфигурацию, где он сильно опережает msvc? ведь в конфигурации по умолчанию msvc быстрее. в-общем, слишком много заморочек с icc. ведь если выкладывать откомпилированный код под определённую систему, и не угадаешь процессор пользователя, будет сильный тормоз

deathsoft
11.07.2005, 23:36
ведь если выкладывать откомпилированный код под определённую систему, и не угадаешь процессор пользователя, будет сильный тормоз
Да, поэтому с такими заточками производительности я компилирую только для себя.
Realspectrum кстати был раньше компильнут в 3х или 4х вариантах интеловским компилятором под разные процы. У тебя показатели отличаются от моих из за того что кэш L2 меньше, у меня нортвуд 3.2ГГц с HT Там кэш 512К, а у тебя наверное 256к, а компилер соптимизировал код под 512К.

Для анализа производительности у интела есть тулза VTune perfomance analizer, которая показывает где тормоза, из за чего и дает советы как их устранить.

У АМД кстати есть свой компилятор, для своих процов, но я его никогда не использовал, т.к. у меня был К6, но очень давно, а потом были процы только Intel.

deathsoft
11.07.2005, 23:39
а что значит "методика без GS"?
Это значит, что при GS=Z80 разницы практически никакой, т.к. все время вызывается функция flush..., которая все тормозит, а когда GS выключен, то измеряем работу обычного Z80 и никто нам не мешает (функция flush... вызывается на порядок чаще чем все остальные, смотрел разными профайлерами, поэтому и выключил GS)

deathsoft
11.07.2005, 23:53
Кстати у интеловского компилятора можно поставить опцию automatic cpu dispatch, при которой он сгенерит участки кода оптимальные для каждого из заданых процессоров, а при запуске выберет те фенкции, которые нужны, будет несколько медленнее, чем с заточкой под конкретный проц, но быстрее чем msvc

elf/2
12.07.2005, 11:18
У АМД кстати есть свой компилятор, для своих процов, но я его никогда не использовал, т.к. у меня был К6, но очень давно, а потом были процы только Intel.
AMD его тоже не использует :) Вот например результаты одного из SPEC'ов:
http://www.spec.org/cpu2000/results/res2004q4/cpu2000-20040920-03391.html

смотрим на используемые компиляторы ;)

Em(022000)
12.07.2005, 15:42
дайте ссылку на последний Unreal эмулятор! Чёто не работает та ссылка

SMT
12.07.2005, 16:03
дайте ссылку на последний Unreal эмулятор! Чёто не работает та ссылка
http://sourceforge.net/projects/unrealspeccy

Shiru
12.07.2005, 16:08
http://trd.speccy.cz/emulz/US029B.ZIP

Em(022000)
12.07.2005, 16:12
ок

Lounge Lizard
12.07.2005, 21:41
Оч. большая просьба к SMT - отключить проверку на версию ОС. Думаю хуже никому не будет. Просто хотел попробовать US под Wine запустить, а US даже попробовать не даёт, сразу пишет что версия ОС ему не нравится, хотя Wine вроде все версии подменяет как надо...

Paul Pavlov
17.07.2005, 01:18
Ну, так я его для кряка и использую. Есть у меня Лаптевская дисковая версия игры Shadow Of The Beast, которая на скорпе сбрасывается после подгрузки доп. уровня, так вот я взял tzx файл с оригинальной игрой с world of spectrum и хочу ее к диску нормально адаптировать. Кстати этой игры нет даже на Virtual TR-DOS (впрочем как и игры Sacred Sword).
Искать надо лучше - Shadow of the Beast называется у меня Beast (а откуда ты узнал, что эта игрушка называется именно так?? ;) Лаптевская версия тоже лежит у меня. Sacred Sword ищи под именем Espada Sagrada,la аж 4 версии. :p

deathsoft
17.07.2005, 23:31
а откуда ты узнал, что эта игрушка называется именно так??
Ну, хотябы с world of spectrum, а вообще она у меня так на кассете и на диске называлась и на приставках и на амиге она также называется.

deathsoft
17.07.2005, 23:36
Искать надо лучше
Ну, откуда же я мог знать, что название игры урезано с Shadow of The Beast до просто Beast и что Sacred Sword называется по испански (хотя у меня на касете и диске назывался по английски, сама игра была на испанском)?

Shadow Maker
18.07.2005, 01:40
а откуда ты узнал, что эта игрушка называется именно так??
Ее вообще в каком-то из последних спектрофонов ажно экспертизили, с картами и подробной инфой, так что игрушка явно называется Shadow of the Beast. Там же и нормальная дисковая версия также затесалась...

[bETA]mEN
18.07.2005, 09:41
откуда ты узнал, что эта игрушка называется именно так??

Shadow of the Beast (http://www.worldofspectrum.org/infoseek.cgi?regexp=^Shadow+of+the+Beast$&pub=^Gremlin+Graphics+Software+Ltd$&model=spectrum)

goodboy
18.07.2005, 12:13
выложил полную версию - смотрите в играх

SMT
18.07.2005, 19:57
Оч. большая просьба к SMT - отключить проверку на версию ОС. Думаю хуже никому не будет. Просто хотел попробовать US под Wine запустить, а US даже попробовать не даёт, сразу пишет что версия ОС ему не нравится, хотя Wine вроде все версии подменяет как надо...
бесполезно, даже если вывод идёт через windows GDI+waveOut, всё равно инициализируются все интерфейсы directX, на всякий случай. поэтому в WINE ничего не выйдет

Goga
20.07.2005, 02:54
Ребята! закачал эмуль unreal поставил АТМ2, но с винтом непонятки.....
под СПМ не хочет ничего писать в эмуль НДД . Ставил в настройках файла-HDD- стандартные для атмки (150*5*17 кажется). Форматится иногда, а иногда неможет писать ни в какую.........
Поделитесь INI файликом и если не жалко образом *.hdd
Мучаю уже неделю.........готов сам ось писать :eek: :eek: :eek:
мыло- [email protected] но он в профиле должен быть..........
Лучше здесь выложить.........я(и другие) заберём :)))))))

И еще- прога хочет sos.l - что за зверь? Я забубенил пустой файл с таким названием- могет изза него энтот глюк?

SMT
20.07.2005, 07:15
стандарнтый ATM-овский fdisk содержит глюк, который несовместим с us0.29

SMT
20.07.2005, 07:43
если писать свою ось, всё будет хорошо. а в ATM CP/M сначала нужно диск разметить (пофиксеным fdisk, старой версией эмуля или взять образ с живой ATM-ки), потом форматировать. после чего запись работает без вопросов

p.s. sos.l - лежит в usromz на virtual tr-dos

Paul Pavlov
20.07.2005, 17:17
mEN']Shadow of the Beast (http://www.worldofspectrum.org/infoseek.cgi?regexp=^Shadow+of+the+Beast$&pub=^Gremlin+Graphics+Software+Ltd$&model=spectrum)
И всё же объясните мне, непонятливому. На заставке 'Beast', в игре сверху 'Beast', а где SHADOW OF?????????????

DizZy
21.07.2005, 00:13
А у меня в 0.29b странная хня образовалась (до этого всё было пучком) - если мышу утащить вниз получаем:
UnrealSpeccy 0.29b by SMT
*** source code available at http://sourceforge.net/projects/unrealspeccy/ ***
ini: c:\emulz\unreal\unreal.ini
hd0: ST3250823A 5ND03XLE 232 Gb
hd1: ST52520A PD484494 2445 Mb
gfx: 29Mb VRAM available
cpu: AMD Athlon(tm) processor 7.4.2 [MMX] at 1307 MHz
IDirectInputDevice::Acquire(): unknown error (80070005)

Влево\вправо\вверх всё норм.

ps:
OS Version: 5.1.2600 Service Pack 2, v.2149 Build 2600
DirectX Version: DirectX 9.0c (4.09.0000.0904)

pps: видеорежим в винде стоит 960x720x32bit. Не уж-то из-за этого?

Goga
21.07.2005, 06:00
пофиксеным fdisk, старой версией эмуля
p.s. sos.l - лежит в usromz на virtual tr-dos

*********
Спасибо.....1-какая версия катит?
2-"лежит в usromz на virtual tr-dos" -это где?
3- гдето слышал что вроде бы виртуальный диск Е - обращается к НДД ? где про это почитать?
*********
облазил кучу сайтов, накачал всякого :))) неделю разбираться
Если не в лом ткните носом -------->>

ice'di^triumph
21.07.2005, 08:51
usromz здесь http://trd.speccy.cz/emulz/USROMZ.ZIP

SMT
21.07.2005, 19:52
А у меня в 0.29b странная хня образовалась (до этого всё было пучком) - если мышу утащить вниз получаем

этот код ошибки означает "Another application has a higher priority level, preventing this call from succeeding". возможно, внизу окно другого приложения, которое захватывает мышь при наведении на него курсора. напиши, зависит ли появление ошибки от режима (полноэкранный/оконный)

SMT
21.07.2005, 19:53
пофиксеным fdisk, старой версией эмуля Спасибо.....1-какая версия катит?0.28



3- гдето слышал что вроде бы виртуальный диск Е - обращается к НДД ? где про это почитать?я не знаю... речь о виртуальном диске в TR-DOS или CP/M?

Goga
22.07.2005, 04:20
0.28
я не знаю... речь о виртуальном диске в TR-DOS или CP/M?

Да без разницы, вообще- то в тырдосе/
Кстати в узроме нет ничего про sos.L ---------не sos.rom!!!!!!!
Что за зверь и какой формат этой приблуды?
И еще- где взять пропатченный фдиск-спм?


Может поменять трдос?
Вообще в АТМ насколько я помню- системный ром проверял целостность пзу по срс
поэтому править трдос нужно с заменой срс в сос.ром наверное?

Кстати ктото там задавал вопрос про замену железа переход на новый ндд
Наверное можно через эмуль ндд-сделать образ винта и обратно на новый винт скинуть?
-------------------

SMT
22.07.2005, 07:57
Кстати в узроме нет ничего про sos.L ---------не sos.romэто как, PP его убрал из архива? тогда пошарься на форуме в разделе "эмуляторы" - этот файл тут уже выкладывали, и, наверное, не раз.


Что за зверь и какой формат этой приблуды
если ты посмотришь содердимое, поймёшь. а нет - значит он тебе не нужен.


И еще- где взять пропатченный фдиск-спм?
сделать ручками. вообще пускай атм-щики занимаются. глюк я могу описать, если им надо


Может поменять трдос?
чтобы диск E появился? обязательно, иначе никак.


Вообще в АТМ насколько я помню- системный ром проверял целостность пзу по срс поэтому править трдос нужно с заменой срс в сос.ром наверное?
с винта читают разработки-самоделки TR-DOS, не думаю, что там будет защита


Кстати ктото там задавал вопрос про замену железа переход на новый ндд Наверное можно через эмуль ндд-сделать образ винта и обратно на новый винт скинуть?

внутри эмулятора нельзя. под ДОС - norton disk editor, под винду - самодельная простенькая программа, потому что любой раздел или даже весь диск можно прочитать как один большой файл. по линукс (sic) - тоже самое

Goga
22.07.2005, 14:11
А собственно почему нельзя?
просто в унреале славе диск не видится?
-----
и что у Вас сильное разделение на АТМщиков ПРОФИстов СИНКЛЕРистов
и прочая?
-наверное немного глуповато выглядит- примерно как поклонники ASUS против GIGABIT. Чипсеты одни и теже периферия таже процы, одинаковые
биос у одних и тех же (AWARD&AMI) заказывают-чего делить?
Наоборот- объединяя усилия и вводя стандарт на железо софт можно добиться гораздо большего. Проще исправлять недостатки.
Кстати sos.l нигде нет, посмотрел исходники- лажа, или для версии 0.30
унреала будет задействована. И еще- раз программуля поддерживает разные машины- наверное будет правильно выложить в инсталле и ини файлики под эту ахитектуру(это очевидная культура программирования)
Не все могут пролопатить кучу сайтов и ссылок на уже помершие сайты и найти то что надо.......и еще меньше тех кто может разобраться в исходном коде да еще и эмуля другой машины........Пользователю по большому счету это ник чему. Ему нужно просто давить клавиши и торчать от эффекта, не особенно напрягаясь. Хороший пример Билли Гей-тс!!!!!- чем собственно хорош виндовоз ? Да, тупая, незащищенная от грамотного дурака система- но, очень удобно ненапрягать мозги.
Чегой то я расписался. Не замыкайтесь на себя ребята!!! Speccy все равно будет жить, просто по тому что он оттачивает мозги программерам,
Предельно простая архитектура, не очень сложный софт - поразительная эффективность при малом использовании ресурса. Хао!!!!!!!!! :smile: :smile: :smile: :wink: :wink: :wink:

DizZy
23.07.2005, 00:42
этот код ошибки означает "Another application has a higher priority level, preventing this call from succeeding". возможно, внизу окно другого приложения, которое захватывает мышь при наведении на него курсора. напиши, зависит ли появление ошибки от режима (полноэкранный/оконный)

Спасибо! Это от того, что недавно поставил Y'z Dock - это он зараза снизу вылезает когда курсор наводишь, он и мышь отбирает видимо. Без него всё ок.

ps: кстати когда GDI в окошке шарится всёравно ошибку выдаёт. Мож как-нить сделать чтобы когда мышь из окна уехала как-нить устройство->Release(); , потом как приехала опять бралось?

SMT
23.07.2005, 02:44
А собственно почему нельзя?
просто в унреале славе диск не видится?как он увидится,если стандартная прошивка TR-DOS совершенно ничего не знает о HDD


и что у Вас сильное разделение на АТМщиков ПРОФИстов СИНКЛЕРистов
и прочая?
-наверное немного глуповато выглядит- примерно как поклонники ASUS против GIGABIT. Чипсеты одни и теже периферия таже процы, одинаковые
биос у одних и тех же (AWARD&AMI) заказывают-чего делить?
Наоборот- объединяя усилия и вводя стандарт на железо софт можно добиться гораздо большего. Проще исправлять недостаткиу меня разделение? :) lol. если есть куча железных стандартов на подключение разных устройств, что я могу поделать? поддержать только одно, для развития стандарта? а остальные пусть идут лесом?


Кстати sos.l нигде нет, посмотрел исходники- лажа, или для версии 0.30 унреала будет задействована.гы-гы. формат sos.l описан даже в news.txt, и он используется вовсю. конечно, только теми, кому он нужен


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

SMT
23.07.2005, 02:45
Мож как-нить сделать чтобы когда мышь из окна уехала как-нить устройство->Release(); , потом как приехала опять бралось?
если проглатывать ошибки, то в случае, если не будет работать мышь или звук, никогда не узнаешь, в чём причина....

Lounge Lizard
23.07.2005, 03:00
бесполезно, даже если вывод идёт через windows GDI+waveOut, всё равно инициализируются все интерфейсы directX, на всякий случай. поэтому в WINE ничего не выйдет

В вайне давно уже есть поддержка DirectX, во всяким случае виндовые 3D-экшены идут без проблем. Так что всё-таки убери проверку, если не трудно. :rolleyes:

SMT
23.07.2005, 07:33
во всяким случае виндовые 3D-экшены идут без проблемне верю!

SMT
23.07.2005, 07:46
смотрел диск с линуксом этого года (ядро 2.6.0, wine навряд ли старый), winrar показывает только about, жать не хочет. cl (консольный си-компилятор) зависает. если даже такие простенькие приложения вешают wine, куда там играм. ты, наверное, путаешь с cedega, или с адаптированными под линукс бинарниками

C-jeff
25.07.2005, 01:51
Хепл, SMT и все-все-все :) Почему при входе в fullscreen режим снизу остаётся toolbar? в настройках ставил и gdi и ddraw, винда xp professional sp2.

diver
25.07.2005, 04:13
Jeffie, это у тебя от недосыпа. Спать надо ночью а не анрыл ковырять ;)

C-jeff
25.07.2005, 09:20
Jeffie, это у тебя от недосыпа. Спать надо ночью а не анрыл ковырять ;)
спасибо, уважаемый, вы мне очень помогли %)

Lounge Lizard
25.07.2005, 09:42
Помимо GDI и DDraw там ещё варианты были - их попробуй. Или поставь режим Bilinear или как его там - тоже никакого тулбара не будет.

diver
25.07.2005, 09:51
спасибо, уважаемый, вы мне очень помогли %)
Jeffie, ты слишком уж привередливый. Имхо это мелочь по сравнению с процессом перехода от fullscreen к windowed, когда экран винды не обновляется и приходится тыкаться в minimize/maximize, обновлять экран.

но я привык. и, почему-то ни разу не переходил от windowed к fullscreen ;)

Goga
25.07.2005, 11:08
:) :) :)
Да я вроде и не ругался нигде.........., sos.l как я понимаю не изменил свой формат и новом релизе унреала(в отличии от ini)?
И еще- очень хотелось бы АТМ-срм дискетки читать, у меня много всякой
бодяги на них все еще валяется в чулане, если кот на них не нагадил........
;)
ладно всем привет и спасибо

SMT
25.07.2005, 19:22
Почему при входе в fullscreen режим снизу остаётся toolbarв GDI можно пофиксить, если напрягает. а в ddraw не должно быть такого


перехода от fullscreen к windowed, когда экран винды не обновляется и приходится тыкаться в minimize/maximize, обновлять экранэто вроде исправил несколько версий назад...


и, почему-то ни разу не переходил от windowed к fullscreenпока мне больше нравится frame resampler, сейчас занимаюсь увеличением его контрастности. даже не знаю, делать что-ли его и оконным тоже, раз такое дело...


sos.l как я понимаю не изменил свой формат и новом релизе унреалаон поменяется, только если поменяется пршивка BASIC48, поэтому я его не выкладываю каждый раз


очень хотелось бы АТМ-срм дискетки читать, у меня много всякой
бодяги на них все еще валяется в чуланедык, какие проблемы? :) нужен копировщик типа AMD или Teledisk, и всё...

Alex/AT
25.07.2005, 22:39
пока мне больше нравится frame resampler, сейчас занимаюсь увеличением его контрастности. даже не знаю, делать что-ли его и оконным тоже, раз такое дело...
Одназначно ;) Реальная штука, огромный thx ;)

Alex/AT
28.07.2005, 12:32
Да, кстати... Эмуляция модема в UnrealSpeccy 0.29b изначально неработоспособна в принципе. Пока делал терминалку, доработал чуть-чуть. Тоже кое-чего не хватает еще, но хотя бы работает.

MODEM.C:



void ISA_MODEM::open(unsigned char port)
{
if (open_port == port) return;
whead = wtail = rhead = rtail = 0;
if (hPort && hPort != INVALID_HANDLE_VALUE) CloseHandle(hPort);
open_port = port;
if (!port) return;

char portName[6] = "COM*"; portName[3] = port + '0';
hPort = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hPort == INVALID_HANDLE_VALUE) {
printf("can't open modem on %s (%08X)\n", portName, GetLastError());
conf.modem_port = open_port = 0; return;
}

COMMTIMEOUTS times;
times.ReadIntervalTimeout = MAXDWORD;
times.ReadTotalTimeoutMultiplier = 0;
times.ReadTotalTimeoutConstant = 0;
times.WriteTotalTimeoutMultiplier = 0;
times.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hPort, &times);

#if 0
DCB dcb;
if (GetCommState(hPort, &dcb)) {
printf(
"modem state:\n"
"rate=%d\n"
"parity=%d, OutxCtsFlow=%d, OutxDsrFlow=%d, DtrControl=%d, DsrSensitivity=%d\n"
"TXContinueOnXoff=%d, OutX=%d, InX=%d, ErrorChar=%d\n"
"Null=%d, RtsControl=%d, AbortOnError=%d, XonLim=%d, XoffLim=%d\n"
"ByteSize=%d, Parity=%d, StopBits=%d\n"
"XonChar=#%02X, XoffChar=#%02X, ErrorChar=#%02X, EofChar=#%02X, EvtChar=#%02X\n\n",
dcb.BaudRate,
dcb.fParity, dcb.fOutxCtsFlow, dcb.fOutxDsrFlow, dcb.fDtrControl, dcb.fDsrSensitivity,
dcb.fTXContinueOnXoff, dcb.fOutX, dcb.fInX, dcb.fErrorChar,
dcb.fNull, dcb.fRtsControl, dcb.fAbortOnError, dcb.XonLim, dcb.XoffLim,
dcb.ByteSize, dcb.Parity, dcb.StopBits,
(BYTE)dcb.XonChar, (BYTE)dcb.XoffChar, (BYTE)dcb.ErrorChar, (BYTE)dcb.EofChar, (BYTE)dcb.EvtChar);
}
#endif
}

void ISA_MODEM::close()
{
if (!hPort || hPort == INVALID_HANDLE_VALUE) return;
CloseHandle(hPort); hPort = INVALID_HANDLE_VALUE;
open_port = 0;
}

void dump1(BYTE *p, unsigned sz)
{
while (sz) {
printf("\t");
unsigned chunk = (sz > 16)? 16 : sz;
for (unsigned i = 0; i < chunk; i++) printf("%02X ", p[i]);
for (; i < 16; i++) printf(" ");
for (i = 0; i < chunk; i++) printf("%c", (p[i] < 0x20)? '.' : p[i]);
printf("\n");
sz -= chunk, p += chunk;
}
printf("\n");
}

void ISA_MODEM::io()
{
if (!hPort || hPort == INVALID_HANDLE_VALUE) return;
unsigned char temp[BSIZE];

int needwrite = whead - wtail; if (needwrite < 0) needwrite += BSIZE;
if (needwrite) {
if (whead > wtail) memcpy(temp, wbuf+wtail, needwrite);
else memcpy(temp, wbuf+wtail, BSIZE-wtail), memcpy(temp+BSIZE-wtail, wbuf, whead);
DWORD written = 0;
if (WriteFile(hPort, temp, needwrite, &written, 0)) {
//printf("\nsend: "); dump1(temp, written);
wtail = (wtail+written) & (BSIZE-1);
}
}
if (((whead+1) & (BSIZE-1)) != wtail) reg[5] |= 0x60;

int canread = rtail - rhead - 1; if (canread < 0) canread += BSIZE;
if (canread) {
DWORD read = 0;
if (ReadFile(hPort, temp, canread, &read, 0) && read) {
for (unsigned i = 0; i < read; i++) rcbuf[rhead++] = temp[i], rhead &= (BSIZE-1);
//printf("\nrecv: "); dump1(temp, read);
}
}
if (rhead != rtail) reg[5] |= 1;

setup_int();
}

void ISA_MODEM::setup_int()
{
reg[6] &= ~0x10;

unsigned char mask = reg[5] & 1;
if (reg[5] & 0x20) mask |= 2, reg[6] |= 0x10;
if (reg[5] & 0x1E) mask |= 4;
// if (mask & reg[1]) cpu.nmi()

if (mask & 4) reg[2] = 6;
else if (mask & 1) reg[2] = 4;
else if (mask & 2) reg[2] = 2;
else if (mask & 8) reg[2] = 0;
else reg[2] = 1;
}

void ISA_MODEM::write(unsigned nreg, unsigned char value)
{
if ((1<<nreg) & ((1<<2)|(1<<5)|(1<<6))) return; // R/O registers

if (nreg < 2 && (reg[3] & 0x80)) {
div[nreg] = value;
DCB dcb;
if (GetCommState(hPort, &dcb)) {
if (divfq == 0) { divfq = 1; }
dcb.BaudRate = 115200 / divfq;
SetCommState(hPort, &dcb);
}
return;
}

if (nreg) {
reg[nreg] = value;

if (nreg == 3) {
// LCR set, renew modem config
DCB dcb;

if (GetCommState(hPort, &dcb)) {
// printf(
"modem state:\n"
"rate=%d\n"
"parity=%d, OutxCtsFlow=%d, OutxDsrFlow=%d, DtrControl=%d, DsrSensitivity=%d\n"
"TXContinueOnXoff=%d, OutX=%d, InX=%d, ErrorChar=%d\n"
"Null=%d, RtsControl=%d, AbortOnError=%d, XonLim=%d, XoffLim=%d\n"
"ByteSize=%d, Parity=%d, StopBits=%d\n"
"XonChar=#%02X, XoffChar=#%02X, ErrorChar=#%02X, EofChar=#%02X, EvtChar=#%02X\n\n",
dcb.BaudRate,
dcb.fParity, dcb.fOutxCtsFlow, dcb.fOutxDsrFlow, dcb.fDtrControl, dcb.fDsrSensitivity,
dcb.fTXContinueOnXoff, dcb.fOutX, dcb.fInX, dcb.fErrorChar,
dcb.fNull, dcb.fRtsControl, dcb.fAbortOnError, dcb.XonLim, dcb.XoffLim,
dcb.ByteSize, dcb.Parity, dcb.StopBits,
(BYTE)dcb.XonChar, (BYTE)dcb.XoffChar, (BYTE)dcb.ErrorChar, (BYTE)dcb.EofChar, (BYTE)dcb.EvtChar);

dcb.fBinary = TRUE;
dcb.fParity = ((reg[3] & 0x8) != 0) ? TRUE : FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = 6 + (reg[3] & 2) - (reg[3] & 1);
if ((reg[3] & 0x8) == 0) {
dcb.Parity = NOPARITY;
} else if ((reg[3] & 0x30) == 0) {
dcb.Parity = ODDPARITY;
} else if ((reg[3] & 0x30) == 0x10) {
dcb.Parity = EVENPARITY;
} else if ((reg[3] & 0x30) == 0x20) {
dcb.Parity = MARKPARITY;
} else {
dcb.Parity = SPACEPARITY;
}
if ((reg[3] & 0x4) == 0) {
dcb.StopBits = ONESTOPBIT;
} else if ((reg[3] & 3) == 1) {
dcb.StopBits = ONE5STOPBITS;
} else {
dcb.StopBits = TWOSTOPBITS;
}
SetCommState(hPort, &dcb);
}
} else if (nreg == 4) {
// MCR set, renew DTR/CTS
if ((reg[4] & 1) == 0) {
EscapeCommFunction(hPort, CLRDTR);
} else {
EscapeCommFunction(hPort, SETDTR);
}
if ((reg[4] & 2) == 0) {
EscapeCommFunction(hPort, CLRRTS);
} else {
EscapeCommFunction(hPort, SETRTS);
}
}
return;
}

reg[5] &= ~0x60;
if (((whead+1) & (BSIZE-1)) == wtail) {
reg[5] |= 2;
} else {
wbuf[whead++] = value, whead &= (BSIZE-1);
if (((whead+1) & (BSIZE-1)) != wtail) reg[5] |= 0x60;
}
setup_int();
}

unsigned char ISA_MODEM::read(unsigned nreg)
{
unsigned char result = reg[nreg];
if (nreg < 2) {
if (reg[3] & 0x80) result = div[nreg];
else if (!nreg) {
reg[5] &= ~1;
if (rhead != rtail) result = reg[0] = rcbuf[rtail++], rtail &= (BSIZE-1);
if (rhead != rtail) reg[5] |= 1;
setup_int();
}
} else if (nreg == 5) reg[5] &= ~0x0E, setup_int();
return result;
}

SMT
28.07.2005, 20:39
ну зачем так сразу "в принципе не способен..." у меня работала программа ping 0.3, другого софта я не видел (терминалки не в счёт - мне некуда коннектиться)

спасибо. как я понял, пофиксен глюк с чтением лишнего символа из буфера чтения и спектрум теперь может выбирать скорость и режим обмена, раньше использовались значения, которые автоматически выбрала windows

SMT
28.07.2005, 20:39
теперь новый вопрос. сейчас я думаю, а не поддержать ли CD-ROM? но пока не вижу софта, кроме CD-WALK. нужен софт для audio-cd и data-cd. если нет ничего кроме CD-WALK, то, с одной стороны, может cd-rom нафиг не нужен спектрумистам. а, с другой, мне не на чём будет отлаживать эмулятор :(

kyv
29.07.2005, 09:14
теперь новый вопрос. сейчас я думаю, а не поддержать ли CD-ROM? но пока не вижу софта, кроме CD-WALK. нужен софт для audio-cd и data-cd. если нет ничего кроме CD-WALK, то, с одной стороны, может cd-rom нафиг не нужен спектрумистам. а, с другой, мне не на чём будет отлаживать эмулятор :(
думаю стоит!и заодно потерроризировать psb^triumph ([email protected])
т.к этот мегачел сваял в своё время прогу для просмотра видеофильмов на zx (звук через gs).

DizZy
29.07.2005, 12:43
теперь новый вопрос. сейчас я думаю, а не поддержать ли CD-ROM? но пока не вижу софта, кроме CD-WALK. нужен софт для audio-cd и data-cd. если нет ничего кроме CD-WALK, то, с одной стороны, может cd-rom нафиг не нужен спектрумистам. а, с другой, мне не на чём будет отлаживать эмулятор :(

Обязательно стОит! И ay-mouse хочу...

[bETA]mEN
29.07.2005, 16:55
И ay-mouse хочу...

Есть, начиная с версии UnrealSpeccy v0.28b

SMT
29.07.2005, 17:45
вопрос не в том, стоит или не стоит, а в том, где взять софт!

MadCat!
29.07.2005, 20:19
вопрос не в том, стоит или не стоит, а в том, где взять софт!
вот ещё софт:
-----------------
WDC 0.9 + mini CD player 0.2
Эта прога копирует'n'слушает файлы с CD.
Работает толька при наличии IDE-контроллера.
http://zxfiles.raww.net/system/wcd.zip
-------------------------------

а ещё, кажется, newart про видео на CD что-то говорил

MadCat!
29.07.2005, 20:25
сабж :(
frame resampler + full border = megasux :(

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

SMT
30.07.2005, 02:10
вот ещё софт
уже что-что


frame resampler + full border = megasux
первым этот баг нашёл я, вторым - Alex/AT. а вообще, frame resampler + blitter = megarulez :)


а ещё в куче мест не чистится звуковой буфер, поэтому там зацикленный фрагмент повторяется, когда диалог какой-нибудь открыт
кому мешает, могут в нужных местах по вкусу навтыкать sound_stop()

SMT
30.07.2005, 02:24
вот ребус http://zxfiles.raww.net/system/wcd.zip - ссылка на 404. а wdc.zip - скачалось :)

MadCat!
31.07.2005, 02:20
первым этот баг нашёл я, вторым - Alex/AT. а вообще, frame resampler + blitter = megarulez :)
я в этом не сомневаюсь ;)


кому мешает, могут в нужных местах по вкусу навтыкать sound_stop()
в каждой бете? :(
а ещё при maxspeed был этот глюк...

Alex/AT
31.07.2005, 09:06
ну зачем так сразу "в принципе не способен..."

Sorry... эт я из-за дублирующихся байтиков при чтении. Имхо они убивают любую прогу ;) Хотя раз ping 0.3 работал... но как?!

Там еще сигналы RTS/DCD/RI он читать не умеет. Сделаю возможность на днях.

rasmer
31.07.2005, 13:45
вот ребус http://zxfiles.raww.net/system/wcd.zip - ссылка на 404. а wdc.zip - скачалось :)А нечего даунлоадменеджерами пользоваться :) - родная скачка на "секретную страницу" не перепрыгивает (под Win)

SMT
31.07.2005, 18:25
ping 0.3 работал... но как?!
очень просто. ошибочно повторно читается только последний байт в буфере. буфер заполняется по сигналу INT, в перерывах между интами происходит чтение данных из модема. если это строка от модема, лишний перевод строки не помешает, а если это пакет (например, ip-пакет), то у него есть поле "длина пакета" и когда получено на байт больше, софт всё равно ориентируется на это поле, не берёт лишнее


родная скачка на "секретную страницу" не перепрыгивает (под Win)
ничего не понял. если просто ткнуть в ссылку, показывает страницу с красным треугольником и "The requested URL was not found on this server. "


в каждой бете? можно попробовать дождаться финала, или остановиться для себя на наиболее удобной версии :P

Alex/AT
31.07.2005, 23:01
буфер заполняется по сигналу INT, в перерывах между интами происходит чтение данных из модема.
Аааа... понятно. У меня чтение не завязано на инты, отсюда и грабли... А FIFO буфер реального COM-порта всего 16 байт, т.е. порядка 9500 тактов на все про все между чтениями на 57600 - иначе труба...

З.Ы. Интересно, PING на реальном ZX работать будет? Сдается мне, что нет ;)

SMT
01.08.2005, 00:09
это надо у caro спросить :)

SMT
01.08.2005, 00:43
залил версию 0.30b на http://sf.net/projects/unrealspeccy/

появилась поддержка kay-256/1024, значительно улучшен фильтр frame resampler, добавлен atapi cd-rom на ide-канале

... пойду съем пирожок и спать :)

SMT
01.08.2005, 00:47
со стандартными ПЗУ kay у меня не работает. вот тут пзу с переставленными страницами tr-dos и service

Goga
01.08.2005, 03:31
Теледиск и амд(а так-же 22дск) под хр не катят, сейчас ммх-233 надыбал (в чулане валялась) на ней буду пробовать, правда СИММ еще 32пин надо найти :confused:
Там вроде под АТМ новая прошивка появилась, с поддержкой ндд- в унреале надо новую версию ваять......... :wink: :wink: :wink:

MadCat!
01.08.2005, 23:08
залил версию 0.30b на http://sf.net/projects/unrealspeccy/
появилась поддержка kay-256/1024, значительно улучшен фильтр frame resampler, добавлен atapi cd-rom на ide-канале

... пойду съем пирожок и спать :)
не пойму, как название CD-ROM'а, которое в .ini прописывается получить? у меня два алкогольных виртуальника (I и V) и настоящий NEC (X). я и из свойств дисковода пытался название брать, и то, что в биосе, всё равно
error: no physical device <_NEC CD-RW NR-9100A 2.12> :(

SMT
01.08.2005, 23:53
легче всего нажать alt-f1, закладку HDD, выбрать контроллер (NEMO, напр.), нажать [...], выбрать cd-rom и скопировать имя устройства вместе со скобками в буфер обмена (или переписать данные при старте из консоли). нужно писать <устройство,номер>, а bios серийный номер не показывает. поэтому траблы

Goga
03.08.2005, 07:14
Ну вот! дождались очередного релиза унреала!
Хорошо бы еще добавить кнопку записи новой конфигурации по alt+f1
в ini файлик, чтоб не гимороится каждый раз восстанавливая конфиг- свой.

SMT
03.08.2005, 07:53
а ты настраивай не в alt-f1, а сразу в ini-файле

MadCat!
03.08.2005, 23:23
легче всего нажать alt-f1, закладку HDD, выбрать контроллер (NEMO, напр.), нажать [...], выбрать cd-rom и скопировать имя устройства вместе со скобками в буфер обмена (или переписать данные при старте из консоли). нужно писать <устройство,номер>, а bios серийный номер не показывает. поэтому траблы
блин, я [hdd]->skipreal не так трактовал, поэтому он у меня отключен был и в "..." ничего не было :) сейчас разобрался. только с двумя виртуальниками проблема: можно выбрать только первый (у них названия одинаковые). Кстати, как оказалось, unrealSpeccy в wdc и DVD поддерживает :)

ещё пара сложноуловимых багов, которые уже давно присутствуют:
1) кнопка Pause иногда срабатывает как SPACE (?или ещё какая-нибудь). лечится выходом в отладчик или в опции с последующим возвратом. Появляется этот глюк периодически (довольно часто) и уже давно присутствует.
2) частенько убиваются какие-то куски эмуля, в результате чего не работает F12 (вместо сброса в service сбрасывает в 48 или не тот rom подсовывается: у меня QC "прошит", а сбрасывается в TR-DOS ). Появляется глюк иногда при загрузке .sna, лечится только перезапуском эмуля (по Alt+F1 перестановка rom-presets ничего не даёт). точно присутствовал в прошлой версии.

SMT
04.08.2005, 07:15
с двумя виртуальниками проблема: можно выбрать только первый (у них названия одинаковые)об этом я не подумал...


кнопка Pause иногда срабатывает как SPACE (?или ещё какая-нибудь). то есть в бейсике печатается пробел?


не работает F12 (вместо сброса в service сбрасывает в 48 или не тот rom подсовывается: у меня QC "прошит", а сбрасывается в TR-DOS ). Появляется глюк иногда при загрузке .snaэто какие-то определённые SNA, или любые?

Goga
05.08.2005, 02:52
Ручками- оно понятно-можно, но хоцца чоб от пимпочки рулила :) :) ;) ;)
Виндовоз всё-таки----пусть трудится;)

SMT
05.08.2005, 07:20
Goga: исходники есть. если так надо, ну запиши сотню настроек в тесктовый файл, только не отмазывайся, что си не знаешь :)

Goga
06.08.2005, 14:50
Ну я же не попса, ремейки плодить..........
Просто автор заведомо лучше любого знает как и где у него
раскидано по программе........
Разбираться - откровенно говоря времени нет. Работа, хобби, машина, семья, и так далее..... Хозяину проще- заодно блеснуть утонченностью :) ;) :)

Dexus
06.08.2005, 15:54
Дело в том что при подобное записи уьются все "комментарии" из текущего конфига. А это не есть хорошо.
Хотя, если подумать, наверняка есть библиотеки (может быть и стандартные) для "безопасной" работы с ini-файлами. Которые бы просто подменяли значения, не трогая остального.

MadCat!
06.08.2005, 21:11
то есть в бейсике печатается пробел?
ложная тревога. это оказывается PuntoSwitcher косячит. Пока в fullscreen сидел, не видно было.


это какие-то определённые SNA, или любые?
сейчас посмотрим...
запустил эмуль, сделал .sna, загрузил .sna, F12, SUX ;)

ещё пара багов:
1) в highcolor и truecolor режимах (которые по Shift+F4) при включенном noflic показывается совсем не то, что при 256colors
2) кнопки от диалоговых окон передаются эмулю: когда делал .sna ввёл имя, нажал Enter, и этот Enter передался запущенноё в эмуле проге :(

SMT, а расскажи, как/чем .hdd файл сделать???

SMT
06.08.2005, 22:07
блин, неужели такая нужная вешь? всё это делается элементарно, только я считал, что это не нужно. но требуют далеко не первый раз. может, и сделаю...

SMT
06.08.2005, 22:25
выше это я про сохранение ini


запустил эмуль, сделал .sna, загрузил .sna, F12, SUXэто QC sux :) мой сервис ром так не делает. частенько зависания бывают у режимов скорпиона и АТМ из-за того, что сброс полагается на содержимое памяти. надо будет кнопочку "clear RAM" сделать


в highcolor и truecolor режимах (которые по Shift+F4) при включенном noflic показывается совсем не то, что при 256colorsяркость не нравится, или что? эта фича, которую можно задизаблить через ini, только не спрашивай как :)


кнопки от диалоговых окон передаются эмулю: когда делал .sna ввёл имя, нажал Enter, и этот Enter передался запущенноё в эмуле прогеа вот и нифига. если нажимать аккуратно, всё ok. буфер очищается, но эмулятор кроме буфера спрашивает и физическое положение кнопки (нажата/отжата). уже после закрытия диалога начинается эмуляция z80 и когда происходит опрос клавиатуры, из-за того, что кнопку до сих пор не отпустили, она считается нажатой :)


SMT, а расскажи, как/чем .hdd файл сделатьзадать CHS и LBA в ini - появится пустой винчестер заданной ёмкости. если с него читать, читаются нули, если писать, файл раздувается вплоть по позиции записи. то есть hdd-файл создаётся любой программой. например, fdisk запишет 1-й сектор, format X: - FATы, просто копирование файлов на виртуальный винт забъёт остаток места. это всё про cp/m, с is-dos аналогично - просто работаешь как с абсолютно читым винтом, файл растёт сам

SMT
06.08.2005, 22:31
а ну ещё можно скопировать винт в HDD-файл с помощью нортон утилит под дос. или в винде \\.\PhysicalDrive0 (аналог линуксового /dev/hda) в файл. к сожалению, утилита винды copy блокирует имена устройств, чтобы юзеры ничего не напортачили, поэтому копировщик элементарно пишется из CreateFile и двух команд в цикле: ReadFile + WriteFile

Shiru
07.08.2005, 06:16
блин, неужели такая нужная вешь? всё это делается элементарно, только я считал, что это не нужно. но требуют далеко не первый раз. может, и сделаю...
Конечно нужная. Главным образом из-за того, что каждый раз при выходе новой версии нужно заново выполнять настройку эмулятора.

SMT
07.08.2005, 06:58
Shiru, в любом случае это придётся делать. какая разница, кнопками или мышью ;)

Shiru
07.08.2005, 07:27
Ну, галки в окошке быстрее покликать, чем мотать километровый ini, и сравнивать его с предыдущим:)

Dr.Lion/RSM
07.08.2005, 19:05
Ну, галки в окошке быстрее покликать, чем мотать километровый ini, и сравнивать его с предыдущим
Вообщем, народ, ситуация следующая. Так как версии Unreal часто обновляются, мною было принято решение написать незамысловатую утилитку для настройки unreal.ini файла. Вот краткие ее характеристики:
1.Наличие легкообновляемой базы версий, позволяющей корректно настраивать конкретную версию эмулятора а так же, при создании своей собственной записи в базе, одним движением мыши модифицировать ini файл своими любимыми настройками (т.н. пресеты).
2.Возможность изменять параметры unreal.ini в рамках выбранной записи из базы версий.
3.Возможность парой кликов мышки перенести параметры настройки из более старой версии эмулятора в файл unreal.ini новой версии.
Также следует отметить, что:
-комментарии в изменяемом ini файле не пропадают, изменяются лишь параметры!
-предполагается распространение программы в составе пакета самого эмулятора, т.к. при запуске программа в текущем каталоге ищет unreal.ini и в последствии работает именно с ним! Если SMT откажется включать UConfig (название программы) в комплект эмуля и обновлять его базу версий новыми записями, то возможны два варианта: 1) обновляю UConfig и включаю в состав новой версии я, после чего весь пакет размещаю на моем сайте; 2) на сайте размещается лишь обновленный UConfig, который придется закачивать и копировать в папку с новой версией эмуля. Это решать SMT!
Так что, хватит донимать автора, пускай занимается непосредственно доводкой самого эмуля. Вносить новый малонужный код в эмуль - значит плодить новые глюки! Пускай конфигуратор будет внешним.
И напоследок - конфигуратор готов на 70%, правильно ищет и изменяет параметры в unreal.ini. Сейчас решаются некоторые проблемы интерфейса. Программа полностью написана на VB6.

SMT
07.08.2005, 20:43
сегодня я придумал алгоритм сохранения, выглядит так: открывается диалог save as..., выбирается имя файла. потом старый ini читается по строчкам, если строка начинается с известной опции, пишется вместо неё текущее значение, комментарий сохраняется. если после записи блока какая-то настройка оказалась незаписанной, она дописывается в конец блока без комментария. опционально можно создать cmd-файл след. содержания: "<текущий>.exe -i <новый>.ini %1 %2 ... %9". пока повременю с кодингом, посмотрю на мнения, кому как покажется удобнее - настраивать отдельно или сохранять в другой файл

теперь общие вопросы к Dr.Lion/RSM. 1. эмулятор не позволяет редактировать пресеты (для ROM, keyboard, ULA, ...). может ли это делать UConfig?
2. мне кажется, пользователям будет удобнее видеть настройки сгруппированными примерно по тем же закладкам, что и в эмуляторе. похож ли интерфейс UConfig на диалог настроек?
3. примерно что находится в базе, как её поддерживать?

теперь насчёт распространения: вариант 0 возможен, если будут публиковаться все исходники (политика sourceforge). и с исходниками заморочки - надо открывать новый package или новый проект. если меняется только база, рациональнее прикладывать именно её в bin-архив. exe-шник можно взять у автора. варианты 1 и 2 для меня примерно одинаковы [хотя 1 предпочтительнее - как-никак появляется зеркало :), но для пользователей, которые как правило качают с VT, наверное удобнее 2]

пока я в сомнениях...

Dr.Lion/RSM
07.08.2005, 22:30
1. эмулятор не позволяет редактировать пресеты (для ROM, keyboard, ULA, ...). может ли это делать UConfig?
Впринципе, можно задать запись версии, где можно выбирать из присутствующих в unreal.ini пресетов ROM, keyboard,ULA,... Создание новых пресетов этих параметров пока не предусмотрено. Так же на предусмотрено (хотя можно реализовать) выбор путей в качестве параметров (например, путь к ZX файлам и т.п.).

2. мне кажется, пользователям будет удобнее видеть настройки сгруппированными примерно по тем же закладкам, что и в эмуляторе. похож ли интерфейс UConfig на диалог настроек?
Интерфейс (ввиду необходимости работать со всеми версиями эмулятора) совершенно не похож на интерфейс настроек самого эмулятора (ведь этот интерфейс от версии до версии изменяется). Концепция программы построена таким образом, что автор эмулятора смог бы сам создавать записи в базе без изменения или внесения каких либо опций в самом коде UConfig. Интерфейс больше похож на сам ini файл - выбирается группа параметров, в группе выбирается конкретный параметр и в списке выбирается или задается с клавиатуры соответствующее значение параметра. При этом есть два отображения параметров:1.основной режим - самые необходимые параметры; 2.Расширенный режим - все доступные для конкретной записи версии параметры. По каждому параметру выводится небольшая справка (для этого в базе версий есть раздел с описателями параметров, который должен пополняться при появлении в эмуляторе новых настроек).

3. примерно что находится в базе, как её поддерживать?
В базе, как я уже упоминал, находятся записи версий. Запись версии - это перечень доступных для изменения параметров. Для каждого параметра задается список возможных значений и значение по умолчанию. Так же в базе имеется раздел, в котором приведен перечень всех известных на данный момент параметров unreal.ini с описаниями этих параметров. Так же этот список, я так думаю, будет использоваться в качестве перечня параметров, которые должны переноситься из старой версии в новую (кстати, один из способов решить проблему с заданием путей к zx файлам или rom файлам). Пока это все, но может еще что-то добавиться в базу. База представляет собой самый обыкновенный txt файл, наподобие unreal.ini

Насчет sourceforge. Зря ты вообще с ним связался! Мне стало очень неудобно качать с него новую версию эмуля. Мало того, что эмуль теперь порезан на исходники, на бинарник и на доки, так этот soundforge пока скачаешь package зае..т тупыми вопросами! Ну это мое личное мнение! Было куда удобней качать эмуль прямо с форума или zx.da.ru! Как распространять UConfig - твое дело! Если
sourceforge накладывает кучу своих ограничений, то будет разумно просто включать в пакет с бинарником txt базу для UConfig. Я буду брать обновленную тобой для новой версии эмуля базу, вносить туда дополнительные записи от себя и уже в одном флаконе с Unreal, ромами, дополнительными библиотеками и файлами вместе с UConfig размещать у себя на сайте. Так же могу дополнительно размещать только сам UConfig с обновленной тобой базой. Саму базу обновлять очень легко, посмотришь в txt и сделаешь наподобие!

Какие еще вопросы?

Dr.Lion/RSM
07.08.2005, 22:38
Кстати, ничего не мешает прикрутить UConfig к другим эмуляторам, хранящим свои настройки в текстовых файлах. Еще не пробовал, но мне здается, UConfig смог бы конфигурировать, наприме, Z80Stealth Emulator.

SMT
07.08.2005, 22:50
наверное, это будет сложно (копаться в базе. в смысле не один раз, а с каждой новой версией). в любом случае, надо посмотреть на то, что получится. а насчёт sf.net - это твой выбор, зачем ты качал с sf? подождал бы 2 недели и скачал с zx.da.ru :) в любом случае, эта задержка неустранима (от меня не зависит). качать с форума неудобно imho, потому что не поддерживается докачка

Dr.Lion/RSM
07.08.2005, 23:41
наверное, это будет сложно (копаться в базе. в смысле не один раз, а с каждой новой версией). в любом случае, надо посмотреть на то, что получится.
Тогда такой вариант: ты перед самым выходом новой версии шлешь мне по мылу файлик новой версии unreal.ini, я вношу все изминения в базу и отсылаю тебе саму базу, которую ты и кладешь к эмулю. Но чтоб не было тормозов в этом деле, нужно, чтоб мы могли в любое время связаться, скажем, по ICQ. Я в сети почти постоянно. Номер твоей аськи вычислить мне не удалось (существует ли он вообще?). Но если и этот вариант в напряг, то я могу (с твоего разрешения) сам вести UConfig и выставлять его на сайте (вот только разрозненность получится - эмуль там, конфиг там!). А по существу, если набор параметров в unreal.ini в новой версии эмуля остается не изменным, то в UConfig ничего не мешает взять более старую версию записи и все настроить в рамках ее параметров. Вообще, записи нужны лишь чтоб играничивать набор доступных (для соответствующей версии эмуля) параметров, так что обновлять за каждым разом базу вовсе не обязательно. Ты хотя б прикладывал бы UConfig с более-менее новой базой версий (которую я мог бы тебе обновлять и высылать по мылу).

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

Dexus
08.08.2005, 00:29
И все-таки по-моему сохранение текущего конфига изнутри эмуля - необходимо. В ином случае это какая то неполноценная программа получается: отконфигурить можно, но только на текущую сессию... выглядит как явная недоделка.

SMT, скажи плиз для чего есть возможность непропорционального изменения размера окна?

Goga
08.08.2005, 02:07
:smile: :smile: :smile:
Ну слава кпсс! нашлись люди утолить страждущих!
наверное на форуме можно сделать окошко как в других сайтах: продукт-ссылка где лежит, патч-ссылка, лекарство- ссылка, форум не забивается, ссылки можно периодически править- и все дела.
Uниверсальный config-уратор лучше делать только под унреал, меньше гимора, глюков и вопросов,,,,,,,,,,,для особо настойчивых можно отдельным проектом пустить универсал- но делать совместимым с туевой хучей других эмулей - по опыту- тяжело, баз мало, версии плодятся как кролики, изменения чудовищные, всех ньюансов просто не успеваешь отследить. :wink: :wink: :wink:

Dr.Lion/RSM
08.08.2005, 02:31
Универсальный config-уратор лучше делать только под унреал, меньше гимора, глюков и вопросов,,,,,,,,,,,для особо настойчивых можно отдельным проектом пустить универсал- но делать совместимым с туевой хучей других эмулей - по опыту- тяжело, баз мало, версии плодятся как кролики, изменения чудовищные, всех ньюансов просто не успеваешь отследить.
Никто пока не собирается поддерживать другие эмули (пока не появится в этом необходимость). Просто имелось ввиду, что форма реализации конфигуратора такова, что он может править любые (даже виндошные) ini файлы, если ему сделать соответствующую базу знаний (параметров). Но все же UConfig заточен именно под Unreal Speccy.

SMT
08.08.2005, 08:15
для чего есть возможность непропорционального изменения размера окнада по-хорошему, надо вообще убрать флаг, разрешающий пользователю менять размер окна. потому что нормальный результат есть только в полном экране или зуме 1:1 или 2:1, что и есть в системном меню. надо будет кнопки к этому привязать


ты перед самым выходом новой версии шлешь мне по мылу файлик новой версии unreal.ini, я вношу все изминения в базу и отсылаю тебе саму базу, которую ты и кладешь к эмулюпока в новой версии не предвидится новых настроек, только новые кнопки в [SYSTEM.KEYS] но так как ты их не редактируешь, ничего менять не надо. в любом случае, надо сначала посмотреть на конфигуратор и базы

SMT
08.08.2005, 08:17
можно сделать окошко как в других сайтах: продукт-ссылка где лежит, патч-ссылка, лекарство- ссылка, форум не забивается, ссылки можно периодически правитьна форуме, наверное, так не сделать. если кидать ссылки в первом сообщении, то при обновлении люди будут идти на последню страницу (неизвестно, изменилась ссылка в начале, или кто-то дописал в конец). а ведь понапишут страниц 18 - ищи потом :)

Dr.Lion/RSM
08.08.2005, 14:59
пока в новой версии не предвидится новых настроек, только новые кнопки в [SYSTEM.KEYS] но так как ты их не редактируешь, ничего менять не надо. в любом случае, надо сначала посмотреть на конфигуратор и базы
На данный момент конфигуратор готов на 90%. Удалось порешать самые сложные проблемы. Сделана возможность обновления старыми настройками. Осталось сделать запись измененного unreal.ini, добавить парочку фич, вылизать код и отловить явные глюки - но это мелоч. Нужно хоть первоначально заполнить базу записями основных версий эмуля, составить полный словарь описателей параметров. Так что не сегодня - завтра я думаю смогу выкинуть в люди первую версию конфигуратора. Только вот вопрос, как мне поступить? Выставить сдесь для всеобщего скачивания, или сначала кинуть тебе на ящик, чтоб ты ознакомился и дал добро на размещение здесь (если у тебя не появится замечаний).
Насчет [SYSTEM.KEYS]. По идее, можно в базе сделать возможность редактировать эти кнопки, но вопрос в том, многие ли редактируют эти кнопки? Я буду включать в базу только самые критичные и "популярные" настройки.

SMT
08.08.2005, 21:12
лучше сразу сюда

Goga
09.08.2005, 01:38
Не знаю, я кнопки по умолчанию всегда использую. А насчет пропуска первой страницы- не знаю, новички все равно с первой читают, чтоб быть в курсе, а кто давно тусуется- просто знает где и что. Не вижу проблемы. Хорошо бы еще в конфигураторе сделать Save as.... Для особо продвинутых(гы гы) .

Dr.Lion/RSM
09.08.2005, 16:42
Вот на ваш суд выставляется первая версия UConfig. Её можно назвать бета версией, так как она не содержит в базе все версии эмулятора, которые я туда хотел занести, и над ней не проводились серьезное тестирование.

Некоторая терминология:
1.База версий - текстовый файл ucbase.txt, содержащий записи по определенным версиям эмулятора.
2.Запись - описание доступных для изменения в ini файле соответствующей версии параметров. По каждому параметру имеется список доступных для него значений (за исключением параметров, значения которых вводятся с клавиатуры и бинарных значений 0/1 ) и значение по умолчанию (default).

Как работать с программой:
1.После запуска программы определитесь, что вы хотите сделать:
1.1.Изменить отдельные настройки ini файла:
а) Уберите птичку "Заполнить значениями из базы";
б) Загрузите нужный ini кнопкой Load;
в) Найдите необходимые параметры и измените их значения.
1.2.Перенести настройки из ini файла старой версии эмулятора в ini файл новой версии эмулятора:
а) Уберите птичку "Заполнить значениями из базы";
б) Загрузите нужный ini кнопкой Load;
в) Загрузите ini старой версии эмулятора кнопкой Auto, после чего начнется процесс автоматического переноса значений параметров.
г) Просмотрите в поле подсказки, какие параметры удалось перенести.
1.3.Перенести настройки default из базы в ini файл:
а) Установите птичку "Заполнить значениями из базы";
б) Загрузите нужный ini кнопкой Load, после чего значения параметров автоматически подобранной записи перенесуться в ini;
в) Если автоматически подобранная запись версии вас не устраивает, выбирите другую запись версии, после чего значения параметров этой записи перенесутся в ini.
2.Если есть необходимость, выбирите нужные параметры и измените их значения самостоятельно. Что бы получить доступ ко всем параметрам записи установите птичку "Полный список параметров".
3.Кнопкой Save and Exit запишите измененный ini файл и выйдите с программы.

Примечания:
1.Если программа не находит в базе запись, соответствующую загруженному ini файлу, то она автоматически выбирает самую последнюю запись базы.
2.При автоматическом переносе значений параметров из старой версии в новую, некоторые значения параметров не будут перенесены, если соответствующие параметры не присутствуют в обоих ini файлах. Так же некоторые параметры могут получить ошибочные значения если эти параметры присутствуют в обоих ini, но предполагают разные наборы допустимых значений (например, параметр HIMEM в версиях 0.22 и 0.29).
3.Некоторые параметры задаются путем ввода значения с клавиатуры (числовые параметры, имена файлов, пути к файлам).
4.Пока не рекомендуется использовать программу с ini файлами версиями ниже 0.22.

Просьба хорошо погонять программу и выявить ее ошибки в работе. Если вы желаете внести свою личную запись в базу, то вышлите мне по мылу файл настроек от своей любимой версии Unreal Speccy.

Выражаются благодарности:
1.SMT за его эмулятор и за отсутствие записи настроек :)
2.Scorpion/RSM за присланный набор ini файлов от разных версий эмуля.
3.Cooper/RSM за размещение программы на нашем сайте.
4.Всем, кто признает программу удобной и будет ею пользоваться.

SMT
09.08.2005, 17:51
главную форму можно ресайзить. это болезнь delphi и vb :)

в инструкции написано "снимите (установите) галку" но она задизаблена сразу после запуска. в окнах выбора файла лишние "open as read-only" - они же не отслеживаются? и ещё нужно правильно реагировать на cancel в окне выбора файла

вообще, imho, нужно очень хорошо знать разделы ini, чтобы быстро что-то найти и отредактировать. ещё минус - чтобы изменить 1-2 настройки, нужно сделать огромное количество кликов. всё-таки лучше, когда все чекбоксы и списки перед глазами одновременно

Dr.Lion/RSM
09.08.2005, 19:20
главную форму можно ресайзить. это болезнь delphi и vb
Упустил - это мой прокол, в новой версии исправлю!

в инструкции написано "снимите (установите) галку" но она задизаблена сразу после запуска.
Да, с этим я тоже тормознул, что-нибудь придумаю :(

в окнах выбора файла лишние "open as read-only" - они же не отслеживаются?
Не отслеживаются, но и никому не мешают.

нужно правильно реагировать на cancel в окне выбора файла
Что значит "правильно"? У меня при их нажатии просто происходит возврат без загрузки файла.

вообще, imho, нужно очень хорошо знать разделы ini, чтобы быстро что-то найти и отредактировать.
Те люди, которые всю жизнь вручную редактируют настройки Unreal Speccy, разделы ini знают просто отлично и что им нужно изменить находят быстро!

ещё минус - чтобы изменить 1-2 настройки, нужно сделать огромное количество кликов. всё-таки лучше, когда все чекбоксы и списки перед глазами одновременно
Это неизбежная плата за универсальность! UConfig может поддержать любую существующую версию эмулятора, а запись настроек появится (может быть) только в следующей версии Unreal, которая не будет работать на Win 9x! Ты ж не станешь заботится о пользователях, которые (и я в том числе) до сих пор под Win 98 юзают US0.22? Большинство людей предпочитают переходить на новую версию эмуля только пропустив 2- версии. Таким образом более стрые версии эмуля все еще актуальны и для них нужен конфигуратор.
А вообще, основная ценность программы - возможность переносить настройки из старой версии эмуля в новую, тем самым облегчая переход на новые версии Unreal Speccy и стимулируя закачки новых версий.

Dr.Lion/RSM
09.08.2005, 20:03
Вот подправленная версия UConfig 1.1 без глюков Resize и доступным флажком "Заполнить значениями из базы". Приношу свои извинения за предоставленные неудобства и выражаю благодарность SMT за обнаруженные глюки!

Shiru
09.08.2005, 20:10
Те люди, которые всю жизнь вручную редактируют настройки Unreal Speccy
Хе-хе, те люди ещё в школу не пошли;) Которые всю жизнь-то.

Что за слово такое - 'насторйка'? Вот копирайтище зелёный влепить - это первым делом;)

По существу пока ничего не скажу, кроме одного - неудобно. Хрен редьки получился не слаще. Подумаю, позже внесу предложения...

Dr.Lion/RSM
09.08.2005, 20:38
Хе-хе, те люди ещё в школу не пошли Которые всю жизнь-то.
Здесь всю жизнь = время работы с Unreal Speccy.

Что за слово такое - 'насторйка'?
Это, наверное, по-польски, но я думаю смысл понятен - подправлю :)

Вот копирайтище зелёный влепить - это первым делом
Ну так, на первых порах без этого просто никуда! Реклама - двигатель торговли ;)

Хрен редьки получился не слаще.
Это говорит только об одном - ты не знаешь всех возможностей программы. Неужели придется писать полномасштабный мануал?

Shiru
09.08.2005, 21:30
Это говорит только об одном - ты не знаешь всех возможностей программы
Скорее, это говорит о плохом дизайне интерфейса:)

Вообще, в Delphi/Builder нет никаких проблем с динамическим созданием контролов - можно было-бы сделать несколько страниц (по именам разделов), на которые кидались-бы чекбоксы и комбобоксы, для выбора нужных настроек. Было-бы нагляднее. Конечно, это геморно писать...

SMT
09.08.2005, 21:38
где HTTP? чего рекламировать?

Dr.Lion/RSM
09.08.2005, 23:26
Вообще, в Delphi/Builder нет никаких проблем с динамическим созданием контролов - можно было-бы сделать несколько страниц (по именам разделов), на которые кидались-бы чекбоксы и комбобоксы, для выбора нужных настроек. Было-бы нагляднее. Конечно, это геморно писать...
Программа написана на VB, а там про динамическое создание контролов ничего не говорится или я ничего не знаю. Практически в каждой версии эмуля в ini есть свои особенности. Как их все учесть при создании желаемого тобой интерфейса?

где HTTP? чего рекламировать?
Ничего не понял, что ты имеешь ввиду?

SMT
10.08.2005, 07:27
страница у программы есть?

SMT
10.08.2005, 07:31
Практически в каждой версии эмуля в ini есть свои особенности. Как их все учесть при создании желаемого тобой интерфейса
посчитать число разделов, создать столько закладок. на каждой закладке динамически в столбик (может скролл форму появится) вывести чекбоксы и списки. подсказка - всплывает

слабо так? :)

SMT
10.08.2005, 08:08
Программа написана на VB, а там про динамическое создание контролов ничего не говорится или я ничего не знаю
вот пример:
You can also program the events of a dynamically added control by declaring an object variable using the WithEvents keyword, and setting the reference returned by the method to the variable, as shown below:


Option Explicit
' Declare object variable as CommandButton.
Private WithEvents cmdObject As CommandButton

Private Sub Form_Load()
Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible = True
cmdObject.Caption = "Dynamic CommandButton"
End Sub

Private Sub cmdObject_Click()
Print "This is a dynamically added control"
End Sub

если динамически не получится, то можно тупо набросать невидимых 50 чекбоксов вниз формы и брать их оттуда по мере необходимости, перемещая в нужное место

Goga
12.08.2005, 13:26
Ребята!!! не фурычит конфигуратор, ХРsp1, ничего не грузит и не заполняет.............просто форма. Может я чегото недогрузил?

Dr.Lion/RSM
12.08.2005, 15:34
Ребята!!! не фурычит конфигуратор, ХРsp1, ничего не грузит и не заполняет.............просто форма. Может я чегото недогрузил?
Давай поподробней! Выдаются ли какие-то сообщения? Какой вид у формы (после запуска должны быть доступны один чекбокс и кнопка Load). Как ведут себя кнопки Auto и Load?
Теперь мои соображения. Я пишу программу в Visual Basic 6.0 на Win XP Proffesional SP2. Предыдущие версии откомпилированы в исполняемый код с оптимизацией по размеру. Может проблемы в самом получаемом коде, ведь VB6 писался, когда еще не было ХР! Так же Scorpion жаловался, что у него незапускается конфигуратор и выдает сообщение о проблемах с компонентом Common Dialog Control (компонент используется при выборе файла ini для загрузки). Были ли у кого-то подобные проблемы?
Сегодня я планирую выложить новую версию 1.2 в которой улучшено качество программы и исправлены мелкие неточности и глюки (возможно пополню базу записями). Я планирую откомпилировать программы в пи код, при этом она получится почти в 2 раза меньше и возможно убирутся глюки под ХР. Пи код, насколько я знаю, - это специальный код, который исполняет виртуальная машина Visual Basic, поэтому, как бы, должна быть меньшая платформозависимость. Виртуальная машина, по-идеи, входит в состав винды сразу после ее установки, по крайней мере после установки офиса она там точно есть!

icebear
12.08.2005, 16:56
Я планирую откомпилировать программы в пи код...

Разницу между ComCtl32.dll в XP и "не XP" известна? С каким пор язык VB обзавёлся виртуальной машиной?

Odrick
12.08.2005, 17:39
Так же Scorpion жаловался, что у него незапускается конфигуратор и выдает сообщение о проблемах с компонентом Common Dialog Control
Не юзай его! Какой смысл таскать за собой ocx, если все, что он делает, можно сделать через API! Если хочеш, могу скинуть пример. Скажи только куда. Кроме того, по умолчанию он есстессно не ставится ни с одной виндой.

Пи код, насколько я знаю, - это специальный код, который исполняет виртуальная машина Visual Basic, поэтому, как бы, должна быть меньшая платформозависимость. Виртуальная машина, по-идеи, входит в состав винды сразу после ее установки, по крайней мере после установки офиса она там точно есть!
Нет. Нет никакой виртуальной машины ;) Ты перепутал, наверное, с набором стандартных dll для VB. Они действительно ставятся с виндой и с офисом.

По поводу динамических контролов - не вопрос. Буквально вчера решал такую же задачку. Тавай ТЗ - помогу набросать код.

Odrick
12.08.2005, 17:42
Кроме того могу написать инсталяху для тулзни.

Dr.Lion/RSM
12.08.2005, 18:06
Разницу между ComCtl32.dll в XP и "не XP" известна? С каким пор язык VB обзавёлся виртуальной машиной?
Понятия не имею, о какой разнице идет речь! Насчет виртуальной машины: что такое по-твоему msvbvm60.dll ? Если делать инсталяху средствами VB, то в общий пакет он ложит кучу всякого геммороя, в том числе и выше указанную библиотеку, а это значит, что без нее программы на VB не будут работать. Но данная библиотека попадает на комп вместе с виндой (у меня XP без офиса), либо с офисом (это наверняка).

Не юзай его! Какой смысл таскать за собой ocx, если все, что он делает, можно сделать через API! Если хочеш, могу скинуть пример. Скажи только куда. Кроме того, по умолчанию он есстессно не ставится ни с одной виндой.
Если знаешь, то напиши мне пример, как можно заюзать это в Visual Basic через Win API. Кусок исходника можешь выложить сдесь. Вот то, что у меня юзается сейчас:

Private Function GetFileName(BoxName As String) As String
Dialog.Filter = "Файл настройки|*.ini|Текстовый файл|*.txt|Все файлы|*.*"
Dialog.Flags = cdlOFNHideReadOnly
Dialog.DialogTitle = BoxName
Dialog.FileName = ""
Dialog.ShowOpen
Dialog.InitDir = ""
GetFileName = Dialog.FileName
End Function

Напиши, пожалуйста, альтернативу под API.

Кроме того могу написать инсталяху для тулзни.
Какая здесь нафиг инсталяха? Архив с тремя файлами распаковывается в каталог эмуля - и все!

Odrick
12.08.2005, 18:49
Насчет виртуальной машины: что такое по-твоему msvbvm60.dll ? Если делать инсталяху средствами VB, то в общий пакет он ложит кучу всякого геммороя, в том числе и выше указанную библиотеку, а это значит, что без нее программы на VB не будут работать.
:) msvbvm60.dll - всего лиш набор com-серверов, которые реализуют стандартные GUI-элементы VB и основные функции языка. Но это никак не виртуальная машина ;) Так можно любую dll с com-объектами и функциями назвать виртуальной машиной.

Какая здесь нафиг инсталяха? Архив с тремя файлами распаковывается в каталог эмуля - и все!
Это да. Но справедливо только в том случае, если у юзера есть все компоненты, нужные для работы софта. По хорошему это делается так: вылаживается минимальная версия (архив с 3-мя файлами :) ) и полная инсталяха. Но только сделанная не "стандартными средствами VB" ;) . А дальше пусть каждый качает то, что ему нужно.

По поводу диалога выбора файла. Сделай модуль, вставь в него следующий код и пользуй функцию opendlg. Думаю смысл всех параметров ясен ;) Так как здесь юзается чистое API, ничего лишнего типа comdlg32.ocx за собой таскать не прийдеться :)



Option Explicit 'Чтоб все объявить явно

Public Enum ofnflags 'Флаги API GetOpenFileName
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_ENABLEHOOK = &H20
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EXPLORER = &H80000 ' new look commdlg
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000 ' force long names for 3.x modules
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000 ' force no long names for 4.x modules
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
End Enum

Private Type OPENFILENAME 'Структура для API GetOpenFileName
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Public Function opendlg(hwnd As Long, Filter As String, FilterIndex As Long, FileName As String, DefaultExt As String, InitDir As String, DialogTitle As String, flags As ofnflags) As String
'Функция вызывает окно выбора файла, возвращает выбранный файл (или пустую строку в случае отмены)
Dim iDelim As Long
Dim OFN As OPENFILENAME 'Структура для API GetOpenFileName
Dim sTemp As String
Dim i As Integer
Dim retval As Long 'Значение возвращаемое самой API

flags = flags And (&H1 Or &H2 Or &H4 Or &H8 Or &H10 Or &H100 Or &H200 Or &H400 Or &H800 Or &H1000 Or &H2000 Or &H4000 Or &H8000 Or &H40000 Or &H80000 Or &H100000 Or &H200000) 'Эти флаги не должны стоять в открытии, сбросить их

With OFN
'Длинны структуры
.lStructSize = Len(OFN)
'Дескриптор окна
.hwndOwner = hwnd
'Коментарии излишни, флаги
.flags = flags
'Расширение по умолчанию, тоже нужно хоть и открытие :-(
.lpstrDefExt = DefaultExt
sTemp = InitDir
'Если не выбрана парка то папка с прогой
If sTemp = "" Then sTemp = App.Path
.lpstrInitialDir = sTemp
sTemp = FileName
'Все заполнить символом chr(0). Надо!
.lpstrFile = sTemp & String$(255 - Len(sTemp), 0)
.nMaxFile = 255
.lpstrFileTitle = String$(255, 0)
.nMaxFileTitle = 255
sTemp = Filter
'Чтоб ни мучится с выписыванием chr(0) в вызов ф-ии
For i = 1 To Len(sTemp)
If Mid(sTemp, i, 1) = "|" Then
Mid(sTemp, i, 1) = vbNullChar
End If
Next
sTemp = sTemp & String$(2, 0)
.lpstrFilter = sTemp
.nFilterIndex = FilterIndex
.lpstrTitle = DialogTitle
.hInstance = App.hInstance
End With

'Вызов API
retval = GetOpenFileName(OFN)
'А все ли ОК?
If retval = 0 Then
opendlg = ""
Else
'первый символ chr(0)
iDelim = InStr(OFN.lpstrFile, vbNullChar)
'Удалить лишнии chr(0)
If iDelim Then opendlg = Left$(OFN.lpstrFile, iDelim - 1)
End If
End Function


Да, посмотрел интерфейс - хотелось бы все-таки что-то в духе списка с ветками настроек слева и странички справа с параметрами. И чтобы каждый параметр редактировался с помощью своего контрола. Так по моему удобнее будет... Но это так, мое мнение :)

Dr.Lion/RSM
12.08.2005, 18:59
По поводу диалога выбора файла. Сделай модуль, вставь в него следующий код и пользуй функцию opendlg. Думаю смысл всех параметров ясен Так как здесь юзается чистое API, ничего лишнего типа comdlg32.ocx за собой таскать не прийдеться
Вот это чтоб получить несчастное имя файла, мне нужно эту хреновину вставить? Я так ничего и не понял, что там к чему и как этим пользоваться! Помоему, я где-то когда-то видел Диалог через АПИ, но там было все намного короче и понятней, вот вспомнить бы где видел!

Dr.Lion/RSM
12.08.2005, 19:03
Вот последняя версия программы. Об изменениях и дополнениях читайте в файле about. Как и обещал, откомпилено в пи код. Жду новых сообщений о глюках!

Odrick
12.08.2005, 19:08
Ндя... Объясняю: Это код для отдельного модуля. То есть, добавляеш в проект модуль, обзываеш его как-нить OpenDialog.bas и вставляеш туда код. Для того, чтобы вызвать диалог открытия файла в твоем случае делаеш так:

Private Function GetFileName(BoxName As String) As String
GetFileName = opendlg(Me.hwnd, "Файл настройки|*.ini|Текстовый файл|*.txt|Все файлы|*.*", 0, "", "", "", BoxName, OFN_HIDEREADONLY)
End Function

Так понятнее? ;) Или нужно более подробно расписать текст модуля? Давай мыло - напишу подробно с теорией использования API в VB :) А то что большой модуль - так он и реализует все что нужно в диалоге выбора файла. Могу укоротить его раза в 3. Но тогда он будет несколько убог по функциональности.

Dr.Lion/RSM
12.08.2005, 19:40
Ндя... Объясняю: Это код для отдельного модуля. То есть, добавляеш в проект модуль, обзываеш его как-нить OpenDialog.bas и вставляеш туда код. Для того, чтобы вызвать диалог открытия файла в твоем случае делаеш так:

Private Function GetFileName(BoxName As String) As String
GetFileName = opendlg(Me.hwnd, "Файл настройки|*.ini|Текстовый файл|*.txt|Все файлы|*.*", 0, "", "", "", BoxName, OFN_HIDEREADONLY)
End Function
Вот теперь понятно, что я должен вставить в свою программу. В версии 1.3 попробую.

Давай мыло - напишу подробно с теорией использования API в VB А то что большой модуль - так он и реализует все что нужно в диалоге выбора файла. Могу укоротить его раза в 3. Но тогда он будет несколько убог по функциональности.
Вот мыло:[email protected] расталкуй, если можешь, по поводу Win API. Укоротить твой пример не мешало бы, ибо диалог у меня используется только для открытия файла в таком виде, как я тибе приводил пример. Еще, что мне нужно вставить в программу вместо:

IniName=Dialog.FileName

и как мне быть со строками из моего примера:

...
Dialog.FileName=""
...
Dialog.InitDir=""
...

Odrick
12.08.2005, 19:57
Рассмотрим внимательно параметры функции:

Public Function opendlg(hwnd As Long, Filter As String, FilterIndex As Long, FileName As String, DefaultExt As String, InitDir As String, DialogTitle As String, flags As ofnflags) As String

Dialog.FileName это аналогичный параметр функции FileName
Dialog.InitDir = параметр InitDir

Так что это все задается во время вызова, а не предварительно как в случае с
CommonDialogControl :)


Еще, что мне нужно вставить в программу вместо:
IniName=Dialog.FileName
Подожди, насколько я понял у тебя есть функция GetFileName, которая возвращает имя выбранного файла?

Odrick
12.08.2005, 19:59
Да, вот еще - нарыл класс, который реализует на API всю функциональность CommonDialogControl. Приглашаю тебя его юзать. Иначе тебе прийдется всех юзеров обязать устанавливать у себя comdlg32.ocx, что не есть гуд ;)

SMT
12.08.2005, 20:00
а можно ещё использовать стандартный компонент TreeView. и динамически ничего не надо создавать, и группировки можно делать многоуровневые, как захочешь

Dr.Lion/RSM
12.08.2005, 22:02
Подожди, насколько я понял у тебя есть функция GetFileName, которая возвращает имя выбранного файла?
Да, а кроме нее в некоторых местах читаются свойства Dialog.FileName

а можно ещё использовать стандартный компонент TreeView. и динамически ничего не надо создавать, и группировки можно делать многоуровневые, как захочешь
Я бы с радостью, но компонент TreeView находится в Microsoft Windows Common Controls 6.0, а это еще одна библиотека, которой опять у кого-то не окажется! Но, впринципе, если у меня получиться, я сделаю навигацию по группам параметров и самим параметрам в виде дерева. Значения параметров будут задаваться так же, как сейчас (через комбобокс).
В последней выложенной версии 1.2 ввел отсичение из записи базы параметров, которые отсутствуют в загруженном ini. Это полезная фишка, позволяющая делать одну опщую запись для нескольких версий эмулятора (в параметре записи SUPPORT перечисляются номера поддерживаемых версий) но в базе я пока ее не использовал (нужно проанализировать базу и выявить возможности обьединения версий).

Raider
12.08.2005, 22:42
Разницу между ComCtl32.dll в XP и "не XP" известна? С каким пор язык VB обзавёлся виртуальной машиной?

С самых начальных.
Если не в курсе - "EXE" которые делает VB - являются байт-кодом бейсика, который исполняет msvbm.60.dll

>verinfo MSVBVM60.DLL
company: Microsoft Corporation
file description: Visual Basic Virtual Machine
file version: 6.00.9690
internal name: MSVBVM60.DLL
legal copyright: Copyright c 1987-2000 Microsoft Corp.
legal trademarks: MicrosoftR is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Co
ration
original filename:
product name: Visual Basic
product version: 6.00.9690
comments: September 3, 2002

Raider
12.08.2005, 22:47
Да, а кроме нее в некоторых местах читаются свойства Dialog.FileName

Я бы с радостью, но компонент TreeView находится в Microsoft Windows Common Controls 6.0, а это еще одна библиотека, которой опять у кого-то не окажется!

Она может не оказаться только у любителей windows 95.

Odrick
13.08.2005, 01:45
Да, а кроме нее в некоторых местах читаются свойства Dialog.FileName
Ага. Ну тогда можеш для этого ввести переменную для хранения текущего имени, или все же пользовать тот класс, что я выложил выше. Пользовать его проще-простого. Почти ничем не отличается от CommonDialogControl. Нужно его добавить в проект и использовать можно примерно так:



Option Explicit

Dim cdlg As New CommonDlg

Private Sub Command1_Click()
cdlg.hWndOwner = Me.hWnd
cdlg.FileName = ""
cdlg.DefaultExt = "ini"
cdlg.InitDir = ""
cdlg.Filter = "Файлы ini|*.ini|Все файлы|*.*"
cdlg.DialogTitle = "Выбор файла"
cdlg.Flags = dhFileOpenConstants.cdlOFNReadOnly
cdlg.ShowOpen
End Sub


Пример тоже выкладываю.


file description: Visual Basic Virtual Machine
И на основании этого вы делаете вывод, что VB имеет некую Виртуальную машину? :D Повторюсь еще раз: давайте тогда называть виртуальной машиной, например, gdi32.dll. Почему бы нет? Тоже имеет набор функций, которые используют все програмы под виндой ;)


Если не в курсе - "EXE" которые делает VB - являются байт-кодом бейсика, который исполняет msvbm.60.dll
Извините, но это чушь ;) Exe на то и exe, что это исполняемый код. И по барабану чем он скомпилен. Повторюсь - в msvbm.60.dll лежат всего лиш стандартные VB-шные функции и серверы com-объектов. Я работаю на VB уже 8 лет, так что... Не верите мне, зайдите на http://bbs.vbstreets.ru/viewforum.php?f=1 и задайте вопрос, что ж собой являет exe, скомпиленый в VB ;)


Она может не оказаться только у любителей windows 95.
Ну-ну. Напишите смеха ради програмульку с деревом, а потом переустановите винду. И на чистой винде попробуйте ее запустить ;)

Dr.Lion/RSM
13.08.2005, 02:26
Ну тогда можеш для этого ввести переменную для хранения текущего имени, или все же пользовать тот класс, что я выложил выше. Пользовать его проще-простого. Почти ничем не отличается от CommonDialogControl.
Наконец-то мне объяснили, как использовать этот аналог Common Dialog Control. Буду внедрять в следующую версию 1.3, надеюсь это уберет зависимость программы от comdlg32.ocx! В новой версии так же планируется расширить и реорганизовать базу версий, возможно немного изменить интерфейс. Выход новой версии 1.3, которая будет вполне полноценной и пригодной для широкого использования, намечен на первую половину следующей недели. А теперь пара вопросов:
Так стоит ли мне мучаться с деревьями, дабы улучшить навигацию по параметрам, или нет, потому что это может породить новые проблемы и выход полной стабильной версии опять задержится?
Как вы относитесь к подобранной мной иконке? Может ее нужно сменить на другую? Лично мне эта очень нравиться и вполне соответствует по смыслу самой программе.
Cooper пообещал на этих выходных разместить на нашем сайте realsoftmakers.nm.ru последнюю версию (на данный момент 1.2) UConfig, так что заходите и качайте!

Odrick
13.08.2005, 03:27
Наконец-то мне объяснили, как использовать этот аналог Common Dialog Control.
Всегда пожалуста :)

Буду внедрять в следующую версию 1.3, надеюсь это уберет зависимость программы от comdlg32.ocx!
Точно уберет.

Так стоит ли мне мучаться с деревьями, дабы улучшить навигацию по параметрам, или нет, потому что это может породить новые проблемы и выход полной стабильной версии опять задержится?
ИМХО дерево не нужно. Красиво, но причина ясна. Лучше простой лист-бокс слева с списком главных разделов эмуля. Рядом - список веток выбранного раздела. Еще правее - список значений. Все это не комбиками, а именно лист-боксами. Так будет нагляднее, как по мне. А там можно заморочится и с динамическими контролами, когда логика будет отлажена ;)

Shiru
15.08.2005, 16:05
Раньше всегда юзал US с фильтром double (не люблю размытие), на старом мониторе стояло разрешение 800х600. Сейчас сменил монитор на большую TFT девятнашку, приходится ставить 1280х1024, и фильтр double стал неюзабелен - получается окошко в четверть экрана. Может, стоит добавить фильтры triple/quadro?:)

icebear
15.08.2005, 16:44
С самых начальных.
Если не в курсе - "EXE" которые делает VB - являются байт-кодом бейсика, который исполняет msvbm.60.dll

Про exe в курсе. Оказывается мелкомягкие у сантехников не только пол-явы украли :) Только вот не уверен я, что компилится это всё в байт-код.

SMT
15.08.2005, 19:10
Shiru, слишком просто. я подумаю, как можно сделать поинтереснее для больших разрешений... сам я, в основном, смотрю в окне. на столе тоже 1280x1024

SMT
15.08.2005, 20:01
вот не уверен я, что компилится это всё в байт-код
а зачем тогда они преподносили компиляцию в native-код, появившуюся в 5-й версии, как преогромнейшее достижение? :) шутка раньше была, насчёт байт-кода?

Odrick
15.08.2005, 20:03
Про exe в курсе. Оказывается мелкомягкие у сантехников не только пол-явы украли Только вот не уверен я, что компилится это всё в байт-код.
Точно не компилится ;) Иначе была бы возможность "распаковать" exe-шник в удобоваримый листинг программы. А это, естественно, невозможно. Так как и невозможно увидеть имена переменных, как это было бы в случае с байт-кодом. Был в свое время распаковщик для VB5, но работал он просто вычитывая обращения к функциям из msvbm50.dll и на основании этого строил некий листинг. Но совершенно неудобоваримый с именами функций типа func1, переменных типа var1 и т.д. По моему даже размерности не вытягивал - везде Variant лепил. А для VB6 и того нет, есстессно. Так что не байт-код, а все же полноценный исполнимый код ;)

SMT
15.08.2005, 20:16
Точно не компилится Иначе была бы возможность "распаковать" exe-шник в удобоваримый листинг программы
вовсе нет, преобразование не обязано быть взаимно однозначным, оптимизатор даже может пройтись по байт-коду

зы бывает байт-код похуже асма. такую виртуальную машину изобредут, вовек не разгадаешь :)

Odrick
15.08.2005, 21:33
Каюсь-каюсь :) Только что ради интереса порылся в и-нете по поводу вариантов компиляции приложений VB - действительно до 5-й версии проекты компилились в некий p-код, который и был тем самым пресловутым байт-кодом. Начиная с 5-й версии VB компиляция происходит в Native код (код комманд процессора), но возможность компиляции в p-код сохранена. Ндя... Проработав 8 лет на VB6 о таком моменте в истории VB не знал :) А по умолчанию проекты компилятся в Native, есстессно... Приношу извинения :)

icebear
16.08.2005, 12:29
а зачем тогда они преподносили компиляцию в native-код, появившуюся в 5-й версии, как преогромнейшее достижение? :) шутка раньше была, насчёт байт-кода?

Я не в курсе, как это устроено в VB, только знаю, что язык это интерпретируемый. А понятия "интерпретация" и "байт-код" у меня как-то не вяжутся. Либо мои знания о VB вообще нифига не стоят :) Но "виртуальная машина VB" звучит как-то необычно.

Odrick
16.08.2005, 12:43
Я не в курсе, как это устроено в VB, только знаю, что язык это интерпретируемый.
Нет. После компиляции в Native-код никакой интерпритации уже не происходит. Справка: Native-код - это набор команд процессора, струппированные в файл плюс парочка управляющих процедур. Какая уж тут интерпритация? ;) Ладно, по-моему пора с этим уже заканчивать, а то перерастает в флейм... Если кому интересна специфика работы VB, это можно выяснить отдельно ;) Напоследок только хочу сказать, что с выходом 5-й версии, VB превратился действительно в мощную и полноценную среду разработки. По быстродейтсвию код VB стоит сразу после VC (в некоторых задачах, а в некоторых превышает, а еще в некоторых остается далеко позади ;)). Так что ругать VB сейчас уже просто не за что :)

SMT
16.08.2005, 13:29
А понятия "интерпретация" и "байт-код" у меня как-то не вяжутсяпрограмма компилируется в байт-код, который потом интерпретируется, так как не может напрямую выполняться процессором


Но "виртуальная машина VB" звучит как-то необычно
в MSDN и не таких сочетаний насмотришься...


По быстродейтсвию код VB стоит сразу после VC (в некоторых задачах, а в некоторых превышает, а еще в некоторых остается далеко позади ).неудивительно, ведь у всех ms-компиляторов общий back-end


Так что ругать VB сейчас уже просто не за чтокомпилятор не за что, а сам язык корявый

Odrick
16.08.2005, 15:36
компилятор не за что, а сам язык корявый
Не буду спорить - устал уже ;) Это обсуждалось тысячи раз на разных форумах. И подобных заявлений я слышал уже море. Но на просьбу ответить, почему же он корявый ни одного вразумительного ответа я не услышал. Возможно, это связано со стереотипом, установленным в СНГ еще со времен СССР. По старой памяти о Basic'ах, которыми нас запихивали в школе ;) VB сейчас имеет с ними ооочень мало общего. Возможно, по причине не очень хорошего его знания и понимания.

SMT
16.08.2005, 15:45
ну так покажи, как описать маасив вместе с его заполнением, например

char x[4] = { 0,1,2,3 };
или
var x: array [1..4] of char = (1,2,3,4);

Odrick
16.08.2005, 15:58
;) Да, это невозможно. Только вот зачем? Мне удобнее и понятнее вначале описать массив, а потом уго заполнять. Это всего лиш вопрос удобства и привычки и не может быть камнем в огород VB :) С таким же успехом я могу спросить у любителя Pascal как красиво сделать цикл с произвольным шагом? На что он мне резонно ответит, что красивой конструкции в языке нет, но сделать можно и ему так удобнее и читабельнее. С чем я, конечно же, соглашусь. Что еще? ;)

SMT
16.08.2005, 16:05
всё так, только таких камней целый огород, да и паскаль тоже ацтой :)

Odrick
16.08.2005, 16:23
Ну что ж ты так категоричен? :) Паскаль хороший язык, Бейсик хороший язык, С хороший язык. Все зависит только от привычки. Тебе удобнее так - все остальное тебе будет казаться ацтоем. А при современном уровне развития компиляторов на ресурсоемкость и быстродействие практически никак не сказывается среда разработки. Сказываются только кривые руки и багаж знаний ;)

SMT
16.08.2005, 16:30
а ассемблер какой замечательный язык!

Odrick
16.08.2005, 16:42
А то! Конечно замечательный. Уверен, найдутся тысячи людей, готовых закидать гнилыми помидорами программистов на языках высокого уровня ;)

cooper_rsm
19.08.2005, 00:49
Jeffie, вообще-то у группы RSM есть собственная страничка в инете - http://realsoftmakers.nm.ru. Поэтому давай ссылку на прогу-конфигуратор на сайте сценерджи именно туда, а не на форум. Автору будет приятней вдвойне :)

2Модеры: сорри, за оффтоп.

C-jeff
19.08.2005, 01:00
Jeffie, вообще-то у группы RSM есть собственная страничка в инете - http://realsoftmakers.nm.ru. Поэтому давай ссылку на прогу-конфигуратор на сайте сценерджи именно туда, а не на форум. Автору будет приятней вдвойне :)

2Модеры: сорри, за оффтоп.
Пофиксил.

SMT
24.08.2005, 22:42
сабж! в именах файлов букву 'b' забыл, но с sf бороться невозможно - что упало, то пропало :(

SMT
25.08.2005, 08:22
version 0.31b 24 aug 2005

! atapi: sense key not placed into error register on ATAPI error
! atapi: fixed bug in ATAPI commands, that don't return data block
! atapi: fixed bug with DRQ on end of ATAPI data block
! gs: "save mod" was disabled since 0.28b [fb TJ]
! fixed bug in window size after leaving fullscreen [fb Tj]
+ new funny led shows R/W/X dynamic in spectrum memory [sb Raider]
+ keyboard shortcuts in windowed mode: Alt-1, Alt-2, Alt-3
+ 4x scale video filter [sb Shiru Otaku] (set minres=1024 to avoid 1280x960)
+ shows condition hit and jp/ret/call direction in trace window [sb Dexus]
+ monitor: Alt-F9 shows only ray-painted screen area
+ monitor: Alt-S cycles through watches / screen dump / ray-painted
- monitor: mon.render hotkey is deleted (as obsolete)
* monitor: detection internal loop exit when tracing loop on F8 [sb Dexus]
+ monitor: fill memory with pattern [sb Raider]
* FDD & FDC code comletely rewritten, bugs may appear
! when saving disk image, prefer original format as default, not TRD
! CacheVox works fine with [BETA128]Fast=0. no other emul can handle this yet
! better WD1793 sector write emulation (overwrite old gap and data AM)
+ monitor: more fields in beta128 panel (see docs)
@ visual ini-file editor available at http://realsoftmakers.nm.ru/RSM.files/download.htm

Dexus
25.08.2005, 15:50
SMT, небольшое примечание по поводу "стрелок" - во-первых цвет красный на фиолетовом фоне не очень хорошо видно, во-вторых - можно было бы показывать КУДА пойдет этот переход, типа стрелочкой влево? Тогда сразу будет удобно видеть куда уйдет, если в пределах экрана, или даже если за пределами - то проскрулял и быстро нашел то место, которое надо. Вертикально "вытягивать" стрелку через все строки промежуточные - наверно не надо, а вот точка перехода была бы кстати :)

И еще - насчет текущего отрендеренного экрана - нельзя ли сделать микроградиентика в той точке, где находится луч?
т.е. например в конкретно той точке где находится луч - на 8 единичек яркость выше...предыдущие - вплоть до 0...

SMT
25.08.2005, 17:34
цвет красный на фиолетовом фоне не очень хорошо видноэто если курсор стоит на правом поле. а если на левом, то фон - белый. сразу не хотел менять цвет в зависимости от положения курсора. надо, всё-таки, поменять


нельзя ли сделать микроградиентика в той точке, где находится лучэто сложно. рисовалки во всех видеорежимах берут буфер "байт пикселей на байт аттрибутов". а alf-f9 лишь подготавливает закрашенный после луча буфер и вызывает рисовалку от текущего видеофильтра, придётся менять все видеофильтры. да и на экране нет точки луча, контроллер читает сразу целый байт из озу, поэтому сейчас корректнее :)

SMT
25.08.2005, 22:07
по просьбе Ordick'a выкладываются редкие РОМы

Odrick
26.08.2005, 01:13
О, пасибочки ;)

Dexus
27.08.2005, 23:14
это сложно. рисовалки во всех видеорежимах берут буфер "байт пикселей на байт аттрибутов". а alf-f9 лишь подготавливает закрашенный после луча буфер и вызывает рисовалку от текущего видеофильтра, придётся менять все видеофильтры. да и на экране нет точки луча, контроллер читает сразу целый байт из озу, поэтому сейчас корректнее
Ок согласен по байту корректнее. Но по-моему не совсем корректно то, что ПОСЛЕ луча нету предыдущего кадра... ведь он реально там остается видимый.. и именно от того появляются эффекты "скошенности" при неудачно сделанных скроллах, или частичного пропадания спрайтов на некоторых схемах, где синхроимпульс начинается ровно с paper'а.
Было бы более удобно видеть не только УЖЕ нарисованное (да и голубой фон базовый как то немного страннен), но и то что ЕЩЕ не стерто. ХОтя бы каким нибудь яркостным переходом... Типа эмуляция "гашения" люминофоров. То что только что прорисовано - ярче. то что самое старое (перед лучем) - еле видимое... или за лучем градиент такой... начиная от очень темного (33% допустим, сразу после байта который рисует луч), постепенно до 100%.. строчек на 10 размазать... Главное чтобы граница наглядная была между рпошлым кадром и текущим..
Извиняюсь что опять озвучил свою мысль :)
Правда это наверно сложно будет сделать. Зато реалистично и

SMT
28.08.2005, 03:49
фон такой, чтобы с фоном программы редко совпадало. градиенты невозможны с текущей архитектурой видео, она расчитана на любой видеорежим (начиная от 8 бит, именно в 8 бит работает фильтр gdi, включенный по умолчанию). можно использовать лишь 16 спектрумовских цветов (отладчик ведь может и в 640x480x8 работать). УЖЕ нарисованное было видно в прошлых версиях :) но тут же на форуме просили сделать рисование до луча. "скосы" как раз будут видны, когда луч дорисует кадр. а скос между "до луча" и "после луча" не должно быть видно, это нормально. разве что я могу сделать так: не стирать пиксели после луча, а ставить их синими на циановом фоне, тогда будет видно и старое изображение (без цветов), и новое. бордюры и мультиколоры не будут видны, поэтому ценность такого изображения сомнительна

SMT
28.08.2005, 03:56
то есть можно, конечно, эти функции отладчика сделать зависимыми от режима экрана, но честно говоря, написание функций под все битности и скейлы в разных видеофильтрах меня уже достало. так что, раз уж всё равно взялся делать альтернативную ветку, запросто можешь подрисовать и градиенты по вкусу :)

Kubas
28.08.2005, 15:20
Привет !

2SMT:
Кажется, в новом движке FDD есть глюк - BestView при отключенном No Delays не хочет ничего загрузить - появляется желтый border. (при включенном No Delays - все O.K.)

Еще заметил, что в TV Emulation (также в Frame Resamper, но там это не мешает) нельзя уже включить опцию VSync (это появилось в US v0.30, ранее было O.K.) Из-за того анимация выглядит хуже.

Dr.Lion/RSM
28.08.2005, 15:29
А еще мне не нравится следующее. Если эмулятор работает в полноэкранном режиме (driver=ddraw), то при нажатии Alt+F1 окно настроек получается громадного размера и не умещается на экран, что затрудняет навигацию по настройкам. К части контролов вообще невозможно добраться. Было бы полезно на момент входа по Alt+F1 переводить эмулятор в GUI режим. Я работаю при разрешении 1024x768, а какое там разрешение выставляет эмуль в полноэкранном режиме я не знаю.

SMT
28.08.2005, 16:18
Кажется, в новом движке FDD есть глюк
понятно, буду доделывать


Еще заметил, что в TV Emulation (также в Frame Resamper, но там это не мешает) нельзя уже включить опцию VSync

да, на радеонах vsync в оверлее выглядит ужасно (сильно тормозит). сегодня поставил 6600GT - там действительно нужен vsync. ну что ж, буду подгонять под моё сегодняшнее железо :)


то при нажатии Alt+F1 окно настроек получается громадного размера
но ведь minres=480 по умолчанию в ini включен...

lvd
28.08.2005, 17:38
Кажется, в новом движке FDD есть глюк - BestView при отключенном No Delays не хочет ничего загрузить - появляется желтый border. (при включенном No Delays - все O.K.)

Это глюк не движка фдд, а бествью, у которого от чумовой скорости диска и вгшки крыша едет =) А вообще конечно бествью давно пора под 3д13 делать, по понятным причинам.

SMT
28.08.2005, 18:39
также в Frame Resamper, но там это не мешает
там наоборот, нельзя выключить. и правильно - если выключить, пропадёт плавность, и тогда этот фильтр станет бесполезным

Dexus
28.08.2005, 18:40
так что, раз уж всё равно взялся делать альтернативную ветку, запросто можешь подрисовать и градиенты по вкусу
я не собирался делать альтернативную ветку. просто пытаюсь внедрить ЧМ синтезатор в Ваш эмулятор по причине того что Вы сами этого делать не собираетесь.

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

SMT
28.08.2005, 18:43
best view очень странно себя ведёт в своём главном цикле: даёт команды #00, #18, #D0 и после некоторых команд сразу сброс черех порт #FF, чтобы они и не думали двигать головки. как работает WD93 я не нашёл ни в одном даташите, поэтому и не знаю, как правильно сделать эмуляцию (по некоторым признакам, он должен позиционировать головку на трек 0, но с другой стороны, контроллер сразу после сброса готов к приёму команды, и что в этом случае с позиционированием, неясно)

SMT
28.08.2005, 18:46
ой, недописал. читать выше "как работает сброс WD93"

Dexus
29.08.2005, 09:22
А по какой причине сабж не работает под 98/me?
Может быть эту несовместимость как-нибудь можно устранить?

kyv
29.08.2005, 11:13
а ещё забавный глючок есть :) дома я в инет выхожу через диалап,и если во время соединения запустить Unreal и нажать Ctrl+F12,то связь прервётся :eek:

SMT
29.08.2005, 18:13
если во время соединения запустить Unreal и нажать Ctrl+F12,то5 баллов! (за отличную шутку:))

А по какой причине сабж не работает под 98/me
1. работа с физическими девайсами разная. в 9x винты через VWIN32, cd через ASPI, альтернативного кода в unreal нет. звуковые буферы надо увеличивать и в wave, и в DirectSound, иначе глючит. не поддерживается запрос/смена refresh, frame resampler будёт работать неверно
2. использование фич nt5 без проверки их наличия. точно все не помню, но ещё когда была у меня тестовая 98, заметил что для колеса мыши нужно определить _WIN32_WINNT=0x0500 перед SDK, а 98-й comdlg32 не работает в таком режиме компиляции. сейчас наверняка ещё что-то прибавилось. раньше был код для обходов оконных глюков 9x (чего-то хреново обновлялось или перерисовывалось), теперь я его поубивал

Может быть эту несовместимость как-нибудь можно устранитьконечно. нужно лишь поставить себе 98, и долго и методично искать и убивать глюки. кстати, если кто-то решится, Alone Coder будет очень благодарен, он меня уже запинал на этот счёт

SMT
29.08.2005, 18:16
Dexus, плиз, когда будешь выкладывать обновлённые версии, переделай стартовые строчки, чтобы было видно отличие. и фразу насчёт sf.net убери или переформулируй, что там, мол оригинальная версия, а не именно эта

Dexus
29.08.2005, 19:44
конечно. нужно лишь поставить себе 98, и долго и методично искать и убивать глюки. кстати, если кто-то решится, Alone Coder будет очень благодарен, он меня уже запинал на этот счёт
Уф... 98е ставить.. это жестоко. Вряд ли я на это решусь.. К тому же никто кроме Вас не знает лучше что где править. Как я уже сказал - легче сделать с нуля, чем разобраться в чужом, и тем более отлавливаьт чужие глюки.

Вообще его бы под НТями запустить "нормально". Если не поставишь приложению приоритет high, то постоянно рвется звук если что-то в фоне происходит... бесит. Это же насколько я понимаю из-за синхронной работы? Звуковой поток же нельзя пустить ассинхронно, не трогая все остальное... тут бы наверно как раз выставление высокого приоритета помогло бы... че там эти 10-20% максимум...


Dexus, плиз, когда будешь выкладывать обновлённые версии, переделай стартовые строчки, чтобы было видно отличие. и фразу насчёт sf.net убери или переформулируй, что там, мол оригинальная версия, а не именно эта
Окей, но я вроде и так там малость добавил. Оригинальные то не решаюсь портить - все-таки не мой продуктъ.

Но вообще мне не хотелось бы "альтернативную" развивать. Хотелось бы чтобы все эти "добавки" были в основной.

SMT
29.08.2005, 20:08
Уф... 98е ставить.. это жестоковот-вот, и мне этот мастдай как пятая нога :) а откуда вопросы насчёт 98-й, если ты её сам не любишь