Browse Source

SNES: display system information (new menu entry)

ikari 12 years ago
parent
commit
fec9004dc1
5 changed files with 57 additions and 11 deletions
  1. 1 1
      snes/Makefile
  2. 9 3
      snes/const.a65
  3. 6 1
      snes/mainmenu.a65
  4. 3 0
      snes/memmap.i65
  5. 38 6
      snes/text.a65

+ 1 - 1
snes/Makefile

@@ -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 # 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 menu.o65 pad.o65 time.o65 mainmenu.o65 sysinfo.o65 # gfx.o65 # vars.o65
 
 all: menu.bin
 

+ 9 - 3
snes/const.a65

@@ -136,7 +136,9 @@ window_nh	.byt 24
 window_sh	.byt 25
 window_wv	.byt 26
 window_ev	.byt 27
-text_clkset	.byt 28,"Please set the clock.", 29,0
+window_tl	.byt 28
+window_tr	.byt 29
+text_clkset	.byt "Please set the clock.", 0
 text_buttonB	.byt "Dpad: sel/chg, B: OK", 0
 time_win_x	.byt 18
 time_win_y	.byt 15
@@ -146,7 +148,11 @@ main_win_x	.byt 18
 main_win_y	.byt 11
 main_win_w	.byt 27
 main_win_h	.byt 13
-text_mainmenu	.byt 28,"Main Menu", 29, 0
+text_mainmenu	.byt "Main Menu", 0
+sysinfo_win_x	.byt 10
+sysinfo_win_y	.byt 9
+sysinfo_win_w	.byt 43
+sysinfo_win_h	.byt 17
 
 text_mm_file		.byt "File Browser", 0
 text_mm_last		.byt "Run last game", 0
@@ -154,5 +160,5 @@ 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_mm_sysinfo		.byt "System Information", 0
 text_statusbar_keys	.byt "B:Select A:Back X:Menu", 0

+ 6 - 1
snes/mainmenu.a65

@@ -1,6 +1,6 @@
 #include "memmap.i65"
 ;number of menu entries
-main_entries    .byt 1
+main_entries    .byt 2
 ;menu entry data
 main_enttab     ;Set Clock
 		.word !text_mm_time
@@ -8,6 +8,11 @@ main_enttab     ;Set Clock
                 .word !time_init-1
                 .byt ^time_init
                 .byt 1, 0
+                ;System Information
+                .word !text_mm_sysinfo
+                .byt ^text_mm_sysinfo
+                .word !show_sysinfo-1
+		.byt ^show_sysinfo
                 ;SuperCIC
 		.word !text_mm_scic
                 .byt ^text_mm_scic

+ 3 - 0
snes/memmap.i65

@@ -20,5 +20,8 @@
 #define AVR_CMD		$307000
 #define AVR_PARAM	$307004
 #define RTC_STATUS	$307100
+#define SYSINFO_BLK	$307110
 
 #define ROOT_DIR	$C10000
+
+#define CMD_SYSINFO	$03

+ 38 - 6
snes/text.a65

@@ -53,7 +53,9 @@ print_loop
 	phx	; source addr
 print_loop_inner
 	lda !0,x
-	asl
+	bne +
+	jmp print_end2
++	asl
 	sta @$2180
 	lda @print_pal
 	asl
@@ -81,6 +83,7 @@ print_loop2
 	lda @print_count
 	dec
 	sta @print_count_tmp
+	beq print_end2
 	lda #$00
 	pha
 	plb
@@ -100,7 +103,9 @@ print_loop2
 	plb
 print_loop2_inner
 	lda !0,x
-	asl
+	bne +
+	jmp print_end
++	asl
 	sta @$2180
 	lda @print_pal
 	asl
@@ -124,6 +129,10 @@ print_loop2_inner
 	beq print_end
 	bmi print_end
 	bra print_loop2_inner
+print_end2 ; clean up the stack (6 bytes)
+	ply
+	ply
+	ply
 print_end
 	lda #$00
 	pha
@@ -157,7 +166,7 @@ loprint:
 	sta $2183
 	ldx !print_src
 	lda !print_bank
-	pha 
+	pha
 	plb
 loprint_loop_inner
 	lda !0,x
@@ -257,16 +266,39 @@ draw_window:
 	jsr hiprint
 
 ; print window title
+	lda print_x
+	pha
+	inc print_x
 	inc print_x
+	lda #^window_tl
+	sta print_bank
+	ldx #!window_tl
+	stx print_src
+	lda #$01
+	sta print_count
+	jsr hiprint
 	inc print_x
 	lda window_tbank
 	sta print_bank
 	ldx window_taddr
 	stx print_src
+	lda window_w
+	sta print_count
 	jsr hiprint
-	dec print_x
-	dec print_x
-
+	lda print_done
+	adc print_x
+	sta print_x
+	lda #^window_tr
+	sta print_bank
+	ldx #!window_tr
+	stx print_src
+	lda #$01
+	sta print_count
+	jsr hiprint
+	lda window_w
+	sta print_count
+	pla
+	sta print_x
 ; draw left+right borders + space inside window
 	lda #^stringbuf
 	sta print_bank