From de64ea53b8293cb782ff0410403aef97248329fa Mon Sep 17 00:00:00 2001 From: Ry Date: Wed, 23 Mar 2022 11:24:01 -0700 Subject: [PATCH] fox32rom: Add enable_menu_bar and disable_menu_bar --- boot.asm | 3 +-- fox32rom.def | 12 +++++++----- main.asm | 23 +++-------------------- menu_bar.asm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 27 deletions(-) diff --git a/boot.asm b/boot.asm index 8eef962..219ec33 100644 --- a/boot.asm +++ b/boot.asm @@ -51,7 +51,6 @@ boot_cleanup: call fill_background ; disable the menu bar - mov r0, 0x8000031E - out r0, 0 + call disable_menu_bar ret \ No newline at end of file diff --git a/fox32rom.def b/fox32rom.def index 6d270fc..1fd3501 100644 --- a/fox32rom.def +++ b/fox32rom.def @@ -36,11 +36,13 @@ check_if_overlay_covers_position: jmp [0xF004301C] check_if_enabled_overlay_covers_position: jmp [0xF0043020] ; menu bar jump table entries -menu_bar_click_event: jmp [0xF0044000] -clear_menu_bar: jmp [0xF0044004] -draw_menu_bar_root_items: jmp [0xF0044008] -draw_menu_items: jmp [0xF004400C] -close_menu: jmp [0xF0044010] +enable_menu_bar: jmp [0xF0044000] +disable_menu_bar: jmp [0xF0044004] +menu_bar_click_event: jmp [0xF0044008] +clear_menu_bar: jmp [0xF004400C] +draw_menu_bar_root_items: jmp [0xF0044010] +draw_menu_items: jmp [0xF0044014] +close_menu: jmp [0xF0044018] ; event types const MOUSE_CLICK_EVENT_TYPE: 0x00000000 diff --git a/main.asm b/main.asm index 4aee0fa..87416b8 100644 --- a/main.asm +++ b/main.asm @@ -52,26 +52,7 @@ cursor_enable: mov r0, BACKGROUND_COLOR call fill_background -menu_bar_enable: - ; set properties of overlay 30 - mov r0, 0x8000001E ; overlay 30: position - mov.16 r1, [overlay_30_position_y] - sla r1, 16 - mov.16 r1, [overlay_30_position_x] - out r0, r1 - mov r0, 0x8000011E ; overlay 30: size - mov.16 r1, [overlay_30_height] - sla r1, 16 - mov.16 r1, [overlay_30_width] - out r0, r1 - mov r0, 0x8000021E ; overlay 30: framebuffer pointer - mov r1, [overlay_30_framebuffer_ptr] - out r0, r1 - - ; enable overlay 30 (menu bar) - mov r0, 0x8000031E - out r0, 1 - + call enable_menu_bar call clear_menu_bar mov r0, menu_items_root mov r1, 0xFFFFFFFF @@ -204,6 +185,8 @@ get_rom_version: ; menu bar jump table org.pad 0xF0044000 + data.32 enable_menu_bar + data.32 disable_menu_bar data.32 menu_bar_click_event data.32 clear_menu_bar data.32 draw_menu_bar_root_items diff --git a/menu_bar.asm b/menu_bar.asm index c091110..b65373b 100644 --- a/menu_bar.asm +++ b/menu_bar.asm @@ -4,6 +4,53 @@ const MENU_BAR_BACKGROUND_COLOR: 0xFF3F3F3F const MENU_BAR_SELECTED_COLOR: 0xFFFFFFFF const MENU_BAR_UNSELECTED_COLOR: 0xFF3F3F3F +; enable menu bar +; inputs: +; none +; outputs: +; none +enable_menu_bar: + push r0 + push r1 + + ; set properties of overlay 30 + mov r0, 0x8000001E ; overlay 30: position + mov.16 r1, [overlay_30_position_y] + sla r1, 16 + mov.16 r1, [overlay_30_position_x] + out r0, r1 + mov r0, 0x8000011E ; overlay 30: size + mov.16 r1, [overlay_30_height] + sla r1, 16 + mov.16 r1, [overlay_30_width] + out r0, r1 + mov r0, 0x8000021E ; overlay 30: framebuffer pointer + mov r1, [overlay_30_framebuffer_ptr] + out r0, r1 + + ; enable overlay 30 (menu bar) + mov r0, 0x8000031E + out r0, 1 + + pop r1 + pop r0 + ret + +; disable menu bar +; inputs: +; none +; outputs: +; none +disable_menu_bar: + push r0 + + ; disable overlay 30 (menu bar) + mov r0, 0x8000031E + out r0, 0 + + pop r0 + ret + ; clear menu bar ; inputs: ; none