Alarms
The HuC-3 mapper can play alarms at set times, with a selection of different programmable and built-in alarm tones. Pocket Family GB also supports a user-configured alarm and supports installing additional alarm tones through GBKiss.
Built-in
There are 16 (?) built-in alarm tones:
Nibble | Alarm tone |
$0 | Phone ring |
$1 | Unknown |
$2 | Alarm 1 (めざましおん1) |
$3 | Doorbell 1 (ピンポン1) |
$4 | Unknown |
$5 | Unknown |
$6 | Alarm 2 (めざましおん2) |
$7 | Unknown |
$8 | Unknown |
$9 | Unknown |
$A | Unknown |
$B | Doorbell 3 (ピンポン3) |
$C | Unknown |
$D | Unknown |
$E | Doorbell 2 (ピンポン2) |
$F | Doorbell 4 (ピンポン4) |
Programmable
Three of the default alarms in Pocket Family GB are programmable:
- Afterschool Chime
- Silent Night
- Ambulance
Hudson also distributed a single downloadable alarm, Saita Saita, as a GBKiss file.
The 3 default programmable alarms are stored inside the ROM file:
07:5c40: 465c 985c 5b5c F\.\[\
5c46: 1440 c2a7 3a36 3861 3138 .@..:68a18
07:5c50: 3a76 83b0 0000 0000 0001 f6 :v.........
5c5b: 3c 4029 a748 <@).H
07:5c60: 1a38 6548 1a38 655f 3f6c 5d3d 685a 3a4d .8eH.8e_?l]=hZ:M
07:5c70: 1c3a 481a 3865 5a3a 4d1c 3a48 1a38 65ad .:H.8eZ:M.:H.8e.
07:5c80: 5333 4613 3061 65a7 3d38 3548 1633 3135 S3F.0ae.=85H.315
07:5c90: 387d b000 0000 03f6
5c98: 10c6 d9a8 4243 b0dd 8}..........BC..
07:5ca0: d300 0000 0000 0000 f6 .........
5ca9:
Downloadable
Downloadable alarm tones are GBKiss data files with creator code $76 and the following content:
Section | Size |
Metadata | Variable |
Name length | 1 |
Name | 1-8? |
Pattern length | 1 |
Pattern | 1-255? |
The alarm tone’s name may differ from the file name; the file name is shown in GBKiss, while the tone name is shown within the Pocket Family GB settings menu.
Need verification:
- What is the maximum file name that can be shown?
- What happens if the displayable length is exceeded?
- What is the maximum pattern length?
- What happens on invalid patterns?
Pattern
Patterns consist of:
- 1 unidentified bytes (always observed to be $40)
- 1 tempo command? (observed $Fx and $Cx)
- 1 transpose command (often $A7)
- Body commands
- 1 end pattern command ($B0)
The following commands are hypothesized:
Cmd | Meaning | Argument |
$0x | Sixteenth note? | Pitch offset (semitones) |
$1x | Eighth note | Pitch offset (semitones) |
$2x | Dotted eighth note? | Pitch offset (semitones) |
$3x | Quarter note | Pitch offset (semitones) |
$4x | Dotted quarter note | Pitch offset (semitones) |
$5x | Half note | Pitch offset (semitones) |
$6x | Dotted half note | Pitch offset (semitones) |
$7x | Whole note? | Pitch offset (semitones) |
$8x | Rest | 0-8, matching note length? |
$Ax | Transpose | Offset |
$B0 | End pattern | Always 0 |
The pitch of each note is determined by adding the note’s pitch offset to twice the current transposition and interpreting it as a number of semitones. In the common transposition $A7, pitch $1 is C4. Thus, the total pitch range is A2 (0) to F♯6 (45). Alternately, to map to a MIDI pitch number, add 47 (A2).
Some of the built-in tones, such as Alarm 2, demonstrate volume control.