97 lines
2.0 KiB
Plaintext
97 lines
2.0 KiB
Plaintext
_runtimePath_ "../runtime"
|
|
_codeRomType_ ROMv2
|
|
|
|
' graph display with clock (hr:min) using 59.98Hz counter.
|
|
' Set time with Famicom A button + arrows.
|
|
|
|
const CLOCKC = &h03
|
|
const MINADJUST = -3 ' adjust (1/100 sec/min) for clock finetuning
|
|
const HOURADJUST = 8 ' adjust (1/100 sec/hour) for clock finetuning
|
|
|
|
def A, B, K, P, U, V, , CONTRL, CLOCKX, HOUR, MINUTE, SECOND
|
|
|
|
initialize:
|
|
init vars @A
|
|
mode 2
|
|
set BG_COLOUR, &h00
|
|
set FG_COLOUR, CLOCKC
|
|
poke &h0E, 0
|
|
|
|
begin:
|
|
COLOUR = rnd(23) + 1
|
|
gosub newscreen
|
|
repeat
|
|
|
|
' update clock
|
|
Z = SECOND + (427 / 256 * B)
|
|
if Z >= 6000
|
|
inc MINUTE
|
|
SECOND = SECOND + MINADJUST - 6000
|
|
if MINUTE = 60
|
|
MINUTE = 0
|
|
inc HOUR
|
|
SECOND = SECOND + HOURADJUST
|
|
if HOUR = 24 then HOUR = 0
|
|
endif
|
|
gosub newscreen
|
|
endif
|
|
|
|
' add graph
|
|
for X = 0 to 159
|
|
Y = 72 - (U / 100)
|
|
poke Y * 256 + X, COLOUR
|
|
U = U + V : V = V - U / P
|
|
B = peek(&h0E)
|
|
if B < A then SECOND = SECOND + 427
|
|
A = B
|
|
next X
|
|
|
|
' new graph colour
|
|
COLOUR = COLOUR + 23
|
|
if COLOUR mod 64 = 0 then COLOUR = COLOUR + 23
|
|
|
|
' set time
|
|
CONTRL = peek(&h11)
|
|
if CONTRL <> 255 then gosub settime
|
|
|
|
forever
|
|
|
|
newscreen:
|
|
cls
|
|
CLOCKX = rnd(128) + 2
|
|
gosub showclock
|
|
P = rnd(101) + 43 : P = P * (rnd(2) + 1) : U = 5400 : V = 0
|
|
return
|
|
|
|
settime:
|
|
set FG_COLOUR, &hFF
|
|
while CONTRL <> 255
|
|
if CONTRL = 119
|
|
inc MINUTE
|
|
if MINUTE > 59 then MINUTE = 0
|
|
SECOND = 0
|
|
elseif CONTRL = 123
|
|
dec MINUTE
|
|
if MINUTE < 0 then MINUTE = 59
|
|
SECOND = 0
|
|
elseif CONTRL = 125
|
|
dec HOUR
|
|
if HOUR < 0 then HOUR = 23
|
|
elseif CONTRL = 126
|
|
inc HOUR
|
|
if HOUR > 23 then HOUR = 0
|
|
endif
|
|
gosub showclock
|
|
wait 10
|
|
CONTRL = peek(&h11)
|
|
wend
|
|
if SECOND = 0 then poke &h0E, 0
|
|
set FG_COLOUR, CLOCKC
|
|
gosub showclock
|
|
return
|
|
|
|
showclock:
|
|
at CLOCKX, 1
|
|
print HOUR / 10 ; HOUR mod 10 ; ":" ; MINUTE / 10 ; MINUTE mod 10
|
|
return
|