nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 20 May 2024 11:35



Reply to topic  [ 122 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 9  Next
Воспроизведение озвученной анимации с ROM-Дисков 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
Вот примерно так можно сделать постпроцессинг с учётом бита звука S:
Code:
                            INPUT S=0 S=1
00: 0x20                 --> #20  OK  #2F /
03: 0x04                 --> #04  OK  #2F /
05: !*                   --> #21  #3E OK
06: '*                   --> #27  #4A OK
0C: 0x02                 --> #02  OK  #33 3
0F: 0x06                 --> #06  OK  #33 3
13: /*                   --> #2F  #04 OK
14: )* >                 --> #3E  OK  #29 )
15: 1* J                 --> #4A  OK  #31 1
16: I* ]*                --> #5D  #4A OK
22: , : \                --> #5C  OK  #2D -
23: -* ^                 --> #5E  OK  #2D -
26: +* ?*                --> #3F  #54 OK
27: T Т З                --> #7A  OK  #33 3
28: 3* Э                 --> #7C  OK  #33 3
30: 0x10                 --> #10  OK  #5B [ ???
32: ( <                  --> #3C  OK  #5B [ ???
33: 0x14 "               --> #22  OK  #59 Y
35: Y*                   --> #59  #32 OK
36: 2 7*                 --> #37  #32 OK
37: *                    --> #2A  OK  #37 7
3C: 0x12                 --> #12  OK  #71 Я
3F: 0x16                 --> #16  OK  #71 Я
44: ;*                   --> #3B  #58 OK
45: X Х У*               --> #75  #58 OK
46: & =* S* Д            --> #64  OK  #53 S
47: Z Л                  --> #6C  OK  #39 9
48: 4 9*                 --> #39  #34 OK
4A: Я*                   --> #71  #34 OK
50: L                    --> #4C  OK  #5B [
52: [*                   --> #5B  #4C OK
53: %* C* С*             --> #73  #56 OK
55: G* U* V Ц*           --> #63  #56 OK
56: 6 O* О*              --> #6F  #36 OK
57: $ 5* 8 A* Q* W* А* Ч --> #7E  OK  #41
59: Ж Ш*                 --> #7B  #40 OK
5A: @ Щ*                 --> #7D  #40 OK
63: Ь                    --> #78  OK  #4B K
64: K* Г* К*             --> #6B  #78 OK
66: D Ы*                 --> #79  #44 OK
67: H N И* Н П           --> #70  OK  #69 И
68: 0 M* Й М*            --> #6D  #30 OK
69: Ю                    --> #60  OK  #4D M
6B: Ф                    --> #66  OK  #23 # ???
75: E* F Е*              --> #65  #46 OK
76: P Б Р                --> #72  OK  #77 В
77: B R В*               --> #77  #42 OK
79: #*                   --> #23  #42 OK
C0: 0x01*                --> #01  #50 OK <--- ???
C3: 0x05*                --> #05  #52 OK <--- ???
CC: 0x03*                --> #03  #52 OK <--- ???
CF: 0x07*                --> #07  #66 OK <--- ???
F0: 0x11*                --> #11  #50 OK <--- ???
F3: 0x15*                --> #15  #52 OK <--- ???
FC: 0x13*                --> #13  #16 OK <--- ???
FF: 0x17*                --> #17  #16 OK <--- ???
OK - оставить как есть либо заменить один код на другой код

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 23:26
Profile WWW
Senior
User avatar

Joined: 14 Oct 2023 06:59
Posts: 154
Reply with quote
Alikberov wrote:
Предлагаемый Вашему вниманию проигрыватель позволяет воспроизводить звуковой видеоряд непосредственно с ROM-Диска по схеме Апогея с поддержкой до 256 страниц.

Качество воспроизведения примерно такое:


Перемотка клавишами организована крайне примитивно, так как фактически она не нужна.
На реале бы погонять эту демо 8)

_________________
uselessretro.blogspot.com


11 Apr 2024 23:27
Profile
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
Может тогда пока откатить "презентацию", если там звук фейковый? :roll:

Нет - я не знал, что надо :(
И не надо!
Я могу оставить эти две строчки, но сделать их немыми:
Если мы сейчас формируем некий формат представления видеоряда под РК, важно не накосячить.
А я, похоже, накосячил с этими "caption"/"status"! :roll:

Их можно оставить, но выводить только по запросу - при старте и во время нажатия клавиш "перемотки".
Shaos wrote:
Но всё равно оно же будет играться один раз на страницу - раз в секунду с хвостиком?
Тогда сложнее будет fps видео и samplerate звука считать - лучше бы пусть всё одинаково и равномерно...
Вот именно!
Я переработаю код.
(Придётся хорошенко покумекать.)
Shaos wrote:
А ты длину пакета ПДП уменьшал? Можно попробовать без F1 сделать
да, нужно всё переделывать! :oops:
Shaos wrote:
чтобы весь экран был - без дырок, но менять только средние 64x50 (кстати можно наверное предусмотреть режим когда у каждой строки вначале идёт адрес куда её писать - тогда можно частично меняющиеся кадры передавать меньшим количеством срок)...
И об этом думал. Передавать адрес строки - хардкор, но позволило бы имитировать компрессию.
Однако, проблемы с перемоткой возникнут и со звуком уже не так понятно. Это всё усложнит!

Но, пока мы обсуждаем лишь проигрывание потока на пределе возможностей РК. Оптимизация с компрессией - уже другое.
Shaos wrote:
У меня возникла гениальная мысль! А что если не сдвигать символы туда-сюда для вытаскивания бита звука, а прямо как есть код символа сувать в #8002? т.е. младший бит кода символа будет задавать звук, что сэкономит аж 12 тактов на отсчёт! :o
Не поверите! Я тоже об этом думал.
Но это исказит частично картинку. :roll:
И усложнит код самого конвертора - нужно будет подбирать визуально схожие символы с чётными/нечётными кодами.

С другой стороны, эти 12 тактов можно будет использовать под ещё одну STA 8002h и улучшить качество звука! :twisted:
(Просто мне любопытно также узнать, на сколько качественный звук можно извлечь!)
То есть, в принципе, можно в каждом символе кодировать звук, а в самом плеера добавить опцию с заданием шага вставки STA.
Shaos wrote:
Вот примерно так можно сделать постпроцессинг с учётом бита звука S:
То есть, Вы уже нашли решение!
Тогда звук можно кодировать с максимальной дескретизацией в каждом байте, а на стороне плеера - уже выбирать качество.

Прежде всего, сейчас попробую заняться темой конверсии видео не через HTML5/JavaScript с захватом экрана (да, такой вот костыль!), а с ffmpeg и пайпом в Си или Питон (я ж под Raspberry Pi сижу - в TwisterOS).
А то, как "сапожник без сапог" сижу. :lol:

P.S.: Оказывается, вся работа над кодом ещё только началась! :lol:


12 Apr 2024 02:08
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
> И об этом думал. Передавать адрес строки - хардкор, но позволило бы имитировать компрессию.
> Однако, проблемы с перемоткой возникнут и со звуком уже не так понятно. Это всё усложнит!

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

> То есть, в принципе, можно в каждом символе кодировать звук, а в самом плеера добавить опцию с заданием шага вставки STA.

Я не хочу частить со звуком - во-первых это портит FPS, во-вторых некоторый пары (особенно яркие) будут искажаться в тёмную сторону - т.е. желательно иметь их реже, ну и в-третьих я тут позаписывал звук с эмулятора подавая прямоугольный сигнал с максимально возможной скоростью в вариантах звуковой отсчёт на пару и звуковой отсчёт на 4 символа - там где оно более высокочастотное, там оно сильнее искажается, а высокочастотные искажения это шум, поэтому я думаю надо ограничиться 7-8 кГц

> Прежде всего, сейчас попробую заняться темой конверсии видео не через HTML5/JavaScript с захватом экрана (да, такой вот костыль!), а с ffmpeg и пайпом в Си или Питон...

Я могу свой конвертер выложить, чтобы любой мог видосики сжимать :)
Ему надо скармливать последовательность PNG 128x50 в градациях серого без прозрачности
Как минимум будет от чего плясать ;)

P.S. При переносе сообщений пришлось создать новую тему с другим номером - так что если где-то вовне давалась ссылка на топик, то её надо поменять...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Apr 2024 07:48
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
> И об этом думал. Передавать адрес строки - хардкор, но позволило бы имитировать компрессию.
> Однако, проблемы с перемоткой возникнут и со звуком уже не так понятно. Это всё усложнит!

Да вроде не усложнит - при перемотке всё также скачем по страницам и начинаем играть сначала страницы (можно сделать так, что первым кадром каждой страницы идёт "ключевой" кадр, в котором есть все строки от первой до последней) и со звуком тоже всё просто - звук пишется плавно и последовательно в те строки что идут в ромдиск, но это всё потом
Тут возникает парадоксальное противоречие! :lol:
С одной стороны, на каждой странице - ключевой кадр: Можно хоть сотню кадров туда дифференциально впихнуть построкам. Хорошо!
С другой стороны - звук. Нельзя так со звуком! :no:

Этот метод для длинной GIF-анимации подойдёт.
А в видео - важно соблюдать стабильность.
Shaos wrote:
Я не хочу частить со звуком - во-первых это портит FPS, во-вторых некоторый пары (особенно яркие) будут искажаться в тёмную сторону - т.е. желательно иметь их реже, ну и в-третьих я тут позаписывал звук с эмулятора подавая прямоугольный сигнал с максимально возможной скоростью в вариантах звуковой отсчёт на пару и звуковой отсчёт на 4 символа - там где оно более высокочастотное, там оно сильнее искажается, а высокочастотные искажения это шум, поэтому я думаю надо ограничиться 7-8 кГц
Думаю, можно сначала закодировать звук в каждом байте знакоместа, а в плеере - выбирать частоту выборки STA. Это - чисто для экспериментов.

Но вот нюансы!
От частоты выборки звука в STA сильно варьируется и fps, сами знаете.

Есть компромисс: В рамках "симулятора РАДИО-86РК" можно написать самостоятельный плеер, который будет воспроизводить ROM-Диск. Там и с цветом можно экспериментировать без самого эмулятора, чтобы подобрать наилучшие значения. Вот для этого и нужен бит звука в каждом байте.
(Думаю, в Bash под вывод в консоль сделать не так сложно - попробую на досуге.)

То есть, можно подготовить несколько ROM-образов под разные fps и дискретность звука. Но под реальным кодом i8080 использовать конкретный алгоритм звука.

Думаю, нужно как-то обозначить заголовок ROM-страниц, чтобы плеер на старте генерировал конкретный код.
Так будет универсальнее!
Shaos wrote:
Я могу свой конвертер выложить, чтобы любой мог видосики сжимать :)
Ему надо скармливать последовательность PNG 128x50 в градациях серого без прозрачности
Как минимум будет от чего плясать ;)
Спасибо! :idea:
Надеюсь под wine в моём Raspberry он заработает.

P.S.: С другой стороны, как программист - я обязан разрабатывать собственный код чисто для поддержания "спортивной формы серых клеток"! 8) Чем займусь позже. :roll:
P.P.S.: Сейчас часа два потратил на скачивание двух клипов (причина) - можно считать, весь день ушёл на свистопляску с добычей двух файлов клипа для конверсии!


Last edited by Alikberov on 12 Apr 2024 09:17, edited 1 time in total.



12 Apr 2024 09:00
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
Мой код конвертеров обычно «бублик домен» - берешь его себе, называешь своим и надеваешь солнечные очки 8)

И потом я в линухе всё делаю - Вайн ненужен :)

По заголовку формата - имхо ненужен ибо заголовком является код плеера, который будет воткнут в начало каждой страницы :)

По поводу частого звука - я же говорю, некоторые пары псевдопикселов будут сильно искажаться - в особенности полностью белые, т.е. белый фон превратится в серый снег - уж лучше пусть «снежить» будет каждый четвертый символ нежели все…

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Apr 2024 09:16
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
По поводу частого звука - я же говорю, некоторые пары псевдопикселов будут сильно искажаться - в особенности полностью белые, т.е. белый фон превратится в серый снег - уж лучше пусть «снежить» будет каждый четвертый символ нежели все…
Да, коду 17h тяжело подобрать замену.
А если использовать атрибут инверсии на всю строку? Хотя, там тоже будут наводки. :roll:

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

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


12 Apr 2024 09:27
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
В апогеевской псевдографике же 4 строки на символ - минимум 60 Гц будет и ПДП сожрет всю производительность ибо по максимуму 64 текстовых строки придётся делать и потом мы ведь про классический РК ;)

Апогей можно адаптивным плеером поддержать - ту же мою 5-строчную обрезку стандартных символов делать, но контроллеры дёргать по другим адресам если при старте обнаружится, что плеер запущен на апогее…

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Apr 2024 09:32
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
По заголовку формата - имхо ненужен ибо заголовком является код плеера, который будет воткнут в начало каждой страницы :)
Уж не предлагаете ли под каждый формат звука разрабатывать новый код? :lol:
Думаю, следует в коде предусмотреть магическую ячейку, которая будет реконфигурировать код без всяких точечных правок.

Так, сейчас по адресу 0000 (как можете заметить директивой «L,3F») размещена команда «MOV D,M» с кодом 56h для визуального символа «V» («VIDEO»).
Можно, типа, эту ячейку и использовать под ключи:
  • «MOV D,M»/«VIDEO» - Оптимизация картинки / Звук в 1/8
  • «MOV C,D»/«MEDIA» - Средняя оптимизация / Звук в 1/4
  • «MOV D,B»/«PAINT» - Оптимизация с учётом атрибутов цвета / Звук в 1/2
  • «MOV B,C»/«AUDIO» - Оптимизация звука / Звук в каждом байте (минимум или отсутствие атрибутов)
  • «MOV D,E»/«SOUND» - Только звук (изображение имеется, но ПДП отключён, а код искусственно замедлен)
  • «MOV B,H»/«COVOX» - Только звук (изображение в ROM-Диске отсутствует: «STA 8002h; RRC; RRC; RRC; RRC; STA 8002h»)
Shaos wrote:
В апогеевской псевдографике же 4 строки на символ - минимум 60 Гц будет и ПДП сожрет всю производительность ибо по максимуму 64 текстовых строки придётся делать и потом мы ведь про классический РК ;)
В эмуляторе можно попробовать подменить знакогенератор и посмотреть! :roll:

P.S.: Кстати, ничто не мешает организовать ROM-Диск не на 256 страниц, а на все 32768, задействовав все 15 битов под регистр страниц.
При грамотном программном переключении получим до 1 Гб данных - можно целую полнометражку впихнуть! :roll:


12 Apr 2024 10:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
Не - порнометражку ненадо :lol:

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

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Apr 2024 19:46
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
Alikberov wrote:
Хотя, это и сейчас можно - директивой M:
  • Ячейка 00EB содержит число PUSH'ей на заполнение строки (у меня - 32)
  • Ячейка 00ED содержит длину одной PUSH-цепочки (у меня - 13)
  • С адреса 01B8 начинается шаблон инструкций
Соответственно, сейчас у меня:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  7
        RLC             ;  4
        STA     08002H  ; 13
        ORA     A       ;  4
        RAR             ;  4
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#80.13
Вам можно попробовать подправить:
  • Ячейка 00EB содержит число PUSH'ей на заполнение строки (запишите 16)
  • Ячейка 00ED содержит длину одной PUSH-цепочки (запишите 20)
Под код:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  7
        RLC             ;  4
        STA     08002H  ; 13
        ORA     A       ;  4
        RAR             ;  4
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#80.13
        LDAX    D       ;  7
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#135.20
Должно сработать.
Но синхронизацию сорвёт, так как старшие биты уже начнут из звука попадать в атрибуты.
Не - чото не выходит :(
Видимо надо что-то ещё поменять...

P.S. А не - всё пучком :mrgreen:
9.92 FPS получилось вот с этим кодом :kruto:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  +7=7
        STA     08002H  ; +13=20
        MOV     B,A     ;  +5=25
        INR     M       ; +10=35
        LDAX    D       ;  +7=42
        MOV     C,A     ;  +5=47
        INR     M       ; +10=57
        PUSH    B       ; +11=68
        LDAX    D       ;  +7=75
        MOV     B,A     ;  +5=80
        INR     M       ; +10=90
        LDAX    D       ;  +7=97
        MOV     C,A     ;  +5=102
        INR     M       ; +10=112
        PUSH    B       ; +11=123
Теперь надо избавиться от F1 и F3 в видеопамяти и переконфигурировать ПДП (с некоторой потерей FPS, но зато с более чистым звуком)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


13 Apr 2024 01:58
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22756
Location: Silicon Valley
Reply with quote
Не - с подменой символов слишком мусорно выходит :(


Attachments:
Screenshot from 2024-04-13 03-33-38.png
Screenshot from 2024-04-13 03-33-38.png [ 80.39 KiB | Viewed 454 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
13 Apr 2024 03:48
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
Со старшими битами адреса идущими вместе со стробом защёлки адреса есть проблема - может не захватить (либо придётся дважды посылать - сначала без строба, а потом уже со стробом), так что лучше ограничиться 8 мегабайтами (это пока, а потом появится моя сетевушка с автоникрементом адреса и там можно хоть лайвстримы слать)
Теоретически, добавив второй ИР23 и переключая страницы двойной записью ([A001] <= PAGE & 7FFF; [A002] <= PAGE | 8000) можно заиметь 32768 страниц.
В Emu80, как подтверждает разработчик, вполне может работать. :roll:
На программном уровне - ещё не проверял (нужды нет с таким массивом работать).

Сейчас взялся за звук отдельно и попытаюсь добиться сносного результата. :mrgreen:
Shaos wrote:
Не - с подменой символов слишком мусорно выходит :(
А приоритеты выставили в кодере?


13 Apr 2024 03:54
Profile WWW
Fanat

Joined: 10 Apr 2024 05:15
Posts: 70
Reply with quote
Alikberov wrote:
В общем, получается так, что вывод в порт магнитофона - самый оптимальный по производительности.


Вброшу немного инфы, вдруг поможет:

1. Примитивный ЦАП - это конденсатор, заряжающийся через резистор. Чем дольше импульс, тем больше зарядится конденсатор. Я так делал на ардуино, получал синус и пилу звуковых частот. Убрал этот ЦАП - всё равно получил приемлемый звук из-за наличия ёмкостей в усилителе. Возможно с таким алгоритмом звук улучшится.

2. ВИ53 можно использовать, как ЦАП, если у него три канала через резисторы собраны в кучу, это Апогей. Фактически это трёхбитный ковокс, если на каналы выдавать не частоту, а стробы. Так же работал один из трекеров на Спектруме.

3. Где-то писали, что загрузка с магнитофона возможна без гашения экрана, если уменьшить длину пакетов ПДП, вроде до 8-ми байт, точно не помню. Тогда INTE тупит равномернее и звук получается хороший.


13 Apr 2024 04:27
Profile
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Hammer wrote:
Вброшу немного инфы, вдруг поможет:

1. Примитивный ЦАП - это конденсатор, заряжающийся через резистор. Чем дольше импульс, тем больше зарядится конденсатор. Я так делал на ардуино, получал синус и пилу звуковых частот. Убрал этот ЦАП - всё равно получил приемлемый звук из-за наличия ёмкостей в усилителе. Возможно с таким алгоритмом звук улучшится.
Ещё играет роль размер диффузора динамика. По сути, динамик - та же LC-цепь.
Hammer wrote:
2. ВИ53 можно использовать, как ЦАП, если у него три канала через резисторы собраны в кучу, это Апогей. Фактически это трёхбитный ковокс, если на каналы выдавать не частоту, а стробы. Так же работал один из трекеров на Спектруме.
В основном я разрабатываю в рамках исходной схемы РК. А таймеры - добавились позднее.
Hammer wrote:
3. Где-то писали, что загрузка с магнитофона возможна без гашения экрана, если уменьшить длину пакетов ПДП, вроде до 8-ми байт, точно не помню. Тогда INTE тупит равномернее и звук получается хороший.
Эти настройки в ВГ75 я учёл.
Но здесь имеется нюанс: Звук всё равно получается "бинарным" - как модем.
То есть, для обмена данными - он подходит. А для "меломана" - никак нет.

Но, всё равно: Спасибо!


13 Apr 2024 04:52
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 122 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 9  Next

Who is online

Users browsing this forum: No registered users and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.