Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Jun 20, 2019 10:33 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 42 posts ]  Go to page Previous 1 2 3 Next
Author Message
PostPosted: Fri Mar 15, 2019 2:56 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Как насчет нарисовать клавиши, как у пианино, чтобы по ним можно было нажимать?)

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Mar 15, 2019 5:53 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
В перспективе можно добавить. Но я сомневаюсь, что у меня получится красиво нарисовать. Пока могу добавлять квадратные кнопки, как в Forte Chimes.

_________________
:?: :arrow: :idea:


Top
   
PostPosted: Fri Mar 15, 2019 7:10 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Вот так можно упростить и уменьшить код http://prntscr.com/mycxic или переделать на процедуру http://prntscr.com/myd6wp
В процедуру вообще можно передавать два параметра: первый для сравнения с ah, второй результирующий. Т.е. проверку проводить в процедуре.
Белый и черные прямоугольники вроде не сложно :)
или можно картинку использовать RAW 2 цветный.

_________________
Через тернии к звездам


Top
   
PostPosted: Sat Mar 16, 2019 9:31 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
Переделал по первому варианту, по второму - не получается. Добавил кнопки. Кстати, с виртуальной клавиатурой тоже работает. :)


Attachments:
PIANO3.ASM [18.55 KiB]
Downloaded 18 times
PIANO3 [4.19 KiB]
Downloaded 14 times

_________________
:?: :arrow: :idea:
Top
   
PostPosted: Sun Mar 17, 2019 1:08 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Вот сделано через функцию, потести.
У меня спикер не работает, проверить не могу.


Attachments:
PIANO3.zip [5.97 KiB]
Downloaded 18 times

_________________
Через тернии к звездам
Top
   
PostPosted: Mon Mar 18, 2019 7:59 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
Не могу скомпилировать. В Fasm пишет mov al, [_key] error: operand sizes do not match.

_________________
:?: :arrow: :idea:


Top
   
PostPosted: Mon Mar 18, 2019 8:55 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Попробуй добавить byte сюда http://prntscr.com/mzly76

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Mar 19, 2019 5:46 pm 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 112
А стек обрушить не боитесь?
Spoiler: Show
Code:
proc playnote _key, _note
   mov al, [_key]
   cmp   ah, al
   jnz   @f
   mov esi, [_note]
   mcall 55,55
   jmp still ;<<<<<<<<<<<<<<<<<
  @@:
   ret
endp

  key:         ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
    mcall 2      ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)

   stdcall playnote, 0x041, T07 ; A - if Caps Lock ON
   stdcall playnote, 0x05a, T08 ; Z
   stdcall playnote, 0x053, T09 ; S
   stdcall playnote, 0x058, T0a ; X
   stdcall playnote, 0x044, T0b ; D
   stdcall playnote, 0x043, T0c ; C
   stdcall playnote, 0x056, T01 ; V
   stdcall playnote, 0x047, T02 ; G
   stdcall playnote, 0x042, T03 ; B
   stdcall playnote, 0x048, T04 ; H
   stdcall playnote, 0x04e, T05 ; N
   stdcall playnote, 0x04d, T06 ; M
   stdcall playnote, 0x04b, T07 ; K
   stdcall playnote, 0x03c, T08 ; <
   stdcall playnote, 0x04c, T09 ; L
   stdcall playnote, 0x03e, T0a ; >
   stdcall playnote, 0x03a, T0b ; :
   stdcall playnote, 0x03f, T0c ; ?
   stdcall playnote, 0x022, T11 ; "
   stdcall playnote, 0x021, T0c ; key !-------
   stdcall playnote, 0x051, T11 ; key Q
   stdcall playnote, 0x040, T12 ; @
   stdcall playnote, 0x057, T13 ; W
   stdcall playnote, 0x023, T14 ; #
   stdcall playnote, 0x045, T15 ; E
   stdcall playnote, 0x052, T16 ; R
   stdcall playnote, 0x025, T17 ; %
   stdcall playnote, 0x054, T18 ; T
   stdcall playnote, 0x05e, T19 ; ^
   stdcall playnote, 0x059, T1a ; Y
   stdcall playnote, 0x026, T1b ; &
   stdcall playnote, 0x055, T1c ; U
   stdcall playnote, 0x049, T21 ; I
   stdcall playnote, 0x028, T22 ; (
   stdcall playnote, 0x04f, T23 ; O
   stdcall playnote, 0x029, T24 ; )
   stdcall playnote, 0x050, T25 ; P
   stdcall playnote, 0x07b, T26 ; {
   stdcall playnote, 0x02b, T27 ; +
   stdcall playnote, 0x07d, T28 ; }
   stdcall playnote, 0x07c, T29 ; |
   stdcall playnote, 0x061, T17 ; a - if Caps Lock OFF
   stdcall playnote, 0x07a, T18 ; z
   stdcall playnote, 0x073, T19 ; s
   stdcall playnote, 0x078, T1a ; x
   stdcall playnote, 0x064, T1b ; d
   stdcall playnote, 0x063, T1c ; c
   stdcall playnote, 0x076, T21 ; v
   stdcall playnote, 0x067, T22 ; g
   stdcall playnote, 0x062, T23 ; b
   stdcall playnote, 0x068, T24 ; h
   stdcall playnote, 0x06e, T25 ; n
   stdcall playnote, 0x06d, T26 ; m
   stdcall playnote, 0x06b, T27 ; k
   stdcall playnote, 0x02c, T28 ; ,
   stdcall playnote, 0x06c, T29 ; l
   stdcall playnote, 0x02e, T2a ; .
   stdcall playnote, 0x03b, T2b ; ;
   stdcall playnote, 0x02f, T2c ; /
   stdcall playnote, 0x027, T31 ; '
   stdcall playnote, 0x060, T2c ; `
   stdcall playnote, 0x009, T31 ; tab
   stdcall playnote, 0x031, T32 ; 1
   stdcall playnote, 0x071, T33 ; q
   stdcall playnote, 0x032, T34 ; 2
   stdcall playnote, 0x077, T35 ; w
   stdcall playnote, 0x065, T36 ; e
   stdcall playnote, 0x034, T37 ; 4
   stdcall playnote, 0x072, T38 ; r
   stdcall playnote, 0x035, T39 ; 5
   stdcall playnote, 0x074, T3a ; t
   stdcall playnote, 0x036, T3b ; 6
   stdcall playnote, 0x079, T3c ; y
   stdcall playnote, 0x075, T41 ; u
   stdcall playnote, 0x038, T42 ; 8
   stdcall playnote, 0x069, T43 ; i
   stdcall playnote, 0x039, T44 ; 9
   stdcall playnote, 0x06f, T45 ; o
   stdcall playnote, 0x070, T46 ; p
   stdcall playnote, 0x02d, T47 ; -
   stdcall playnote, 0x05b, T48 ; [
   stdcall playnote, 0x03d, T49 ; =
   stdcall playnote, 0x05d, T4a ; ]
   stdcall playnote, 0x05c, T4b ; \
   stdcall playnote, 0x008, T4c ; backspace
   stdcall playnote, 0x00d, T51 ; enter
   stdcall playnote, 0x066, T01 ; f
   stdcall playnote, 0x06a, T05 ; j
   stdcall playnote, 0x033, T08 ; 3
   stdcall playnote, 0x037, T11 ; 7
   stdcall playnote, 0x030, T15 ; 0
   stdcall playnote, 0x0b4, T10 ; home
   stdcall playnote, 0x0b5, T70 ; end
   stdcall playnote, 0x0b8, T20 ; PageUp
   stdcall playnote, 0x0b7, T70 ; PageDown
   stdcall playnote, 0x0ff, T00 ; F12
   stdcall playnote, 0x0b6, T70 ; Del



Top
   
PostPosted: Tue Mar 19, 2019 7:29 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Ray
Я такие тонкости не знаю, как по твоему мнению это можно исправить?

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Mar 19, 2019 10:03 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
После переделки программа работает минуты две, потом звук пропадает.

_________________
:?: :arrow: :idea:


Top
   
PostPosted: Wed Mar 20, 2019 4:15 pm 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 112
Leency wrote:
Я такие тонкости не знаю, как по твоему мнению это можно исправить?

Либо вручную балансировать стек (так себе вариант, спагетти это не уменьшает).
Spoiler: Show
Code:
proc playnote _key, _note
   mov al, [_key]
   cmp   ah, al
   jnz   @f
   mov esi, [_note]
   mcall 55,55
   add esp, 12 ;+
   jmp still
  @@:
   ret
endp


Либо использовать таблицу, вместо кучи вызовов.
Spoiler: Show
Code:
  key:         ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
        mcall   2      ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
        push    eax ebx ecx esi
        mov     ecx, playtable.sizeof
        mov     esi, playtable
  .check_next:
        cmp     ah, byte [esi]
        jnz     @f
        mov     esi, [esi + 4]
        mcall   55, 55
        jmp     .stop_check
  @@:
        add     esi, 8
        dec     ecx
        jnz     .check_next
  .stop_check:
        pop     esi ecx ebx eax
        jmp     still

playtable:
   dd 0x041, T07 ; A - if Caps Lock ON
   dd 0x05a, T08 ; Z
   dd 0x053, T09 ; S
   dd 0x058, T0a ; X
   dd 0x044, T0b ; D
   dd 0x043, T0c ; C
   dd 0x056, T01 ; V
   dd 0x047, T02 ; G
   dd 0x042, T03 ; B
   dd 0x048, T04 ; H
   dd 0x04e, T05 ; N
   dd 0x04d, T06 ; M
   dd 0x04b, T07 ; K
   dd 0x03c, T08 ; <
   dd 0x04c, T09 ; L
   dd 0x03e, T0a ; >
   dd 0x03a, T0b ; :
   dd 0x03f, T0c ; ?
   dd 0x022, T11 ; "
   dd 0x021, T0c ; key !-------
   dd 0x051, T11 ; key Q
   dd 0x040, T12 ; @
   dd 0x057, T13 ; W
   dd 0x023, T14 ; #
   dd 0x045, T15 ; E
   dd 0x052, T16 ; R
   dd 0x025, T17 ; %
   dd 0x054, T18 ; T
   dd 0x05e, T19 ; ^
   dd 0x059, T1a ; Y
   dd 0x026, T1b ; &
   dd 0x055, T1c ; U
   dd 0x049, T21 ; I
   dd 0x028, T22 ; (
   dd 0x04f, T23 ; O
   dd 0x029, T24 ; )
   dd 0x050, T25 ; P
   dd 0x07b, T26 ; {
   dd 0x02b, T27 ; +
   dd 0x07d, T28 ; }
   dd 0x07c, T29 ; |
   dd 0x061, T17 ; a - if Caps Lock OFF
   dd 0x07a, T18 ; z
   dd 0x073, T19 ; s
   dd 0x078, T1a ; x
   dd 0x064, T1b ; d
   dd 0x063, T1c ; c
   dd 0x076, T21 ; v
   dd 0x067, T22 ; g
   dd 0x062, T23 ; b
   dd 0x068, T24 ; h
   dd 0x06e, T25 ; n
   dd 0x06d, T26 ; m
   dd 0x06b, T27 ; k
   dd 0x02c, T28 ; ,
   dd 0x06c, T29 ; l
   dd 0x02e, T2a ; .
   dd 0x03b, T2b ; ;
   dd 0x02f, T2c ; /
   dd 0x027, T31 ; '
   dd 0x060, T2c ; `
   dd 0x009, T31 ; tab
   dd 0x031, T32 ; 1
   dd 0x071, T33 ; q
   dd 0x032, T34 ; 2
   dd 0x077, T35 ; w
   dd 0x065, T36 ; e
   dd 0x034, T37 ; 4
   dd 0x072, T38 ; r
   dd 0x035, T39 ; 5
   dd 0x074, T3a ; t
   dd 0x036, T3b ; 6
   dd 0x079, T3c ; y
   dd 0x075, T41 ; u
   dd 0x038, T42 ; 8
   dd 0x069, T43 ; i
   dd 0x039, T44 ; 9
   dd 0x06f, T45 ; o
   dd 0x070, T46 ; p
   dd 0x02d, T47 ; -
   dd 0x05b, T48 ; [
   dd 0x03d, T49 ; =
   dd 0x05d, T4a ; ]
   dd 0x05c, T4b ; \
   dd 0x008, T4c ; backspace
   dd 0x00d, T51 ; enter
   dd 0x066, T01 ; f
   dd 0x06a, T05 ; j
   dd 0x033, T08 ; 3
   dd 0x037, T11 ; 7
   dd 0x030, T15 ; 0
   dd 0x0b4, T10 ; home
   dd 0x0b5, T70 ; end
   dd 0x0b8, T20 ; PageUp
   dd 0x0b7, T70 ; PageDown
   dd 0x0ff, T00 ; F12
   dd 0x0b6, T70 ; Del
.sizeof: dd ($ - playtable)/8


Top
   
PostPosted: Thu Mar 28, 2019 8:47 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
Новая версия.


Attachments:
PIANO4 [3.53 KiB]
Downloaded 17 times
PIANO4.ASM [18.46 KiB]
Downloaded 16 times

_________________
:?: :arrow: :idea:
Top
   
PostPosted: Sat Apr 06, 2019 6:44 am 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
dunkaist wrote:
Antonio wrote:
Хотел сделать более длительные звуки, но при их наложении появляется треск.

Bad news is that your program has to mix sounds itself.
Good news is that there is an example. This is not an easy task at all. May be you need to look for some theory on audio mixing to better understand what is going on in the code.

Всем привет, в продолжение темы с аудиофайлами: по совету dunkaist переделал игру bomber под свои задачи. То есть, поудалял из неё почти всё. В результате качество звука заметно улучшилось по сравнению с предыдущим Forte, но всё равно не идеальное - в конце каждого звука слышен щелчок.


Attachments:
CHIMES.zip [275.67 KiB]
Downloaded 18 times

_________________
:?: :arrow: :idea:
Top
   
PostPosted: Mon Apr 08, 2019 11:28 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5053
Прикольно. Вообще ресурсы можно сжимать KPACK'ом и загружать через функцию 68.27

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Apr 09, 2019 2:22 pm 
Offline

Joined: Sat Jan 19, 2019 5:17 pm
Posts: 73
Leency wrote:
Прикольно. Вообще ресурсы можно сжимать KPACK'ом и загружать через функцию 68.27
Спасибо за совет, а пример где-нибудь можно посмотреть?
Я заметил разницу в размере исполняемого файла игры bomber: у меня после компиляции размер получился раз в 10 больше, чем эта игра занимает в образе сборки.

_________________
:?: :arrow: :idea:


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 42 posts ]  Go to page Previous 1 2 3 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited