Если на бордере не видно мерцания, говорящее о времени отрисовки, то надо включить в эмуляторе полный бордер, полоска довольно таки узкая.
Если на бордере не видно мерцания, говорящее о времени отрисовки, то надо включить в эмуляторе полный бордер, полоска довольно таки узкая.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Что и.т.д? Ноль или всё таки 4?
Для такого простого эффекта не нужно строить таблицу, а если и строить, то медленный код вполне подойдёт, так как таблица строится один раз. Надо стремиться сделать короткий код, а не быстрый.
Зачем ты тут написал после тройки ноль, и что твой код медленный?
Убрал построение таблицы.
Чуток оптимизнул.
Можно ещё в разы ускорить, если не проверять все 32х24 атрибута на каждом кадре, а указателем шагать по диагоналям, по сторонам ромба. На и так за кадр успевает, а короче получится врятли.
Код:ORG 6000H ENTRYPOINT $ LD HL,4000H LD DE,4001H LD BC,1AFFH LD (HL),FFH LDIR EI LD A,29 LD (KADR),A MAINLOOP LD A,0 OUT (FE),A HALT LD A,1 OUT (FE),A LD A,2 KADR EQU $-1 DEC A LD IX,5800H LD HL,SATTR LD DE,#180C LOOP1 LD B,#10 LOOP2 DEC A JR NZ,SKIP1 LD C,(HL) LD (IX+0),C SKIP1 INC IX INC HL DJNZ LOOP2 LD B,#10 LOOP3 INC A JR NZ,SKIP2 LD C,(HL) LD (IX+0),C SKIP2 INC IX INC HL DJNZ LOOP3 DEC E DEC A BIT 7,E JR Z,$+4 INC A INC A DEC D JR NZ,LOOP1 LD HL,KADR DEC (HL) JR NZ,MAINLOOP JR $ SATTR DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 00H, 2DH, 2DH, 2DH, 00H, 2DH, 2DH DEFB 2DH, 00H, 00H, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 2DH DEFB 2DH, 00H, 2DH, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 00H, 2DH, 00H, 00H, 00H, 2DH, 00H, 2DH DEFB 2DH, 00H, 00H, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 2DH DEFB 2DH, 00H, 00H, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 00H, 00H, 2DH, 2DH, 2DH, 00H, 00H, 2DH DEFB 00H, 00H, 00H, 00H, 00H, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 2DH DEFB 2DH, 00H, 00H, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 00H, 2DH, 00H, 2DH, 2DH, 2DH DEFB 2DH, 00H, 2DH, 00H, 2DH, 2DH, 2DH, 2DH DEFB 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH, 2DH DEFB 12H, 12H, 12H, 12H, 12H, 12H, 12H, 12H DEFB 12H, 12H, 12H, 12H, 12H, 12H, 12H, 12H DEFB 12H, 12H, 12H, 12H, 12H, 12H, 12H, 12H DEFB 12H, 12H, 12H, 12H, 12H, 12H, 12H, 12H
все же я табличку построил, 45 байт
Код:device zxspectrum128 ORG #6000 begin ; jr $ ; inc d;$14 ; dec d;$15 ; ld hl,#4000,de,#4001,bc,6143,(hl),#AA:ldir ld hl,#5800 ld d,$1B call draw ld d,$11 ld a,$14,(opcode1),a call draw jr $ draw: ld c,12 sp0: ld e,d ld b,16 sp1: ld (hl),e dec e inc hl djnz sp1 ld b,16 sp2: ld (hl),e inc e,hl djnz sp2 opcode1: dec d dec c jr nz,sp0 ret end display /d,end-begin savesna "spir.sna",begin
возвращаясь к вычислению числа pi=3.141
хоть и считается число, но выходит медленно
Накалякал процедуру опроса всех 40 клавиш Спектрума. В результате выдает коды нажатых одной или двух одновременно клавиш.
Почему-то никогда не встречал такой процедуры у других. Везде только опрос конкретных нескольких клавиш.
А мне сейчас нужен генератор случайных чисел в диапазоне от 0 до Х. Число Х задается в начале процедуры, может быть любым в диапазоне 1..65535. Ни у кого не завалялась?Код:; чтение до двух одновременно нажатых клавиш ; вход: нет ; выход: (code_key_1),(code_key_2) = коды нажатых клавиш (если не нажата, то 0) readkey ld de,0 ld (code_key_1),de ld bc,32766 call readkey_10 ld bc,49150 call readkey_10 ld bc,57342 call readkey_10 ld bc,61438 call readkey_10 ld bc,63486 call readkey_10 ld bc,64510 call readkey_10 ld bc,65022 call readkey_10 ld bc,65278 call readkey_10 ret readkey_10 in a,(c) rrca call nc,readkey_20 inc e rrca call nc,readkey_20 inc e rrca call nc,readkey_20 inc e rrca call nc,readkey_20 inc e rrca call nc,readkey_20 inc e ret readkey_20 push af ld bc,code_key_1 ld a,(bc) and a jp z,readkey_21 inc bc readkey_21 ld hl,table_code_key add hl,de ld a,(hl) ld (bc),a pop af ret code_key_1 defb 0 ; код нажатой клавиши 1 code_key_2 defb 0 ; код нажатой клавиши 2 table_code_key defb 32,16,77,78,66 ; таблица кодов нажатых клавиш для полурядов defb 13,76,75,74,72 defb 80,79,73,85,89 defb 48,57,56,55,54 defb 49,50,51,52,53 defb 81,87,69,82,84 defb 65,83,68,70,71 defb 17,90,88,67,86
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)