Зачем нужен аккаунт на Viva-Games?
Пользователи, у которых есть аккаунт, могут сохранять игровой процесс на сервер в любой игре и создавать списки игр (как на Youtube, например).
Создание аккаунта абсолютно бесплатно и займёт всего минуту Вашего времени.
Для создания аккаунта просто кликните в блоке "Войти на сайт" иконку социальной сети, в которой у вас уже есть активный профиль и следуйте подсказкам.
Value of Tables, The
https://viva-games.ru/game/value-of-tables-theZX Computing (Великобритания), 1987
Автор: Pete Cooke
Жанр: Программирование: Asm
Язык
- Русский
- English
Управление
- Клавиатура(?)
Игроков
- Один
Рассказать друзьям
Доступные версии
Доступные версии
- Описание (авт.пер.)
- Информация
Значение Столы
Пит Кук, автор Тау Кита и академии,
позволяет нам в некоторых из его машинного кода секретов.
Одним из наиболее эффективных методов в машинный код является
поиск в таблице. В базовой таблицы поиска примерно соответствуют с одной двумерными массивами проведения таблицы данных, для Пример: 10 DIM A (20) 20 при п = 1 TO 20 30 ПРОЧТИТЕ а (п) 40 СЛЕДУЮЩИЙ н 50 ДАННЫЕ<что вы хотите> В машине код поиски встречаются гораздо чаще, как они дать способ оценки сложных функций без написания массы сложного кода. Два хороших примеров использования справочные таблицы, которые приходят на ум, столы грех и ЭКРАН АДРЕСА.
Экран Адреса
Одним из самых больших препятствий для графического программирования на
Спектр является ужасным расположение файла отображения. Кто-нибудь смотреть SCREEN $ нагрузку будет видели, что на дисплее линии хранятся в непоследовательных моды и большой Много времени и усилий требуется, чтобы написать быстро и эф циент рутина выработать адрес экрана любого линии. Гораздо более простой способ заключается в создании поиск экрана адреса в памяти. Я обычно использую короткую основную программу сделать это. (Листинг 1).
В качестве дополнительной проверки, что программа работает Программа работает линию: 95 POKE адрес, 255 заполняет первый байт каждой строки экрана, как Программа вычисляет его адрес.
Когда программа закончит типа GO TO 130, чтобы сохранить Таблица. [Основная программа находится на TZX как «лабиринт стола”; это не авто-запуска, потому что (как РЗМ указывают) это не содержать четкое указание, которое должно быть обеспечено Рука. Полученный код, сохраняются на 65024, или шестигранной # FE00, следует за ним, как “ytable”. Обратите внимание, что эта таблица делает разлива более в UDGs, а значит, и строчит над нормальным Основные стеки; CLEAR, поэтому не только мудрым с это одно, а строго необходимо.] Я обычно хранить таблицу, как это, как высоко в памяти как возможно, но если ваш ассемблер хранится на высоком адресу затем измените значение базы в безопасное под ним (Лучше всего использовать кратное 256 по причинам, описанным позднее).
Попав эту таблицу в экране адресации памяти сейчас становится намного легче. Чтобы получить байт адреса экране мы только нужен короткий сегмент кода, как один в (листинг 2). На самом деле мы можем сделать еще лучше, чем это путем обеспечения Таблица начинается с кратной 256 байт. В этом случае младший байт адреса таблицы всегда равен 0 (Листинг 3). [Я добавил все предложения по сборке в конце этого файла, потому что комментарии являются весьма просветляющим. Обе версии GETADD находятся на TZX также. Обе процедуры являются сами перемещаемый, но они оба ожидают ytable, был загружен на # FE00, или 65024.] Хотя это выглядит тех пор, пока первый вариант там несколько улучшений. Сначала пару регистров DE является не используется. Во-вторых большинство инструкций являются один байт Инструкции, которые действуют намного быстрее и занимают меньше пространство на Z80.
Наконец вот 2 простых примеров использования в Ytable поиск. Во-первых, необычный очистить экран (это не коснется атрибуты) (листинг 4), а второй является обычным для пиксель прокрутки окна вверх (листинг 5).
[Они тоже находятся на TZX, и это тоже, как ожидают, ytable присутствовать на # FE00 уже. Листинг 4 называется “FancyCLS”. Это не перемещаемый, потому что он содержит абсолютный призыв к его внутренней GETADD. Это может, однако, быть с пользой называется от Basic.
Листинг 5 “PixScroll”. Его тестовый код (см листинг ниже) может быть вызван из Basic, но не переместимый; Сама процедура является, но не может быть вызвана из Basic. Как перечисление указывает, вы, вероятно, только хочу использовать Заключительная часть ней в готовой программе в любом случае.] Красота таблиц поиска адресов экран что, с таблицей в памяти, графические процедуры стали гораздо более простым и десятки процедур в долгий Программа может использовать ту же таблицу.
[В конце TZX, после “PixScroll”, вы найдете все монтажные списки, сохраненные из Hisoft Devpac 4.1. Я не знаю, они могут быть загружены в любой другой версии из Devpac, не говоря уже о других сборщиков, но это стоит попробовать в любом случае.
Ричард Бос, ноябрь 2012 года]
В листинге 2 10 ORG # C000 20 ЛОР # C000 30 YTABLE EQU # FE00; Независимо поиска является 37; 40; 50; Получить байт адреса 60; вход B = Line 70; C = Колонка 80; Выход HL = адрес 90; 100 GETADD LD L, B 110 LD H, 0 120 ДОБАВИТЬ HL, HL; 2 байта в каждом значении стола 130 LD DE, YTABLE; База стола 140 ДОБАВИТЬ HL, DE; С смещение в таблице 150 LD, (HL); Поднимите младший байт 160 ДОБАВИТЬ, C; Добавить на колонке смещение 170 LD E, A; В младшем байте DE 180 INC HL; Точка HL для старшего байта 190 LD D, (HL); Поднимите его 200 EX DE, HL; Трансфер в HL 210 RET; Done
220;
В листинге 3 10 ORG # C000 20 ЛОР # C000 30 YTABLE EQU # FE00; Независимо поиска является 40; 50; Получить байт адреса (Улучшенная версия = YTABLE на границе страницы) 60; вход B = Line 70; C = Колонка 80; Выход HL = адрес 90; 100 GETADD LD L, B, B = Screen Line 110 SLA L; 2 байта на значение (+ ручной) 120 LD, YTABLE / # 100 130; Это старший байт начального адреса таблицы 140 АЦП, 0; Добавить любой перенос по сдвигу 150 LD H, A; Форма таблицы смещение в HL 160 LD, (HL); Поднимите младший байт 170 ДОБАВИТЬ, C; Добавить на колонке смещение 180 INC L; Теперь только L нуждается вкл 190 LD H, (HL); Поднимите его 200 LD L, A; Положите низкий в L так HL = адрес 210 RET; Done
220;
Листинг 4 10 ORG # C000 20 ЛОР # C000 30 YTABLE EQU # FE00; Независимо поиска является 40; 50; Пример 1. 60; 70; Использование GETADD для необычного Clear Screen 80; (Атрибуты не коснулся) 90; 100 FANCY LD B, 192; Кол-во строк экрана 110 LD C, 0 120; 130 F_LOOP PUSH BC; Сохранить счетчик 131 декабря B; Как DJNZ петли только Б = 1 140 ЗВОНОК GETADD; HL = адрес строки 170 LD BC, 31; Один меньше не из байт / линии 180; 32 байт в каждой строке 190 LD E, L 200 LD D, H; Копировать HL в DE 210 INC DE; DE является местом для LDIR 220 LD (HL), 0; Clear самый левый байт 230 LDIR; И скопировать в другое 32 240 POP BC; Получить счетчик строк назад 250; 260 HALT; небольшая задержка. 270 DJNZ F_LOOP; Loop до готовности 280 RET 290; 300 GETADD LD L, B 310 SLA L 320 LD, YTABLE / # 100 330 АЦП, 0 340 LD H, 350 LD, (HL) 360 ДОБАВИТЬ, C 370 INC L 380 LD H, (HL) 390 LD L, 410 RET
420;
В листинге 5 10 ORG # C000 20 ЛОР # C000 30 YTABLE EQU # FE00; Независимо поиска является 40; 50; Эти линии образуют 60; короткий тест для 70; рутина. 80; 90 LD BC, # 0208 100 LD DE, # 1010 110 ЗВОНОК PIXSCR 120 RET 130; 140; Pixel Выделите окно 150; вверх … 160; 170; запись B = ystart 180; C = XStart 190; D = Глубина 200; E = Ширина 210; 220; Все параметры в 230; позиции символов 240; 250; Выход, BC, HL, IX 260; все коррумпированы 270; 280; DE сохраняется 290; 300 PIXSCR EQU $ 310 LD A, B; Тест начать у 320 CP 24; для нижней части экрана 330 RET NC; и прервать, если слишком большой 340 ДОБАВИТЬ A, D; также проверить базу окне 350 CP 24 360 RET NC; и прервать, если слишком большой 370; 380 LD A, C; аналогично тест х начало 390 CP 32; экран 32 символов в ширину 400 RET NC; прервать, если слишком большой 410 ДОБАВИТЬ, E, а также проверить правую руку 420 CP 32; край окна 430 RET NC 440; все вышеперечисленные тесты мог 450; вырезать в отделкой 460; программа, где вы уверены, 470; о том, что размер окна 480; всегда законно. 490; 500; 510 LD L, B; подобрать старт у 520 LD H, 0; в HL 530 ДОБАВИТЬ HL, HL; раз его 8 540 ДОБАВИТЬ HL, HL; преобразовать в пиксельной поз 550 ДОБАВИТЬ HL, HL; 560; 570 ДОБАВИТЬ HL, HL; и дважды это 580; индекс в ytable 590 EX DE, HL; перейти на DE, как не ADD IX, HL 600; 610 LD IX, YTABLE 620 ДОБАВИТЬ IX, DE; Пойнт IX в 630; правильное место в ytable 640 EX DE, HL; получить DE назад 650; 660 LD A, D, теперь преобразовать характер 670 ДОБАВИТЬ,; глубина в ряде 680 ДОБАВИТЬ,; пиксельных линий 690 ДОБАВИТЬ, 700 декабря; мы движемся на один меньше, чем это 710 LD B, A; поставить этот счетчик в B 720 730; не 740, сейчас на B = Нет пикселя 750; линии, чтобы перейти 760; C = X начать поз из 770; окно 780; Е = ширина 790; окно 800; IX указывает на 810; Положение в 820; Ytable 830; 840; петля ниже движется каждый пиксель линии до 1 850 PIXSC1 PUSH BC; сохранить эти регистры 860 PUSH DE; как они были повреждены 870; этот цикл 880 LD B, E, получить ширину в B для внутреннего цикла 890 LD A, C; получить позицию байта 900 ДОБАВИТЬ, (IX); из начала этого 910 LD E, A; пиксель линия 920 LD D, (IX + 1); DE рег пара 930 LD A, C, и адрес байта Добавить 940, (IX + 2); от начала линии ниже 950 LD L, A; в HL реестре 960 LD H, (IX + 3); пара 970; 980 PIXSC2 ЛДИ; копия (HL) в (DE) 990 DJNZ PIXSC2; на ширину окна 1000; 1010 INC IX; шаг указатель 1020 INC IX; следующая строка 1030 POP DE 1040 POP BC; восстановление обе рег-ые 1050 DJNZ PIXSC1; обратно двигаться следующую строку 1060; 1070 LD A, C; это адрес байта 1080 ДОБАВИТЬ, (IX); нижний левый угол 1090 LD L, A; окна 1100 LD H, (IX + 1); в HL 1110 LD B, E; ширина до Б снова 1120 PIXSC3 LD (HL), 0; заполнить нижнюю строку 1130 INC L; с нулевым годов 1140 DJNZ PIXSC3
1150 RET; отделкой …
Игра Value of Tables, The запускается прямо на сайте. Эта утилита для программинга на ASM, изданная в Великобритании в 1987 году творческой группой ZX Computing, которую написал Pete Cooke.
Сохранённые игры[X]
Справка[X]
Помощь уже в пути!
- x1
- x2
- x3
<<<<
<<<<
<<<<
Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!
Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.
Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.
Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.
Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.