Автор Тема: разогнал эмуль генс11а. (генсмуви)  (Прочитано 18215 раз)

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

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
разогнал эмуль генс11а. (генсмуви)
« : 07 Октябрь 2009, 19:06:33 »
забираем тут.:
GensMovie11a 15Mhz + (поддержка ромов 13мб)

отличия генс11а от других генс:

Просил его еще разогнать давно, но у Gmaniac'a ошибка была с pwm.obj.
у меня тоже такая ошибка (всё по ридми делал), визуал студия 2005 (рекоменд.),  вообщем там в папке дебаг этого файла нет., но зато есть pwm1.obj,  я скопировал его переименовал в pmw.obj и заново перезапустил. таким образом 2-ой раз собралось без ошибки. (пока вроде работает без глюков).
« Последнее редактирование: 18 Октябрь 2009, 13:16:40 от Ti_ »

Оффлайн Lost Soul

  • Пользователь
  • Сообщений: 2878
  • Пол: Мужской
  • Злой добряк
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #1 : 07 Октябрь 2009, 21:16:48 »
Очень интересно.а зачем это нужно? Бладшот идёт быстрее чем надо...

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #2 : 07 Октябрь 2009, 21:25:12 »
Очень интересно.а зачем это нужно? Бладшот идёт быстрее чем надо...
до этого у нас был только обычный генс разоганный, где мало плюшек. нам он нужен для:
1)для фуллскрин хака RRR.
2)новых миссий дюны.

Добавлено позже:
Очень интересно.а зачем это нужно? Бладшот идёт быстрее чем надо...
это уже проблема самих игр. не все с разгоном дружат )

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #3 : 08 Октябрь 2009, 00:25:33 »
У меня щас тоже получилось собрать. pwm1.obj я сначала переименовал в pwm.obj, запустил билд заново, и вылезла куча ошибок линкера. Смотрю - опять появился pwm1.obj, точно такой же. Удалил оба файла, запустил билд - скомпилилось. Смотрю - появились оба файла (pwm.obj и pwm1.obj), но pwm.obj маленький, меньше 2 кб. В исходниках есть файлы: pwm.asm, pwm.c, pwm.h. Видимо, маленький объектный файл - выхлоп ассемблера, а большой - сишника.
Скорей всего, из-за совпадающих имён исходников возникает конфликт, поэтому один объектный файл называется pwm1.obj, но в мейк-скрипте, видимо, закрался косяк, поэтому нормально не билдится.

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

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

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #4 : 08 Октябрь 2009, 00:47:30 »
Очень интересно.а зачем это нужно? Бладшот идёт быстрее чем надо...
тут одно их двух:
1) у тебя не стоит вертикальная синхонизация
2) мы просто не привыкли к полноценной скорости игры, и поэтому кажется что она идёт быстрее чем надо. На самом деле она идёт как задуманно, просто мы раньше играли в замедленную версию

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #5 : 08 Октябрь 2009, 01:19:01 »
Удалил оба файла, запустил билд - скомпилилось. Смотрю - появились оба файла (pwm.obj и pwm1.obj), но pwm.obj маленький, меньше 2 кб.

Это хорошо, что этот генс компилится, у меня на его счёт были кой-какие мыслишки
мм сейчас глянул , у меня pwm.obj тоже меньше 2кб. хотя я копировал его, как pwm1.obj , а потом вроде ребилд жал.

и какие мыслишки? что в нем хакнуть можно? вот например сделать чтобы ромы большие держал 10мб или 13мб? а спрайтов добавить никак нельзя, чтобы в дюне не мигали например юниты?
и вот в РРР звук если засовываем (wav) играет хуже чем в голдвейве, проблема драйвера или dac? может z80 разогнать еще?





Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #6 : 08 Октябрь 2009, 09:45:30 »
Как я понял, надо сначала собрать pwm.asm и занести в папку Release, тогда билдер не будет ругаться на отсутствие pwm.obj и сделает всё как надо. Ещё не проверял.

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

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #7 : 08 Октябрь 2009, 11:07:01 »
Кой-какие ;) Большие ромы мне не нужно. Для дюны скорей всего достаточно отключить лимит спрайтов на линии.
мне тоже, пока что. но если эмулятор проц разгоняешь, почему бы и остальное не "разогнать".

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

Добавлено позже:
про dac, спасибо. попробую 26.5 как будет.

Оффлайн KABAL

  • Пользователь
  • Сообщений: 1300
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #8 : 08 Октябрь 2009, 12:21:42 »
да, 13 мб ром не помешало бы

Оффлайн Photon9

  • Пользователь
  • Сообщений: 10345
  • Пол: Мужской
  • йОжик сОник
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #9 : 08 Октябрь 2009, 17:50:08 »
Чтото в нем голоса неслышно в Metal Head (32X) (JU) (M2) [!]

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #10 : 08 Октябрь 2009, 18:53:05 »
Чтото в нем голоса неслышно в Metal Head (32X) (JU) (M2) [!]
а в обычной сборке? (на эмуленде лежит).  в любом случае тут для 32x не разгонялось вроде ничего, смысл его юзать. на 32x там же другой процессор как я понимаю?

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #11 : 09 Октябрь 2009, 22:02:01 »
Большие ромы мне не нужно. Для дюны скорей всего достаточно отключить лимит спрайтов на линии.
GManiac, а ты не знаешь как можно памяти (RAM) добавить.? например сделать чтобы адреса 900000-9FFFFF было RAM.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #12 : 09 Октябрь 2009, 22:56:38 »
GManiac, а ты не знаешь как можно памяти (RAM) добавить.? например сделать чтобы адреса 900000-9FFFFF было RAM.
А лучше
E00000-FFFFFF, да так, шоб это указывать в заголовке. иными славами скока указано, тока и задействовано. А ещё сейврам также сделать

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #13 : 09 Октябрь 2009, 23:51:12 »
Есть такой 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-метрового рома... каким-то образом.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #14 : 10 Октябрь 2009, 00:31:32 »
Вообще, вы всегда можете поговорить с авторами эмулей, они тоже люди. Вон в Gens32 сделали поддержку 13-метрового рома... каким-то образом.
дык в эмуле от В.Яковлева тоже 13мб  держит.  он сам делал? или на основе генс32?

Добавлено позже:
Короче, чтобы сделать память на 2 мб, надо поменять здесь
пока еще не понял, но попрбую. (x86 я тем более не знаю, вообще я знаю только мк68 и то немного)

если все получится. , будет в дюне 255юнитов лимит а то больше ) (Сегаман уже до 88делал)
« Последнее редактирование: 10 Октябрь 2009, 00:33:56 от Ti_ »

Оффлайн ShiningSbun

  • Пользователь
  • Сообщений: 1819
  • Пол: Мужской
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #15 : 10 Октябрь 2009, 01:34:38 »
GManiac,Ti_, спасибо вам за  эмуль.Не подскажите как он себя по сети будет вести(собираюсь по ЛАНу играть?),лагов и рассконектов из-за разогнонности не будет?

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #16 : 10 Октябрь 2009, 02:54:38 »
GManiac,Ti_, спасибо вам за  эмуль.Не подскажите как он себя по сети будет вести(собираюсь по ЛАНу играть?),лагов и рассконектов из-за разогнонности не будет?
да, но оба игрока должны использовать этот эмуль.   если разные, естественно будет, так как у кого-то игра тормозит и он отстанет.
ну и звук рейт должен быть одинаков (как и во всех генсах).


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

блин чето неясно. у меня E00000 получилось как начало памяти чтоли опять тоже самое. а вообще еще когда эмуль обычный если виснет в тех областях записиь идет ., а у меня не идет.  но в обоих случаях еще и вначало памятипишет.   вот  скрин с обычного:


а мошт названия одинакое потому что? везде readram
« Последнее редактирование: 10 Октябрь 2009, 03:48:38 от Ti_ »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #17 : 10 Октябрь 2009, 14:27:01 »
дописал в gens.h ещё , теперь 10мб открывает!.

10:0000  4E B9  JSR     ($00800000)              A0=00000000 A1=00FFB8FA A2=00003322
80:0000  4E B9  JSR     ($00700000)              A0=00000000 A1=00FFB8FA A2=00003322
70:0000  4E 75  RTS                              A0=00000000 A1=00FFB8FA A2=00003322
80:0006  4E 75  RTS                              A0=00000000 A1=00FFB8FA A2=00003322
10:0006  4E 75  RTS                              A0=00000000 A1=00FFB8FA A2=00003322

выкладывать? проверил сейчас от 100000 до 9FFFFF всё "4e71" заполнил, и в конце "4e75", всё пашет.  или до 13делать?

тут Яковлева еще скачал, а у него по-другому сделано.. и вообще я не понял, у него 13мб держит или 25?  в ридми написано 13, а в карте:

   DECL Rom_Data
   resb 25 * 1024 * 1024

      ;Gens32 Stuff;Some Speciel IO for some speciel games.

     DECL Bank_Switch_80M
      resd 1


test dword [Bank_Switch_80M],1
jz short .rom_C

xor ax, ax
pop ebx
ret

ALIGN4
.rom_C
and ebx, 0x7FFFF
xor ebx, 0x600001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomD:
test dword [Bank_Switch_80M],1
jz short .rom_D

xor ax, ax
pop ebx
ret

ALIGN4
.rom_D
and ebx, 0x7FFFF
xor ebx, 0x680001
mov al, [Rom_Data + ebx]
pop ebx
ret


ALIGN32

M68K_Read_Byte_RomE:
test dword [Bank_Switch_80M],1
jz short .rom_E


сейчас по-своему способу попробую до 13мб поднять.. как доделаю выложу.
« Последнее редактирование: 10 Октябрь 2009, 14:40:00 от Ti_ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #18 : 10 Октябрь 2009, 16:03:26 »
По предыдущему посту: мне казалось, что в .асме эти объявления размеров и есть выделение памяти, поэтому этого должно было хватить. Но оказалось, нет. Этот .асм - просто дешифратор, т.е. ты настроил его на бОльшую память, но саму бОльшую память генс не выделяет, это всё в другом месте. Ну раз ты нашёл, то хорошо.
До 10 мб расширяется легко, после 10 просто так нельзя - будет перекрытие с системными адресами.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #19 : 10 Октябрь 2009, 16:06:13 »
До 10 мб расширяется легко, после 10 просто так нельзя - будет перекрытие с системными адресами.
не знаю я добавил у меня пашет по-моему но странно.
« Последнее редактирование: 10 Октябрь 2009, 17:15:53 от Ti_ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #20 : 10 Октябрь 2009, 16:08:31 »
А с ОЗУ что? По дебаггеру её нельзя проверять, дебаггер - это отдельный модуль со своими способами обращения к памяти. Как проверять - пишешь разные данные в разные блоки ОЗУ с одним адресом ($E0000, $E1000...), затем читаешь и сравниваешь.
Ну ещё и выделения памяти под ОЗУ надо найти.

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

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #21 : 10 Октябрь 2009, 16:12:01 »
Не должно пахать, там процедуры другие, смотри .асм - либо ты пихаешь обращение к РОМ, либо - к портам ВВ или Z80 RAM. Одновременно это работать не должно в принципе. Загрузи полностью забитый 13-мегабайтный ром, проверь.
блин а как проверить то , у меня сейчас вся область 1мб -13-ый мб заполнено NOP.  жср на 1-ый метр,
если не вписать гденить будет rts игра виснет, я пробовал писать в A00000, A80000 и т.д  и оно считывалось.
проверил еще в н-ких местах , считывается. по-моему  пашет всё ок. а дебагер , я понял, он врет. он на эти адреса не рассчитан.
« Последнее редактирование: 10 Октябрь 2009, 16:16:04 от Ti_ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #22 : 10 Октябрь 2009, 16:15:27 »
Возьми любую нормальную игру, расширь до 13 метров и дождись до того места, где работает джойстик. Если A10000 у тебя читается/пишется как РАМ, то джойстик не должен будет работать! Если будет - очень странно.
Покажи файлы, которые ты изменил: сам .асм и ещё что-то.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #23 : 10 Октябрь 2009, 16:27:36 »
Возьми любую нормальную игру, расширь до 13 метров и дождись до того места, где работает джойстик. Если A10000 у тебя читается/пишется как РАМ, то джойстик не должен будет работать! Если будет - очень странно.
Покажи файлы, которые ты изменил: сам .асм и ещё что-то.
игра рок-н-ролл рейсинг давай ром выложу, джойстики пашут.

13мб там звуков нет ток, это просто мой тестовый ром был.(музыку пихал)m,, 1-ый по 13-ый мб считывание идет когда старт рейс жмешь!





Добавлено позже:
Если A10000 у тебя читается/пишется как РАМ
как РОМ может?

Добавлено позже:
А с ОЗУ что? По дебаггеру её нельзя проверять, дебаггер - это отдельный модуль со своими
ещё не проверял, я вчера по дебагеру смотрел. а теперь понял что он не то показывает
« Последнее редактирование: 10 Октябрь 2009, 17:14:04 от Ti_ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #24 : 10 Октябрь 2009, 16:30:25 »
А, ну так ты обошёл системные адреса :) Поэтому работает. Т.е. ром не полностью 13 мб, там 2 блока (=1 мб) будут не читаться из рома.
Точнее, у тебя ром 14 мб, но 2 блока не читаются, итого - 13 мб. У ВЯ, по-моему, по-другому работало.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #25 : 10 Октябрь 2009, 16:54:52 »
А, ну так ты обошёл системные адреса :) Поэтому работает. Т.е. ром не полностью 13 мб, там 2 блока (=1 мб) будут не читаться из рома.
Точнее, у тебя ром 14 мб, но 2 блока не читаются, итого - 13 мб. У ВЯ, по-моему, по-другому работало.
вот нормальный ром(со звуками)
 RRR13mb
он ровно 13мб. и с 1-ого по 13-ый мб везде nop.  если бы они не читались он бы завис думаю. в самом конце 4e75.(если стереть то зависнет)

эмуль еще раз кому над (только заметил, что не ту ссылку удалил)
gens_test15mhz+13mb





Добавлено позже:
Как проверять - пишешь разные данные в разные блоки ОЗУ с одним адресом ($E0000, $E1000...), затем читаешь и сравниваешь.
Ну ещё и выделения памяти под ОЗУ надо найти.
мне бы код для тестов такой.
« Последнее редактирование: 10 Октябрь 2009, 17:16:56 от Ti_ »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #26 : 10 Октябрь 2009, 17:38:35 »
Я же сказал, что работает, т.к. сначала я думал, что ты всё пространство под ром забил, а теперь вижу, что системные адреса обошёл.
Кстати, ОЗУ можно расширить, за счёт уменьшения РОМа, т.е. не с $E00000, а например, с $D00000 сделать.

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

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

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #27 : 10 Октябрь 2009, 17:42:20 »
Только вот эту строчку
extern unsigned char Rom_Data[13 * 1024 * 1024];
надо заменить на 14 мб.
да почему 14то? там 6новых блоков по 512кб = того 3мб.  и ром у меня 13мб. , если там что-то не читается давай проверим. скажи эту область.


Добавлено позже:
пишешь один байт в F00000, другой байт в F10000, потом читаешь их в регистры и сравниваешь. Если не совпадают, значит, блоки разные и память на самом деле расширена.
я пытаюсь написать программу. bne команда? на ромхакинг полез команды ищу.
xuicu.asm,28: Unrecognized Mnemonic: loc_xuici
There were 1 errors.


  move.l  #$12345671, $F00000
  move.l  #$12345672, $F10000
  move.l  #$12345673, $F12345
  move.l  #$12345674, $F25000
  move.l  #$12345675, $F34000
  move.l  #$12345676, $F43000
  move.l  #$12345677, $F52000
  move.l  #$12345678, $FE1000
  cmp.l   #$12345671, $F00000
  bne.w loc_xuici
  cmp.l  #$12345672, $F10000
  bne.w loc_xuici
  cmp.l  #$12345673, $F12345
  bne.w loc_xuici
  cmp.l  #$12345674, $F25000
  bne.w loc_xuici
  cmp.l  #$12345675, $F34000
  bne.w loc_xuici
  cmp.l  #$12345676, $F43000
  bne.w loc_xuici
  cmp.l  #$12345677, $F52000
  bne.w loc_xuici
  cmp.l  #$12345678, $FE1000
  bne.w loc_xuici
  move.l  #$4e714e75,  $F40000
  jsr $F40000
  rts
  loc_xuici
  move do,d1
  move d1,d2
  move d2,d3
  move d4,d5
  move d6,d7
  move xyu,d8
  rts

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #28 : 10 Октябрь 2009, 17:53:07 »
Потому что 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.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: разогнал эмуль генс11а. (генсмуви)
« Ответ #29 : 10 Октябрь 2009, 18:04:16 »


10:0000  23 FC  MOVE.L  #$12345671,($00F00000)   A0=00000000 A1=00FFB8FA A2=00003322

10:0050  0C B9  CMPI.L  #$12345671,($00F00000)   A0=00000000 A1=00FFB8FA A2=00003322
10:005A  66 00  BNE     #$0076 [10:00D2]         A0=00000000 A1=00FFB8FA A2=00003322
10:00D2  4E 75  RTS      A0=00000000 A1=00FFB8FA A2=00003322 A3=00000000

непашет

Добавлено позже:
двоеточие ставь, это же ссылка. И что такое xyu?
это я убрал уже. а кроме двоеточия еще пробелы нужно было убрать )

Добавлено позже:
Потому что 14. Ты не считай, сколько кусков ты прибавил. У тебя по карте памяти линейное пространство рома начинается с 0 и заканчивается здесь

дык а тут то    другие адреса:  A00000-CFFFFF

ALIGN32

M68K_Read_Byte_RomK:
and ebx, 0x7FFFF
xor ebx, 0xA00001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomL:
and ebx, 0x7FFFF
xor ebx, 0xA80001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomM:
and ebx, 0x7FFFF
xor ebx, 0xB00001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomN:
and ebx, 0x7FFFF
xor ebx, 0xB80001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomO:
and ebx, 0x7FFFF
xor ebx, 0xC00001
mov al, [Rom_Data + ebx]
pop ebx
ret

ALIGN32

M68K_Read_Byte_RomP:
and ebx, 0x7FFFF
xor ebx, 0xC80001
mov al, [Rom_Data + ebx]
pop ebx
ret