109 lines
2.8 KiB
NASM
109 lines
2.8 KiB
NASM
; about dialog
|
|
|
|
const BACKGROUND_COLOR: 0xFF674764
|
|
|
|
; show the about dialog
|
|
; inputs:
|
|
; none
|
|
; outputs:
|
|
; none
|
|
about_dialog:
|
|
call disable_menu_bar
|
|
|
|
; create the window
|
|
mov r0, about_dialog_window_struct
|
|
mov r1, about_dialog_window_title
|
|
mov r2, 288
|
|
mov r3, 128
|
|
mov r4, 64
|
|
mov r5, 64
|
|
call new_window
|
|
|
|
; fill the window with the fox32 purple color
|
|
mov r0, BACKGROUND_COLOR
|
|
mov r1, about_dialog_window_struct
|
|
call fill_window
|
|
|
|
mov r0, about_dialog_window_struct
|
|
call get_window_overlay_number
|
|
|
|
; draw strings
|
|
mov r5, r0
|
|
mov r0, about_dialog_window_launcher_string
|
|
mov r1, 4
|
|
mov r2, 20
|
|
mov r3, 0xFFFFFFFF
|
|
mov r4, BACKGROUND_COLOR
|
|
call draw_str_to_overlay
|
|
call get_os_version
|
|
mov r10, r0
|
|
mov r11, r1
|
|
mov r12, r2
|
|
mov r0, about_dialog_window_os_version_string
|
|
mov r1, 4
|
|
mov r2, 36
|
|
mov r3, 0xFFFFFFFF
|
|
mov r4, BACKGROUND_COLOR
|
|
call draw_format_str_to_overlay
|
|
call get_rom_version
|
|
mov r10, r0
|
|
mov r11, r1
|
|
mov r12, r2
|
|
mov r0, about_dialog_window_rom_version_string
|
|
mov r1, 4
|
|
mov r2, 52
|
|
mov r3, 0xFFFFFFFF
|
|
mov r4, BACKGROUND_COLOR
|
|
call draw_format_str_to_overlay
|
|
mov r0, about_dialog_window_made_by_string_1
|
|
mov r1, 4
|
|
mov r2, 104
|
|
mov r3, 0xFFFFFFFF
|
|
mov r4, BACKGROUND_COLOR
|
|
call draw_str_to_overlay
|
|
mov r0, about_dialog_window_made_by_string_2
|
|
mov r1, 180
|
|
mov r2, 120
|
|
mov r3, 0xFFFFFFFF
|
|
mov r4, BACKGROUND_COLOR
|
|
call draw_str_to_overlay
|
|
|
|
about_dialog_event_loop:
|
|
mov r0, about_dialog_window_struct
|
|
call get_next_window_event
|
|
|
|
cmp r0, EVENT_TYPE_MOUSE_CLICK
|
|
ifz jmp about_dialog_mouse_down
|
|
|
|
about_dialog_event_loop_end:
|
|
call yield_task
|
|
rjmp about_dialog_event_loop
|
|
|
|
about_dialog_mouse_down:
|
|
; check if we are attempting to drag or close the window
|
|
cmp r2, 16
|
|
iflteq jmp about_dialog_drag_or_close_window
|
|
|
|
jmp about_dialog_event_loop_end
|
|
|
|
about_dialog_drag_or_close_window:
|
|
cmp r1, 8
|
|
iflteq jmp about_dialog_close_window
|
|
mov r0, about_dialog_window_struct
|
|
call start_dragging_window
|
|
jmp about_dialog_event_loop_end
|
|
about_dialog_close_window:
|
|
mov r0, about_dialog_window_struct
|
|
call destroy_window
|
|
call enable_menu_bar
|
|
jmp event_loop
|
|
|
|
about_dialog_window_title: data.str "About" data.8 0
|
|
about_dialog_window_struct: data.fill 0, 32
|
|
|
|
about_dialog_window_launcher_string: data.str "Launcher - the fox32os FXF launcher" data.8 0
|
|
about_dialog_window_made_by_string_1: data.str "fox32 - the computer made with love" data.8 0
|
|
about_dialog_window_made_by_string_2: data.str "by Ry and Lua" data.8 0
|
|
about_dialog_window_os_version_string: data.str "fox32os version %u.%u.%u" data.8 0
|
|
about_dialog_window_rom_version_string: data.str "fox32rom version %u.%u.%u" data.8 0
|