Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
 
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
#1

Разминка для спецов №1 (512b game). Предлагаю развлечься! - Assembler

02.12.2016, 00:01. Просмотров 912. Ответов 15

Друзья спецы. Кто хочет немного отвлечься от помощи студентам и проявить спортивный программистский интерес?
Предлагаю замутить... (хотел сначала написать "конкурс", но призов нет и жюри тоже)... в общем, своеобразную коллективную развлекуху
Назовём это "Asm 512b game fun"

Задача: написать на ассемблере игру на любую тему.

Условия:
  1. Игра должна быть написана на MASM, TASM или FASM (можно NASM, но нежелательно – не у всех он есть, вероятно) под DOS. Размер получаемого COM-файла не должен превышать 512 байт! Можно использовать FPU, MMX, rdtsc и т.п., а вот SSE/AVX нежелательно (не у всех это добро может поддерживаться).
  2. Программа должна корректно работать в DOSBox (текстовый или графический режим – неважно).
  3. Управление игрой должно производиться через взаимодействие с пользователем (клавиатура, мышь...), т.е. классический вариант автоматической игры "жизнь" не годится (если только юзер не сможет влиять на её ход). Хочется, чтобы это была именно игра, а не просто программка, которой можно управлять (например, эффект пламени, в котором можно менять направление ветра стрелками влево-вправо на игру не очень похож).
  4. Должен быть предусмотрен выход из программы (либо клавиатурой, либо после логического завершения игрового процесса, но разумеется, такой игровой процесс должен длиться разумное кол-во времени – максимум 5 минут, а не полчаса ).
  5. Код должен быть написан с нуля специально для этой темы, т.е. нельзя использовать чужой код или код, написанный ранее.
  6. Результат в виде ASM-файла и скриншота выкладывайте прямо сюда. Также просьба прикрепить архив с исходником и COM-файлом.
  7. Сроков проведения "разминки" нет, она может идти хоть год, но хотелось бы увидеть большую часть работ в течение недели (до 8 декабря или раньше).
  8. Чем интереснее и красивее будет игра, тем лучше (всяческие спецэффекты и трюки тоже приветствуются)
Есть желающие поучаствовать?
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2016, 00:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разминка для спецов №1 (512b game). Предлагаю развлечься! (Assembler):

Запрос для спецов по SQL - Базы данных
Имеется таблица: <TABLE...

Разминка для программистов - C#
Интересно будет посмотреть на коды, кто и как решил эти задачи. :) 1. Написать программу, которая вводит по строкам с клавиатуры...

Разминка для мозгов - C++
Необходимо выполнить задания, написав их на языке С: 1) Нарисовать схему алгоритма для программы, которая вводит значения переменных a...

Разминка для профессианалов - C++
Помогите решить детскую задачу Условие: В телефонной книге 100 номеров абонентов. • Определить номер телефона для указанной фамилии....

разминка для мозга - Алгоритмы
на askdev.ru есть конкурс - игра в города(http://www.askdev.ru/question/1969/) есть массив городов, нужно написать программу которая на...

Разминка для программиста, - Pascal
Уважаемые, Помогите, пожалуйста. Очень сильно нужно. Думаю для вас это не составит большого труда. Задача 1. Если a<0 и b>0, то...

15
R71MT
1931 / 740 / 216
Регистрация: 29.07.2014
Сообщений: 1,744
02.12.2016, 04:42 #2
..суть в рамках 512? ОК! Не плохая идея...
0
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
02.12.2016, 09:34  [ТС] #3
Цитата Сообщение от R71MT Посмотреть сообщение
суть в рамках 512?
В целом – да
Хотел сначала 256b написать, но подумал, что игры, скорее всего, будут не фонтан. Хотя, Farbrausch и не такое вытворяли, см. аттач (не игра, но всё же).
В общем, на первый раз нормально
0
Вложения
Тип файла: zip fr0_1.zip (3.0 Кб, 7 просмотров)
alexcoder
1550 / 695 / 93
Регистрация: 03.06.2009
Сообщений: 3,814
Завершенные тесты: 1
02.12.2016, 12:08 #4
Цитата Сообщение от Jin X Посмотреть сообщение
MMX, rdtsc
В досбоксе это не поддерживается. Он эмулирует 486 процессор.
0
alexcoder
1550 / 695 / 93
Регистрация: 03.06.2009
Сообщений: 3,814
Завершенные тесты: 1
02.12.2016, 12:34 #5
У меня тоже не игра, но зато 74 байта.
1
Вложения
Тип файла: rar muar.rar (459 байт, 8 просмотров)
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
02.12.2016, 15:55  [ТС] #6
Цитата Сообщение от alexcoder Посмотреть сообщение
В досбоксе это не поддерживается. Он эмулирует 486 процессор.
Значит, ошибка, пардон. Хотя rdtsc всё же работает, попробовал сейчас.

Цитата Сообщение от alexcoder Посмотреть сообщение
У меня тоже не игра, но зато 74 байта.
Даёшь игру теперь?!
0
Constantin Cat
1050 / 727 / 235
Регистрация: 28.02.2015
Сообщений: 1,848
Завершенные тесты: 1
03.12.2016, 03:20 #7
Jin X, давно как, бы писал самолетики, нужно порытся в архивах.
0
Ethereal
2875 / 1214 / 148
Регистрация: 17.02.2013
Сообщений: 2,008
05.12.2016, 17:18 #8
Тут два требования черезчур строгими кажутся. Писать только сейчас - ну так если есть чем заняться, то не до того уже. И 512 байт, ну так данные программы, например лабиринты, могут сожрать значительно больше. Если бы было ограничение именно на код в 512 байт, то было бы логичнее, а данных сколько угодно.

Вот нашел в старом архиве свой старый Сокобан. Написан на ассемблере как COM-файл, но потом сжат LzExe и от этого превратился в EXE. Кода в нем 0x218 байт. Почти вписывается. И можно было бы вполне вписать, заменив вставленные в него копирайты в 3 строки на краткое (C)Ethereal и еще что сократить/ужать (например убрать возможность отката ошибочного хода), да исходник-то не сохранился. Вернее он на MFM-винте, да только тот некуда подключить.

А вот данных в программе в виде лабиринтов в несколько килобайт и еще рекордных результатов байт на 400.

В программе фишка. Она сжата с помощью LzExe, но лучшие результаты сохраняются в сам EXE-файл в его конце. Там уже какие-то сохранены.

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

После запуска программы с помощью стрелок вправо-влево выбирается лабиринт, потом пробелом переходим в выбранный лабиринт, пробелом из него-же выходим. Esc - выход из программы. В процессе игры клавишей BackSpace (забой) можно откатить последний сдвиг блока, если он был сделан по ошибке, но только один. А сама игра идет стрелками.

Когда лабиринт разобран, человечек пропадает, тут нажать пробел, получить поздравления и еще раз пробел.
0
Вложения
Тип файла: rar SOKOBAN.rar (7.2 Кб, 4 просмотров)
Ethereal
2875 / 1214 / 148
Регистрация: 17.02.2013
Сообщений: 2,008
05.12.2016, 17:35 #9
Смысл игры - затолкать человечком рубины (блоки) на квадратные поля. Когда рубин загнан на такое поле он выглядит уже как звездочка.
0
Ratio
6 / 6 / 0
Регистрация: 24.09.2016
Сообщений: 57
05.12.2016, 20:08 #10
Цитата Сообщение от Jin X Посмотреть сообщение
не должен превышать 512 байт!
Я писал игру, но она весила 3 кило. На 512 б не вижу особого смысла. Разве что змейку какую-нибудь написать.
Хотя может быть что-то и попробую, когда время появиться.
0
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
05.12.2016, 22:59  [ТС] #11
Цитата Сообщение от Ethereal Посмотреть сообщение
Тут два требования черезчур строгими кажутся. Писать только сейчас - ну так если есть чем заняться, то не до того уже. И 512 байт, ну так данные программы, например лабиринты, могут сожрать значительно больше. Если бы было ограничение именно на код в 512 байт, то было бы логичнее, а данных сколько угодно.
Так, в 512 байтах весь и прикол. Уместить максимум в минимум
Это типа демосцены 512b intro, только в формате игры.
Про "писать только сейчас" – может быть и чересчур. Просто если уже было написано, то какой тут спортивный интерес?
Хотя, если уже что-то есть, выкладывай, всё равно интересно

Добавлено через 1 минуту
Цитата Сообщение от Ratio Посмотреть сообщение
Разве что змейку какую-нибудь написать.
Я змейку писал как-то давным-давно. Симпатично получилось, но чуть больше 1kb. Так что, в 512 байтах змейка тоже может разная получится
0
Ethereal
2875 / 1214 / 148
Регистрация: 17.02.2013
Сообщений: 2,008
05.12.2016, 23:34 #12
Цитата Сообщение от Jin X Посмотреть сообщение
Хотя, если уже что-то есть, выкладывай, всё равно интересно
Так я-ж выложил. Или еще чего нарыть ?

Добавлено через 3 минуты
Цитата Сообщение от Jin X Посмотреть сообщение
Это типа демосцены 512b intro, только в формате игры.
Не, ну графическая демонстрашка затмит любую текстовую игру. Ибо красиво. А в графические игры 512 я что-то мало верю. В игре-ж содержание должно быть, а не просто эффект 1 шт.

Добавлено через 7 минут
Хотя да, питона можно запихать. Или стрелялку по пролетающей слева-направо хреновине.
0
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
06.12.2016, 00:40  [ТС] #13
Цитата Сообщение от Ethereal Посмотреть сообщение
Так я-ж выложил. Или еще чего нарыть ?
Ну, так это ж не 512b

Цитата Сообщение от Ethereal Посмотреть сообщение
Хотя да, питона можно запихать. Или стрелялку по пролетающей слева-направо хреновине.
Да можно придумать, мне кажется, даже что-то типа xonix'а упрощённого. Или какой-нибудь простенький тетрис. Или что-то связанное с перестановкой цветов. Автослалом (раньше были "игры на экране").

Добавлено через 1 минуту
Но в тексте, согласен, попроще будет что-то сделать
0
Ethereal
2875 / 1214 / 148
Регистрация: 17.02.2013
Сообщений: 2,008
06.12.2016, 01:02 #14
Цитата Сообщение от Jin X Посмотреть сообщение
Ну, так это ж не 512b
Нет. Кода там 512 байт + 24 байта лишку. Остальное данные. Если считать только размер кода, то почти подходит. Потому и выложил.

Добавлено через 4 минуты
З.Ы. Так тут игры в 512 байт пока никто не выложил. Или меньше 512 байт, но не игра или игра, но больше.
0
Jin X
Евгений, Самара
2005 / 789 / 126
Регистрация: 14.12.2014
Сообщений: 1,800
Записей в блоге: 2
Завершенные тесты: 2
07.12.2016, 01:19  [ТС] #15
Почти сделал за сегодняшний вечер xonix! Всё как положено: с закраской и врагами
Минимальная рабочая конфигурация 398 байт (с 3 врагами, с одним - 386 байт).
Максимальная (с полной инициализацией регистров, 3 врагами, со звуком, доп. клавиатурными удобствами, миганием при врезании, подсчётом очков... правда, пока без вывода на экран ) - 510 байт.

В общем, осталось сделать вывод счёта на экран (и оптимизировать под 512 байт) и можно выкладывать сюда
p.s. Заливку делал через рекурсию - частенько происходило переполнение стека, пришлось делать оптимизацию стека (1 байт возврата вместо 2-х). Так что, может, ещё алгоритм заливки изменю - почитать надо...
0
07.12.2016, 01:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 01:19
Привет! Вот еще темы с ответами:

VPN для SCALANCE S61x, разминка для мозга - Сети
Столкнулся с вопросом поднять VPN тунель на оборудовании Logmatic (такое древобрабатывающее оборудование) для организации контроля со...

C++, Одномерный массив - разминка для мозгов - C++
Есть следующая задачка: "Используйте одномерный массив для решения. Считать 100 чисел, каждый из которых между 1 и 10...

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

Для спецов по генерированию docx файла, в частности библиотека docx4j - Java SE
есть специалисты по библиотеке docx4j ? просто генерирует вроде бы страничку нормально, но вот незадача таблицы вроде делает, но без рамок,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru