From 37a9f09a7838b7d80f701b213e2a82edcc72a9bf Mon Sep 17 00:00:00 2001 From: ikari Date: Fri, 16 Dec 2011 19:19:51 +0100 Subject: [PATCH] Menu: simplify some memory accesses --- snes/data.a65 | 12 ++++++------ snes/menu.a65 | 52 +++++++++++++++++++++------------------------------ 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/snes/data.a65 b/snes/data.a65 index 0147868..df04d5d 100644 --- a/snes/data.a65 +++ b/snes/data.a65 @@ -1,15 +1,15 @@ .data ;don't anger the stack! dirptr_addr .word 0 -dirptr_bank .byt 0 +dirptr_bank .word 0 dirstart_addr .word 0 -dirstart_bank .byt 0 -dirend_addr .word 0 -dirend_bank .byt 0 +dirstart_bank .word 0 +dirend_addr .word 0 +dirend_bank .word 0 dirend_idx .word 0 dirptr_idx .word 0 -dirent_addr .word 0 -dirent_bank .byt 0 +dirent_addr .word 0 +dirent_bank .word 0 dirent_type .byt 0 dirend_onscreen .byt 0 dirlog_idx .byt 0,0,0 ; long ptr diff --git a/snes/menu.a65 b/snes/menu.a65 index d6d065d..d648f45 100644 --- a/snes/menu.a65 +++ b/snes/menu.a65 @@ -188,32 +188,26 @@ redraw_filelist_loop lsr cmp listdisp beq redraw_filelist_last - lda dirptr_bank - phb - pha - plb rep #$20 : .al - lda (dirptr_addr), y + lda [dirptr_addr], y sta @dirent_addr iny iny sep #$20 : .as - lda (dirptr_addr), y ; load fileinfo bank + lda [dirptr_addr], y ; load fileinfo bank clc adc #$c0 ; add $C0 for memory map sta @dirent_bank ; store as current bank cmp #$c0 ; if bank was 0 -> dirend entry in DB beq redraw_filelist_dirend ; handle dirend iny - lda (dirptr_addr), y + lda [dirptr_addr], y iny sta @dirent_type - plb sty dirptr_idx jsr print_direntry bra redraw_filelist_loop redraw_filelist_dirend - plb dey ; recover last valid direntry number dey ; (we had 2x iny of the direntry pointer above, dey ; so account for those too) @@ -225,15 +219,10 @@ redraw_filelist_dirend sta dirend_onscreen bra redraw_filelist_out redraw_filelist_last ;check if next offscreen item is end of dir - lda dirptr_bank - phb - pha - plb iny iny - lda (dirptr_addr), y + lda [dirptr_addr], y beq redraw_filelist_dirend - plb redraw_filelist_out ldx #$0000 stx dirptr_idx @@ -352,7 +341,7 @@ menu_key_down: lda listdisp dec cmp menu_sel - bne + + bne down_noscroll lda #$01 sta menu_dirty lda dirend_onscreen @@ -361,10 +350,13 @@ menu_key_down: lda dirptr_addr clc adc #$04 - sta dirptr_addr + bcc + + inc dirptr_bank ++ sta dirptr_addr sep #$20 : .as rts -+ lda dirend_onscreen +down_noscroll + lda dirend_onscreen beq + lda dirend_idx lsr @@ -380,7 +372,7 @@ down_out menu_key_up: lda menu_sel - bne + + bne up_noscroll lda #$01 sta menu_dirty rep #$20 : .al @@ -389,9 +381,12 @@ menu_key_up: beq up_out sec sbc #$04 - sta dirptr_addr + bcs + + dec dirptr_bank ++ sta dirptr_addr bra up_out -+ dec +up_noscroll + dec sta menu_sel up_out sep #$20 : .as @@ -480,14 +475,10 @@ select_item: asl tay sep #$20 : .as - lda dirptr_bank - phb - pha - plb iny iny iny - lda (dirptr_addr), y + lda [dirptr_addr], y cmp #$01 beq sel_is_file cmp #$04 @@ -497,7 +488,6 @@ select_item: cmp #$81 beq sel_is_parent select_item_cont - plb rts sel_is_file jsr select_file @@ -513,12 +503,12 @@ select_file: ; have avr load the rom dey rep #$20 : .al - lda (dirptr_addr), y + lda [dirptr_addr], y and #$00ff sta @AVR_PARAM+2 dey dey - lda (dirptr_addr), y + lda [dirptr_addr], y sta @AVR_PARAM sep #$20 : .as lda #$01 @@ -559,14 +549,14 @@ select_dir: ; y = direntry ptr txy dey - lda (dirptr_addr), y + lda [dirptr_addr], y clc adc #$c0 sta @dirent_bank dey dey rep #$20 : .al - lda (dirptr_addr), y + lda [dirptr_addr], y sta @dirent_addr tax sep #$20 : .as