Jump to content

SteveB

Members
  • Posts

    648
  • Joined

  • Last visited

1 Follower

Contact / Social Media

Profile Information

  • Gender
    Male
  • Location
    Germany

Recent Profile Visitors

816 profile views

SteveB's Achievements

Dragonstomper

Dragonstomper (6/9)

1.3k

Reputation

  1. Guarantied to help against headache: but Asperin might have less side effects. Sometimes the cure is worse than the problem.
  2. I have to admit, when setting up my Linux NAS on a mini-pc last month, I had quite some bash scripts written by ChatGPT. It understood very well what I wanted and created code with error-checking and comments, which ran immediately. In some cases I started simple and added features in the dialog ... ignore .zfs directories, write a logfile, ... It was fun. And spared me from learning the bash syntax, in which I have no real interest in.
  3. You BASICally found a parsing bug for the SUB statement. It ignores a single token in the variable list before any variable. Therefore the following also works: SUB TEST(SIZE X) SUB TEST(FIXED X) SUB TEST(DELETE X) If you CALL TEST(5), X will be ZERO ... I assume the 5 gets assigned to the strange token-named variable, which you can't access later on with print or anything else. When you set a comma after the token, you get an "incorrect argument list" at runtime. If you adjust your CALL for two arguments, it gets through and the second value gets assigned to X. Yet you can't access the Token-Variable with the first value, without provoking a syntax error. I tried to use it in PRINT, CALL and LET. This also works for more than one variable: SUB TEST(DELETE X, FIXED Y) Perhaps @RXB can share some insights of the SUB GPL code for this unexpected behaviour. Steve
  4. I'm testing my changes and I am amazed how some songs sound much better now .. This one is in G minor (though Google lists half a dozen of keys for this song) ... Enjoy 100 DATA 500,220,0,0,500,349,174,0,375,415,349,0,125,349,311,0,125,220,0,0,125,349,311,0 110 DATA 250,466,261,0,250,349,311,0,250,311,349,0,500,349,174,0,375,523,349,0,125,349,349,0 120 DATA 125,220,0,0,125,349,233,0,250,554,261,0,250,523,311,0,250,415,349,0,250,349,138,0 130 DATA 250,523,138,0,250,698,277,0,125,349,277,0,125,311,311,0,125,220,0,0,125,311,311,0 140 DATA 250,261,261,0,250,391,311,0,750,349,349,0,625,220,0,0,125,311,0,0,250,261,0,0 150 DATA 250,233,0,0,250,207,0,0,500,349,174,0,375,415,349,0,125,349,311,0,125,220,0,0 160 DATA 125,349,311,0,250,466,261,0,250,349,311,0,250,311,349,0,500,349,174,0,375,523,349,0 170 DATA 125,349,349,0,125,220,0,0,125,349,233,0,250,554,261,0,250,523,311,0,250,415,349,0 180 DATA 250,349,138,0,250,523,138,0,250,698,277,0,125,349,277,0,125,311,311,0,125,220,0,0 190 DATA 125,311,311,0,250,261,261,0,250,391,311,0,750,349,349,0,625,220,0,0,125,311,0,0 200 DATA 250,261,0,0,250,233,0,0,250,207,0,0,250,174,0,0,125,523,174,0,125,523,174,523 210 DATA 125,523,349,0,250,523,349,523,125,622,311,523,125,622,0,0,125,622,311,622 220 DATA 250,622,261,622,125,587,311,0,125,587,311,587,250,587,349,587,250,174,0,0 230 DATA 125,523,174,0,125,523,174,523,125,523,349,0,250,523,349,523,125,622,349,523 240 DATA 125,622,0,0,125,622,233,622,125,587,261,622,125,587,261,587,125,523,311,0 250 DATA 125,523,311,523,250,523,349,523,250,138,0,0,125,415,138,0,125,415,138,415 260 DATA 125,415,277,0,250,415,277,415,125,415,311,415,125,415,0,0,125,466,311,0 270 DATA 250,466,261,466,125,311,466,0,125,466,311,466,250,466,349,466,250,349,0,0 280 DATA 125,523,349,0,125,523,349,523,125,523,0,0,375,523,523,0,125,466,0,0,125,523,311,0 290 DATA 250,523,261,523,250,233,523,0,250,207,523,0,250,174,0,0,125,523,174,0,125,523,174,523 300 DATA 125,523,349,0,250,523,349,523,125,622,311,523,125,622,0,0,125,622,311,622 310 DATA 250,622,261,622,125,587,311,0,125,587,311,587,250,587,349,587,250,174,0,0 320 DATA 125,523,174,0,125,523,174,523,125,523,349,0,250,523,349,523,125,622,349,523 330 DATA 125,622,0,0,125,622,233,622,125,587,261,622,125,587,261,587,125,523,311,0 340 DATA 125,523,311,523,250,523,349,523,250,138,0,0,125,415,138,0,125,415,138,415 350 DATA 125,415,277,0,250,415,277,415,125,415,311,415,125,415,0,0,125,466,311,0 360 DATA 250,466,261,466,125,311,466,0,125,466,311,466,250,466,349,466,250,349,0,0 370 DATA 125,523,349,0,125,523,349,523,125,523,0,0,375,523,523,0,125,466,0,0,125,523,311,0 380 DATA 250,523,261,523,250,233,523,0,250,207,523,0,1500,523,0,0 390 ! Player code 400 FOR I=1 to 158 410 READ DUR,F1,F2,F3 420 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 ) 430 NEXT I This restores the (sound-) honor of the TI-99/4a and the faith in the TMS9919, doesn't it?
  5. The quick patch seems to cure the problem. I will rework the code a little and prepare a new release in the next days.
  6. You are right again ... my music knowlegde wasn't suffient when I started this program. I works only correct when in C major. This is why the first note on the second, fourth, sixth and eights measure have a explicit "natual" accidental. The <alter> seems to reflect this already. @syd michel Does this sounds right?
  7. Very interesting .. I currently ignore <alter> and only look for <accidental>flat</accidental> or <accidental>sharp</accidental>. I will see what I can do in the code... this does not really fit in my translation logic.
  8. Yes, I'm afraid it is as good as the hardware permits. The calculation of frequencies to the notes seem to be correct, sometimes off by 1 Hz due to rounding and also different frequency tables. E: 329 vs. 330 Hz G: 391 vs. 392 Hz MuseScore/4a calculates by division from the 8th octave: freq[8,'C',natural] := 4186; freq[8,'C',sharp] := 4434; freq[8,'D',flat] := 4434; freq[8,'D',natural] := 4698; freq[8,'D',sharp] := 4978; freq[8,'E',flat] := 4978; freq[8,'E',natural] := 5274; freq[8,'F',natural] := 5587; freq[8,'F',sharp] := 5919; freq[8,'G',flat] := 5919; freq[8,'G',natural] := 6271; freq[8,'G',sharp] := 6644; freq[8,'A',flat] := 6644; freq[8,'A',natural] := 7040; freq[8,'A',sharp] := 7458; freq[8,'B',flat] := 7458; freq[8,'B',natural] := 7902; You may check out the E/A Manual chapter 20.3 to see the actual hardware divider resolution: Some things work better than others...
  9. Could you send me an example? I'm sure this is fixable ...
  10. I have one for some years now ... I wish I had it BITD ...
  11. Sometimes you don't even need 16 Bit ...
  12. While moving some old stuff to my new NAS System I found a Bookmark-File from May 2002 ... @Tursi's page at http://tursi.yiffco.com/games/classic99/ isn't online anymore... but still in the archive.
  13. I haven't seen a game manual ... as I know the original game well, I didn't look for one either. You may have a look at our XB Ghostbusters One-Page Manual, there are only minor differences ... Map: If you catch a "Roamer" ghost on the map it will show up during your drive. If you bought the vacuum, you may catch it there. Building: You need to drive to a fashing building to catch a ghost. If no ghost is present, you will end up on the map.
  14. There was an interesting article on a BBC website from the UK: https://www.bbc.com/worklife/article/20240111-it-hasnt-delivered-the-spectacular-failure-of-self-checkout-technology
×
×
  • Create New...