Menu: rename menu labels to "filesel", minor tweaks/fixes

This commit is contained in:
Maximilian Rehkopf 2013-10-18 15:35:41 +02:00
parent c8b24a9618
commit 3cc8af1753
5 changed files with 138 additions and 115 deletions

View File

@ -1,4 +1,4 @@
OBJS = header.ips reset.o65 main.o65 font.o65 palette.o65 data.o65 const.o65 logo.o65 logospr.o65 text.o65 dma.o65 menu.o65 pad.o65 time.o65 mainmenu.o65 sysinfo.o65 spc700.o65 spcplay.o65 # gfx.o65 # vars.o65
OBJS = header.ips reset.o65 main.o65 font.o65 palette.o65 data.o65 const.o65 logo.o65 logospr.o65 text.o65 dma.o65 filesel.o65 pad.o65 time.o65 mainmenu.o65 sysinfo.o65 spc700.o65 spcplay.o65 # gfx.o65 # vars.o65
all: clean menu.bin map

View File

@ -45,9 +45,9 @@ bar_x .byt 0 ; pixel x position of select bar
bar_y .byt 0 ; pixel y position of select bar
bar_w .byt 0 ; bar width
bar_wl .byt 0 ; bar width
menu_state .byt 0 ; menu state (0=file select)
menu_dirty .byt 0 ; menu dirty (e.g. after state change or when redraw is needed)
menu_sel .word 0 ; selected item #
filesel_state .byt 0 ; menu state (0=file select)
filesel_dirty .byt 0 ; menu dirty (e.g. after state change or when redraw is needed)
filesel_sel .word 0 ; selected item #
cursor_x .byt 0 ; current cursor position (x)
cursor_y .byt 0 ; current cursor position (y)
fd_addr .word 0 ; address of current "file descriptor"
@ -96,6 +96,8 @@ barstep .byt 0 ; step size for bar
;-misc
testvar .word 0,0,0,0
;menu system
menu_stack .word 0,0,0,0,0,0,0,0
;----------hdma tables in WRAM (must be stable when cartridge is cut off)
hdma_pal .byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

View File

@ -1,7 +1,7 @@
#include "memmap.i65"
#include "dma.i65"
menu_init:
filesel_init:
sep #$20 : .as
rep #$10 : .xl
lda #^ROOT_DIR
@ -10,7 +10,7 @@ menu_init:
stx dirptr_addr
sta dirstart_bank
stx dirstart_addr
stz menu_state
stz filesel_state
stz dirend_onscreen
lda #$02
sta cursor_x
@ -22,11 +22,11 @@ menu_init:
sta bar_wl
ldx #$0000
stx dirptr_idx
stx menu_sel
stx filesel_sel
stx direntry_xscroll
stx direntry_xscroll_state
lda #$01
sta menu_dirty
sta filesel_dirty
rep #$20 : .al
lda #!dirlog
sta dirlog_idx
@ -35,39 +35,39 @@ menu_init:
sta dirlog_idx+2
rts
menuloop:
menuloop_s1
fileselloop:
fileselloop_s1
sep #$20 : .as
rep #$10 : .xl
lda isr_done
lsr
bcc menuloop_s1
bcc fileselloop_s1
stz isr_done
jsr printtime
jsr menu_updates ;update stuff, check keys etc
lda menu_dirty ;is there ANY reason to redraw the menu?
jsr filesel_updates ;update stuff, check keys etc
lda filesel_dirty ;is there ANY reason to redraw the menu?
cmp #$01
beq menuloop_redraw ;then do
beq fileselloop_redraw ;then do
jsr scroll_direntry
bra menuloop_s1
menuloop_redraw
stz menu_dirty
jsr menu_statusbar
jsr menu_redraw
jsr menu_cleanup ;update phase 2
bra menuloop_s1
bra fileselloop_s1
fileselloop_redraw
stz filesel_dirty
jsr filesel_statusbar
jsr filesel_redraw
jsr filesel_cleanup ;update phase 2
bra fileselloop_s1
rts
menu_cleanup:
filesel_cleanup:
sep #$20 : .as
rep #$10 : .xl
lda dirend_onscreen ;end of file list on screen?
beq menu_cleanup_out ;
beq filesel_cleanup_out ;
lda dirend_idx
lsr
lsr
pha
menu_cleanup_loop ;pad rest of screen with empty lines
filesel_cleanup_loop ;pad rest of screen with empty lines
cmp listdisp ;end of screen reached?
beq + ;then leave
pha
@ -86,24 +86,24 @@ menu_cleanup_loop ;pad rest of screen with empty lines
jsr hiprint
pla
inc
bra menu_cleanup_loop
bra filesel_cleanup_loop
+
pla
cmp menu_sel
beq menu_cleanup_out
bpl menu_cleanup_out
sta menu_sel
menu_cleanup_out
cmp filesel_sel
beq filesel_cleanup_out
bpl filesel_cleanup_out
sta filesel_sel
filesel_cleanup_out
rts
menu_updates:
filesel_updates:
;update selection, scroll etc
lda menu_sel
lda filesel_sel
asl
asl
sta dirptr_idx
lda menu_sel
lda filesel_sel
clc
adc #$08
sta bar_yl
@ -140,47 +140,47 @@ menu_updates:
lda #$40
and pad1trig
bne key_x
bra menuupd_out
bra fileselupd_out
key_down
jsr menu_key_down
bra menuupd_out
jsr filesel_key_down
bra fileselupd_out
key_up
jsr menu_key_up
bra menuupd_out
jsr filesel_key_up
bra fileselupd_out
key_right
jsr menu_key_right
bra menuupd_out
jsr filesel_key_right
bra fileselupd_out
key_left
jsr menu_key_left
bra menuupd_out
jsr filesel_key_left
bra fileselupd_out
key_b
jsr menu_key_b
bra menuupd_out
jsr filesel_key_b
bra fileselupd_out
key_a
jsr menu_key_a
bra menuupd_out
jsr filesel_key_a
bra fileselupd_out
key_x
jsr menu_key_x
bra menuupd_out
jsr filesel_key_x
bra fileselupd_out
key_select
jsr menu_key_select
bra menuupd_out
jsr filesel_key_select
bra fileselupd_out
key_start
jsr menu_key_start
bra menuupd_out
jsr filesel_key_start
bra fileselupd_out
menuupd_out
fileselupd_out
lda #$09
sta cursor_y
rts
menu_redraw:
lda menu_state
filesel_redraw:
lda filesel_state
beq redraw_filelist
; cmp 1
; beq redraw_main
menu_redraw_out
filesel_redraw_out
rts
redraw_filelist
@ -236,7 +236,7 @@ redraw_filelist_last ;check if next offscreen item is end of dir
redraw_filelist_out
ldx #$0000
stx dirptr_idx
brl menu_redraw_out
brl filesel_redraw_out
print_direntry:
lda cursor_y
@ -355,14 +355,14 @@ dirent_type_cont_2
rts
menu_key_down:
filesel_key_down:
jsr scroll_direntry_clean
lda listdisp
dec
cmp menu_sel
cmp filesel_sel
bne down_noscroll
lda #$01
sta menu_dirty
sta filesel_dirty
lda dirend_onscreen
bne down_out
rep #$20 : .al
@ -380,21 +380,21 @@ down_noscroll
lda dirend_idx
lsr
lsr
cmp menu_sel
beq menuupd_lastcursor
bcc menuupd_lastcursor
+ lda menu_sel
cmp filesel_sel
beq fileselupd_lastcursor
bcc fileselupd_lastcursor
+ lda filesel_sel
inc
sta menu_sel
sta filesel_sel
down_out
rts
menu_key_up:
filesel_key_up:
jsr scroll_direntry_clean
lda menu_sel
lda filesel_sel
bne up_noscroll
lda #$01
sta menu_dirty
sta filesel_dirty
rep #$20 : .al
lda dirptr_addr
cmp dirstart_addr
@ -407,25 +407,25 @@ menu_key_up:
bra up_out
up_noscroll
dec
sta menu_sel
sta filesel_sel
up_out
sep #$20 : .as
rts
menuupd_lastcursor
fileselupd_lastcursor
jsr scroll_direntry_clean
lda dirend_idx
lsr
lsr
sta menu_sel
sta filesel_sel
rts
; go back one page
menu_key_left:
filesel_key_left:
stz direntry_xscroll
stz direntry_xscroll_state
lda #$01 ; must redraw afterwards
sta menu_dirty
sta filesel_dirty
rep #$20 : .al
lda dirptr_addr ; get current direntry pointer
beq + ; special case: if 0, we are at the first entry in memory
@ -444,18 +444,18 @@ menu_key_left:
sep #$20 : .as
rts
+ lda dirstart_addr ; reset pointer to start of directory
stz menu_sel ; reset the selection cursor too
stz filesel_sel ; reset the selection cursor too
bra -
; go forth one page
menu_key_right:
filesel_key_right:
stz direntry_xscroll
stz direntry_xscroll_state
sep #$20 : .as
lda dirend_onscreen
bne menuupd_lastcursor
bne fileselupd_lastcursor
lda #$01
sta menu_dirty
sta filesel_dirty
rep #$20 : .al
lda listdisp
asl
@ -466,18 +466,18 @@ menu_key_right:
sep #$20 : .as
rts
menu_key_a:
filesel_key_a:
jsr select_item
rts
menu_key_select:
filesel_key_select:
rts
menu_key_start:
filesel_key_start:
jsr select_last_file
rts
menu_key_b:
filesel_key_b:
stz direntry_xscroll
stz direntry_xscroll_state
rep #$20 : .al
@ -485,7 +485,7 @@ menu_key_b:
beq skip_key_b
sta dirptr_addr
lda #$0000
sta menu_sel
sta filesel_sel
bra select_item
skip_key_b
sep #$20 : .as
@ -493,7 +493,7 @@ skip_key_b
select_item:
rep #$20 : .al
lda menu_sel
lda filesel_sel
and #$00ff
asl
asl
@ -568,7 +568,7 @@ select_dir:
lda @dirptr_bank
sta [dirlog_idx], y
iny
lda @menu_sel
lda @filesel_sel
sta [dirlog_idx], y
lda @dirlog_idx
clc
@ -604,12 +604,12 @@ select_dir:
sta @dirptr_addr
sta @dirstart_addr
lda #$0000
sta @menu_sel
sta @filesel_sel
sta @direntry_xscroll
sta @direntry_xscroll_state
sep #$20 : .as
lda #$01
sta @menu_dirty
sta @filesel_dirty
plb
rts
@ -638,11 +638,11 @@ select_parent:
sta @dirptr_bank
iny
rep #$20 : .al
lda [dirlog_idx], y ; load menu_sel
sta @menu_sel
lda [dirlog_idx], y ; load filesel_sel
sta @filesel_sel
sep #$20 : .as
lda #$01
sta @menu_dirty
sta @filesel_dirty
rts
select_spc:
@ -666,7 +666,7 @@ wait_spc:
jsr restore_screen
rts
menu_key_x:
filesel_key_x:
jsr mainmenu
rts
@ -676,11 +676,11 @@ setup_224:
lda #18
sta listdisp
dec
cmp menu_sel
cmp filesel_sel
bmi setup_224_adjsel
bra +
setup_224_adjsel
sta menu_sel
sta filesel_sel
+
lda #18*64
sta textdmasize
@ -699,7 +699,7 @@ setup_224_adjsel
sta hdma_math_selection
stz vidmode
lda #$01
sta menu_dirty
sta filesel_dirty
lda #^space64
ldx #!space64
sta print_bank
@ -719,7 +719,7 @@ setup_224_adjsel
plp
rts
menu_statusbar
filesel_statusbar
pha
phx
php
@ -822,7 +822,7 @@ scroll_direntry_clean:
rts
scroll_direntry:
ldy menu_sel
ldy filesel_sel
lda direntry_xscroll_state
bne +
lda direntry_fits, y
@ -852,7 +852,7 @@ scroll_direntry_scrollfast
lda #$02
sta cursor_x
rep #$20 : .al
lda menu_sel
lda filesel_sel
asl
asl
tay
@ -869,7 +869,7 @@ scroll_direntry_scrollfast
lda [dirptr_addr], y
iny
sta @dirent_type
ldy menu_sel
ldy filesel_sel
sty direntry_fits_idx
phy
jsr print_direntry

View File

@ -21,15 +21,15 @@ GAME_MAIN:
tcs
sep #$20 : .as
jsr killdma ; The following initialization processes must not touch memory
jsr waitblank ; structures used by the main menu !
; jsr killdma ; The following initialization processes must not touch memory
jsr waitblank ; structures used by the file selector !
jsr snes_init
cli
lda #$01
sta $420d ; fast cpu
jsr setup_gfx
jsr colortest
jsr tests
jsr video_init
jsr setup_hdma
lda #$0f
sta cur_bright
@ -43,15 +43,15 @@ set_bank:
coldboot: ; Regular, cold-start init
sep #$20 : .as
jsr killdma
; jsr killdma
jsr waitblank
jsr snes_init
lda #$01
sta $420d ; fast cpu
jsr setup_gfx
jsr colortest
jsr menu_init
jsr tests
jsr filesel_init
jsr video_init
jsr setup_hdma
jsr screen_on
@ -60,7 +60,7 @@ coldboot: ; Regular, cold-start init
beq +
jsl time_init
+
jsr menuloop
jsr fileselloop
cli
stz $4200
jmp @infloop ;infinite loop in WRAM
@ -138,6 +138,30 @@ killdma:
stz $4359
stz $435a
stz $435b
stz $4360
stz $4361
stz $4362
stz $4363
stz $4364
stz $4365
stz $4366
stz $4367
stz $4368
stz $4369
stz $436a
stz $436b
stz $4370
stz $4371
stz $4372
stz $4373
stz $4374
stz $4375
stz $4376
stz $4377
stz $4378
stz $4379
stz $437a
stz $437b
stz $420b
stz $420c
@ -190,7 +214,7 @@ setup_gfx:
;clear OAM tables
ldx #$0000
stx $2102
DMA0(#$08, #$544, #^zero, #!zero, #$04)
DMA0(#$08, #$220, #^zero, #!zero, #$04)
;copy logo tiles
ldx #$2000
@ -273,7 +297,7 @@ setup_gfx:
DMA0(#$00, #$6C, #^fadeloop, #!fadeloop, #$80);
rts
tests:
video_init:
sep #$20 : .as ;8-bit accumulator
rep #$10 : .xl ;16-bit index
lda #$03 ;mode 3, mode 5 via HDMA

View File

@ -80,15 +80,12 @@ mm_entloop
plb
phx
jsr hiprint
plx
inx
inx
inx
inx
inx
inx
inx
inx
rep #$20 : .al
pla
clc
adc #$08
tax
sep #$20 : .as
inc mm_tmp
lda mm_tmp
cmp @main_entries