dir navigation (forward only)
This commit is contained in:
parent
a9fe8dd09d
commit
ecfe7d9831
@ -1,4 +1,4 @@
|
|||||||
OBJS = header.ips reset.o65 main.o65 font.o65 palette.o65 data.o65 const.o65 logo.o65 text.o65 dma.o65 menu.o65 # gfx.o65 # vars.o65
|
OBJS = header.ips reset.o65 main.o65 font.o65 palette.o65 data.o65 const.o65 logo.o65 text.o65 dma.o65 menu.o65 pad.o65 # gfx.o65 # vars.o65
|
||||||
|
|
||||||
all: menu.bin menu.smc
|
all: menu.bin menu.smc
|
||||||
|
|
||||||
|
|||||||
@ -80,8 +80,17 @@ hdma_math_src .byt 1
|
|||||||
.byt 1
|
.byt 1
|
||||||
.byt $00, $e0
|
.byt $00, $e0
|
||||||
.byt 10
|
.byt 10
|
||||||
.byt $20, $f0
|
.byt $20, $ea
|
||||||
.byt 1
|
.byt 1
|
||||||
.byt $00, $e0
|
.byt $00, $e0
|
||||||
.byt 0
|
.byt 0
|
||||||
|
|
||||||
|
space64 .byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||||
|
.byt $00
|
||||||
|
|||||||
@ -2,14 +2,20 @@
|
|||||||
;don't anger the stack!
|
;don't anger the stack!
|
||||||
dirptr_addr .word 0
|
dirptr_addr .word 0
|
||||||
dirptr_bank .byt 0
|
dirptr_bank .byt 0
|
||||||
|
dirstart_addr .word 0
|
||||||
|
dirstart_bank .byt 0
|
||||||
|
dirend_addr .word 0
|
||||||
|
dirend_bank .byt 0
|
||||||
|
dirend_idx .word 0
|
||||||
dirptr_idx .word 0
|
dirptr_idx .word 0
|
||||||
dirptr_table .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
dirptr_table .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
dirent_addr .word 0
|
dirent_addr .word 0
|
||||||
dirent_bank .byt 0
|
dirent_bank .byt 0
|
||||||
dirent_type .byt 0
|
dirent_type .byt 0
|
||||||
.byt 0
|
dirend_onscreen .byt 0
|
||||||
dirlog .word 0,0,0,0,0,0,0,0,0,0,0,0
|
dirlog_idx .byt 0
|
||||||
|
dirlog .word 0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
@ -31,8 +37,11 @@ print_y .byt 0 ;y coordinate
|
|||||||
.byt 0
|
.byt 0
|
||||||
print_src .word 0 ;source data address
|
print_src .word 0 ;source data address
|
||||||
print_bank .byt 0 ;source data bank
|
print_bank .byt 0 ;source data bank
|
||||||
print_pal .byt 0 ;palette number for text output
|
print_pal .word 0 ;palette number for text output
|
||||||
|
print_temp .word 0 ;work variable
|
||||||
|
print_count .byt 0 ;how many characters may be printed?
|
||||||
|
print_count_tmp .byt 0 ;work variable
|
||||||
|
print_done .byt 0 ;how many characters were printed?
|
||||||
;----------parameters for dma----------
|
;----------parameters for dma----------
|
||||||
dma_a_bank .byt 0
|
dma_a_bank .byt 0
|
||||||
dma_a_addr .word 0
|
dma_a_addr .word 0
|
||||||
@ -49,23 +58,15 @@ bar_y .byt 0 ; pixel y position of select bar
|
|||||||
bar_w .byt 0 ; bar width
|
bar_w .byt 0 ; bar width
|
||||||
menu_state .byt 0 ; menu state (0=file select)
|
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_dirty .byt 0 ; menu dirty (e.g. after state change or when redraw is needed)
|
||||||
|
menu_sel .word 0 ; selected item #
|
||||||
cursor_x .byt 0 ; current cursor position (x)
|
cursor_x .byt 0 ; current cursor position (x)
|
||||||
cursor_y .byt 0 ; current cursor position (y)
|
cursor_y .byt 0 ; current cursor position (y)
|
||||||
fd_addr .word 0 ; address of current "file descriptor"
|
fd_addr .word 0 ; address of current "file descriptor"
|
||||||
fd_bank .byt 0 ; bank of current "file descriptor"
|
fd_bank .byt 0 ; bank of current "file descriptor"
|
||||||
fd_fnoff .word 0 ; offset of filename in file descriptor
|
fd_fnoff .word 0 ; offset of filename in file descriptor
|
||||||
fd_data ; contents of a "file descriptor"
|
pad1mem .word 0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
pad1trig .word 0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
pad1delay .word 0
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.word 0
|
|
||||||
;----------hdma tables in WRAM (must be stable when cartridge is cut off)
|
;----------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
|
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
|
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|||||||
@ -131,7 +131,7 @@ tests:
|
|||||||
lda #$03 ;enable BG1+BG2
|
lda #$03 ;enable BG1+BG2
|
||||||
sta $212c ;BG Main
|
sta $212c ;BG Main
|
||||||
sta $212d ;BG Sub
|
sta $212d ;BG Sub
|
||||||
lda #$00 ;224
|
lda #$00 ;224 (01=448)
|
||||||
sta $2133 ;
|
sta $2133 ;
|
||||||
lda #$00
|
lda #$00
|
||||||
sta $2130
|
sta $2130
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
palette .byt $42, $08, $ff, $7f, $00, $00, $18, $63
|
palette .byt $42, $08, $ff, $7f, $00, $00, $18, $63
|
||||||
|
.byt $42, $08, $ff, $43, $00, $00, $18, $63
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $42, $08, $ff, $43, $00, $00, $18, $63
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
||||||
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
.byt $10, $42, $10, $42, $10, $42, $10, $42
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
; NMI - called on VBlank
|
; NMI - called on VBlank
|
||||||
NMI_ROUTINE:
|
NMI_ROUTINE:
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
|
rep #$10 : .xl
|
||||||
lda #$00
|
lda #$00
|
||||||
pha
|
pha
|
||||||
plb
|
plb
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
.text
|
.text
|
||||||
#include "memmap.i65"
|
#include "memmap.i65"
|
||||||
hiprint:
|
hiprint:
|
||||||
|
sep #$20 : .as
|
||||||
|
lda print_count
|
||||||
|
sta print_count_tmp
|
||||||
|
stz print_done
|
||||||
rep #$30 : .xl : .al
|
rep #$30 : .xl : .al
|
||||||
lda !print_x
|
lda print_x
|
||||||
and #$00ff
|
and #$00ff
|
||||||
lsr
|
lsr
|
||||||
bcs print_bg1
|
bcs print_bg1
|
||||||
@ -18,7 +22,7 @@ print_bg1
|
|||||||
phx
|
phx
|
||||||
bra print_bg_cont
|
bra print_bg_cont
|
||||||
print_bg_cont
|
print_bg_cont
|
||||||
sta !print_x
|
sta !print_temp
|
||||||
lda !print_y
|
lda !print_y
|
||||||
and #$00ff
|
and #$00ff
|
||||||
asl
|
asl
|
||||||
@ -27,14 +31,14 @@ print_bg_cont
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
clc
|
clc
|
||||||
adc !print_x
|
adc !print_temp
|
||||||
asl ; double the offset for WRAM addressing
|
asl ; double the offset for WRAM addressing
|
||||||
tay ; zonday
|
tay ; zonday
|
||||||
plx
|
plx
|
||||||
phy ; offset from tilemap start
|
phy ; offset from tilemap start
|
||||||
stx !print_x
|
stx !print_temp
|
||||||
clc
|
clc
|
||||||
adc !print_x
|
adc !print_temp
|
||||||
; we need to transfer to WRAM and from there to VRAM via DMA during VBLANK
|
; we need to transfer to WRAM and from there to VRAM via DMA during VBLANK
|
||||||
; because VRAM can only be accessed during VBLANK and forced blanking.
|
; because VRAM can only be accessed during VBLANK and forced blanking.
|
||||||
sta $2181
|
sta $2181
|
||||||
@ -51,17 +55,31 @@ print_loop_inner
|
|||||||
lda !0,x
|
lda !0,x
|
||||||
asl
|
asl
|
||||||
sta @$2180
|
sta @$2180
|
||||||
lda #$00
|
lda @print_pal
|
||||||
|
asl
|
||||||
|
asl
|
||||||
adc #$00
|
adc #$00
|
||||||
sta @$2180
|
sta @$2180
|
||||||
|
lda @print_done
|
||||||
|
inc
|
||||||
|
sta @print_done
|
||||||
|
inx
|
||||||
|
lda !0,x
|
||||||
|
beq print_loop2
|
||||||
inx
|
inx
|
||||||
lda !0,x
|
lda !0,x
|
||||||
beq print_loop2
|
beq print_loop2
|
||||||
inx
|
lda @print_count_tmp
|
||||||
lda !0,x
|
dec
|
||||||
|
dec
|
||||||
|
sta @print_count_tmp
|
||||||
beq print_loop2
|
beq print_loop2
|
||||||
|
bmi print_loop2
|
||||||
bra print_loop_inner
|
bra print_loop_inner
|
||||||
print_loop2
|
print_loop2
|
||||||
|
lda @print_count
|
||||||
|
dec
|
||||||
|
sta @print_count_tmp
|
||||||
lda #$00
|
lda #$00
|
||||||
pha
|
pha
|
||||||
plb
|
plb
|
||||||
@ -70,9 +88,9 @@ print_loop2
|
|||||||
iny
|
iny
|
||||||
pla ; offset from tilemap start
|
pla ; offset from tilemap start
|
||||||
plx ; other tilemap addr
|
plx ; other tilemap addr
|
||||||
stx !print_x
|
stx !print_temp
|
||||||
clc
|
clc
|
||||||
adc print_x ; tilemap+offset
|
adc !print_temp ; tilemap+offset
|
||||||
sta $2181
|
sta $2181
|
||||||
tyx
|
tyx
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
@ -83,15 +101,26 @@ print_loop2_inner
|
|||||||
lda !0,x
|
lda !0,x
|
||||||
asl
|
asl
|
||||||
sta @$2180
|
sta @$2180
|
||||||
lda #$00
|
lda @print_pal
|
||||||
|
asl
|
||||||
|
asl
|
||||||
adc #$00
|
adc #$00
|
||||||
sta @$2180
|
sta @$2180
|
||||||
|
lda @print_done
|
||||||
|
inc
|
||||||
|
sta @print_done
|
||||||
inx
|
inx
|
||||||
lda !0,x
|
lda !0,x
|
||||||
beq print_end
|
beq print_end
|
||||||
inx
|
inx
|
||||||
lda !0,x
|
lda !0,x
|
||||||
beq print_end
|
beq print_end
|
||||||
|
lda @print_count_tmp
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
sta @print_count_tmp
|
||||||
|
beq print_end
|
||||||
|
bmi print_end
|
||||||
bra print_loop2_inner
|
bra print_loop2_inner
|
||||||
print_end
|
print_end
|
||||||
lda #$00
|
lda #$00
|
||||||
@ -107,7 +136,7 @@ loprint:
|
|||||||
asl ;double the offset for WRAM addressing
|
asl ;double the offset for WRAM addressing
|
||||||
clc
|
clc
|
||||||
adc #!BG2_TILE_BUF
|
adc #!BG2_TILE_BUF
|
||||||
sta !print_x
|
sta !print_temp
|
||||||
lda !print_y
|
lda !print_y
|
||||||
and #$00ff
|
and #$00ff
|
||||||
asl
|
asl
|
||||||
@ -117,7 +146,7 @@ loprint:
|
|||||||
asl
|
asl
|
||||||
asl ;double the offset for WRAM addressing
|
asl ;double the offset for WRAM addressing
|
||||||
clc
|
clc
|
||||||
adc !print_x
|
adc !print_temp
|
||||||
; we need to transfer to WRAM and from there to VRAM via DMA during VBLANK
|
; we need to transfer to WRAM and from there to VRAM via DMA during VBLANK
|
||||||
; because VRAM can only be accessed during VBLANK and forced blanking.
|
; because VRAM can only be accessed during VBLANK and forced blanking.
|
||||||
sta $2181
|
sta $2181
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user