In patched lemonade, change call 770 to call 784 everywhere, to fix an audible artifa...
authorNick Downing <nick@ndcode.org>
Fri, 20 May 2022 10:13:43 +0000 (20:13 +1000)
committerNick Downing <nick@ndcode.org>
Fri, 20 May 2022 10:22:49 +0000 (20:22 +1000)
apple_io.py
lemonade/lemonade.bas.patch

index 6582b9b..802e8ff 100755 (executable)
@@ -347,12 +347,13 @@ def poke(addr, data):
 
 def call(addr):
   addr &= 0xffff
-  if addr == 0x302:
-    # for lemonade, see test/timing.py
-    tone(
-      round(49273.64 / mem[0x300]), # freq
-      round(mem[0x301] * 2.579329) # dur
-    )
+  if addr == 0x302 or addr == 0x310:
+    # for lemonade, see test/lemonade_tone_patched.py
+    a = mem[0x301] # duration_count
+    b = a / mem[0x300] # duration_count / period_count
+    cycles = 1.37788799e-02 - 4.21513128e-06 * a + 1.27999925e+02 * b
+    duration = 1.27361219e-05 + 2.50702246e-03 * a + 2.50310997e-03 * b
+    tone(round(cycles / duration), round(duration * 1e3))
   elif addr == 0x3600:
     # for lemonade, lighting (setup)
     pass
index 1102a13..5cbe0a0 100644 (file)
@@ -1,5 +1,5 @@
 --- lemonade.bas       2022-05-20 00:21:16.340356477 +1000
-+++ lemonade_patched.bas       2022-05-20 00:55:29.548439233 +1000
++++ lemonade_patched.bas       2022-05-20 20:12:12.764062545 +1000
 @@ -1,5 +1,8 @@
  1LOMEM:14080
 -5GOSUB10000:GOSUB11000:GOSUB16000:GOTO135
  10REM  <<< LEMONADE STAND >>>
  15REM 
  20REM FROM AN ORIGINAL PROGRAM
-@@ -201,43 +204,40 @@
+@@ -102,11 +105,11 @@
+ 1120PRINT:IFSC=10ANDRND(1)<.25THEN2300
+ 1130PRINT"$$ LEMONSVILLE DAILY FINANCIAL REPORT $$"
+ 1135PRINT
+-1140POKE768,152:POKE769,80:CALL770
+-1142POKE768,128:POKE769,160:CALL770
+-1144POKE768,152:POKE769,40:CALL770
+-1146POKE768,144:POKE769,80:CALL770
+-1148POKE768,128:POKE769,200:CALL770
++1140POKE768,152:POKE769,80:CALL784
++1142POKE768,128:POKE769,160:CALL784
++1144POKE768,152:POKE769,40:CALL784
++1146POKE768,144:POKE769,80:CALL784
++1148POKE768,128:POKE769,200:CALL784
+ 1180REM  CALCULATE PROFITS
+ 1182IFR2=2THEN2290
+ 1183IFR3=3THEN2350
+@@ -201,50 +204,47 @@
  5060GOSUB18000
  5070REM 
  5090HOME:RETURN
@@ -59,8 +76,9 @@
 +11340COLOR=12:IFI<29THENVLIN18,37ATI+11:COLOR=11:ONI-6GOSUB 11490,11490,11490,11490,11496,11495,11495,11495,11494,11490,11490,11493,11491,11492,11491,11491,11490,11490,11490,11490,11490,11490
  11350FORJ=14TOI+I:NEXT:NEXT:FORI=1TO1000:NEXT
  11360COLOR=13:VLIN14,36AT12:FORI=36TO20STEP-1:HLIN8,16ATI
- 11370FORJ=1TO50:NEXT:POKE768,I*3-12:POKE769,12:CALL770:NEXT:COLOR=12:VLIN14,19AT12
+-11370FORJ=1TO50:NEXT:POKE768,I*3-12:POKE769,12:CALL770:NEXT:COLOR=12:VLIN14,19AT12
 -11400POKE32,0:POKE33,40:POKE34,20:POKE35,23:VTAB22
++11370FORJ=1TO50:NEXT:POKE768,I*3-12:POKE769,12:CALL784:NEXT:COLOR=12:VLIN14,19AT12
  11410FORI=1TO4000:NEXT:I=FRE(0)
  11490RETURN
 +11491VLIN24,25ATI+11:VLIN30,31ATI+11:RETURN:REM c right, mid
  11530DATA96,16,85,4,128,4,96,4,76,4,128,4,96,16,0,0
  11540DATA114,120,144,60,114,255,1,120,128,120,144,60,128,120,114,60,144,120,171,255,228,255,0,0
  11550DATA152,180,152,120,152,60,144,120,152,60,171,120,192,60,152,255,0,0
+ 11560DATA0,160,128,255,152,40,171,80,192,40,228,255,1,40,0,160,192,255,192,40,171,80,152,40,128,255,0,0
+ 11700REM  MUSIC
+ 11710READI,J:IFJ=0THENRETURN
+-11720POKE768,I:POKE769,J:CALL770
++11720POKE768,I:POKE769,J:CALL784
+ 11730GOTO11710
+ 12000REM  TITLE PAGE
+ 12100TEXT:HOME:PRINTCHR$(7);
 @@ -318,7 +318,7 @@
  15151IFSC=2ORSC=7THEN15160
  15152IFSC=10THENCOLOR=15
  15160IFSC=7THENCOLOR=9
  15162HLIN3,5AT1:HLIN2,6AT2:FORI=3TO6:HLIN1,7ATI:NEXT:HLIN2,6AT7:HLIN3,5AT8
  15170VTAB22:HTAB8:PRINT" LEMONSVILLE WEATHER REPORT ":PRINT
-@@ -342,33 +342,16 @@
+@@ -331,7 +331,7 @@
+ 15210READA$:IFA$<>"*"THEN15210
+ 15220IFSC<>2THEN15300
+ 15230READI,J:IFJ=0THEN15500
+-15240FORK=1TOJ:POKE768,I:POKE769,10:CALL770
++15240FORK=1TOJ:POKE768,I:POKE769,10:CALL784
+ 15250FORL=KTOJ:NEXT:NEXT:GOTO15230
+ 15300READI,J:IFJ<>0THEN15300
+ 15310IFSC=7THEN15400
+@@ -340,35 +340,18 @@
+ 15340READI,J:IFJ<>0THEN15340
+ 15400READI,J:IFJ=0THEN15500
  15410IFI=1THENFORI=1TOJ:NEXT:GOTO15400
- 15420POKE768,I:POKE769,J:CALL770
+-15420POKE768,I:POKE769,J:CALL770
++15420POKE768,I:POKE769,J:CALL784
  15430GOTO15400
 -15440IFSC=5THENGOSUB17000
 -15500IFSC=5THENGOSUB17000