SNES menu: tweaks, add missing source, remove "smc" target from default make targets

This commit is contained in:
ikari 2011-04-25 03:39:16 +02:00
parent 747e04e010
commit 182946841d
10 changed files with 326 additions and 39 deletions

View File

@ -3,6 +3,7 @@
GAME_MAIN:
sep #$20 : .as
sei
stz $4200 ; inhibit VBlank NMI
jsr killdma
lda #$01
@ -44,12 +45,6 @@ printloop
lda #$00
sta @print_pal
jsr loprint_wram
- lda @$4212
and #$80
bne -
- lda @$4212
and #$80
beq -
rep #$20 : .al
lda #!BG1_TILE_BASE
sta $2116
@ -64,6 +59,12 @@ printloop
stx $4302
ldx #36*64
stx $4305
- lda @$4212
and #$80
bne -
- lda @$4212
and #$80
beq -
lda #$01
sta $420b
bra printloop
@ -165,9 +166,9 @@ tests:
sta $2107 ;for BG1
lda #$40 ;chr base addr:
sta $210b ;BG1=0x0000, BG2=0x8000
lda #$01 ;enable BG1
lda #$01 ;enable BG1
sta $212c ;BG Main
lda #$01 ;enable none
lda #$01 ;enable none
sta $212d ;BG Sub
lda #$00
sta $2130
@ -175,7 +176,7 @@ tests:
lda #$0f
sta $2100 ;screen on, full brightness
rts
snes_init:
sep #$20 : .as ;8-bit accumulator
rep #$10 : .xl ;16-bit index
@ -228,7 +229,7 @@ snes_init:
stz $2113 ;
stz $2114 ;
stz $2114 ;
lda #$80
lda #$80
sta $2115 ;
stz $2116 ;
stz $2117 ;

View File

@ -26,7 +26,7 @@ loprint:
sta @$2183
ldx !print_src
lda !print_bank
pha
pha
plb
loprint_loop_inner
lda !0,x

View File

@ -148,7 +148,11 @@ main_win_w .byt 27
main_win_h .byt 13
text_mainmenu .byt 28,"Main Menu", 29, 0
text_mm_time .byt "Set Clock", 0
main_entries .byt 1
main_enttab .byt ^text_mm_time, <text_mm_time, >text_mm_time, 1, ^time_init, <time_init, >time_init
text_mm_file .byt "File Browser", 0
text_mm_last .byt "Run last game", 0
text_mm_time .byt "Set Clock", 0
text_mm_scic .byt "Enable SuperCIC", 0
text_mm_vmode_menu .byt "Menu video mode", 0
text_mm_vmode_game .byt "Game video mode", 0
text_statusbar_keys .byt "B:Select A:Back X:Menu", 0

View File

@ -89,6 +89,8 @@ time_ptr .byt 0
time_tmp .byt 0
;--
mm_tmp .byt 0
mm_sel .byt 0
mm_refresh .byt 0
;----------menu layout/system constants (224/448)
vidmode .byt 0 ; 0=224, 1=448
listdisp .word 0 ; number of displayable list entries

128
snes/logospr.a65 Normal file
View File

@ -0,0 +1,128 @@
logospr .byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $e0, $a0, $a1, $a0, $41, $80, $01, $c0
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $de, $3f, $9e, $7f, $bf, $7f, $bf, $7f
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $ff, $fe, $ff, $01, $fe, $00, $fe
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $00, $ff, $00, $ff, $00, $fe, $01
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $80, $80, $00, $80, $80, $80
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $7f, $7f, $7f, $7f, $7f, $7f, $ff
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $2f, $07, $13, $07, $11, $02, $48, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $df, $d8, $cb, $cc, $cd, $ce, $87, $86
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $ff, $ff, $ff, $00, $ff, $c5, $3b
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $00, $ff, $00, $ff, $00, $7f, $83
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $c0, $e0, $a0, $e0, $00, $00, $80, $80
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $0f, $ff, $3f, $7f, $bf, $7f, $ff
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $04, $00, $08, $00, $10, $00, $10, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $f8, $f8, $f0, $f0, $e0, $e0, $e0, $e0
.byt $7f, $20, $7f, $20, $60, $00, $00, $20
.byt $00, $3f, $c0, $3f, $ff, $40, $ff, $00
.byt $3f, $20, $3f, $20, $20, $3f, $40, $7f
.byt $5f, $7f, $1f, $3f, $20, $7f, $20, $3f
.byt $c1, $01, $80, $00, $01, $01, $40, $40
.byt $00, $c0, $40, $c0, $c0, $40, $c0, $40
.byt $ff, $7f, $ff, $3e, $7e, $be, $3f, $bf
.byt $bf, $bf, $bf, $ff, $3f, $ff, $3f, $ff
.byt $ff, $00, $ff, $00, $01, $01, $01, $81
.byt $80, $fc, $5c, $4c, $00, $00, $18, $00
.byt $fe, $01, $ff, $01, $01, $ff, $00, $fe
.byt $3f, $fd, $bb, $db, $ff, $ff, $e7, $e7
.byt $00, $00, $00, $00, $00, $00, $c0, $c0
.byt $80, $80, $00, $00, $01, $00, $03, $00
.byt $ff, $ff, $ff, $ff, $ff, $ff, $3f, $ff
.byt $7f, $ff, $ff, $ff, $fe, $fe, $fc, $fc
.byt $46, $00, $41, $00, $40, $00, $40, $00
.byt $40, $00, $80, $00, $80, $00, $00, $00
.byt $81, $81, $80, $80, $80, $80, $80, $80
.byt $80, $80, $00, $00, $00, $00, $00, $00
.byt $44, $44, $00, $00, $78, $00, $03, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $bb, $83, $ff, $ff, $07, $07, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $03, $00, $fc, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $ff, $ff, $ff, $ff, $fc, $fc, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $60, $00, $c0, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $80, $80, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $e0, $5f, $a0, $5f, $bf, $40, $bf, $60
.byt $bf, $7f, $bf, $7f, $80, $40, $00, $40
.byt $20, $7f, $20, $3f, $3f, $3f, $3f, $3f
.byt $3f, $3f, $3f, $3f, $3f, $00, $bf, $80
.byt $00, $80, $10, $c0, $c0, $40, $e0, $40
.byt $c0, $c0, $e0, $e0, $60, $60, $00, $40
.byt $7f, $ff, $2f, $af, $bf, $bf, $9f, $9f
.byt $bf, $bf, $9f, $bf, $9f, $3f, $bf, $3f
.byt $13, $00, $10, $00, $10, $00, $08, $00
.byt $08, $00, $08, $00, $08, $00, $00, $00
.byt $e0, $e0, $e0, $e0, $e0, $e0, $f0, $f0
.byt $f0, $f0, $f0, $f0, $f0, $f0, $f8, $f8
.byt $fc, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $3f, $7f, $3f, $7f, $c0, $7f, $80, $3f
.byt $3f, $3f, $1f, $1f, $00, $00, $00, $00
.byt $80, $80, $80, $80, $00, $40, $40, $40
.byt $40, $7f, $60, $7f, $3f, $3f, $1f, $1f
.byt $80, $c0, $80, $c0, $00, $c0, $40, $c0
.byt $80, $80, $00, $00, $00, $00, $00, $00
.byt $3f, $3f, $3f, $3f, $3f, $3f, $3f, $7f
.byt $7f, $ff, $ff, $ff, $ff, $ff, $ff, $ff
.byt $08, $00, $08, $00, $08, $00, $00, $00
.byt $00, $00, $00, $00, $20, $00, $40, $00
.byt $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0
.byt $f0, $f0, $e0, $e0, $c0, $c0, $80, $80
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $5f, $2f, $5f, $2f, $70, $2f, $40, $1f
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $1f, $00, $1f, $00, $1f, $00, $3f, $00

View File

@ -24,7 +24,7 @@ GAME_MAIN:
sep #$20 : .as
lda @RTC_STATUS
beq +
jsr time_init
jsl time_init
+
jsr menuloop
cli

View File

@ -1,8 +1,38 @@
#include "memmap.i65"
;number of menu entries
main_entries .byt 1
;menu entry data
main_enttab ;Set Clock
.word !text_mm_time
.byt ^text_mm_time
.word !time_init-1
.byt ^time_init
.byt 1, 0
;SuperCIC
.word !text_mm_scic
.byt ^text_mm_scic
.word !time_init
.byt ^time_init
.byt 1, 0
;Menu vmode
.word !text_mm_vmode_menu
.byt ^text_mm_vmode_menu
.word !time_init
.byt ^time_init
.byt 1, 0
;Game vmode
.word !text_mm_vmode_game
.byt ^text_mm_vmode_game
.word !time_init
.byt ^time_init
.byt 1, 0
mainmenu:
php
sep #$20 : .as
stz mm_sel
mm_redraw
stz mm_tmp
jsr backup_screen
lda #^text_mainmenu
sta window_tbank
@ -10,35 +40,26 @@ mainmenu:
stx window_taddr
lda @main_win_x
sta window_x
inc
inc
sta bar_xl
lda @main_win_y
sta window_y
inc
sta bar_yl
lda @main_win_w
sta window_w
sec
sbc #$04
sta bar_wl
lda @main_win_h
sta window_h
jsr draw_window
stz mm_tmp
jsr mm_do_refresh
stz print_pal
ldx #!main_enttab
mm_entloop
lda @$912345
lda #^main_enttab
phb
pha
plb
ldx #!main_enttab
lda !1, x
sta @print_src
lda !2, x
sta @print_src+1
lda !0, x
sta @print_src
lda !1, x
sta @print_src+1
lda !2, x
sta @print_bank
lda @mm_tmp
asl
@ -52,18 +73,119 @@ mm_entloop
inc
sta @print_x
plb
phx
jsr hiprint
plx
inx
inx
inx
inx
inx
inx
inx
inx
inc mm_tmp
lda mm_tmp
cmp @main_entries
bne mm_entloop
plp
stz mm_tmp
stz mm_refresh
mm_menuloop
lda isr_done
lsr
bcc mm_menuloop
jsr printtime
stz isr_done
lda mm_refresh
beq +
jsr mm_do_refresh
stz mm_refresh
+
jsr read_pad
lda #$80
and pad1trig
bne mmkey_a
lda #$04
and pad1trig+1
bne mmkey_down
lda #$08
and pad1trig+1
bne mmkey_up
lda #$80
and pad1trig+1
bne mmkey_b
bra mm_menuloop
mmkey_a
jsr restore_screen
plp
rts
mmkey_b
jsr mmkey_b_2
jmp mm_redraw
mmkey_down
jsr mmkey_down_2
bra mm_menuloop
mmkey_up
jsr mmkey_up_2
bra mm_menuloop
mmkey_down_2
lda @main_entries
dec
cmp mm_sel
beq +
inc mm_sel
inc mm_refresh
+
rts
mmkey_up_2
lda mm_sel
beq +
dec mm_sel
dec bar_yl
dec bar_yl
+
rts
mmkey_b_2
jsr restore_screen
phk ; push return bank for subroutine
per mmkey_b_2_return-1 ; push return addr for subroutine
xba
lda #$00
xba
lda mm_sel
asl
asl
asl
tax
lda @main_enttab+5, x
pha ; push subroutine bank
rep #$20 : .al
lda @main_enttab+3, x
pha ; push subroutine addr
sep #$20 : .as
rtl ; jump to subroutine
mmkey_b_2_return
rts
mm_do_refresh
lda mm_sel
asl
clc
adc @main_win_y
inc
sta bar_yl
lda @main_win_x
inc
inc
sta bar_xl
lda @main_win_w
sec
sbc #$04
sta bar_wl
rts

View File

@ -44,6 +44,7 @@ menuloop_s1
bra menuloop_s1
menuloop_redraw
stz menu_dirty
jsr menu_statusbar
jsr menu_redraw
jsr menu_cleanup ;update phase 2
bra menuloop_s1
@ -565,7 +566,7 @@ setup_224:
setup_224_adjsel
sta menu_sel
+
lda #19*64
lda #18*64
sta textdmasize
lda #$0007
sta hdma_scroll+8
@ -607,7 +608,7 @@ setup_448:
rep #$30 : .xl : .al
lda #36
sta listdisp
lda #38*64
lda #36*64
sta textdmasize
lda #$ffc6
sta hdma_scroll+8
@ -628,4 +629,33 @@ setup_448:
plp
rts
menu_statusbar
pha
phx
php
sep #$20 : .as
rep #$10 : .xl
lda #^text_statusbar_keys
sta @print_bank
rep #$20 : .al
lda #!text_statusbar_keys
sta @print_src
sep #$20 : .as
lda #$00
sta @print_pal
lda #$02
sta @print_x
lda #$40
sta @print_count
lda listdisp
clc
adc #$0a
clc
adc vidmode
sta @print_y
jsr hiprint
plp
plx
pla
rts

View File

@ -183,11 +183,11 @@ backup_screen:
rep #$30 : .xl : .al
ldx #!BG1_TILE_BUF+64*9
ldy #!BG1_TILE_BAK+64*9
lda #36*64-1
lda @textdmasize
mvn ^BG1_TILE_BUF, ^BG1_TILE_BAK
ldx #!BG2_TILE_BUF+64*9
ldy #!BG2_TILE_BAK+64*9
lda #36*64-1
lda @textdmasize
mvn ^BG2_TILE_BUF, ^BG2_TILE_BAK
plp
plb
@ -201,11 +201,11 @@ restore_screen:
rep #$30 : .xl : .al
ldx #!BG1_TILE_BAK+64*9
ldy #!BG1_TILE_BUF+64*9
lda #36*64
lda @textdmasize
mvn ^BG1_TILE_BAK, ^BG1_TILE_BUF
ldx #!BG2_TILE_BAK+64*9
ldy #!BG2_TILE_BUF+64*9
lda #36*64
lda @textdmasize
mvn ^BG2_TILE_BAK, ^BG2_TILE_BUF
plp
plb

View File

@ -128,7 +128,7 @@ timeloop1
; restore text area
jsr restore_screen
plp
rts
rtl
tkey_b
inc time_exit