Все потоки
Поиск
Написать публикацию
Обновить
1
3.3
Евгений @Zara6502

ATARI XL/XE, ретро-ноутбуки

Отправить сообщение

Ковырялся со старыми железками и на одной из них запустил комплектный OpenTTD в Линуксе. Чуть позже захотелось поиграть на основной машине из Steam. И вот играючи мне пришла в голову мысль (да-да, я частенько изобретаю велосипеды), что для подобной игры наверное было бы разумно делать наложение графики слоями, но не в лоб "слой1+слой2+слой3+слой4" и т.д., а хешировать уже созданные спрайты. Тогда процесс рисования выглядел бы не как "слой1+слой2+слой3+слой4", а "смотреть в хеш-таблицу", если совпадение, то "слой из хеша+слой4" (слой4 это например надписи), если мимо, то "слой1+слой2+слой3+слой4+записать в хеш-таблицу".

Если вернуться к OpenTTD, то слоями будут:

  1. грунт/станции в нескольких ориентациях + уклоны + вода

  2. несколько положений ж/д путей и автодорог, включая их пересечения

  3. окультуривание готовых путей - заборчики

Финальные наложения например деревьев (включая их полупрозрачный вариант) в хеш не записывать например. Как и последний слой с надписями.

Если кто-то так делал, то напишите был ли эффект от этого?

Теги:
+1
Комментарии0

После очередного повышения цены на 500 мегабит интернета дома и нежелания провайдера заменить глючную арендуемую приставку для ТВ на что-то более адекватное - стал изучать предложения от других провайдеров и добрался до оператора связи из большой тройки. На сайте смог найти тариф на 500 мегабит, но нет сервиса по проверке возможности подключения по моему адресу. Стало интересно пройти путь боли и страданий. Прокрутил вниз страницу, а там нет никаких телефонов, вот совсем. То есть я хочу дать людям денег, а способа с ними связаться просто нет! Хорошо, рыскал по сайту, пока в каком-то из FAQ не развернул ответ - "Что делать если нет доступа к личному кабинету?" и не увидел заветный телефончик 8-800. Позвонил, смог победить идиотского робота и стал ждать ответа, робот обещал 3 минуты, но я прождал 12. Радостный молодой человек прослушал мой укор по поводу отсутствия контактов на сайте, но ничего не предпринял чтобы например создать тикет. По моему адресу он сообщил что есть только 100 мегабит и я прервал разговор. А ведь есть конкретный человек, отвечающий за качество сайта и наверняка пишущий отчеты о своей работе и получающий премию за своё какчество работы.

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

PS: я включил хаб вэб-дизайна вот почему, мне доводилось управлять сайтом и если мне давали информацию по наполнению, то я давал обратную связь тем кто это делал - ошибки, рекомендации. Вот был же кто-то, кто сделал часть про домашний интернет, да и саму титульную часть сайта, видели что нет телефона НИКАКОГО и промолчали? Или сказали но были посланы?

PPS: кстати, что за мода делать мотню на 10-12 страниц, на каждой по 2-3 слова и пока всё прочитаешь вынужден мотать страницу еще и еще??? Кому по рукам линейкой бить?

Теги:
+2
Комментарии10

UPD: ноут запущен, работает, но есть проблема с подсветкой экрана, обзор планируется после обзора донатного ноута. Если у кого-то есть такой нерабочий ноут но с целым экраном готов взять на поруки оплатив пересылку. Так же повреждены некоторые элементы корпуса и нет АКБ.

Чуть-чуть хочу похвалиться новым приобретением - HP OmniBook 500 на базе Pentium III. Как будет полный комплект думаю сделаю его обзор, но сейчас скажу что на HDD я обнаружил в первозданном виде файлы прошлого владельца, много рабочих материалов и фото и как убеждённый специалист по информационной безопасности я эти данные удаляю (за исключением какого-то софта тех лет).

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

Ладно, всем бобра!

Готов принять в дар от этого ноута док-станцию и/или запчасти.

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

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии5

Тут уже была не одна статья про то, как мессенджер MAX поможет бороться с мошенниками. И если в вацапах и телегах мне мошенники не звонили уже года два как понимая бесперспективность в моем случае, то через макса был сегодня прозвон от якобы домофонной компании. Переживаю за товарища майора, он не на больничном случаем?

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии4

Видимо кому-то не даёт покоя активность по продвижению браузеров Амиго, ЯБ и т.п. и вот я похоже стал одним из тех кому настойчиво хотят всучить GigaChat. Дней 5 как у меня самопроизвольно появляется новая вкладка с GigaChat

прикол в том что у меня в браузере уже есть закрепленная вкладка GigaChat, как и Deepseek. Я конечно не большой специалист по поиску мест куда этот зверь прописался, но всё куда мне хватило фантазии дотянуться я проверил и там новой вкладки с GigaChat я не обнаружил. Это кибер-девяностые или "Основы маркетинга" Котлера по-русски? )))

Теги:
Рейтинг0
Комментарии8

Есть такая программа - Microsoft Excel. Полезная штука, но её активно применяют не совсем для обработки данных, ей пользуются для визуализации процессов, алгоритмов. Базовых инструментов хватает чтобы делать много интересных вещей, но до сего дня, когда мне нужен был скриншот части таблицы, я просто делал его с помощью Win+Shift+S. Но, зная давно о том что в Whatsapp можно вставлять таблицу в виде картинки, я как-то не подумал что так можно делать быстро и точно скриншоты участков, особенно если хочется сделать потом анимацию GIF.

То есть выделяем участок в Excel, копируем в буфер обмена, переключаемся в десктопную версию Whatsapp и вставляем. Кусок таблицы вставится как PNG картинка, которую прям на том же экране можно скачать в один клик. Но и это еще не всё, я открыл Paint.Net и вставил из буфера кусок таблицы и он вставился как картинка. Чудеса.

Да-да, я знаю, что вы могли о таком знать уже лет 10 XD ну что поделать, может кто-то такой же как я жираф.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Один из пользователей сервиса Highload.fun Joad Nacer прогнал все задачи через GPT O1 и получил интересный результат:

Картинка из ТГ Highload.fun
Картинка из ТГ Highload.fun

По 2024 году результат расположился на 20 месте с 3,574 очками, как я понимаю код был на C++. В целом нормально, но я, непрофессиональный кодер на C#, разместился на 23 месте, так что я бы оценил кодерство ИИ на уровне студента 1-го курса непрофильной специальности.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии3

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

Корифеи мне конечно объясняли что мол приложению нужно "прокачаться" перед запуском и даже научили пользоваться бенчмарком для .NET, но забавность еще и в том, что на одной машине бенч может показывать одни результаты, а на другой - другие. И нет, я не про разницу в железе, а о том, что Метод1 на одной машине стабильно быстрее Метода2 на 10%, а на другом ПК - разница просто отсутствует.

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

Первая. Перестановка переменных местами:

int a = 0;
int b = 0;

и следом вариант

int b = 0;
int a = 0;

производительность меняется.

Вторая. Использование for/while:

for(int i = 0; i < 100; i++);
int i = 0; while(i < 100) i++;

еще с 90-х меня учили что в Си-подобных языках конструкции for/while по сути взаимозаменяемы, но в C# почему-то while в некоторых ситуациях оказывается быстрее.

Третья. Обнаружена пару дней назад:

int time = time * 10 + sec - 2;
sec++;

код выше работает медленнее чем

int time = time * 10 + sec++ - 2;

Из множества объяснений самым правдоподобной во всех случаях мне показалась гипотеза о том, в каких случаях какие значения оказываются в регистрах ЦПУ. Возможно это и так, но объяснение объяснением, а вопросы к компилятору всё равно останутся.

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии16

В одной из недавних статей узнал про сайт HighLoad.fun, было интересно решить несколько задач и забраться в лидеры. Если кто-то любит highload задачи, то зову принять участие. Общался с автором проекта HL в телеграме - отзывчивый добродушный человек, планируется версия сервера 2.0 с новыми плюшками. Может и выглядит как реклама, но моя заинтересованность чисто спортивная, я решаю такие задачи сколько себя помню, это как кроссворды для меня, а без конкуренции нет желания улучшать результат. В секции C++ конечно соревновательный дух активнее, но я пишу на C# и там результатов не так много.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии5

Тестировал всякое для ATARI XL/XE и написал небольшую демку в 106 Байт.

Чтобы понимать куда именно смотреть - тут экран 48х24, то есть 1152 байта, но в ОЗУ весь экран представлен всего 48 байтами, еще 78 байт (кто захочет посчитать 48+78=126, тут просто кодом реализованы однотипные строки) для программирования видеочипа, которому объяснено, что каждая строка на экране смотрит на одну и ту же часть ОЗУ, так мы заполняем весь экран. Для получения нестандартного узора используется 8 байт и перепрограммирование таблицы символов. Рисунок изначально подбирается так чтобы формировался равномерный узор. Для плавности движения используется VSYNC, анимация реализована битовым сдвигом.

.include "atari.asm"
    *= $3000
	lda #48
?copy
	sta screen-1, y
	dey
	bpl ?copy
;	ldy #$00
	iny
?copydl
	lda #$42
	sta dlist2, y
	iny
	lda #<screen
	sta dlist2, y
	iny
	lda #>screen
	sta dlist2, y
	iny
	cpy #72
	bne ?copydl
	lda #>font_data
	sta CHBAS
	lda #$23
	sta SDMCTL
	lda #<dlist
	sta SDLSTL
	lda #>dlist
	sta SDLSTL+1
?main
	ldx #1
?start
	lda RTCLOK+2
?wait
	cmp RTCLOK+2
	beq ?wait
	dex
	bpl ?start
?ring
    lda font_data, x
	asl
	adc #00
	sta font_data, x
	inx
	cpx #08
	bne ?ring
	beq ?main
dlist
	.byte $70, $70, $70
dlist2
	*= dlist2+72
	.byte $41, <dlist, >dlist
screen
	*= $7400
font_data
	.byte ~11000011
	.byte ~10011001
	.byte ~00100100
	.byte ~01000010
	.byte ~01000010
	.byte ~00100100
	.byte ~10011001
	.byte ~11000011

upd: -1 байт от @vadimr

upd: -1

Теги:
Всего голосов 14: ↑14 и ↓0+17
Комментарии1

Интересный механизм генерации экрана для ATARI XL/XE. Из-за особенности работы видеочипа мы можем для каждой строки сканирования указать видеорежим и то, с какого участка памяти брать данные для строки.

На картинке можно увидеть зоны хода луча, когда он выключен, это Horizontal Retrace и Vertical Retrace, соответственно интервал между строками и между следующими кадрами. В эти интервалы можно выполнять код, который будет делать что-то интересное для нас. Тут будем переключать таблицы символов. Зачем это нужно? Есть текстовый режим графики 40х24 с пятью цветами, который можно использовать для игр, но мы сильно ограничены в рисовании контента динамически, так как это по сути спрайты ориентированные по знакоместам. Символы в XL/XE представлены таблицей в 128 штук (1024 байт) и мы можем рисовать изображение внутри кодовой таблицы, а потом выводить символы в виде текста. Кажется, что 128 символов не хватит чтобы заполнить экран в 40х24=960 байт, вот тут мы и получаем профит.

Новый экран будет (условно) выглядеть так:

ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$

И так 24 раза. После каждых 8 строк сканирования (1 знакоместо) мы сдвигаем кодовую таблицу на 40*8 байт, где уже готово изображение для второй порции строк и т.д. То есть рисуем в памяти где участок для кодовой таблицы, а видеочип рисует их как символы. Мы получаем динамическую генерацию экрана и 5 цветов.

Когда я такое придумал, то думал, что это изобретение века, но потом нашёл информацию о таком способе: Источник 1, источник 2.

Теги:
Всего голосов 2: ↑2 и ↓0+5
Комментарии0

Информация

В рейтинге
1 105-й
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность

Специализация

Специалист
Средний