Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Apple //e predicts World Cup Champion

31 views
Skip to first unread message

dmn20...@gmail.com

unread,
Jul 8, 2010, 9:32:20 PM7/8/10
to
Hello,

Using a SOCCER program I wrote myself (with the help of WASP), I am
now able to predict, with the help of Applewin, the winner of the 2010
World Cup.

The final score, according to Applewin in Enhanced Apple //e mode, is:
NETHERLANDS: 3
SPAIN: 1

It's a rather crude soccer simulator -- that is to say, it doesn't
really "favor" one team over the other -- but here's the program code,
complete with overtime and shootout modes, if each becomes necessary:

10 HOME
20 INVERSE : PRINT "SOCCER SIMULATOR"
30 PRINT : PRINT "BY": PRINT "BRANDON TAYLOR"
40 NORMAL
50 PRINT
61 PRINT "WELCOME!!"
62 INPUT "NAME OF TEAM NUMBER 1? ";A$
63 INPUT "TEAM NUMBER 2? ";B$
64 PRINT "CAN GAME END IN TIE? ";
65 GET YN$
66 IF YN$ < > "Y" AND YN$ < > "N" THEN GOTO 65
67 PRINT
70 A = 0:B = 0
80 FOR X = 1 TO 45
90 GOSUB 1000
100 NEXT X
110 GOSUB 2000
120 FOR X = 46 TO 90
130 GOSUB 1000
140 NEXT X
150 GOSUB 3000
155 IF A = B AND YN$ = "Y" THEN FLASH : PRINT "THE GAME ENDS IN A
TIE!!!"; CHR$ (7): NORMAL : END
160 GOSUB 4000
180 FLASH : PRINT "PRESS ANY KEY TO START OVERTIME!!": NORMAL
190 GET Q$
200 FOR X = 91 TO 105
210 GOSUB 1000
220 NEXT X
230 GOSUB 2000
240 FOR X = 106 TO 120
250 GOSUB 1000
260 NEXT X
270 GOSUB 3000
275 GOSUB 4000
280 PRINT "TIE GAME THROUGH 120 MINUTES = SHOOTOUT!"
290 C = 0:D = 0:E = 5:F = 5
300 FOR K = 1 TO 5
310 GOSUB 5000
320 NEXT K
330 PRINT "TIE SCORE THROUGH 5 ROUNDS=SUDDEN DEATH!"
340 L = RND (1)
350 IF L > .5 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR$
(7); CHR$ (7);: INVERSE : PRINT A$;"!": NORMAL :A = A + 1
360 IF L < .5 THEN PRINT A$;" MISSED!!"
370 L = RND (1)
380 IF L > .5 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR$
(7); CHR$ (7);: INVERSE : PRINT B$;"!": NORMAL :B = B + 1
390 IF L < .5 THEN PRINT B$;" MISSED!!"
400 IF A < > B THEN GOSUB 4000: REM * FINALLY WE HAVE A WINNER *
410 INVERSE : PRINT "PRESS ANY KEY TO START THE NEXT ROUND!!":
NORMAL
420 GET Q$: REM * STILL NO WINNER * CONTINUE SUDDEN DEATH *
430 GOTO 340
999 REM * MAIN GAME *
1000 Y = RND (1)
1010 IF Y < .01 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR
$ (7); CHR$ (7);: NORMAL : PRINT " ";: INVERSE : PRINT A$;"!":
NORMAL : PRINT "MINUTE OF GOAL: ";X;"'": PRINT :A = A + 1
1020 IF Y > .99 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR
$ (7); CHR$ (7);: NORMAL : PRINT " ";: INVERSE : PRINT B$;"!":
NORMAL : PRINT "MINUTE OF GOAL: ";X;"'": PRINT :B = B + 1
1030 RETURN
1999 REM * HALFTIME *
2000 INVERSE : PRINT "HALFTIME!!"; CHR$ (7); CHR$ (7): NORMAL
2010 PRINT "THE CURRENT SCORE IS: "
2020 PRINT A$;": ";A
2030 PRINT B$;": ";B
2040 FLASH : PRINT "PRESS ANY KEY TO START THE SECOND HALF!!":
NORMAL
2050 GET Q$
2060 RETURN
2999 REM * FULL TIME *
3000 INVERSE : PRINT "FULL TIME!!"; CHR$ (7); CHR$ (7): NORMAL
3010 IF A < > B OR (X = 91 AND YN$ = "Y") THEN FLASH : PRINT "GAME
OVER!!!"; CHR$ (7); CHR$ (7); CHR$ (7): NORMAL
3020 S$ = "CURRENT": IF A < > B OR (X = 91 AND YN$ = "Y") THEN S$ =
"FINAL"
3030 PRINT "THE ";S$;" SCORE IS: "
3040 PRINT A$;": ";A
3050 PRINT B$;": ";B
3060 RETURN
3999 REM * DO WE HAVE A WINNER? *
4000 IF A > B THEN FLASH : PRINT A$;" WINS THE GAME!!!!"; CHR$ (7);
CHR$ (7); CHR$ (7); CHR$ (7); CHR$ (7); CHR$ (7): NORMAL : END
4010 IF A < B THEN FLASH : PRINT B$;" WINS THE GAME!!!!"; CHR$ (7);
CHR$ (7); CHR$ (7); CHR$ (7); CHR$ (7); CHR$ (7): NORMAL : END
4020 RETURN
4999 REM * SHOOTOUT DECISION ROUTINE * WORKS FOR FIRST 5 ROUNDS
ONLY *
5000 L = RND (1)
5010 IF L > .5 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR
$ (7); CHR$ (7);: NORMAL : PRINT " ";: INVERSE : PRINT A$;"!":
NORMAL :C = C + 1:A = A + 1
5020 IF C > F THEN GOSUB 3000: GOSUB 4000
5030 IF L < .5 THEN PRINT A$;" MISSED!!":E = E - 1
5040 IF E < D THEN GOSUB 3000: GOSUB 4000
5050 L = RND (1)
5060 IF L > .5 THEN FLASH : PRINT "GOAL!!"; CHR$ (7); CHR$ (7); CHR
$ (7); CHR$ (7);: NORMAL : PRINT " ";: INVERSE : PRINT B$;"!":
NORMAL :D = D + 1:B = B + 1
5070 IF D > E THEN GOSUB 3000: GOSUB 4000
5080 IF L < .5 THEN PRINT B$;" MISSED!!":F = F - 1
5090 IF F < C THEN GOSUB 3000: GOSUB 4000
5100 INVERSE : PRINT "PRESS ANY KEY TO START THE NEXT ROUND!!":
NORMAL
5110 GET Q$
5120 RETURN

Jerry

unread,
Jul 9, 2010, 1:07:57 AM7/9/10
to
"DMn20...@gmail.com" <dmn20...@gmail.com> writes:

> Hello,
>
> Using a SOCCER program I wrote myself (with the help of WASP), I am
> now able to predict, with the help of Applewin, the winner of the 2010
> World Cup.
>
> The final score, according to Applewin in Enhanced Apple //e mode, is:
> NETHERLANDS: 3
> SPAIN: 1
>
> It's a rather crude soccer simulator -- that is to say, it doesn't
> really "favor" one team over the other -- but here's the program code,
> complete with overtime and shootout modes, if each becomes necessary:

Nice! Now can it predict if an octopus will also predict the correct
score? ;-)

--
Jerry awanderin at yahoo dot ca

dmn20...@gmail.com

unread,
Jul 9, 2010, 6:42:20 AM7/9/10
to
On Jul 9, 12:07 am, Jerry <awande...@yahoo.ca> wrote:

...

Unfortunately, the Apple //e is not "smarter than a 5th grader" (as
Jeff Foxworthy would say), let alone smarter than an octopus.

John B. Matthews

unread,
Jul 9, 2010, 11:22:16 AM7/9/10
to
In article
<12c1889d-f6d6-469b...@d8g2000yqf.googlegroups.com>,
"DMn20...@gmail.com" <dmn20...@gmail.com> wrote:

> Using a SOCCER program I wrote myself (with the help of WASP), I am
> now able to predict, with the help of Applewin, the winner of the 2010
> World Cup.
>
> The final score, according to Applewin in Enhanced Apple //e mode, is:
> NETHERLANDS: 3
> SPAIN: 1
>
> It's a rather crude soccer simulator -- that is to say, it doesn't
> really "favor" one team over the other -- but here's the program code,
> complete with overtime and shootout modes, if each becomes necessary:

Needs more <http://en.wikipedia.org/wiki/Vuvuzela> :-)

500 HOME : ONERR GOTO 550
510 SP = - 16336:KB = - 16384:KS = - 16368
520 C = INT ( RND (1) * 16)
530 FOR I = 1 TO C:S = PEEK (SP) + PEEK (SP): NEXT
540 GOTO 520
550 POKE KS,0: TEXT : LIST : END

--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>

dmn20...@gmail.com

unread,
Jul 9, 2010, 6:25:54 PM7/9/10
to
On Jul 9, 10:22 am, "John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <12c1889d-f6d6-469b-a47c-ba7090965...@d8g2000yqf.googlegroups.com>,

Interesting effect... But how would I implement the routine while the
simulated match is in progress?

dmn20...@gmail.com

unread,
Jul 9, 2010, 6:59:26 PM7/9/10
to
On Jul 9, 5:25 pm, "DMn2004...@gmail.com" <dmn2004...@gmail.com>
wrote:

Nevermind -- I figured it out.

Mr. Matthews, if I might offer a word of advice: Don't show your face
in the Netherlands anytime soon.

Because I think you just pissed off a lot of Dutch.

With the "vuvuzelas" added in to my Applesoft program, now the Apple //
e has Spain winning on penalties by the score of 4-2.

Just a couple of questions, though: How did you know what PEEK value
would more or less generate the sound of a vuvuzela? And where can I
find out all the PEEK values that will generate sound?

John B. Matthews

unread,
Jul 9, 2010, 11:15:48 PM7/9/10
to
In article
<7f73b6d9-967d-4993...@c20g2000vbg.googlegroups.com>,
"DMn20...@gmail.com" <dmn20...@gmail.com> wrote:

> On Jul 9, 5:25 pm, "DMn2004...@gmail.com" <dmn2004...@gmail.com>
> wrote:
> > On Jul 9, 10:22 am, "John B. Matthews" <nos...@nospam.invalid> wrote:
> >
> > > In article
> > > <12c1889d-f6d6-469b-a47c-ba7090965...@d8g2000yqf.googlegroups.com>,
> >
> > >  "DMn2004...@gmail.com" <dmn2004...@gmail.com> wrote:
> > > > Using a SOCCER program I wrote myself (with the help of WASP),
> > > > I am now able to predict, with the help of Applewin, the winner
> > > > of the 2010 World Cup.
> >
> > > > The final score, according to Applewin in Enhanced Apple //e
> > > > mode, is: NETHERLANDS: 3 SPAIN: 1
> >
> > > > It's a rather crude soccer simulator -- that is to say, it
> > > > doesn't really "favor" one team over the other -- but here's
> > > > the program code, complete with overtime and shootout modes, if
> > > > each becomes necessary:
> >
> > > Needs more <http://en.wikipedia.org/wiki/Vuvuzela> :-)
> >
> > >  500  HOME : ONERR  GOTO 550
> > >  510 SP =  - 16336:KB =  - 16384:KS =  - 16368
> > >  520 C =  INT ( RND (1) * 16)
> > >  530  FOR I = 1 TO C:S =  PEEK (SP) +  PEEK (SP): NEXT
> > >  540  GOTO 520
> > >  550  POKE KS,0: TEXT : LIST : END

[...]


> > Interesting effect... But how would I implement the routine while
> > the simulated match is in progress?
>
> Nevermind -- I figured it out.
>

> Dr. Matthews, if I might offer a word of advice: Don't show your face

> in the Netherlands anytime soon.
>
> Because I think you just pissed off a lot of Dutch.

Surely, your simulated fans are more tolerant! :-)

> With the "vuvuzelas" added in to my Applesoft program, now the Apple
> // e has Spain winning on penalties by the score of 4-2.
>
> Just a couple of questions, though: How did you know what PEEK value
> would more or less generate the sound of a vuvuzela?

I listened to the sample on the page cited and immediately recognized
the sound^H^H^H^H^H noise from a program I'd written years ago.

> And where can I find out all the PEEK values that will generate
> sound?

AFAIK, there only one memory-mapped speaker toggle. The rest is timing.

John

dmn20...@gmail.com

unread,
Jul 9, 2010, 11:24:17 PM7/9/10
to
> Surely, your simulated fans are more tolerant! :-)

Well, if not angry, they're certainly upset. A few may even be crying.

> AFAIK, there only one memory-mapped speaker toggle. The rest is timing.

I'll certainly experiment with PEEK(-16336) and see what noises I can
make with my Apple //e.

Michael J. Mahon

unread,
Jul 10, 2010, 8:47:52 PM7/10/10
to

Because BASIC is so slow, the sounds you can make by PEEKing are limited
to low frequency squarewaves and noises.

To make a very wide range of sounds, you'll need to use machine language
routines to toggle the speaker.

-michael - NadaNet 3.1: http://home.comcast.net/~mjmahon

John B. Matthews

unread,
Jul 10, 2010, 11:41:48 PM7/10/10
to
In article
<280691434300501716.8...@news.giganews.com>,

At the other end of the spectrum* from PEEK, I finally got around to
playing with your delightful Apple II Real-Time Single-Voice Music
Synthesizer: <http://home.comcast.net/~mjmahon/RTSynth.html>. It's a
timing tour_de_force!

*Sorry about the pun. :-)

Michael J. Mahon

unread,
Jul 11, 2010, 1:00:38 AM7/11/10
to
"John B. Matthews" <nos...@nospam.invalid> wrote:

I'm glad you enjoyed it!

It *is* a real timing exercise, since any deviation from the continuous
stream of 22kHz pulses would be audible as noise.

dmn20...@gmail.com

unread,
Jul 11, 2010, 6:46:07 PM7/11/10
to
On Jul 11, 12:00 am, Michael J. Mahon <mjma...@aol.com> wrote:
> "John B. Matthews" <nos...@nospam.invalid> wrote:
>
>
>
> > In article
> > <280691434300501716.826169mjmahon-aol....@news.giganews.com>,
> >  Michael J. Mahon <mjma...@aol.com> wrote:

>
> >> "DMn2004...@gmail.com" <dmn2004...@gmail.com> wrote:
> >>>> Surely, your simulated fans are more tolerant! :-)
>
> >>> Well, if not angry, they're certainly upset. A few may even be
> >>> crying.
>
> >>>> AFAIK, there only one memory-mapped speaker toggle. The rest is
> >>>> timing.
>
> >>> I'll certainly experiment with PEEK(-16336) and see what noises I
> >>> can make with my Apple //e.
>
> >> Because BASIC is so slow, the sounds you can make by PEEKing are
> >> limited to low frequency squarewaves and noises.
>
> >> To make a very wide range of sounds, you'll need to use machine
> >> language routines to toggle the speaker.
>
> > At the other end of the spectrum* from PEEK, I finally got around to
> > playing with your delightful Apple II Real-Time Single-Voice Music
> > Synthesizer: <http://home.comcast.net/~mjmahon/RTSynth.html>. It's a
> > timing tour_de_force!
>
> > *Sorry about the pun. :-)
>
> I'm glad you enjoyed it!
>
> It *is* a real timing exercise, since any deviation from the continuous
> stream of 22kHz pulses would be audible as noise.
>
> -michael  -  NadaNet 3.1:  http://home.comcast.net/~mjmahon

Okay. Using the RT.SYNTH program, I found the note that the vuvuzela
makes (which the program interprets as A# rather than B♭) and stored
it to the disk containing my soccer program. NOW the question becomes,
how do I implement that sound file into the program?

John B. Matthews

unread,
Jul 11, 2010, 10:41:21 PM7/11/10
to
In article
<534409a3-b8c1-43c0...@u26g2000yqu.googlegroups.com>,

"DMn20...@gmail.com" <dmn20...@gmail.com> wrote:
> On Jul 11, 12:00 am, Michael J. Mahon <mjma...@aol.com> wrote:
> > "John B. Matthews" <nos...@nospam.invalid> wrote:
> > > In article
> > > <280691434300501716.826169mjmahon-aol....@news.giganews.com>,
> > >  Michael J. Mahon <mjma...@aol.com> wrote:
> >
[...]

> > I'm glad you enjoyed it!
> >
> > It *is* a real timing exercise, since any deviation from the
> > continuous stream of 22kHz pulses would be audible as noise.
[...]

> Okay. Using the RT.SYNTH program, I found the note that the vuvuzela
> makes (which the program interprets as A# rather than Bb) and stored
> it to the disk containing my soccer program. NOW the question
> becomes, how do I implement that sound file into the program?

IIUC, that would destroy the timing, as well as slow the simulation. The
Apple II Programmer's Aid #1 tone generator might be a better choice for
this.

Michael J. Mahon

unread,
Jul 12, 2010, 12:10:54 AM7/12/10
to
"John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <534409a3-b8c1-43c0...@u26g2000yqu.googlegroups.com>,
> "DMn20...@gmail.com" <dmn20...@gmail.com> wrote:
>> On Jul 11, 12:00 am, Michael J. Mahon <mjma...@aol.com> wrote:
>>> "John B. Matthews" <nos...@nospam.invalid> wrote:
>>>> In article
>>>> <280691434300501716.826169mjmahon-aol....@news.giganews.com>,
>>>> Michael J. Mahon <mjma...@aol.com> wrote:
>>>
> [...]
>>> I'm glad you enjoyed it!
>>>
>>> It *is* a real timing exercise, since any deviation from the
>>> continuous stream of 22kHz pulses would be audible as noise.
> [...]
>> Okay. Using the RT.SYNTH program, I found the note that the vuvuzela
>> makes (which the program interprets as A# rather than Bb) and stored
>> it to the disk containing my soccer program. NOW the question
>> becomes, how do I implement that sound file into the program?
>
> IIUC, that would destroy the timing, as well as slow the simulation.
> The
> Apple II Programmer's Aid #1 tone generator might be a better choice
> for
> this.

Exactly. The sound generator in RT.SYNTH (a highly adapted version of
DAC522) uses every cycle of the processor, and so cannot run at the same
time anything else is running.

It could be run intermittently--but any Apple II sound routine must be
run intermittently, interleaved with any other necessary computation,
unless the computation is "timed" as part of the sound generation (as it
is in RT.SYNTH).

(BTW, A# = Bb)

dmn20...@gmail.com

unread,
Jul 12, 2010, 6:28:33 AM7/12/10
to
On Jul 11, 9:41 pm, "John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <534409a3-b8c1-43c0-ad02-731f70f3e...@u26g2000yqu.googlegroups.com>,

Okay... How, then, would I find this tone generator?

John B. Matthews

unread,
Jul 12, 2010, 12:13:42 PM7/12/10
to
In article
<bfa6c808-71a8-4e37...@d8g2000yqf.googlegroups.com>,
"DMn20...@gmail.com" <dmn20...@gmail.com> wrote:

> > The Apple II Programmer's Aid #1 tone generator might be a better
> > choice for this.
>
> Okay... How, then, would I find this tone generator?

It's in the Apple II Programmer's Aid #1 ROM [1], which is intended to
run at $D000. In emulation, it's usually in the Integer Basic image. I
don't think it can be used from Applesoft easily [2], but the widely
available manual contains commented source listing for all the routines.
It and the monitor source are a treasure of 6502 assembly language.

I didn't know it came on disk [2], so you might look for that. I used
the ROM in an Apple ][. I later moved it, the original (non-auto-start)
ROM, and the Integer Basic ROMs to a firmware card. The Videx boot disk
for AppleWriter demanded that Applesoft be on the motherboard, and the
firmware card was handy for using the reset button as a "manual
breakpoint."

[1]<http://apple2history.org/history/ah03.html>
[2]<http://support.apple.com/kb/TA44356?viewlocale=en_US>

Michael

unread,
Dec 17, 2010, 5:03:38 AM12/17/10
to
IMHO, it's easier to just use an existing music player + data. ;-)

Select everything in between the cut marks, CTRL-C
Start AppleWin, F2, CTRL-F2, SHIFT-INSERT

Enjoy the Karateka end theme music. :-) I actually converted this to MIDI back in the late 80's / earlier 90's if anyone is interested.


// --- 8< ---

CALL-151

0D00:A9 00 A2 0E 85 F7 86 F8 A0 00 B1 F7 8D 5E 0D C8
0D10:B1 F7 8D 88 0D C8 84 F6 20 22 0D AD 00 C0 10 E0
0D20:60 EA a4 f6 b1 f7 c9 ff f0 7b c9 fe d0 0a a9 ea
0D30:8D 79 0d 8d 7a 0d d0 68 c9 fd d0 0d a9 a0 8d 79
0D40:0d c8 b1 f7 8d 7a 0d d0 55 85 fd c8 b1 f7 85 fa
0D50:85 fb 85 f9 c8 b1 f7 85 fc a6 fc a4 fc a9 40 85
0D60:fe a9 ff 85 ff ca d0 13 c6 fa d0 0f a5 f9 30 03
0D70:ad 30 c0 a6 fc a5 f9 85 fa ea ea 88 d0 12 c6 fb
0D80:d0 f9 a5 f9 30 03 ad 30 c0 a4 fc 88 a5 f9 85 fb
0D90:c6 ff d0 d1 c6 fe d0 c9 c6 fd d0 c1 e6 f6 e6 f6
0DA0:e6 f6 4c 22 0d 60

0E00:40 c0 fd 04 01 01 7e 01 01 69 01 01 a8 01 01 70
0E10:01 01 d3 01 01 7e 01 01 a8 01 01 70 01 01 bc 01
0E20:01 7e 01 01 70 01 01 4f 01 01 a8 01 01 85 01 01
0E30:70 01 01 5e fe 01 01 c7 01 01 63 01 01 85 01 01
0E40:70 01 01 96 01 01 7e 01 01 bc 01 01 49 01 01 a8
0E50:01 01 7e 01 01 70 01 01 53 01 01 a8 01 01 85 01
0E60:01 53 01 01 5e fd 48 01 01 63 01 01 7e 01 01 5e
0E70:01 01 70 01 01 53 01 01 63 01 01 7e 01 01 a8 fd
0E80:06 01 01 c7 01 01 9e 01 01 7e 01 01 63 01 01 70
0E90:01 01 85 01 01 9e 01 01 e0 fe 01 01 fb 01 01 c7
0EA0:01 01 96 01 01 7e 01 01 bc 01 01 96 01 01 70 01
0EB0:01 5e 01 01 a8 01 01 7e 01 01 5e 01 01 63 01 01
0EC0:a8 01 01 85 01 01 69 01 01 70 ff

D00G


// --- 8< ---

Notes:
0D00 Setup pointer to music data, and offset
0D22 Play the music data. $FF = End of Song, $FE Two voice, $FD One Voice
0E00 Music Data. First byte =

Cheers
Michael, AppleWin Debugger Dev

dmn20...@gmail.com

unread,
Dec 18, 2010, 1:36:22 PM12/18/10
to

That really is impressive stuff. It's a lot for my mind to wrap
around, what with having to know what each hexadecimal code does...

Well done.

Michael AppleWin Debugger

unread,
Dec 18, 2010, 8:25:36 PM12/18/10
to
You'll probably want to dig up an old article in Nibble magazine, December 1985, called "Nibble Duet" where it talks about faking the two-voice on the Apple "squeeker."

( The original code and demo can be found here ! )
http://www.nibblemagazine.net/nibble_disks.htm


The first byte sets the TEMPO.
e.g. Setting this from $40 to $20 plays the music twice as fast.

Ignore the second of the first two bytes at $E00.
It sets the IO port. $C0 -> $C030 apple speaker IO location

The music data begins at $E02:

Each normal note is 3 bytes.

The special one-byte meta-notes (control notes) $FF $FD $FE were explained in the previous post.

The format of a normal 3 byte note is basically:
<Depth> <Lenth> <Pitch>

Analyzing the first few notes of the piece ...

Dp Len Freq Note
01 01 7e B4
01 01 69 D5
01 01 a8 F#4
01 01 70 C#5
01 01 d3 D4
01 01 7e B4
01 01 a8 F#4
01 01 70 C#5

01 01 bc E4
01 01 7e B4
01 01 70 C#5
01 01 4f G5
01 01 a8 F#4
01 01 85 Bb4
01 01 70 C#5
01 01 5e E5
fe
01 01 c7 D#4
01 01 63 D#5
01 01 85 Bb4
01 01 70 C#5
01 01 96 G#4
01 01 7e B4
01 01 bc E4
01 01 49 G#5

01 01 a8 F#4
01 01 7e B4
01 01 70 C#5
01 01 53 F#5
01 01 a8 F#4
01 01 85 Bb4
01 01 53 F#5
01 01 5e E5
fd 48
01 01 63 D#5
01 01 7e B4
01 01 5e E5
01 01 70 C#5
01 01 53 F#5

etc...
ff // End

If we compare Nibble Duet and Broderbund (Karateka) two voice
we can match the notes up.

C4 C#4 D4 D#4 E4 F4 F#4 G4 G#4 A4 A#4 B4
240 228 215 203 190 180 170 160 151 142 134 125 Nibble Duet (Dec)
$F0 $E4 $D7 $CB $BE $B4 $AA $A0 $97 $8E $86 $7D Nibble Duet (Hex)
# # #D3 #C7 #BC # #A8 #9E #96 # #85 #7E Broderbund (Hex)

C5 C#5 D5 D#5 E5 F5 F#5 G5 G#5 A5 A#5 B5
120 113 105 99 93 86 82 78 74 70 66 62
$78 $71 $69 $63 $5D $56 $52 $4E $4A $46 $42 $3E
# #70 #69 #63 #5E # #53 #4F #49 # # #

Let's see how a classic C scale sounds.
So punching this data in ...

E04:01 01 F0 01 01 D7 01 01 BE 01 01 B4
E10:01 01 A0 01 01 8E 01 01 7D 01 01 78
E1C:01 01 69 01 01 5D 01 01 56
E25:01 01 4E 01 01 46 01 01 3E 01 01
E30:3C FF

Voila!

Cheers

Michael

0 new messages