SNES menu: add time setting dialog + begin work on main menu

This commit is contained in:
ikari 2011-03-14 01:44:26 +01:00
parent c4d3756a18
commit 9af83658e7
22 changed files with 3466 additions and 2195 deletions

View File

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

View File

@ -64,193 +64,193 @@ font7 .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 $30, $00, $30, $08, $30, $08, $30, $08
.byt $20, $18, $00, $10, $30, $00, $00, $18
.byt $6c, $00, $6c, $12, $24, $12, $00, $12
.byt $00, $30, $30, $48, $30, $48, $30, $48
.byt $20, $58, $00, $30, $30, $48, $00, $30
.byt $00, $6c, $6c, $92, $24, $5a, $00, $36
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $6c, $00, $6c, $12, $fe, $00, $6c, $13
.byt $fe, $00, $6c, $13, $6c, $12, $00, $36
.byt $10, $00, $7c, $44, $c6, $38, $f0, $03
.byt $1e, $60, $c6, $09, $7c, $47, $10, $2e
.byt $42, $00, $a4, $01, $48, $12, $10, $24
.byt $24, $08, $4a, $10, $84, $21, $00, $42
.byt $70, $40, $c0, $38, $c4, $24, $6e, $4a
.byt $c4, $33, $c4, $22, $7c, $46, $00, $3e
.byt $18, $00, $18, $04, $10, $0c, $00, $08
.byt $00, $6c, $6c, $92, $fe, $01, $6c, $92
.byt $fe, $01, $6c, $92, $00, $6c, $00, $00
.byt $10, $6c, $7c, $c6, $c6, $39, $f0, $0e
.byt $1e, $e1, $c6, $39, $7c, $c6, $10, $6c
.byt $42, $a5, $a4, $5a, $48, $b4, $10, $6c
.byt $24, $5a, $4a, $b5, $84, $4a, $00, $84
.byt $70, $c8, $c0, $34, $c4, $2e, $6e, $db
.byt $c4, $2a, $c4, $3a, $7c, $c6, $00, $7c
.byt $00, $18, $18, $24, $10, $28, $00, $10
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $18, $00, $30, $2c, $30, $08, $30, $08
.byt $30, $08, $30, $28, $18, $00, $00, $0c
.byt $30, $00, $18, $08, $18, $04, $18, $04
.byt $18, $04, $18, $0c, $30, $0c, $00, $18
.byt $00, $00, $6c, $00, $38, $06, $7c, $00
.byt $38, $06, $6c, $12, $00, $36, $00, $00
.byt $00, $00, $30, $00, $30, $08, $fc, $00
.byt $30, $4e, $30, $08, $00, $18, $00, $00
.byt $18, $24, $30, $68, $30, $48, $30, $48
.byt $30, $48, $30, $68, $18, $24, $00, $18
.byt $30, $48, $18, $2c, $18, $24, $18, $24
.byt $18, $24, $18, $2c, $30, $48, $00, $30
.byt $00, $6c, $6c, $92, $38, $44, $7c, $82
.byt $38, $44, $6c, $92, $00, $6c, $00, $00
.byt $00, $18, $18, $24, $18, $66, $7e, $81
.byt $18, $66, $18, $24, $00, $18, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $18, $00, $18, $04, $10, $08
.byt $00, $00, $00, $00, $00, $00, $fc, $00
.byt $00, $18, $18, $24, $18, $24, $10, $28
.byt $00, $00, $00, $00, $00, $7e, $7e, $81
.byt $00, $7e, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $18, $00, $18, $04, $00, $0c
.byt $18, $00, $18, $04, $30, $0c, $30, $08
.byt $30, $08, $60, $18, $60, $10, $00, $30
.byt $7c, $44, $e6, $38, $c6, $31, $c6, $21
.byt $c6, $21, $ce, $29, $7c, $47, $00, $3e
.byt $08, $00, $18, $04, $18, $04, $18, $04
.byt $18, $04, $18, $04, $18, $04, $00, $0c
.byt $fc, $00, $00, $7e, $06, $00, $7c, $07
.byt $c0, $be, $c0, $20, $fe, $00, $00, $7f
.byt $fc, $00, $00, $7e, $06, $00, $3c, $07
.byt $06, $18, $06, $01, $fc, $07, $00, $7e
.byt $c6, $00, $c6, $21, $c0, $23, $7e, $40
.byt $06, $39, $06, $01, $06, $01, $00, $03
.byt $fe, $00, $00, $7f, $c0, $00, $fc, $04
.byt $06, $78, $06, $01, $fc, $07, $00, $7e
.byt $7c, $00, $00, $3e, $c0, $00, $fc, $04
.byt $c6, $38, $c6, $a1, $7c, $07, $00, $3e
.byt $fe, $00, $00, $7f, $06, $00, $06, $01
.byt $06, $01, $06, $01, $06, $01, $00, $03
.byt $7c, $04, $06, $38, $c6, $01, $7c, $47
.byt $c6, $38, $c6, $21, $7c, $47, $00, $3e
.byt $7c, $04, $06, $38, $c6, $01, $7e, $41
.byt $06, $39, $06, $01, $7c, $07, $00, $3e
.byt $00, $00, $00, $00, $30, $00, $00, $18
.byt $00, $00, $30, $00, $00, $18, $00, $00
.byt $00, $00, $00, $00, $30, $00, $00, $18
.byt $00, $00, $30, $00, $20, $18, $00, $10
.byt $00, $00, $18, $00, $30, $0c, $60, $18
.byt $30, $00, $18, $00, $00, $0c, $00, $00
.byt $00, $00, $00, $00, $3c, $00, $00, $1e
.byt $00, $00, $3c, $00, $00, $1e, $00, $00
.byt $00, $00, $30, $00, $18, $00, $0c, $00
.byt $18, $06, $30, $0c, $00, $18, $00, $00
.byt $f8, $08, $0c, $70, $0c, $02, $18, $06
.byt $30, $0c, $00, $18, $30, $00, $00, $18
.byt $7c, $04, $06, $38, $c6, $01, $de, $21
.byt $de, $21, $c0, $2f, $7e, $40, $00, $3f
.byt $7c, $04, $06, $38, $c6, $01, $de, $21
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
.byt $fc, $04, $06, $78, $c6, $01, $dc, $27
.byt $c6, $28, $c6, $21, $fc, $07, $00, $7e
.byt $7e, $00, $00, $3f, $c0, $00, $c0, $20
.byt $c0, $20, $c0, $20, $7e, $40, $00, $3f
.byt $fc, $00, $06, $7a, $c6, $01, $c6, $21
.byt $c6, $21, $c6, $23, $fc, $03, $00, $7e
.byt $fe, $00, $00, $7f, $c0, $00, $f8, $00
.byt $c0, $3c, $c0, $20, $fe, $00, $00, $7f
.byt $fe, $00, $00, $7f, $c0, $00, $f8, $00
.byt $c0, $3c, $c0, $20, $c0, $20, $00, $60
.byt $7e, $00, $00, $3f, $c0, $00, $ce, $20
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
.byt $c6, $00, $06, $61, $c6, $01, $de, $21
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
.byt $18, $00, $18, $04, $18, $04, $18, $04
.byt $18, $04, $18, $04, $18, $04, $00, $0c
.byt $0c, $00, $0c, $02, $0c, $02, $0c, $02
.byt $0c, $02, $0c, $06, $f8, $06, $00, $7c
.byt $c6, $00, $c6, $21, $c0, $23, $fc, $04
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
.byt $c0, $00, $00, $60, $c0, $00, $c0, $20
.byt $c0, $20, $c0, $20, $fc, $00, $00, $7e
.byt $fc, $04, $16, $68, $d6, $09, $d6, $29
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
.byt $fc, $04, $06, $78, $c6, $01, $c6, $21
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
.byt $7c, $04, $06, $38, $c6, $01, $c6, $21
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
.byt $fc, $04, $06, $78, $c6, $01, $c6, $01
.byt $fc, $07, $c0, $3e, $c0, $20, $00, $60
.byt $7c, $00, $06, $3a, $c6, $01, $c6, $21
.byt $c6, $21, $ce, $21, $7e, $41, $00, $3f
.byt $fc, $04, $06, $78, $c6, $01, $fc, $06
.byt $c6, $39, $c6, $21, $c6, $21, $00, $63
.byt $7e, $00, $00, $3f, $c0, $00, $7c, $44
.byt $06, $38, $06, $01, $fc, $07, $00, $7e
.byt $fe, $00, $00, $7f, $18, $00, $18, $04
.byt $18, $04, $18, $04, $18, $04, $00, $0c
.byt $c6, $00, $06, $61, $c6, $01, $c6, $21
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
.byt $c6, $00, $06, $61, $c6, $01, $c6, $21
.byt $66, $01, $36, $01, $1e, $01, $00, $0f
.byt $c6, $00, $06, $61, $c6, $01, $d6, $21
.byt $d6, $29, $d6, $29, $7e, $41, $00, $3f
.byt $c6, $00, $06, $61, $c6, $01, $7c, $47
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
.byt $c6, $00, $06, $61, $c6, $01, $7e, $41
.byt $06, $39, $06, $03, $fc, $03, $00, $7e
.byt $fe, $00, $00, $7f, $06, $00, $7c, $47
.byt $c0, $3e, $c0, $20, $fe, $00, $00, $7f
.byt $3c, $00, $30, $0e, $30, $08, $30, $08
.byt $30, $08, $30, $08, $3c, $00, $00, $1e
.byt $30, $00, $30, $08, $18, $00, $18, $04
.byt $18, $04, $0c, $00, $0c, $02, $00, $06
.byt $3c, $00, $0c, $12, $0c, $02, $0c, $02
.byt $0c, $02, $0c, $02, $3c, $02, $00, $1e
.byt $18, $00, $3c, $24, $66, $18, $00, $33
.byt $00, $18, $18, $24, $18, $24, $00, $18
.byt $03, $04, $06, $09, $0c, $12, $18, $24
.byt $30, $48, $60, $90, $c0, $20, $00, $c0
.byt $7c, $c6, $e6, $39, $c6, $29, $c6, $29
.byt $c6, $29, $ce, $39, $7c, $c6, $00, $7c
.byt $18, $34, $18, $24, $18, $24, $18, $24
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $fc, $06, $06, $f9, $06, $79, $7c, $86
.byt $c0, $bc, $c0, $3e, $fe, $01, $00, $fe
.byt $fc, $06, $06, $f9, $06, $39, $3c, $46
.byt $06, $39, $06, $f9, $fc, $06, $00, $fc
.byt $c6, $29, $c6, $29, $c6, $39, $7e, $c1
.byt $06, $79, $06, $09, $06, $09, $00, $06
.byt $fe, $01, $c0, $3e, $c0, $3c, $fc, $06
.byt $06, $f9, $06, $f9, $fc, $06, $00, $f8
.byt $7c, $c2, $c0, $3c, $c0, $3c, $fc, $06
.byt $c6, $39, $c6, $39, $7c, $c6, $00, $7c
.byt $fc, $06, $06, $f9, $06, $09, $06, $09
.byt $06, $09, $06, $09, $06, $09, $00, $06
.byt $7c, $c6, $c6, $39, $c6, $39, $7c, $c6
.byt $c6, $39, $c6, $39, $7c, $c6, $00, $7c
.byt $7c, $c6, $c6, $39, $c6, $39, $7e, $c1
.byt $06, $79, $06, $79, $7c, $86, $00, $7c
.byt $00, $00, $00, $30, $30, $48, $00, $30
.byt $00, $30, $30, $48, $00, $30, $00, $00
.byt $00, $00, $00, $30, $30, $48, $00, $30
.byt $00, $30, $30, $48, $20, $50, $00, $20
.byt $00, $18, $18, $24, $30, $48, $60, $90
.byt $30, $48, $18, $24, $00, $18, $00, $00
.byt $00, $00, $00, $3c, $3c, $42, $00, $3c
.byt $00, $3c, $3c, $42, $00, $3c, $00, $00
.byt $00, $30, $30, $48, $18, $24, $0c, $12
.byt $18, $24, $30, $48, $00, $30, $00, $00
.byt $f8, $0c, $0c, $f2, $0c, $12, $18, $24
.byt $30, $48, $00, $30, $30, $48, $00, $30
.byt $7c, $c6, $c6, $39, $c6, $39, $de, $21
.byt $de, $21, $c0, $3e, $7e, $c1, $00, $7e
.byt $7c, $c6, $c6, $39, $c6, $39, $de, $21
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c6
.byt $fc, $06, $c6, $39, $c6, $39, $dc, $26
.byt $c6, $39, $c6, $39, $fc, $06, $00, $fc
.byt $7e, $c1, $c0, $3e, $c0, $20, $c0, $20
.byt $c0, $20, $c0, $3e, $7e, $c1, $00, $7e
.byt $fc, $02, $c6, $3b, $c6, $29, $c6, $29
.byt $c6, $29, $c6, $3b, $fc, $02, $00, $fc
.byt $fe, $01, $c0, $3e, $c0, $38, $f8, $04
.byt $c0, $38, $c0, $3e, $fe, $01, $00, $fe
.byt $fe, $01, $c0, $3e, $c0, $38, $f8, $04
.byt $c0, $38, $c0, $20, $c0, $20, $00, $c0
.byt $7e, $c1, $c0, $3e, $c0, $2e, $ce, $33
.byt $c6, $29, $c6, $39, $7c, $c6, $00, $7c
.byt $c6, $29, $c6, $29, $c6, $39, $fe, $01
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c6
.byt $18, $24, $18, $24, $18, $24, $18, $24
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $0c, $12, $0c, $12, $0c, $12, $0c, $12
.byt $0c, $12, $0c, $f6, $f8, $06, $00, $fc
.byt $c6, $29, $c6, $29, $c6, $38, $fc, $06
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c7
.byt $c0, $20, $c0, $20, $c0, $20, $c0, $20
.byt $c0, $20, $c0, $3c, $fc, $02, $00, $fc
.byt $ec, $16, $d6, $29, $d6, $29, $d6, $29
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c7
.byt $fc, $06, $c6, $39, $c6, $29, $c6, $29
.byt $c6, $29, $c6, $29, $c6, $29, $00, $c6
.byt $7c, $c6, $c6, $39, $c6, $29, $c6, $29
.byt $c6, $29, $c6, $39, $7c, $c6, $00, $7c
.byt $fc, $06, $c6, $39, $c6, $29, $c6, $39
.byt $fc, $06, $c0, $3c, $c0, $20, $00, $c0
.byt $7c, $82, $c6, $bb, $c6, $29, $c6, $29
.byt $c6, $29, $ce, $31, $7e, $c1, $00, $7e
.byt $fc, $06, $c6, $39, $c6, $39, $fc, $06
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c6
.byt $7e, $c1, $c0, $3e, $c0, $3c, $7c, $c6
.byt $06, $79, $06, $f9, $fc, $06, $00, $fc
.byt $fe, $01, $18, $e6, $18, $24, $18, $24
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $c6, $29, $c6, $29, $c6, $29, $c6, $29
.byt $c6, $29, $c6, $39, $7c, $c6, $00, $7c
.byt $c6, $29, $c6, $29, $c6, $29, $c6, $29
.byt $66, $99, $36, $49, $1e, $21, $00, $1f
.byt $c6, $29, $c6, $29, $c6, $39, $d6, $29
.byt $d6, $29, $d6, $29, $6e, $d1, $00, $6e
.byt $c6, $29, $c6, $29, $c6, $39, $7c, $c6
.byt $c6, $39, $c6, $29, $c6, $29, $00, $c6
.byt $c6, $29, $c6, $29, $c6, $39, $7e, $c1
.byt $06, $79, $06, $f9, $fc, $06, $00, $fc
.byt $fe, $01, $06, $f9, $06, $79, $7c, $c6
.byt $c0, $3c, $c0, $3e, $fe, $01, $00, $fe
.byt $3c, $42, $30, $4c, $30, $48, $30, $48
.byt $30, $48, $30, $4c, $3c, $42, $00, $3c
.byt $c0, $20, $60, $90, $30, $48, $18, $24
.byt $0c, $12, $06, $09, $03, $04, $00, $03
.byt $3c, $42, $0c, $32, $0c, $12, $0c, $12
.byt $0c, $12, $0c, $32, $3c, $42, $00, $3c
.byt $18, $24, $3c, $66, $66, $99, $00, $66
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $fe, $00, $00, $7f
.byt $30, $00, $18, $00, $18, $04, $00, $0c
.byt $00, $00, $00, $7e, $7e, $81, $00, $7e
.byt $30, $48, $18, $24, $18, $24, $00, $18
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $7c, $04, $06, $38
.byt $7e, $41, $c6, $39, $7e, $41, $00, $3f
.byt $c0, $00, $c0, $20, $fc, $04, $c6, $38
.byt $c6, $21, $c6, $21, $fc, $07, $00, $7e
.byt $00, $00, $00, $00, $7e, $40, $c0, $3f
.byt $c0, $20, $c0, $20, $7e, $40, $00, $3f
.byt $06, $00, $06, $01, $7e, $41, $c6, $39
.byt $c6, $21, $c6, $21, $7e, $41, $00, $3f
.byt $00, $00, $00, $00, $7c, $44, $c6, $38
.byt $de, $21, $c0, $2f, $7e, $40, $00, $3f
.byt $1e, $00, $30, $2f, $30, $08, $3c, $00
.byt $30, $0e, $30, $08, $30, $08, $30, $08
.byt $00, $00, $00, $00, $7e, $40, $c6, $38
.byt $c6, $21, $7e, $41, $06, $39, $7c, $03
.byt $c0, $00, $c0, $20, $fc, $04, $c6, $38
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
.byt $00, $00, $18, $00, $00, $0c, $18, $00
.byt $18, $04, $18, $04, $18, $04, $00, $0c
.byt $00, $00, $18, $00, $00, $0c, $18, $00
.byt $18, $04, $18, $04, $18, $0c, $30, $0c
.byt $c0, $00, $c6, $20, $c6, $21, $fc, $07
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
.byt $30, $00, $30, $08, $30, $08, $30, $08
.byt $30, $08, $30, $28, $18, $00, $00, $0c
.byt $00, $00, $00, $00, $fc, $04, $d6, $28
.byt $d6, $29, $d6, $29, $c6, $29, $00, $63
.byt $00, $00, $00, $00, $fc, $04, $c6, $38
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
.byt $00, $00, $00, $00, $7c, $44, $c6, $38
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
.byt $00, $00, $00, $00, $fc, $04, $c6, $38
.byt $c6, $21, $fc, $07, $c0, $3e, $c0, $20
.byt $00, $00, $00, $00, $7e, $40, $c6, $39
.byt $c6, $21, $7e, $41, $06, $39, $06, $01
.byt $00, $00, $00, $00, $7c, $40, $c0, $3e
.byt $c0, $20, $c0, $20, $c0, $20, $00, $60
.byt $00, $00, $00, $00, $7e, $40, $c0, $3f
.byt $7c, $44, $06, $38, $fc, $07, $00, $7e
.byt $30, $00, $30, $08, $3c, $00, $30, $0e
.byt $30, $08, $30, $08, $1e, $10, $00, $0f
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
.byt $66, $01, $36, $01, $1e, $01, $00, $0f
.byt $00, $00, $00, $00, $c6, $00, $d6, $21
.byt $d6, $29, $d6, $29, $7e, $41, $00, $3f
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
.byt $7c, $47, $c6, $38, $c6, $21, $00, $63
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
.byt $7e, $41, $06, $39, $06, $01, $fc, $07
.byt $00, $00, $00, $00, $fe, $00, $06, $79
.byt $7c, $47, $c0, $3e, $fe, $00, $00, $7f
.byt $18, $00, $30, $0c, $30, $08, $70, $08
.byt $30, $08, $30, $08, $18, $00, $00, $0c
.byt $18, $00, $18, $04, $18, $04, $00, $0c
.byt $18, $00, $18, $04, $18, $04, $00, $0c
.byt $30, $00, $18, $00, $18, $04, $1c, $00
.byt $18, $06, $18, $04, $30, $0c, $00, $18
.byt $00, $00, $00, $00, $72, $10, $fe, $01
.byt $9c, $73, $00, $4e, $00, $00, $00, $00
.byt $00, $00, $00, $7c, $7c, $86, $06, $79
.byt $7e, $c1, $c6, $39, $7e, $c1, $00, $7e
.byt $c0, $20, $c0, $3c, $fc, $06, $c6, $39
.byt $c6, $29, $c6, $39, $fc, $06, $00, $fc
.byt $00, $00, $00, $7e, $7e, $c1, $c0, $3e
.byt $c0, $20, $c0, $3e, $7e, $c1, $00, $7e
.byt $06, $09, $06, $79, $7e, $c1, $c6, $39
.byt $c6, $29, $c6, $39, $7e, $c1, $00, $7f
.byt $00, $00, $00, $7c, $7c, $c6, $c6, $39
.byt $fe, $01, $c0, $3e, $7e, $c3, $00, $7e
.byt $1e, $21, $30, $6e, $30, $4c, $3c, $42
.byt $30, $4c, $30, $48, $30, $48, $30, $48
.byt $00, $00, $00, $7e, $7e, $c1, $c6, $39
.byt $c6, $39, $7e, $c1, $06, $79, $7c, $86
.byt $c0, $20, $c0, $3c, $fc, $06, $c6, $39
.byt $c6, $29, $c6, $29, $c6, $29, $00, $c6
.byt $00, $18, $18, $24, $00, $18, $18, $24
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $00, $18, $18, $24, $00, $18, $18, $24
.byt $18, $24, $18, $24, $18, $2c, $30, $48
.byt $c0, $20, $c0, $26, $c6, $29, $c6, $2b
.byt $fc, $06, $c6, $2b, $c6, $29, $00, $c7
.byt $30, $48, $30, $48, $30, $48, $30, $48
.byt $30, $48, $30, $68, $18, $24, $00, $1c
.byt $00, $00, $00, $ec, $ec, $16, $d6, $29
.byt $d6, $29, $d6, $29, $c6, $39, $00, $c7
.byt $00, $00, $00, $fc, $fc, $06, $c6, $39
.byt $c6, $29, $c6, $29, $c6, $29, $00, $c6
.byt $00, $00, $00, $7c, $7c, $c6, $c6, $39
.byt $c6, $29, $c6, $39, $7c, $c6, $00, $7c
.byt $00, $00, $00, $fc, $fc, $06, $c6, $39
.byt $c6, $39, $fc, $06, $c0, $3c, $c0, $20
.byt $00, $00, $00, $7e, $7e, $c1, $c6, $39
.byt $c6, $39, $7e, $c1, $06, $79, $06, $09
.byt $00, $00, $00, $7c, $7c, $c2, $c0, $3c
.byt $c0, $20, $c0, $20, $c0, $20, $00, $c0
.byt $00, $00, $00, $7e, $7e, $c1, $c0, $3e
.byt $7c, $c6, $06, $f9, $fc, $06, $00, $fc
.byt $30, $48, $30, $4c, $3c, $42, $30, $4c
.byt $30, $48, $30, $4e, $1e, $31, $00, $1e
.byt $00, $00, $00, $c6, $c6, $29, $c6, $29
.byt $c6, $29, $c6, $39, $7c, $c6, $00, $7c
.byt $00, $00, $00, $c6, $c6, $29, $c6, $29
.byt $66, $99, $36, $49, $1e, $21, $00, $1e
.byt $00, $00, $00, $c6, $c6, $39, $d6, $29
.byt $d6, $29, $d6, $29, $6e, $d1, $00, $6e
.byt $00, $00, $00, $c6, $c6, $29, $c6, $39
.byt $7c, $c6, $c6, $39, $c6, $29, $00, $c6
.byt $00, $00, $00, $c6, $c6, $29, $c6, $39
.byt $7e, $c1, $06, $79, $06, $f9, $fc, $06
.byt $00, $00, $00, $fe, $fe, $01, $06, $f9
.byt $7c, $c6, $c0, $3e, $fe, $01, $00, $fe
.byt $18, $24, $30, $48, $30, $48, $70, $88
.byt $30, $48, $30, $48, $18, $24, $00, $18
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $18, $24, $18, $24, $18, $24, $00, $18
.byt $30, $48, $18, $24, $18, $24, $1c, $22
.byt $18, $24, $18, $24, $30, $48, $00, $30
.byt $00, $00, $00, $72, $72, $9d, $fe, $01
.byt $9c, $72, $00, $9c, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00

View File

@ -116,7 +116,6 @@ oam_data_l .byt 75, 56, 31, $0e
.byt 75, 80, 24, $0e
.byt 83, 80, 25, $0e
.byt 91, 80, 26, $0e
oam_data_h .byt 0, 0, 0, 0, 0, 0, 0, 0
space64 .byt $20, $20, $20, $20, $20, $20, $20, $20
@ -129,3 +128,27 @@ space64 .byt $20, $20, $20, $20, $20, $20, $20, $20
.byt $20, $20, $20, $20, $20, $20, $20, $20
.byt $00
text_dirmark .byt " <dir>", 0
window_nw .byt 20
window_ne .byt 21
window_sw .byt 22
window_se .byt 23
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
text_buttonB .byt "Dpad: sel/chg, B: OK", 0
time_win_x .byt 18
time_win_y .byt 15
time_win_w .byt 27
time_win_h .byt 7
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_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

View File

@ -21,14 +21,6 @@ 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
stack .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
;----------parameters for text output----------
print_x .byt 0 ;x coordinate
@ -56,6 +48,7 @@ bar_yl .byt 0 ; logical y position of select bar
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 #
@ -67,7 +60,37 @@ fd_fnoff .word 0 ; offset of filename in file descriptor
pad1mem .word 0
pad1trig .word 0
pad1delay .word 0
window_x .byt 0
window_y .byt 0
window_w .byt 0
window_h .byt 0
window_tmp .word 0
window_tbank .byt 0
window_taddr .word 0
stringbuf .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
;----------dialog specific data
time_s1 .byt 0
time_s10 .byt 0
time_m1 .byt 0
time_m10 .byt 0
time_h1 .byt 0
time_h10 .byt 0
time_d1 .byt 0
time_d10 .byt 0
time_mon .byt 0
time_y1 .byt 0
time_y10 .byt 0
time_y100 .byt 0
time_sel .byt 0
time_exit .byt 0
time_ptr .byt 0
time_tmp .byt 0
;--
mm_tmp .byt 0
;----------menu layout/system constants (224/448)
vidmode .byt 0 ; 0=224, 1=448
listdisp .word 0 ; number of displayable list entries
textdmasize .word 0 ; number of bytes to copy each frame
barstep .byt 0 ; step size for bar

13
snes/dma.i65 Normal file
View File

@ -0,0 +1,13 @@
#define DMA0(mode, len, a_bank, a_addr, b_reg)\
lda mode \
: sta dma_mode \
: ldx a_addr \
: lda a_bank \
: stx dma_a_addr \
: sta dma_a_bank \
: ldx len \
: stx dma_len \
: lda b_reg \
: sta dma_b_reg \
: jsr dma0

View File

@ -78,44 +78,44 @@ font2 .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, $3f, $3f, $60
.byt $7f, $c0, $78, $8f, $70, $88, $70, $88
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $fc, $fc, $06
.byt $fe, $03, $1e, $f1, $0e, $11, $0e, $11
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $70, $88, $70, $88, $78, $8f, $7f, $c0
.byt $3f, $60, $00, $3f, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $0e, $11, $0e, $11, $1e, $f1, $fe, $03
.byt $fc, $06, $00, $fc, $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, $ff, $ff, $00
.byt $ff, $00, $00, $ff, $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, $ff, $ff, $00
.byt $ff, $00, $00, $ff, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $70, $88, $70, $88, $70, $88, $70, $88
.byt $70, $88, $70, $88, $70, $88, $70, $88
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $0e, $11, $0e, $11, $0e, $11, $0e, $11
.byt $0e, $11, $0e, $11, $0e, $11, $0e, $11
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $00, $7c, $38, $44, $38, $c4, $f8, $04
.byt $f8, $04, $38, $c4, $38, $44, $00, $7c
.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 $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, $3e, $1c, $22, $1c, $23, $1f, $20
.byt $1f, $20, $1c, $23, $1c, $22, $00, $3e
.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
@ -1182,80 +1182,80 @@ font4 .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, $3f, $3f, $60
.byt $7f, $c0, $78, $8f, $70, $88, $70, $88
.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, $fc, $fc, $06
.byt $fe, $03, $1e, $f1, $0e, $11, $0e, $11
.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 $70, $88, $70, $88, $78, $8f, $7f, $c0
.byt $3f, $60, $00, $3f, $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 $0e, $11, $0e, $11, $1e, $f1, $fe, $03
.byt $fc, $06, $00, $fc, $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, $ff, $ff, $00
.byt $ff, $00, $00, $ff, $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, $ff, $ff, $00
.byt $ff, $00, $00, $ff, $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 $70, $88, $70, $88, $70, $88, $70, $88
.byt $70, $88, $70, $88, $70, $88, $70, $88
.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 $0e, $11, $0e, $11, $0e, $11, $0e, $11
.byt $0e, $11, $0e, $11, $0e, $11, $0e, $11
.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, $7c, $38, $44, $38, $c4, $f8, $04
.byt $f8, $04, $38, $c4, $38, $44, $00, $7c
.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 $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, $3e, $1c, $22, $1c, $23, $1f, $20
.byt $1f, $20, $1c, $23, $1c, $22, $00, $3e
.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

View File

@ -5,15 +5,20 @@
*= $C0FF00
RESET:
sei: clc: xce
sei
clc
xce
rep #$20 : .al
lda #$1fff
tcs
jmp @GAME_MAIN
NMI_16bit:
php
rep #$30
rep #$30 : .al : .xl
pha: phx: phy: phd: phb
jsl @NMI_ROUTINE
rep #$30
rep #$30 : .al : .xl
int_exit:
plb: pld: ply: plx: pla
plp
@ -21,10 +26,10 @@ int_exit:
IRQ_16bit:
php
rep #$30
rep #$30 : .al : .xl
pha: phx: phy: phd: phb
jsl @IRQ_ROUTINE
rep #$30
rep #$30 : .al : .xl
bra int_exit
;error vectors

File diff suppressed because it is too large Load Diff

View File

@ -22,15 +22,10 @@ GAME_MAIN:
jsr menu_init
jsr tests
sep #$20 : .as
- lda @$C00000
lda @$D00000
lda @$E00000
lda @$F00000
lda @$400000
lda @$500000
lda @$600000
lda @$700000
; bra -
lda @RTC_STATUS
beq +
jsr time_init
+
jsr menuloop
cli
stz $4200
@ -130,7 +125,7 @@ setup_gfx:
;copy logo tiles
ldx #$2000
stx $2116
DMA0(#$01, #$3740, #^logo, #!logo, #$18)
DMA0(#$01, #$4000, #^logo, #!logo, #$18)
;copy logo tilemap
ldx #BG1_TILE_BASE
@ -380,7 +375,7 @@ fadeloop_start
sta hdma_math+17
txa
dec
; sta $2100
sta $2100
tax
bne fadeloop_start
stz $2126
@ -389,7 +384,7 @@ fadeloop_start
stz $2130
lda #$00
sta @hdma_math
; stz $2100
stz $2100
- bra -
fadeloop_end:

69
snes/mainmenu.a65 Normal file
View File

@ -0,0 +1,69 @@
#include "memmap.i65"
mainmenu:
php
sep #$20 : .as
jsr backup_screen
lda #^text_mainmenu
sta window_tbank
ldx #!text_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
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_bank
lda @mm_tmp
asl
clc
adc @main_win_y
inc
inc
sta @print_y
lda @main_win_x
inc
inc
sta @print_x
plb
jsr hiprint
inc mm_tmp
lda mm_tmp
cmp @main_entries
bne mm_entloop
plp
mm_menuloop
lda isr_done
lsr
bcc mm_menuloop
jsr printtime
stz isr_done
bra mm_menuloop
jsr restore_screen
rts

24
snes/memmap.i65 Normal file
View File

@ -0,0 +1,24 @@
#if 0 /* #if0'd because it's #included, and those don't get parsed properly by snescom */
; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
; See http://bisqwit.iki.fi/source/snescom.html for details.
#endif
/* These must be defined as constants, because they're used
* in calculation that is sent to PPU as parameters */
#define BG1_TILE_BASE $5800
#define BG2_TILE_BASE $5000
#define OAM_TILE_BASE $6000
#define BG1_TILE_BUF $7FB000
#define BG2_TILE_BUF $7FA000
#define BG1_TILE_BAK $7F9000
#define BG2_TILE_BAK $7F8000
#define AVR_CMD $307000
#define AVR_PARAM $307004
#define RTC_STATUS $307100
#define ROOT_DIR $C10000

View File

@ -16,6 +16,10 @@ menu_init:
sta cursor_x
lda #$09
sta cursor_y
lda #$01
sta bar_xl
lda #$3e
sta bar_wl
ldx #$0000
stx dirptr_idx
stx menu_sel
@ -32,6 +36,7 @@ menuloop_s1
bcc menuloop_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?
cmp #$01
@ -81,7 +86,7 @@ menu_cleanup_loop ;pad rest of screen with empty lines
sta menu_sel
menu_cleanup_out
rts
menu_updates:
;update selection, scroll etc
@ -93,7 +98,10 @@ menu_updates:
clc
adc #$08
sta bar_yl
lda #$3e
sta bar_wl
lda #$01
sta bar_xl
;get input
jsr read_pad
lda #$04
@ -117,6 +125,9 @@ menu_updates:
lda #$80
and pad1trig
bne key_a
lda #$40
and pad1trig
bne key_x
bra menuupd_out
key_down
jsr menu_key_down
@ -136,6 +147,10 @@ key_b
key_a
jsr menu_key_a
bra menuupd_out
key_x
jsr menu_key_x
bra menuupd_out
key_select
jsr menu_key_select
bra menuupd_out
@ -192,7 +207,7 @@ redraw_filelist_loop
bra redraw_filelist_loop
redraw_filelist_dirend
plb
dey ; recover last valid direntry number
dey ; recover last valid direntry number
dey ; (we had 2x iny of the direntry pointer above,
dey ; so account for those too)
dey
@ -227,8 +242,8 @@ print_direntry:
ldx dirent_addr
phb
pha
plb
pha
plb
lda @dirent_type
cmp #$80
@ -238,14 +253,25 @@ dirent_is_dir
lda #$04 ;skip dir tgt
sta @fd_fnoff
lda #$01 ;different color for dirs
sta @print_pal
bra dirent_type_cont
dirent_is_file
lda #$06 ;skip size string
sta @fd_fnoff
lda #$00 ;palette 0 (white)
sta @print_pal
lda @dirent_type
and #$00ff
cmp #$0001 ;SMC -> palette 0 (white)
bne +
lda #$0000
bra dirent_type_cont
+
cmp #$0004 ;IPS -> palette 2 (green)
bne +
lda #$0002
bra dirent_type_cont
+
lda #$0000 ;default -> palette 0
dirent_type_cont
sta @print_pal
rep #$20 : .al
txa
clc
@ -302,7 +328,7 @@ dirent_type_cont
dirent_is_file_2
lda dirent_bank
ldx dirent_addr
sta print_bank
sta print_bank
stx print_src
dirent_type_cont_2
lda #56
@ -312,7 +338,7 @@ dirent_type_cont_2
jsr hiprint
rts
menu_key_down:
lda listdisp
dec
@ -323,7 +349,7 @@ menu_key_down:
lda dirend_onscreen
bne down_out
rep #$20 : .al
lda dirptr_addr
lda dirptr_addr
clc
adc #$04
sta dirptr_addr
@ -341,7 +367,7 @@ menu_key_down:
inc
sta menu_sel
down_out
rts
rts
menu_key_up:
lda menu_sel
@ -370,7 +396,7 @@ menuupd_lastcursor
rts
; go back one page
menu_key_left:
menu_key_left:
lda #$01 ; must redraw afterwards
sta menu_dirty
rep #$20 : .al
@ -453,6 +479,9 @@ select_item:
iny
iny
lda (dirptr_addr), y
cmp #$01
beq sel_is_file
cmp #$04
beq sel_is_file
cmp #$80
beq sel_is_dir
@ -469,9 +498,10 @@ sel_is_dir
select_file:
; have avr load the rom
dey
lda (dirptr_addr), y
sta @AVR_PARAM+2
rep #$20 : .al
lda (dirptr_addr), y
and #$00ff
sta @AVR_PARAM+2
dey
dey
lda (dirptr_addr), y
@ -481,7 +511,7 @@ select_file:
sta @AVR_CMD
lda #$00
sta @$4200
cli
sei
jsl @wram_fadeloop
rts
@ -519,6 +549,9 @@ select_dir: ; y = direntry ptr
plb
rts
menu_key_x:
jsr mainmenu
rts
setup_224:
php
@ -547,6 +580,7 @@ setup_224_adjsel
sta $2133
lda #$08
sta hdma_math_selection
stz vidmode
lda #$01
sta menu_dirty
lda #^space64
@ -564,7 +598,7 @@ setup_224_adjsel
sta print_y
jsr hiprint
jsr hiprint
plp
rts
@ -589,6 +623,7 @@ setup_448:
lda #$04
sta hdma_math_selection
lda #$01
sta vidmode
sta menu_dirty
plp
rts

View File

@ -51,8 +51,6 @@ setup_hdma:
ldx #185 ;Set IRQ trigger to line 185
stx $4209 ;
lda #$21 ;V-Count IRQ + Auto Joypad Read
sta $4200
lda #$0e
sta $420c
rts

View File

@ -5,6 +5,10 @@ GAME_MAIN:
stz $4200 ; inhibit IRQs
jsr killdma
jsr waitblank
jsr waitblank
jsr waitblank
jsr waitblank
jsr waitblank
jsr snes_init
jsr spc_upload
lda #$01
@ -14,10 +18,10 @@ GAME_MAIN:
jsr setup_hdma
jsr screen_init
sep #$20 : .as
jsr msu1init
- jsr msu1init
cli
jsr msu1loop
- wai ; idle loop
sei
bra -
killdma:

View File

@ -48,9 +48,27 @@ msu1loop:
sta altcnt
lda #$01
sta curcnt
ldx #$0000
stx $1000 ;temp var
ldx numframes
dex
lda #$21 ;V-Count IRQ + Auto Joypad Read
sta $4200
lda numframes
sta @$306000
lda numframes+1
sta @$306001
lda stddur
sta @$306002
lda altdur
sta @$306003
lda altcnt
sta @$306004
lda curdur
sta @$306005
lda curcnt
sta @$306006
msu1loop2
lda isr_flag
beq msu1loop2
@ -60,6 +78,12 @@ msu1loop2
bpl +
;load half picture
lda #$18
phx
ldx $1000
sta @$306100, x
inx
stx $1000
plx
sta $4301
lda #$09
sta $4300
@ -69,6 +93,12 @@ msu1loop2
sta $420b
+ inc dispcnt ;inc field count
lda dispcnt ;and compare with current duration
phx
ldx $1000
sta @$306100, x
inx
stx $1000
plx
cmp curdur ;if not reached...
bne msu1loop2 ;...wait another field
@ -120,9 +150,8 @@ ptr2
jmp msu1loop2
msu1stop:
lda #$80
sta $2100
stz $420c
; lda #$80
; sta $2100
; stz $420c
stz MSU_CONTROL
- bra -
rts

View File

@ -121,5 +121,6 @@ int main(int argc, char **argv) {
fwrite(&alt_frameduration, 1, 1, out);
fwrite(&alt_durfreq, 1, 1, out);
fclose(out);
printf("%d images processed.\n", fileno);
return 0;
}

View File

@ -10,21 +10,25 @@
; NMI - called on VBlank
NMI_ROUTINE:
php
sep #$20 : .as
pha
lda $4210 ; ack interrupt
; lda #$0e
; sta $420c ; enable HDMA ch. 1-3
pla
plp
rtl
; IRQ - called when triggered
IRQ_ROUTINE:
php
sep #$20 : .as
pha
lda $4211 ;Acknowledge irq
lda #$01
sta isr_flag
pla
plp
rtl

View File

@ -4,6 +4,7 @@ read_pad:
read_pad1
ldx pad1mem ;byetUDLRaxlriiii
lda $4218
ora $421a
sta pad1mem
and #$0f00
bne read_pad1_count

View File

@ -1,70 +1,74 @@
palette
;fonts
; .byt $42, $08, $ff, $7f, $00, $00, $18, $63
; .byt $42, $08, $ff, $43, $00, $00, $18, $63
.byt $42, $08, $ff, $7f, $c6, $18, $18, $63
.byt $42, $08, $ff, $43, $c6, $0c, $18, $63
.byt $10, $42, $10, $42, $10, $42, $10, $42
.byt $10, $42, $10, $42, $10, $42, $10, $42
;8bit palette; 4bit palette0; 2bit palette0
.byt $42, $08, $ff, $7f, $c6, $18, $18, $63
;2bit palette1
.byt $42, $08, $ff, $43, $c6, $0c, $18, $63
;2bit palette2
.byt $42, $08, $f0, $43, $c0, $0c, $18, $63
;2bit palette3
.byt $10, $42, $10, $42, $10, $42, $10, $42
;4bit palette1; 2bit palette4
.byt $42, $08, $ff, $43, $c6, $0c, $18, $63
;2bit palette5
.byt $10, $42, $10, $42, $10, $42, $10, $42
;2bit palette6
.byt $10, $42, $10, $42, $10, $42, $10, $42
;2bit palette7
.byt $10, $42, $10, $42, $10, $42, $10, $42
;4bit palette2
.byt $10, $42, $f0, $43, $c0, $0c, $18, $63
;logo
.byt $10, $42, $82, $35, $23, $46, $85, $4e
.byt $a0, $39, $c8, $56, $09, $5f, $e9, $5a
.byt $6b, $6f, $2a, $63, $66, $4e, $8d, $73
.byt $6e, $6f, $a0, $35, $04, $42, $4a, $6b
.byt $42, $46, $07, $63, $e7, $5a, $20, $46
.byt $4d, $6b, $29, $67, $a4, $52, $64, $4a
.byt $c0, $3d, $e1, $41, $c3, $3d, $c6, $56
.byt $a7, $52, $45, $4a, $21, $25, $40, $29
.byt $e1, $1c, $00, $21, $84, $31, $88, $52
.byt $a9, $56, $a1, $14, $c6, $18, $5a, $67
.byt $a5, $14, $39, $63, $ff, $7f, $c1, $18
.byt $83, $10, $17, $5f, $f7, $5a, $84, $10
.byt $72, $4a, $7b, $6b, $4a, $29, $21, $04
.byt $b5, $52, $de, $7b, $ad, $35, $42, $08
.byt $63, $0c, $30, $42, $41, $04, $93, $4e
.byt $d5, $56, $61, $0c, $41, $08, $6b, $2d
.byt $08, $21, $bd, $77, $29, $25, $0f, $3e
.byt $e7, $1c, $ee, $39, $21, $08, $82, $14
.byt $63, $10, $62, $10, $9c, $73, $81, $10
.byt $ac, $31, $62, $0c, $51, $46, $83, $0c
.byt $62, $08, $42, $0c, $43, $29, $82, $4e
.byt $53, $4a, $a5, $10, $00, $7f, $06, $7f
.byt $a6, $6e, $67, $5e, $a7, $6e, $e4, $7a
.byt $02, $7f, $e6, $76, $e5, $7e, $64, $2d
.byt $45, $56, $a6, $62, $e6, $72, $44, $56
.byt $23, $4e, $a7, $6a, $c3, $41, $52, $29
.byt $6a, $2d, $7e, $14, $37, $29, $be, $14
.byt $be, $18, $4f, $29, $11, $21, $12, $25
.byt $2f, $25, $bc, $18, $66, $31, $db, $1c
.byt $6d, $2d, $ca, $5a, $82, $10, $82, $08
.byt $a4, $2d, $ac, $2a, $89, $11, $a3, $08
.byt $83, $2d, $ed, $2a, $4e, $23, $0e, $27
.byt $4f, $27, $69, $2e, $86, $5e, $83, $39
.byt $6b, $31, $34, $25, $7e, $10, $d8, $1c
.byt $6d, $31, $9f, $10, $19, $25, $6b, $1a
.byt $4a, $1a, $04, $0d, $cc, $1e, $6b, $22
;sprite palette 3
.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
;logo
.byt $87, $19, $c8, $1d, $49, $19, $ad, $19
.byt $31, $1e, $b5, $1e, $d5, $1a, $72, $1e
.byt $ac, $19, $46, $2d, $e6, $10, $49, $2d
.byt $a3, $0c, $a8, $35, $17, $21, $cc, $18
.byt $41, $0c, $ce, $18, $a8, $18, $c1, $14
.byt $e9, $1d, $a9, $1d, $d6, $26, $f7, $22
.byt $30, $22, $ff, $13, $de, $17, $ff, $1b
.byt $39, $1f, $93, $1e, $7a, $1f, $df, $1b
.byt $48, $19, $9a, $23, $ee, $21, $a9, $14
.byt $b8, $18, $49, $36, $d0, $2a, $36, $27
.byt $bc, $1f, $78, $27, $13, $2f, $6f, $32
.byt $07, $32, $62, $2d, $10, $42, $10, $42
.byt $00, $00, $00, $00, $20, $04, $20, $00
.byt $20, $00, $21, $00, $21, $08, $40, $08
.byt $40, $04, $42, $04, $42, $0c, $60, $0c
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $62, $0c, $61, $0c, $62, $00, $63, $0c
.byt $63, $10, $62, $08, $80, $10, $64, $0c
.byt $a0, $14, $84, $10, $a2, $0c, $a4, $0c
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $a4, $10, $c0, $18, $a4, $14, $a6, $14
.byt $a5, $14, $89, $14, $e0, $1c, $c5, $10
.byt $c6, $18, $e3, $0c, $e5, $1c, $00, $21
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $04, $0d, $ca, $18, $04, $11, $e7, $1c
.byt $20, $25, $21, $1d, $5d, $0c, $08, $15
.byt $40, $29, $08, $21, $5e, $10, $5d, $10
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $cf, $20, $7b, $10, $7e, $14, $27, $25
.byt $60, $31, $28, $25, $44, $29, $61, $29
.byt $46, $29, $29, $25, $62, $2d, $f3, $1c
.byt $00, $00, $00, $00, $00, $00, $00, $00
.byt $66, $15, $d6, $18, $63, $31, $d8, $18
.byt $0e, $25, $80, $35, $48, $29, $bb, $18
.byt $4a, $29, $66, $2d, $4b, $29, $a3, $2d
.byt $a0, $39, $f6, $20, $6a, $15, $6a, $19
.byt $32, $21, $a1, $39, $a1, $41, $31, $29
.byt $4e, $31, $a2, $39, $c0, $3d, $6b, $2d
.byt $8a, $31, $6d, $2d, $c8, $19, $00, $42
.byt $8c, $31, $e3, $3d, $ac, $19, $e3, $45
.byt $ad, $15, $e3, $49, $02, $42, $e6, $2d
.byt $20, $42, $ad, $35, $24, $46, $24, $4e
.byt $28, $2e, $42, $46, $ee, $39, $45, $4a
.byt $2a, $16, $48, $2e, $0f, $1e, $46, $56
.byt $64, $4a, $44, $5e, $0f, $3e, $64, $4e
.byt $65, $5a, $83, $4e, $67, $4e, $30, $42
.byt $86, $4e, $32, $46, $6d, $2e, $52, $1a
.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 $8b, $22, $a5, $56, $51, $46, $ab, $1a
.byt $a5, $6a, $a5, $6e, $c1, $76, $c7, $5a
.byt $93, $16, $e0, $7a, $72, $4a, $cc, $26
.byt $b0, $2a, $93, $4e, $e5, $7e, $e8, $5e
.byt $b5, $1e, $ed, $1e, $e6, $7e, $b5, $16
.byt $95, $52, $b3, $56, $b5, $56, $0a, $63
.byt $2d, $1b, $29, $67, $2f, $23, $f4, $2a
.byt $d6, $5a, $17, $1b, $4a, $6b, $4d, $67
.byt $f7, $5e, $f8, $62, $39, $1f, $18, $63
.byt $6c, $73, $78, $23, $39, $67, $7b, $1b
.byt $5a, $6b, $7b, $6f, $de, $17, $9c, $73
.byt $bd, $77, $ff, $13, $de, $7b, $ff, $7f
;sprite palette 7
.byt $3f, $7c, $20, $08, $84, $0c, $a5, $14
.byt $08, $21, $5a, $6b, $bc, $73, $fe, $7b

View File

@ -21,11 +21,11 @@ NMI_ROUTINE:
ldx #BG1_TILE_BASE+32*9
stx $2116
DMA0(#$01, #36*64, #^BG1_TILE_BUF, #!BG1_TILE_BUF+64*9, #$18)
DMA0(#$01, #40*64, #^BG1_TILE_BUF, #!BG1_TILE_BUF+64*9, #$18)
ldx #BG2_TILE_BASE+32*9
stx $2116
DMA0(#$01, #36*64, #^BG2_TILE_BUF, #!BG2_TILE_BUF+64*9, #$18)
DMA0(#$01, #40*64, #^BG2_TILE_BUF, #!BG2_TILE_BUF+64*9, #$18)
ldx #BG2_TILE_BASE
stx $2116
@ -68,6 +68,20 @@ lower_half
lda #112
sta hdma_math
math_cont
lda bar_xl ; get logical cursor X pos
asl
dec
asl ; logical pos * 4
sta bar_x ; physical pos = logical pos * 4
sta $2126 ; window 1 left
lda bar_wl ; get logical cursor width
asl
asl ; pixel width = logical width * 4
inc
sta bar_w ; = physical width
clc
adc bar_x ; + X start coord
sta $2127 ; window 1 right
lda #$3e ; ch. 1-5
sta @$420c ; trigger HDMA
lda #$01

View File

@ -35,7 +35,7 @@ print_bg_cont
asl ; double the offset for WRAM addressing
tay ; zonday
plx
phy ; offset from tilemap start
phy ; offset from tilemap start
stx !print_temp
clc
adc !print_temp
@ -48,7 +48,7 @@ print_bg_cont
print_loop
ldx !print_src
lda !print_bank
pha
pha
plb
phx ; source addr
print_loop_inner
@ -66,7 +66,7 @@ print_loop_inner
sta @print_done
inx
lda !0,x
beq print_loop2
beq print_loop2
inx
lda !0,x
beq print_loop2
@ -83,7 +83,7 @@ print_loop2
sta @print_count_tmp
lda #$00
pha
plb
plb
rep #$30 : .al : .xl
ply ; source addr
iny
@ -174,4 +174,167 @@ loprint_end
pha
plb
rts
backup_screen:
; MVN: X=source, Y=dest, A=count
; imm1=srcbk, imm2=dstbk
phb
php
rep #$30 : .xl : .al
ldx #!BG1_TILE_BUF+64*9
ldy #!BG1_TILE_BAK+64*9
lda #36*64-1
mvn ^BG1_TILE_BUF, ^BG1_TILE_BAK
ldx #!BG2_TILE_BUF+64*9
ldy #!BG2_TILE_BAK+64*9
lda #36*64-1
mvn ^BG2_TILE_BUF, ^BG2_TILE_BAK
plp
plb
rts
restore_screen:
; MVN: X=source, Y=dest, A=count
; imm1=srcbk, imm2=dstbk
phb
php
rep #$30 : .xl : .al
ldx #!BG1_TILE_BAK+64*9
ldy #!BG1_TILE_BUF+64*9
lda #36*64
mvn ^BG1_TILE_BAK, ^BG1_TILE_BUF
ldx #!BG2_TILE_BAK+64*9
ldy #!BG2_TILE_BUF+64*9
lda #36*64
mvn ^BG2_TILE_BAK, ^BG2_TILE_BUF
plp
plb
rts
draw_window:
phb
php
sep #$20 : .as
; draw upper border
; upper left corner
lda @window_nw
sta stringbuf
ldx #!stringbuf
inx
lda window_w
sta window_tmp
stz window_tmp+1
ldy window_tmp
dey
dey
; upper edge
-
lda @window_nh
sta !0,x
inx
dey
cpy #$0000
bne -
; upper right corner
lda @window_ne
sta !0,x
; print to text buffer
lda #$01
sta print_pal
lda window_x
sta print_x
lda window_y
sta print_y
lda #^stringbuf
sta print_bank
ldx #!stringbuf
stx print_src
lda window_w
sta print_count
jsr hiprint
; print window title
inc print_x
inc print_x
lda window_tbank
sta print_bank
ldx window_taddr
stx print_src
jsr hiprint
dec print_x
dec print_x
; draw left+right borders + space inside window
lda #^stringbuf
sta print_bank
ldx #!stringbuf
stx print_src
lda @window_wv
sta stringbuf
ldx #!stringbuf
inx
lda window_w
sta window_tmp
stz window_tmp+1
ldy window_tmp
dey
dey
-
lda @space64
sta !0,x
inx
dey
cpy #$0000
bne -
lda @window_ev
sta !0,x
; print to text buffer multiple times
lda window_h
sta window_tmp
stz window_tmp+1
ldy window_tmp
dey
dey
-
inc print_y
phy
jsr hiprint
ply
dey
cpy #$0000
bne -
; draw lower window border
; lower left corner
lda @window_sw
sta stringbuf
ldx #!stringbuf
inx
lda window_w
sta window_tmp
stz window_tmp+1
ldy window_tmp
dey
dey
; lower edge
-
lda @window_sh
sta !0,x
inx
dey
cpy #$0000
bne -
; lower right corner
lda @window_se
sta !0,x
; print to text buffer
inc print_y
jsr hiprint
plp
plb
rts

713
snes/time.a65 Normal file
View File

@ -0,0 +1,713 @@
#include "memmap.i65"
#include "dma.i65"
timebox_data
; string offset, selection width, bcdtime offset, 1s limit, 10s limit
.byt 0, 4, 9
.byt 5, 2, 8
.byt 8, 2, 6
.byt 11, 2, 4
.byt 14, 2, 2
.byt 17, 2, 0
time_month
.byt 3, 1
.byt 2, 8
.byt 3, 1
.byt 3, 0
.byt 3, 1
.byt 3, 0
.byt 3, 1
.byt 3, 1
.byt 3, 0
.byt 3, 1
.byt 3, 0
.byt 3, 1
time_init:
php
sep #$20 : .as
; save text area
jsr backup_screen
; draw window + current time setting
lda #^text_clkset
sta window_tbank
ldx #!text_clkset
stx window_taddr
lda @time_win_x
sta window_x
lda @time_win_w
sta window_w
lda @time_win_y
sta window_y
lda @time_win_h
sta window_h
jsr draw_window
jsr gettime
stz time_sel
stz time_exit
lda #^text_buttonB
sta print_bank
ldx #!text_buttonB
stx print_src
lda @time_win_x
inc
inc
sta print_x
lda @time_win_y
clc
adc #$5
sta print_y
lda #$01
sta print_pal
jsr hiprint
time_update
jsr rendertime
lda #^stringbuf
sta print_bank
ldx #!stringbuf
stx print_src
lda @time_win_x
clc
adc #$04
sta print_x
lda @time_win_y
clc
adc #$03
sta print_y
stz print_pal
jsr hiprint
lda time_sel
asl
clc
adc time_sel
xba
lda #$00
xba
tax
lda !timebox_data, x
clc
adc #$04
adc @time_win_x
sta bar_xl
lda @time_win_y
adc #$02
sta bar_yl
inx
lda !timebox_data, x
sta bar_wl
inx
lda !timebox_data, x
sta time_ptr
timeloop1
lda isr_done
lsr
bcc timeloop1
stz isr_done
jsr read_pad
lda #$01
and pad1trig+1
bne tkey_right
lda #$02
and pad1trig+1
bne tkey_left
lda #$04
and pad1trig+1
bne tkey_down
lda #$08
and pad1trig+1
bne tkey_up
lda #$80
and pad1trig+1
bne tkey_b
; do stuff
lda time_exit
beq timeloop1
; set clock
jsr settime
; restore text area
jsr restore_screen
plp
rts
tkey_b
inc time_exit
jmp time_update
tkey_left
jsr time_key_left
jmp time_update
tkey_right
jsr time_key_right
jmp time_update
tkey_up
jsr time_key_up
jmp time_update
tkey_down
jsr time_key_down
jmp time_update
time_key_left
lda time_sel
beq +
dec time_sel
+
rts
time_key_right
lda time_sel
cmp #5
beq +
inc time_sel
+
rts
time_key_up
lda time_ptr
cmp #4
beq time_inc_hour_jmp
cmp #6
beq time_inc_day_jmp
cmp #8
beq time_inc_mon_jmp
cmp #9
beq time_inc_year_jmp
xba
lda #$00
xba
tax
lda !time_s1, x
inc
cmp #$0a
bmi time_inc_minsec1_normal
stz !time_s1, x
lda !time_s10, x
inc
cmp #$06
bmi time_inc_minsec10_normal
stz !time_s10, x
bra +
time_inc_minsec10_normal
sta !time_s10, x
bra +
time_inc_minsec1_normal
sta !time_s1, x
+
rts
time_inc_hour_jmp
jsr time_inc_hour
rts
time_inc_day_jmp
jsr time_inc_day
rts
time_inc_mon_jmp
jsr time_inc_mon
rts
time_inc_year_jmp
jsr time_inc_year
lda time_mon
jsr time_adjust_mon
rts
time_inc_hour
lda time_h10
cmp #$02
bne time_inc_hour_normal
lda time_h1
inc
cmp #$04
bmi +
stz time_h1
stz time_h10
rts
+
sta time_h1
rts
time_inc_hour_normal
lda time_h1
inc
cmp #$0a
bmi +
stz time_h1
inc time_h10
rts
+
sta time_h1
rts
time_inc_day
lda time_mon
dec
asl
xba
lda #$00
xba
tax
lda !time_month, x
cmp time_d10
bne time_inc_day_normal
inx
jsr is_leapyear_feb
lda !time_month, x
dec
adc #$00
cmp time_d1
bpl +
stz time_d1
stz time_d10
+
inc time_d1
rts
time_inc_day_normal
lda time_d1
inc
cmp #$0a
bmi +
stz time_d1
inc time_d10
rts
+
sta time_d1
rts
time_inc_mon
lda time_mon
inc
cmp #13
bmi +
lda #$01
+
jsr time_adjust_mon
rts
time_adjust_mon
sta time_mon
dec
asl
xba
lda #$00
xba
tax
lda time_d10
cmp !time_month, x
bcs time_mon_adjust
rts
time_mon_adjust
php
inx
lda !time_month, x
pha
jsr is_leapyear_feb ; c=1 -> a leapyear february
pla
adc #$00
plp
bne time_mon_doadjust
cmp time_d1
bcs +
time_mon_doadjust
sta time_d1
dex
lda !time_month, x
sta time_d10
+
rts
time_inc_year
lda time_y1
inc
cmp #$0a
bmi time_inc_y1_normal
stz time_y1
lda time_y10
inc
cmp #$0a
bmi time_inc_y10_normal
stz time_y10
inc time_y100
rts
time_inc_y10_normal
sta time_y10
rts
time_inc_y1_normal
sta time_y1
rts
time_key_down
lda time_ptr
cmp #4
beq time_dec_hour_jmp
cmp #6
beq time_dec_day_jmp
cmp #8
beq time_dec_mon_jmp
cmp #9
beq time_dec_year_jmp
xba
lda #$00
xba
tax
lda !time_s1, x
dec
cmp #$ff
bne time_dec_minsec1_normal
lda #$09
sta !time_s1, x
lda !time_s10, x
dec
cmp #$ff
bne time_dec_minsec10_normal
lda #$05
sta !time_s10, x
bra +
time_dec_minsec10_normal
sta !time_s10, x
bra +
time_dec_minsec1_normal
sta !time_s1, x
+
rts
time_dec_hour_jmp
jsr time_dec_hour
rts
time_dec_day_jmp
jsr time_dec_day
rts
time_dec_mon_jmp
jsr time_dec_mon
rts
time_dec_year_jmp
jsr time_dec_year
lda time_mon
jsr time_adjust_mon
rts
time_dec_hour
lda time_h1
dec
cmp #$ff
bne time_dec_h1_normal
lda time_h10
bne time_dec_h10_normal
lda #$02
sta time_h10
lda #$03
sta time_h1
rts
time_dec_h10_normal
lda #$09
sta time_h1
dec time_h10
rts
time_dec_h1_normal
sta time_h1
rts
time_dec_day
lda time_d10
beq +
lda time_d1
dec
cmp #$ff
bne time_dec_d1_normal
bra time_dec_cont
+ lda time_d1
dec
bne time_dec_d1_normal
time_dec_cont
lda time_d10
bne time_dec_d10_normal
lda time_mon
dec
asl
ldx #$0000
tax
lda !time_month, x
sta time_d10
inx
lda !time_month, x
pha
jsr is_leapyear_feb
pla
adc #$00
sta time_d1
rts
time_dec_d10_normal
lda #$09
sta time_d1
dec time_d10
rts
time_dec_d1_normal
sta time_d1
rts
time_dec_mon
lda time_mon
dec
bne +
lda #12
+
jsr time_adjust_mon
rts
time_dec_year
lda time_y1
dec
cmp #$ff
bne time_dec_y1_normal
lda #$09
sta time_y1
lda time_y10
dec
cmp #$ff
bne time_dec_y10_normal
lda #$09
sta time_y10
dec time_y100
rts
time_dec_y10_normal
sta time_y10
rts
time_dec_y1_normal
sta time_y1
rts
rts
gettime
lda #$0d
sta $2801
lda $2800
lda $2800
sta time_s1
lda $2800
sta time_s10
lda $2800
sta time_m1
lda $2800
sta time_m10
lda $2800
sta time_h1
lda $2800
sta time_h10
lda $2800
sta time_d1
lda $2800
sta time_d10
lda $2800
sta time_mon
lda $2800
sta time_y1
lda $2800
sta time_y10
lda $2800
sta time_y100
rts
rendertime
ldx #!stringbuf
lda time_y100
and #$0f
cmp #$0a
bpl y_skip1
clc
adc #$30
sta !1,x
lda #$31
sta !0,x
bra y_skip2
y_skip1
clc
adc #$26
sta !1,x
lda #$32
sta !0,x
y_skip2
inx
inx
lda time_y10
and #$0f
clc
adc #$30
sta !0,x
inx
lda time_y1
and #$0f
clc
adc #$30
sta !0,x
inx
lda #$2d
sta !0,x
inx
lda time_mon
and #$0f
cmp #$0a
bpl mon_skip1
clc
adc #$30
sta !1,x
lda #$30
sta !0,x
bra mon_skip2
mon_skip1
clc
adc #$26
sta !1,x
lda #$31
sta !0,x
mon_skip2
inx
inx
lda #$2d
sta !0,x
inx
lda time_d10
clc
adc #$30
sta !0,x
inx
lda time_d1
clc
adc #$30
sta !0,x
inx
lda #$20
sta !0,x
inx
lda time_h10
clc
adc #$30
sta !0,x
inx
lda time_h1
clc
adc #$30
sta !0,x
inx
lda #$3a
sta !0,x
inx
lda time_m10
clc
adc #$30
sta !0,x
inx
lda time_m1
clc
adc #$30
sta !0,x
inx
lda #$3a
sta !0,x
inx
lda time_s10
clc
adc #$30
sta !0,x
inx
lda time_s1
clc
adc #$30
sta !0,x
stz !1,x
rts
is_leapyear_feb
lda time_mon
cmp #$02
bne is_leapyear_feb_no
lda time_y10
asl
sta time_tmp
asl
asl
clc
adc time_tmp
clc
adc time_y1
sta time_tmp
and #$03
beq is_leapyear_4th ; every 4th year
is_leapyear_feb_no
clc
rts
is_leapyear_4th ; leapyear candidate
lda time_tmp ; year=00?
beq + ; then check century
sec ; else it's always a leapyear
rts
+
lda time_y100 ; century divisible by 4?
clc
adc #10
and #$03
beq is_leapyear_400th
clc
rts
is_leapyear_400th
sec
rts
settime
lda time_y100
sta @AVR_PARAM
lda time_y10
sta @AVR_PARAM+1
lda time_y1
sta @AVR_PARAM+2
lda time_mon
sta @AVR_PARAM+3
lda time_d10
sta @AVR_PARAM+4
lda time_d1
sta @AVR_PARAM+5
lda time_h10
sta @AVR_PARAM+6
lda time_h1
sta @AVR_PARAM+7
lda time_m10
sta @AVR_PARAM+8
lda time_m1
sta @AVR_PARAM+9
lda time_s10
sta @AVR_PARAM+10
lda time_s1
sta @AVR_PARAM+11
lda #$02 ; set clock
sta @AVR_CMD
rts
printtime:
jsr gettime
jsr rendertime
lda listdisp
clc
adc #$0a
clc
adc vidmode
sta print_y
lda #$2b
sta print_x
lda #$40
sta print_count
lda #^stringbuf
sta print_bank
ldx #!stringbuf
stx print_src
stz print_pal
jsr hiprint
rts