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

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


Сообщения - GManiac

Страницы: Назад 1 ... 37 38 39 40 [41] 42 43 44 45 ... 69 Далее
1201
Картриджи / диски / Re: Новые дампы
« : 11 Октябрь 2009, 02:40:11 »
Сделал наконец правильный дамп БИОСа. Как и ожидалось, правильный вектор 0xFFFFFD0C, но лучше один раз подтвердить, чем сто раз догадываться :) См. первый пост.
Размер самого биоса - 128 кб, но он зеркалируется в блок в 2 мб, т.е. всего 16 зеркал. Интересный момент: все чётные зеркала содержат кривой вектор, нечётные - правильный.
С чем может быть связано искажение вектора?

Добавлено позже:
Ещё... как отправить дамп в тосек?

1202
Смотри мой исходкик, там всё это вписано, но всё равно не пашет.

;      pop ecx
;      pop ebx
значит, что эти команды заккоментированы, т.е. не исполняются. Там все команды в read присутствуют, а в write закомментированы - значит, так надо.

1203
Не эмулятор не будет знать, а ассемблер. Эмулятору побоку.
Не без разницы, у тебя есть массив РАМ - 2 метра, от 0 до 1FFFFF. Если даётся команда записать что-то в адрес $8542 во второй блок РАМ, это будет 80000 + 8542 = 88542.

1204
Никак не получается. Я уже не знаю, что придумать. То ли мы что-то упустили, то ли ещё до обращения к этому файлу адрес автоматом отображается в 64кб РАМ.

Цитата
xor ebx, 0xE00001 ???
нет, т.к. отображать надо в массив РАМ, а не РОМ, т.е. 14-й мегабайт идёт в 0-й, 15-й - в 1-й, посмотри мой исходник - поймёшь.

К слову о "слепой зоне". Если оставить твой исходник, то 13-й мегабайт рома отображается в 14-й мегабайт пространства эмулятора (из-за сдвигов). И если не учесть сдвиг, то ассемблер при обращении к 13-му мегабайту напишет команду с ссылкой именно на 13-й мегабайт (он же не знает про сдвиг), а в эмуляторе 13-й мегабайт - это VDP. И получится косяк. Раз хак Кабала работает нормально, значит, они это учли..... ну там просто треки впихнули в конец, я так понял.
Вот что я имею в виду:
        lea ssilka,a0          ; lea $c00000,a0
        move d0,(a0)        ; move d0,$c00000 - обращение к VDP
...
* это место в роме - 0xC00000
ssilka:
        dc.b 'данные'

1205
ТЬФУ ТЫ, ты же процедуры записи M68K_Write_Byte_Ram и M68K_Write_Word_Ram не поменял, вот и вся разгадка.

1206
Я тут подумал, ведь надо для блоков РАМ тоже прописать XOR, отображающий относительный ebx в абсолютный. Т.е. сделать так:
dd M68K_Read_Byte_Ram0, ; 0xE00000 - 0xE7FFFF
dd M68K_Read_Byte_Ram1, ; 0xE80000 - 0xEFFFFF
...
...
M68K_Read_Byte_Ram0:
and ebx, 0x7FFFF
xor ebx, 1
mov al, [Ram_68k + ebx]
pop ebx
ret

M68K_Read_Byte_Ram1:
and ebx, 0x7FFFF
xor ebx, 0x80001
mov al, [Ram_68k + ebx]
pop ebx
ret
И т.д., точно так же, как для рома. Но почему РАМ не расширяется даже на 132 кб - непонятно. У меня E00000 и E10000 - одинаковые адреса получаются...

1207
Цитата
дык а тут то    другие адреса:  A00000-CFFFFF
Понял. Невнимательный я.
А ОЗУ и впрямь не работает...

Добавлено позже:
Ну главное, 13-метровый хак Кабала запускается. Если ещё сделать 2 метра ОЗУ, Кабал описается от счастья :lol:

1208
Потому что 14. Ты не считай, сколько кусков ты прибавил. У тебя по карте памяти линейное пространство рома начинается с 0 и заканчивается здесь
dd M68K_Read_Byte_RomP, ; 0xD80000 - 0xDFFFFFЗначит, и файл максимальный будет 14 мб.
А эти куски
dd M68K_Read_Byte_Misc, ; 0xA00000 - 0xA7FFFF
dd M68K_Read_Byte_VDP, ; 0xC00000 - 0xC7FFFF
врезаются в пространство рома, но их трогать нельзя, иначе Z80, I/O и VDP не будут работать. Что будет: эмулятор-то 14-мбайтный ром, но при попытке обращения к системным адресам вызовутся ИХ функции (а не функции обращения к рому, т.к. для этих блоков ты их не прописал - потому что нельзя) и вместо обращения к рому будет обращение куда надо. Это "слепая зона" в роме - она просто не видится в эмуляторе.
Поэтому максимальный ром 14 мб, из них два блока по 512 кб в нём не будут видны в эмуляторе - итого доступно 13 мб.
Кстати, т.к. системные адреса не занимают полностью весь блок, можно и из них кусок урвать, но это надо менять доделывать самы процедуры чтения/записи.


На каком асме пишешь? Если sega-asm, после loc_xuici двоеточие ставь, это же ссылка. И что такое xyu? Вообще, я имел в виду сделать запись в память, потом чтение оттуда в регистры и просто посмотреть на регистры в дебаггере, без всяких bne.

1209
Я же сказал, что работает, т.к. сначала я думал, что ты всё пространство под ром забил, а теперь вижу, что системные адреса обошёл.
Кстати, ОЗУ можно расширить, за счёт уменьшения РОМа, т.е. не с $E00000, а например, с $D00000 сделать.

Цитата
мне бы код для тестов такой.
пишешь один байт в F00000, другой байт в F10000, потом читаешь их в регистры и сравниваешь. Если не совпадают, значит, блоки разные и память на самом деле расширена.
Да код такой уже не нужен, ведь работает всё.

Добавлено позже:
Только вот эту строчку
extern unsigned char Rom_Data[13 * 1024 * 1024];
надо заменить на 14 мб.

1210
А, ну так ты обошёл системные адреса :) Поэтому работает. Т.е. ром не полностью 13 мб, там 2 блока (=1 мб) будут не читаться из рома.
Точнее, у тебя ром 14 мб, но 2 блока не читаются, итого - 13 мб. У ВЯ, по-моему, по-другому работало.

1211
Возьми любую нормальную игру, расширь до 13 метров и дождись до того места, где работает джойстик. Если A10000 у тебя читается/пишется как РАМ, то джойстик не должен будет работать! Если будет - очень странно.
Покажи файлы, которые ты изменил: сам .асм и ещё что-то.

1212
А с ОЗУ что? По дебаггеру её нельзя проверять, дебаггер - это отдельный модуль со своими способами обращения к памяти. Как проверять - пишешь разные данные в разные блоки ОЗУ с одним адресом ($E0000, $E1000...), затем читаешь и сравниваешь.
Ну ещё и выделения памяти под ОЗУ надо найти.

Не должно пахать, там процедуры другие, смотри .асм - либо ты пихаешь обращение к РОМ, либо - к портам ВВ или Z80 RAM. Одновременно это работать не должно в принципе. Загрузи полностью забитый 13-мегабайтный ром, проверь.

1213
По предыдущему посту: мне казалось, что в .асме эти объявления размеров и есть выделение памяти, поэтому этого должно было хватить. Но оказалось, нет. Этот .асм - просто дешифратор, т.е. ты настроил его на бОльшую память, но саму бОльшую память генс не выделяет, это всё в другом месте. Ну раз ты нашёл, то хорошо.
До 10 мб расширяется легко, после 10 просто так нельзя - будет перекрытие с системными адресами.

1214
Есть такой Mem_M68k.asm, это карта памяти для 68к. Там прописаны процедуры чтения и записи b/w/l по блокам в 512 кб. Не знаю, почему выбран именно такой размер блока, но подозреваю, что потому, что старые версии VC++ (по 2003-й, а генс написан в 98-м) не работали с массивами больше 512 кб.
В частности, для RAM рассмотрим пример
dd M68K_Read_Byte_Ram, ; 0xE00000 - 0xE7FFFF
...
ALIGN32

M68K_Read_Byte_Ram:
and ebx, 0xFFFF
xor ebx, 1
mov al, [Ram_68k + ebx]
pop ebx
ret
 
Видно, что ebx усекается до окна в 64 кб. Xor нужен для работы с чётным адресом, правда, я не понял, как это работает, ведь в al всегда будет заноситься значение из чётного адреса.... Посмотрим для процедур, где нет усечения:

dd M68K_Read_Byte_RomB, ; 0x580000 - 0x5FFFFF
M68K_Read_Byte_RomB:
and ebx, 0x7FFFF
xor ebx, 0x580001
mov al, [Rom_Data + ebx]
pop ebx
ret

dd M68K_Read_Byte_Rom0, ; 0x000000 - 0x07FFFF
M68K_Read_Byte_Rom0:
and ebx, 0x7FFFF
xor ebx, 1
mov al, [Rom_Data + ebx]
pop ebx
ret

dd M68K_Read_Byte_Rom1, ; 0x080000 - 0x0FFFFF
M68K_Read_Byte_Rom1:
and ebx, 0x7FFFF
xor ebx, 0x080001
mov al, [Rom_Data + ebx]
pop ebx
ret
С and всё понятно - это усечение до размера блока в 512 кб. Для чего нужен xor - с нулевым битом (единичка в конце) и так ясно (чётный адрес), плюс по адресам блоков становится понятно, что xor убирает или наоборот ставит биты, отвечающие за старшие биты блока (т.е. сам блок, грубо говоря). Т.к. Rom_Data не меняется и, видимо, ссылается на начало блока РОМ:
DECL Rom_Data
resb 6 * 1024 * 1024          ; 6 мегабайт
то ebx содержит относительный адрес для 512 кб блока. А xor делает его абсолютным.

Короче, чтобы сделать память на 2 мб, надо поменять здесь
DECL Ram_68k
resb 64 * 1024     ; 64 кб
и во всех процедурах работы с Ram (пример в самом начале) вместо окна 0xFFFF вписать 0x7FFFF.
Я думаю, это всё. Как это повлияет на сейвы - не знаю, может, в сейвере прописан свой размер памяти.

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

Вообще, вы всегда можете поговорить с авторами эмулей, они тоже люди. Вон в Gens32 сделали поддержку 13-метрового рома... каким-то образом.

1215
Дайджест / Re: Шок-прощай Nvidia
« : 08 Октябрь 2009, 23:29:11 »
Из новости и форума оверклокеров.уа (обсуждение новости про муляж) я делаю вывод, что НВ собирается делать больший упор на вычисления, "суперкомпьютеры", профессиональные решения и т.д. В новости сказано об отсутствии массовых и начальных решений. Это не значит, что фирма сдохла.
Вон всякие IBM тоже не на задротах навариваются, это просто другой уровень.

1216
Как я понял, надо сначала собрать pwm.asm и занести в папку Release, тогда билдер не будет ругаться на отсутствие pwm.obj и сделает всё как надо. Ещё не проверял.

и какие мыслишки?
Кой-какие ;) Большие ромы мне не нужно. Для дюны скорей всего достаточно отключить лимит спрайтов на линии.
Насчёт DAC долго объяснять, т.к. на реальном железе не всё так просто (там есть ещё пара косяков). Если коротко: это проблема и канала, и эмуляторов, и выбранной частоты дискретизации. Т.к. DAC не может принимать и выставлять на выход семплы с какой угодно скоростью, происходит сдвиг семплов - на 1, на 2 вправо (запаздывание). Выхлоп DAC идёт со скоростью 52781 Гц (53267 для NTSC), подавать на него можно максимум 33 кГц примерно (больше не получается), и если ты пишешь с такой частотой, то:
1) одни семплы будут ждать своей очереди на выход дольше других
2) т.к. частоты не связаны друг с другом, произойдёт эффект "бегущей полоски на экране" - когда при отключённом VSync при несовпадении частот эмулятора и монитора во время горизонтального скроллинга видна бегущая полоса. Здесь так же, только бежит не полоска по экрану, а сдвиг семплов по временнОй оси, слева направо.
Выход из положения - использовать частоты-делители 53 кГц, т.е. в 2 раза меньше (26.5 кГц), 3 раза и т.д.
Почему "проблема эмуляторов" - потому что на железке звучит лучше.

1217
У меня щас тоже получилось собрать. pwm1.obj я сначала переименовал в pwm.obj, запустил билд заново, и вылезла куча ошибок линкера. Смотрю - опять появился pwm1.obj, точно такой же. Удалил оба файла, запустил билд - скомпилилось. Смотрю - появились оба файла (pwm.obj и pwm1.obj), но pwm.obj маленький, меньше 2 кб. В исходниках есть файлы: pwm.asm, pwm.c, pwm.h. Видимо, маленький объектный файл - выхлоп ассемблера, а большой - сишника.
Скорей всего, из-за совпадающих имён исходников возникает конфликт, поэтому один объектный файл называется pwm1.obj, но в мейк-скрипте, видимо, закрался косяк, поэтому нормально не билдится.

PWM - это широтно-импульсная модуляция, да и по внутренностям видно, что pwm как-то относится к звуку, но непонятно, при чём тут SH2 :?

Это хорошо, что этот генс компилится, у меня на его счёт были кой-какие мыслишки, особенно касательно проигрывания уже готовых полных прохождений игр - во всех генсах тайминги одинаковые. Если честно, мне проще написать свою прогу (хоть там работы на несколько лет ;)), чем дорабатывать генс, но тайминги не повторишь :(

1218
Hard'n'Soft / Re: какой жесткий диск выбрать?
« : 06 Октябрь 2009, 15:28:34 »
Их чаще "кабелями" называют ;), а ИДЕшные - шлейфами.

1219
Hard'n'Soft / Re: какой жесткий диск выбрать?
« : 06 Октябрь 2009, 13:43:54 »
Если знаешь модель материнки, можно узнать, сколько у ней разъёмов. Хотя я сомневаюсь, что будет меньше двух.
"Сделать разъём самому", имхо, нереально, это же не просто отверстие, а контроллер, вбитый в материнку, и видимый в её биосе.
Цитата
а нельзя будет потом как-нибудь перенести файлы со старого винта на новый, не имея второго разъема?
Без посредников - никак. Винт можно хоть снаружи подключить, через спец. переходники/контроллеры.

Добавлено позже:
Стоп, я не понял, если ты говоришь слово "шлейф", значит, старый винт ИДЕшный? Наверно, и материнка не ахти какая новая. Тогда не факт, что там вообще будет САТА.
А новый винт какой собираешься брать? Лучше САТАшный, конечно. Если ИДЕшный, то его можно подключить параллельно с первым винтом на тот же самый шлейф, если на нём больше ничего нету (сидирома, например).

1220
Hard'n'Soft / Re: какой жесткий диск выбрать?
« : 06 Октябрь 2009, 13:30:06 »
Шо вы все с такими маленькими винтами сидите? :)
Брать можно винт любого бренда, они все относительно нормальные.
Можно почитать статьи на всяких ixbt и fcenter, сравнить, чьи прошивки лучше и где линейная скорость выше (но несильно она влияет на производительность, как потом оказывается). У Сигейтов линейная скорость выше, они греются сильнее, у WD обычно лучшие прошивки, Hitachi обычно медленнее остальных, но надёжнее. Ну и цена тоже разнится.
7200 rpm - число оборотов в минуту, чем выше, тем больше скорость работы винта, но тем больше он греется и жрёт энергии. Стандартные числа: 5400 и 7200.
Объём буфера, разумеется, чем больше, тем лучше. Это внутренняя "оперативка" винта, с которой работает прошивка контроллера. Всё равно что память для компа.
Про шлейфы уже сказали, главное, чтобы на материнке был лишний SATA-разъём ;)

Добавлено позже:
Самые относительно дешёвые винты щас - 1.5тб-ники.

1221
Если в MK и UMK3 звуки можно прослушать и сделать дамп звука, то в MK3 всему мешает фоновая музыка.
Точно так же в МК3 есть саунд тест, в опции Cheats. Набираешь в главном меню кнопками ACUBUBAD (A, C, ВВЕРХ, ...).

1222
Punto Switcher

1224
Hard'n'Soft / Re: Постоянный CHKDSK
« : 01 Октябрь 2009, 00:53:56 »
Надо сбросить проверку диска, запустив
chkdsk -x d:или как-то так.

Добавлено позже:
Ой, если сканирование постоянное, тогда не знаю. Я просто вспомнил, что у меня была постоянная ПОПЫТКА сканирования диска C (сам поставил, т.к. хотел диск проверить) перед загрузкой винды, но она не удавалась... оказалось, из-за антивиря. Пришлось сбросить проверку.

1225
Может кто считает что предыдущие выпуски EM были низкого качества ?
Может, подлить масла в огонь, запостив архивы тем с обсуждением EMULATORS MACHINE 1-4 на ромов.нет? Как всё начиналось... как говорится, из первых уст :) Скорей всего, многие из вас этого даже не видели.

Добавлено позже:
Не, я не говорю, что ЕМ плохой журнал, его даже иногда интересно читать. Проблема ЕМ в другом. Прочитав архивы, можно понять, в чём.

1226
[off]
Когда увидел заголовок темы:
Цитата
Москвича посадили за продажу пиратки на X360
хотел спросить, а чертёж москвича не прилагается? :)
[/off]

Так и есть. Карается так же по закону :) Хотя... закона о ресэйле-то нету  :lol:
Запрет есть, а законодательного докУмента лично я не видел.
Это у нас, а у буржуев? Ну ладно, магазины, но аукционщики ведь тоже "частные лица, перепродающие лицуху". Перепродающие гбх-щкам, а гбх-щики - другим гбх-щикам :)

1227
Ну, скорее на ибеях всяких. Стоп. ТАМ тоже перепродают игры. Сколько правонарушений!

1228
Интересно, а перепродажа лицензионных игр частными лицами (а-ля гбх) тоже незаконна? На играх написано "Not for resale".

1229
Цитата
не ты ли?
http://www.wasm.ru/forum/viewtopic.php?id=34531
Цитата
ник: ajak
Всё понятно, Йобан Матич, спасибо за находку ;)

1230
Hard'n'Soft / Re: Где храняться cookies в Opera ?
« : 26 Сентябрь 2009, 21:50:16 »
Скопируй всю папку Оперы и её служебные папки (если есть) и не парься.
У меня всё хранится в папке Оперы в програм файлсах. Скопировал себе на комп на работу и сижу как обычно.

Страницы: Назад 1 ... 37 38 39 40 [41] 42 43 44 45 ... 69 Далее