PDA

Просмотр полной версии : Contended memory /Медленная память/ на Original Speccy



MadCat!
22.01.2005, 17:10
кто знает, как именно "тормозит" сабж?

SMT
22.01.2005, 17:44
кто знает, как именно "тормозит" сабж?
при чтении из нечетного банка (1,3,5,7) выдаётся WAIT, если луч не на бордюре. количество тактов WAIT зависит от текущего такта и составляет величину от 0 до 7 тактов. за подробностями можно обратиться к любому эмулятору, поддерживающему contended memory - RealSpectrum, Z80S, ZX32

SMT
22.01.2005, 17:45
и не только при чтении, но и при записи

MadCat!
22.01.2005, 17:54
и не только при чтении, но и при записи
а у себя когда(-нибудь) поддержишь? ;)

SMT
22.01.2005, 18:04
а у себя когда(-нибудь) поддержишь? ;)
нет :)

newart
22.01.2005, 18:45
нет :)
А по какой причине отказался от поддержки w98?
Я вот уже 3 года юзаю версию 0.20 fix#2.
Так-что СПАСИБО за рульный эмуль!
Если бы не он то думаю не сушествовало всех те проектов
которые реализовала n-Discovery за прошедшие 3 года.
Реальный спек конечно рульно, но для активного кодинга эмуль не заменим.

SMT
23.01.2005, 02:28
А по какой причине отказался от поддержки w98?
потому что сейчас у меня нет этой самой 98-й и проверять не на чем. вот я, от глюков подальше, и перестраховался

для кодинга как раз в новой версии появились метки из XAS и ALASM. так что, теперь вообще можно от STS отказаться

Looker
23.01.2005, 13:42
Если кто не знал, в фирменных компах, если HALT выполняется из #4000-#7fff, то программа обработки прерываний запускается ровно с первым пикселем нового растра.
И это есть круто :)

Sinus
29.01.2005, 04:43
Боюсь погнать, но имхо в оригинале не вайты долбались, а просто CLK от проца отрубалось (в "Байте" так точно ^_^)

elfh
01.02.2005, 19:17
возможно, кому-то это покажется интересным. пару лет назад, мы стремились сделать все наши работы доступными пользователям оригинальных машин, поэтому я попросил у phoenix/ra/pdz описания таймингов. вот его ответ:

It's very nice to hear such good will trying to make code for
different speccys, but im afraid it will be very difficult for you
to fix for example multicolour without testing. You will see why.
First of all there are 4 different 'firm' 128K speccys. There's 128K +,
+2, +2A and +3. 128K + and +2 have equal timings between each other,
and +2A and +3 have equal timings between each other too. Now comes the
big problem. Some memory pages are slow, which means that if you read/write
to them while frame is displaying speccy screen, it will slow down cpu. If
border is being displayed (or vertical retrace) there is no slow down. So now
here's the info for each group:

128K + / +2
-----------

- 228 Tacts per scanline
- 311 lines per frame
- 63 lines before TV picture
- 70908 Tacts per frame
- Pages 1,3,5,7 are slow (but only when displaying screen)
- if I is set to point to slow ram, computer gets snow on screen
and may crash.
- port #FF works
- out (#FD),rampage works as on pentagon

+2A / +3
--------

- 228 Tacts per scanline
- 311 lines per frame
- 63 lines before TV picture
- 70908 Tacts per frame
- Pages 4,5,6,7 are slow (but only when displaying screen)
- No problem with I pointing to slow ram
- port #FF doesn't work
- must use out on #7ffd or out (#FD),rampage with 6th bit set (as on scorpion)
- Has faster slow ram than 128K + / +2

And how does the slow ram works? It's a bit complicated and thats why i mean
you probably need to test it. Specially coz area 4000-7fff is always a slow
ram page,
and you must access it to make fx. If accessing slow ram while screen is
being displayed,
a delay of 0-6 will be applied (0-7 on +2A/+3). This delay isn't random, it
has an order,
but i can't remember it right now. So what should one do to make sure code
runs optimally
on all firm speccys:

- NEVER point I to slow ram.
- Keep all critical code in fast ram.
- If possible, do test for model (or ask user) to use optimally
fast ram pages. (first demo i saw that does this is _laya by baze/3sc)
- Try and run code that uses slow ram a lot when screen isnt being displayed.
(for example, you can have music player in slow ram if you call it right
after
interrupt, because screen wont be displayed then and it wont slow down
nothing)

As you can see, making code to run ok on firm speccys isn't that easy ;) If
you ever
need to get some code tested on firm speccy i'll be glad to test it here
for you. Any
questions, etc mail me :)

Hope this helps!

Conan
02.02.2005, 02:28
К счастью я can remember (как и где "тормозит") right now:
На самом деле, если «движок» игры (программы), синхронизирован с прерыванием и укладывается (по тактам), до начала экрана, то разницы в какой странице памяти он расположен – нет. Начало экрана в ZX Spectrum 128 и +2 +2A,+2B,+3 это: 14364 такт он прерывания. Но, ULA и в том и в другом случае, надо время для выборки из памяти, перед выводом на экран, поэтому «торможение» начинается чуть раньше и выглядит так (для медленных банков):
ZX Spectrum 128 и +2
Такт # Задержка (в тактах):
------- -----
14361 6
14362 5
14363 4
14364 3 - левый верхний угол экрана
14365 2
14366 1
14367 Нет задержки
14368 Нет задержки
14369 6
14370 5
14371 4
14372 3
14373 2
14374 1
14375 Нет задержки
14376 Нет задержки
и так до 14490, затем без задержки до 14589 (100 тактов), и снова как с 14361 до конца экрана (191 строку)


+2A,+2B,+3
Такт # Задержка (в тактах):
------- -----
14361 1
14362 Нет задержки
14363 7
14364 6 - левый верхний угол экрана
14365 5
14366 4
14367 3
14368 2
14369 1
14370 Нет задержки
14371 7
14372 6
и так до 14490, затем без задержки до 14589 (100 тактов), и снова как с 14361 до конца экрана (191 строку)

В каком то их эмуляторов (по моему в ZX32), была реализована поддержка «медленной» памяти, правда только, для ZX Spectrum, и конечно же без «снега» на экране.

dhau
17.02.2005, 23:31
при чтении из нечетного банка (1,3,5,7) выдаётся WAIT, если луч не на бордюре. количество тактов WAIT зависит от текущего такта и составляет величину от 0 до 7 тактов

А какие советские клоны поддерживают фирменные тормоза? Это не совсем то же что и инт, так?

Robus
04.03.2005, 04:10
Вообще-то, в торможении на Speccy, было уйма плюсов ... Я вообще всегда писал только под фирменный Speccy, поэтому все мои работы начиная с 1990-ого года были написаны с учётом торможения ... Если сделать HALT в тормозящей области, то прерывание придёт с первым тактом луча, то есть бордюрные эффекты делаются как два пальца об асфальт. В фирменном Speccy была ещё одна уникальная особенность, если сделать совмещённый OUT порта на бордюр и переключения страниц, то можно с точностью до пикселя по середине экрана изменить как бордюр так и переключение между нормальной и теневой страницей. Правда потом я столкнулся со Spectrum 128+, где это было убранно, а точнее упрощено, и при таком OUT'е, теневая страничка переключалась с задержкой в два папера ... Лажа, вообщем !!! Но самое классное будет, если вы будете исполнять свою программу в тормозящей памяти и при этом установите вектор прерывания на тормозящую память ... Смерть ... Я лично впервые увидел как может сама по себе стираться память ... В глубоком детстве я думал на этом сделать защиту, но потом понял, что эта фишка пройдёт только на Spectrum 128+ или на простом Spectrum 48, но никогда не заработает на обоих !!!

Псоле 1995-ого года все мои работы автоматически подстраивались под Pentagon или фирменный Speccy, но я считаю, что нельзя было уходить от этого стандарта, на этом было написанно много игр, которые стали дикрировать на Pentagon'е !!!

Rob F.

lvd
04.03.2005, 09:04
Псоле 1995-ого года все мои работы автоматически подстраивались под Pentagon или фирменный Speccy, но я считаю, что нельзя было уходить от этого стандарта, на этом было написанно много игр, которые стали дикрировать на Pentagon'е !!!
Rob F.

Угу, а я вообще считаю, что нельзя было уходить от стандарта spectrum 16kb + tape. Ведь много игр было написано. А то что за лажа сейчас - пентагоны, каи, атмтурбо и скорпионы с метрами памяти, с 7мгц Z80, с винтами, с GSами...

Robus
05.03.2005, 02:06
Привет !


Угу, а я вообще считаю, что нельзя было уходить от стандарта spectrum 16kb + tape. Ведь много игр было написано. А то что за лажа сейчас - пентагоны, каи, атмтурбо и скорпионы с метрами памяти, с 7мгц Z80, с винтами, с GSами...

Всё, что работало на spectrum 16k прекрасно работает на Spectrum 48k как и на Spectrum 128k. Если бы в пентагоне сделали переключение между торможением и не торможением он был бы прекрасной машиной, иначе у него общее со Speccy только Z80. А от того, что ему дали больше памяти или прилепили GS, ничего не ухудшелось !!!

Rob F. / Entire Group ...

lvd
05.03.2005, 11:18
Привет !



Всё, что работало на spectrum 16k прекрасно работает на Spectrum 48k как и на Spectrum 128k. Если бы в пентагоне сделали переключение между торможением и не торможением он был бы прекрасной машиной, иначе у него общее со Speccy только Z80. А от того, что ему дали больше памяти или прилепили GS, ничего не ухудшелось !!!

Rob F. / Entire Group ...

Правильно - всё только улучшилось, равно как и улучшилось от того, что тормоза убрали (больше можно в кадре насчитать).