1,7 → 1,12 |
;--------------------------------------------------------------------- |
main_menu_start: |
mov [main_menu_pointer],0 |
;-------------------------------------- |
.red: |
call draw_main_menu_window |
mov [menu_text_pointers],main_menu_text_pointers |
mov [text_step_Y],SPRITE_SIZE_Y |
call draw_menu_window |
call draw_new_pointer |
;--------------------------------------------------------------------- |
.still: |
mcall 10 |
25,6 → 30,13 |
test al,al |
jnz .still |
|
cmp ah,0xE0 |
jne @f |
|
mov [extended_key],1 |
jmp .still |
;-------------------------------------- |
@@: |
cmp ah,72 ; arrow up |
je .arrow_up |
|
43,7 → 55,6 |
cmp ah,28 ; enter |
je .enter_to_point |
|
mov [extended_key],1 |
jmp .still |
;--------------------------------------------------------------------- |
.extended_key: |
75,10 → 86,19 |
jmp .still |
;--------------------------------------------------------------------- |
.enter_to_point: |
cmp [main_menu_pointer],0 |
cmp [main_menu_pointer],0 ; game |
je start_level_0 |
|
cmp [main_menu_pointer],4 |
cmp [main_menu_pointer],1 ; settings |
je settings_menu_start |
|
cmp [main_menu_pointer],2 ; credits |
je menu_credits |
|
cmp [main_menu_pointer],3 ; help |
je menu_help |
|
cmp [main_menu_pointer],4 ; exit |
je button.exit |
|
jmp .still |
108,20 → 128,20 |
; mov cx,SPRITE_SIZE_Y |
; mcall 13,<SPRITE_SIZE_X*1,SPRITE_SIZE_X>,,0xff0000 |
|
mov eax,[npc_miku_icons] |
mov ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12 |
call copy_base_8bpp |
|
movzx edx,byte [main_menu_pointer] |
imul edx,SPRITE_SIZE_Y |
add edx,SPRITE_SIZE_Y*2 + 32 |
add edx,SPRITE_SIZE_X*2 shl 16 |
|
mov eax,[npc_miku_icons] |
mov ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12 |
call copy_base_8bpp |
|
xor ebp,ebp |
mcall 65,buffer_area,<SPRITE_SIZE_X,SPRITE_SIZE_Y>,,32 |
ret |
;--------------------------------------------------------------------- |
draw_main_menu_window: |
draw_menu_window: |
mcall 12,1 |
mcall 48,4 |
mov ecx,100 shl 16 + 644 |
133,7 → 153,7 |
mov eax,4 |
mov ebx,SPRITE_SIZE_X*3 shl 16 + SPRITE_SIZE_Y*3 |
mov ecx,0x90ffffff |
mov esi,main_menu_text_pointers |
mov esi,[menu_text_pointers] |
;-------------------------------------- |
@@: |
mov edx,[esi] |
141,12 → 161,11 |
jz .end |
|
mcall |
add ebx,SPRITE_SIZE_Y |
add ebx,[text_step_Y] |
add esi,4 |
jmp @b |
;-------------------------------------- |
.end: |
call draw_new_pointer |
|
mcall 12,2 |
ret |
155,4 → 174,210 |
xor edx,edx |
mcall 13,<0,SPRITE_SIZE_X*LEVEL_MAP_SIZE_X>,<0,SPRITE_SIZE_Y*LEVEL_MAP_SIZE_Y> |
ret |
;--------------------------------------------------------------------- |
menu_credits: |
mov [menu_text_pointers],menu_credits_text_pointers |
jmp menu_help.1 |
;--------------------------------------------------------------------- |
menu_help: |
mov [menu_text_pointers],menu_help_text_pointers |
;-------------------------------------- |
.1: |
mov [text_step_Y],20 |
;-------------------------------------- |
.red: |
call draw_menu_window |
;--------------------------------------------------------------------- |
.still: |
mcall 10 |
|
cmp eax,1 |
je .red |
|
cmp eax,2 |
je .key |
|
cmp eax,3 |
je .button |
|
jmp .still |
;--------------------------------------------------------------------- |
.key: |
mcall 2 |
cmp [extended_key],1 |
je .extended_key |
|
test al,al |
jnz .still |
|
cmp ah,0xE0 |
jne @f |
|
mov [extended_key],1 |
jmp .still |
;-------------------------------------- |
@@: |
cmp ah,57 ; space |
je main_menu_start.red |
|
cmp ah,28 ; enter |
je main_menu_start.red |
|
jmp .still |
;--------------------------------------------------------------------- |
.extended_key: |
mov [extended_key],0 |
|
jmp .still |
;--------------------------------------------------------------------- |
.button: |
mcall 17 |
|
cmp ah,1 |
jne .still |
|
jmp button.exit |
;--------------------------------------------------------------------- |
settings_menu_start: |
mov al,[main_menu_pointer] |
mov [settings_menu_pointer],al |
xor al,al |
mov [main_menu_pointer],al |
;-------------------------------------- |
.red: |
mov [menu_text_pointers],settings_menu_text_pointers |
mov [text_step_Y],SPRITE_SIZE_Y |
call prepare_settings_text |
call draw_menu_window |
call draw_new_pointer |
;--------------------------------------------------------------------- |
.still: |
mcall 10 |
|
cmp eax,1 |
je .red |
|
cmp eax,2 |
je .key |
|
cmp eax,3 |
je .button |
|
jmp .still |
;--------------------------------------------------------------------- |
.key: |
mcall 2 |
cmp [extended_key],1 |
je .extended_key |
|
test al,al |
jnz .still |
|
cmp ah,0xE0 |
jne @f |
|
mov [extended_key],1 |
jmp .still |
;-------------------------------------- |
@@: |
cmp ah,72 ; arrow up |
je .arrow_up |
|
cmp ah,80 ; arrow down |
je .arrow_down |
|
cmp ah,17 ; w - arrow up |
je .arrow_up |
|
cmp ah,31 ; s - arrow down |
je .arrow_down |
|
cmp ah,57 ; space |
je .enter_to_point |
|
cmp ah,28 ; enter |
je .enter_to_point |
|
jmp .still |
;--------------------------------------------------------------------- |
.extended_key: |
mov [extended_key],0 |
cmp ah,72 ; arrow up |
je .arrow_up |
|
cmp ah,80 ; arrow down |
je .arrow_down |
|
jmp .still |
;--------------------------------------------------------------------- |
.arrow_up: |
cmp [main_menu_pointer],0 |
je .still |
|
call clear_old_pointer |
dec [main_menu_pointer] |
call draw_new_pointer |
jmp .still |
;--------------------------------------------------------------------- |
.arrow_down: |
cmp [main_menu_pointer],2 |
je .still |
|
call clear_old_pointer |
inc [main_menu_pointer] |
call draw_new_pointer |
jmp .still |
;--------------------------------------------------------------------- |
.enter_to_point: |
cmp [main_menu_pointer],0 ; sounds |
jne @f |
|
inc [sounds_flag] |
and [sounds_flag],1b |
jmp .red |
;-------------------------------------- |
@@: |
cmp [main_menu_pointer],1 ; music |
jne @f |
|
inc [music_flag] |
and [music_flag],1b |
jmp .red |
;-------------------------------------- |
@@: |
cmp [main_menu_pointer],2 ; exit |
jne .still |
|
mov al,[settings_menu_pointer] |
mov [main_menu_pointer],al |
|
jmp main_menu_start.red |
;--------------------------------------------------------------------- |
.button: |
mcall 17 |
|
cmp ah,1 |
jne .still |
|
jmp button.exit |
;--------------------------------------------------------------------- |
prepare_settings_text: |
mov eax,[text_on_label] |
cmp [sounds_flag],1 |
je @f |
|
mov eax,[text_off_label] |
;-------------------------------------- |
@@: |
mov [menu_settings_sound_label+7],eax |
;-------------------------------------- |
mov eax,[text_on_label] |
cmp [music_flag],1 |
je @f |
|
mov eax,[text_off_label] |
;-------------------------------------- |
@@: |
mov [menu_settings_music_label+7],eax |
ret |
;--------------------------------------------------------------------- |