Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 31

Тема: Snake в 93 байт

  1. #1
    Activist
    Регистрация
    15.01.2005
    Адрес
    TYU-MEN
    Сообщений
    217
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Snake в 93 байт


    Первую версию змейки я написал за пару часов, и весила она чуть больше 150 байт. Я вспомнил про статьи в электронном журнале и захотел побить рекорд. Следующая версия уже весила 100 байт, но и потраченное время разработки перевалило за 6 часов. Остановившись на этом, показал свою версию игры, а начинающий программист – свою, и после я забыл об игре на некоторое время.

    Разбирая папку со своими проектами и исходниками, я наткнулся на исходный код своей Змейки и понял, что код можно немного модифицировать и сократить еще на пару байт. Процесс оптимизации занял целый день, а сокращение составило только 5 байт. В итоге игра стала весить 95 байт.

    • 59 строчек кода без комментариев
    • Полная релоцируемость программы (размещение в любой адрес без перекомпиляции)
    • Не используется стек
    • Используется только основной набор регистров: a,b,c,d,e,h,l и r как генератор случайности
    • Без использования процедур ПЗУ
    • Честная инициализация экрана и бордера
    • Классическое управление клавишами: 6,7,8,9 (Sinclair Joystick)
    • Каждую инициализацию псевдослучайным образом расставляться кролики


    Исходный код:

    Скрытый текст


    Код:
    	org #8000
    begin ld de,#598f;snake xy
    	ld hl,#5aff
    	ld b,l
    	ld c,l
    ;---
    rabbit1	ld (hl),b
    	ld a,r
    	cp l
    	jr z,rabbit2
    	inc (hl)
    rabbit2 dec hl
    	bit 3,h
    	jr nz,rabbit1
    	ex hl,de
    ;---
    l1	xor a
    	out (#fe),a
    clr	ld (de),a
    	dec de
    	bit 6,d
    	jr nz,clr
    ;---
    	ld (hl),33
    	ld d,#5a
    move1	ld a,(de)
    	dec a
    	cp 254
    	jr nc,move2
    	ld (de),a
    move2	jr nz,move3
    	dec (hl)
    move3	dec de
    	bit 3,d
    	jr nz,move1
    ;---
    	ld a,#ef
    	in a,(#fe)
    	rra
    	rra
    	jr c,$+5
    	ld bc,#ffe0
    	rra
    	jr c,$+5
    	ld bc,#0020
    	rra
    	jr c,$+5
    	ld bc,#0001
    	rra
    	jr c,$+4
    	ld b,e;ld bc,#ffff
    	ld c,e
    ;---
    	ld a,(hl)
    	and %00100000
    	add hl,bc
    	or (hl)
    	inc a
    	cp 7
    	jr nc,begin
    	ld a,h
    	inc a
    	and %00000011
    	jr z,begin
    	jr l1
    [свернуть]


    более подробно можно почитать на хабрахабр
    Последний раз редактировалось Firestarter; 10.04.2018 в 18:35.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    1,343
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Firestarter Посмотреть сообщение
    • Не используется стек
    • Используется только основной набор регистров: a,b,c,d,e,h,l и r как генератор случайности
    • Без использования процедур ПЗУ
    Круто, можно ТЕСТ-ПЗУ из этого сделать.
    И зашить вот в такой ROM https://hackaday.com/2013/10/09/maki...d-only-memory/
    Граф Дракула наш кумир, патамушта он вомпир!

  4. #3
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    метка begin потерялась?

  5. #4
    Activist
    Регистрация
    15.01.2005
    Адрес
    TYU-MEN
    Сообщений
    217
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Огромное спасибо поправил

  6. #5
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,671
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Firestarter Посмотреть сообщение
    Огромное спасибо поправил
    Код:
    	jr c,$+5		----> jr c,$+4
    	ld bc,#0001		----> ld c,#01
    -1 байт

  7. #6
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    578
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    -1 байт
    Да только не работает, нажми вверх и вправо.
    можно вместо ld a, 0xef, сделать xor a, будет работать вся клава, но зато будет работать и -1. Вообще конечно в таких вещах говорить думал 2 часа не совсем верно. Если больше 10 лет было интересно переделать, да еще и на хабре перед непосвященными похвастаться, значит сидело глубоко в голове и потрачено на это намного больше. Но эт лирика, нормальный питон получился.

  8. #7
    Activist
    Регистрация
    15.01.2005
    Адрес
    TYU-MEN
    Сообщений
    217
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    так как, опрос клавиатуры не изменяет геймплей и управление 6789, то я сократил до 93 БАЙТ!

    Скрытый текст

    Код:
    begin	ld de,#598f;snake xy
    	ld hl,#5aff
    	ld b,l
    	ld c,l
    ;---
    rabbit1	ld (hl),b
    	ld a,r
    	cp l
    	jr z,rabbit2
    	inc (hl)
    rabbit2 dec hl
    	bit 3,h
    	jr nz,rabbit1
    	ex hl,de
    ;---
    l1	xor a
    	out (#fe),a
    clr	ld (de),a
    	dec de
    	bit 6,d
    	jr nz,clr
    ;---
    ;	xor a
    	in a,(#fe)
    	rra
    	rra
    	jr c,$+5
    	ld bc,#ffe0
    	rra
    	jr c,$+5
    	ld bc,#0020
    	rra
    	jr c,$+5
    	ld bc,#0001
    	rra
    	jr c,$+4
    	ld b,e;ld bc,#ffff
    	ld c,e
    ;---
    	ld (hl),33
    	ld d,#5a
    move1	ld a,(de)
    	dec a
    	cp 254
    	jr nc,move2
    	ld (de),a
    move2	jr nz,move3
    	dec (hl)
    move3	dec de
    	bit 3,d
    	jr nz,move1
    ;---
    	ld a,(hl)
    	and %00100000
    	add hl,bc
    	or (hl)
    	inc a
    	cp 7
    	jr nc,begin
    	ld a,h
    	inc a
    	and %00000011
    	jr z,begin
    	jr l1
    [свернуть]


    P.S. Уважаемые модераторы поменяйте название темы до 93 байт.

    - - - Добавлено - - -

    Кто читал статью на хабре, добавил раздел краткое описание алгоритма.
    Последний раз редактировалось Firestarter; 11.04.2018 в 21:37.

  9. #8
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,637
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну что ж, пора за крестики-нолики браться с искусственным интеллектом в 100 байт
    Если серьезно, то круто! Молодца!

  10. #9
    Master Аватар для Бука
    Регистрация
    29.08.2012
    Адрес
    Анапа
    Сообщений
    602
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    пора за крестики-нолики браться
    Ну, для ПМК советских в 105 байт программы, 15 длинных переменных и стек впихивали ШАШКИ и одноклеточный морской бой.

    Рекордной прогой вроде как до сих пор считаются 1K ZX Chess для папы спека. Впрочем для 1к ZX81 и Тетрис сделали.

    https://en.wikipedia.org/wiki/1K_ZX_Chess
    «Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
    Электроника МК-61, Psion series 5mx.

    Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор

  11. #10
    Guru Аватар для rasmer
    Регистрация
    20.01.2005
    Адрес
    Саранск
    Сообщений
    2,185
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Маму вашу.... Использование в одном листинге DEC, HEX и ссылки типа +n... Наркоманский исход какой-то...
    Мои интры: [Kukarachess][Super boot rmx][tRUSHE MOSAIc][BLAZE]
    Мои игры: [Overload][Removal]

    Список игр для ZX-Spectrum: [2015] [2014]

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. БАЙТ БЭМЗ :)
    от stepmotor в разделе Память
    Ответов: 16
    Последнее: 01.03.2019, 21:24
  2. Байт 48
    от Arceny в разделе Unsorted
    Ответов: 87
    Последнее: 28.03.2017, 22:35
  3. SNAKE ESCAPE
    от DenisGrachev в разделе Игры
    Ответов: 17
    Последнее: 09.12.2016, 10:30
  4. Ответов: 24
    Последнее: 20.09.2010, 23:25
  5. Диагностика п/к Байт
    от klingon в разделе Unsorted
    Ответов: 14
    Последнее: 24.05.2010, 19:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •