The GlitchMod knowledge base

Dreamphone

Dream Phone, or "Electronic Dream Phone," is a board game by Milton Bradley, released in 1991. The goal of the game is to discover who your "crush" is from a selection of 90's Boys. Though designed as a multiplayer game, the simple mechani…

16 min readUpdated Oct 9, 2026
Electronic Dream Phone Box Cover.png
Electronic Dream Phone Box

Dream Phone, or "Electronic Dream Phone," is a board game by Milton Bradley, released in 1991. The goal of the game is to discover who your "crush" is from a selection of 90's Boys. Though designed as a multiplayer game, the simple mechanics also allow for solo play.

The selling point was the inclusion of an electronic toy phone, allowing players to dial phone numbers and "talk" to boys. When a number is dialed, a clue is revealed about one of the 24 boys featured in the game. The goal of the game is to using deductive reasoning to discover which of the boys has a crush on you before the other players.

Dream Phone is the conceptual cousin of the classic board game Clue (Cluedo.) In Clue, you are trying to discover a murderer by deductive reasoning. Unlike Clue, Dream Phone doesn't have any player pieces or a game board per-se, the entirety of the game is based on the interactions of the player, the game cards, and the Dream Phone device itself, with occasional PvP interactions between players.

A transcript of the game's original manual can be found here: Electronic Dream Phone Manual.

Gameplay

Game Board, Clue Card, and Cards

Audio

Responses

Everything the handset says in reply to a call.

Response Audio Download
"He looks cool in whatever he wears... He's not wearing anything yellow." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_anything-yellow.wav Download
"He looks cool in whatever he wears... He's not wearing blue jeans." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_blue-jeans.wav Download
"He looks cool in whatever he wears... He's not wearing glasses." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_glasses.wav Download
"He looks cool in whatever he wears... He's not wearing a hat." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_hat.wav Download
"He looks cool in whatever he wears... He's not wearing a jacket." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_jacket.wav Download
"He looks cool in whatever he wears... He's not wearing a tie." https://consolemods.org/wiki/File:Dreamphone_resp_clothes_tie.wav Download
"Hello? He'll eat almost anything, except... candy." https://consolemods.org/wiki/File:Dreamphone_resp_food_candy.wav Download
"Hello? He'll eat almost anything, except... cookies." https://consolemods.org/wiki/File:Dreamphone_resp_food_cookies.wav Download
"Hello? He'll eat almost anything, except... hot dogs." https://consolemods.org/wiki/File:Dreamphone_resp_food_hot-dogs.wav Download
"Hello? He'll eat almost anything, except... ice cream." https://consolemods.org/wiki/File:Dreamphone_resp_food_ice-cream.wav Download
"Hello? He'll eat almost anything, except... pizza." https://consolemods.org/wiki/File:Dreamphone_resp_food_pizza.wav Download
"Hello? He'll eat almost anything, except... popcorn." https://consolemods.org/wiki/File:Dreamphone_resp_food_popcorn.wav Download
"You're right! I really like you." https://consolemods.org/wiki/File:Dreamphone_resp_guess_win.wav Download
"Nice try... but it's not me!" https://consolemods.org/wiki/File:Dreamphone_resp_guess_wrong.wav Download
"Hello? I know where he hangs out... He's not at the beach." https://consolemods.org/wiki/File:Dreamphone_resp_location_beach.wav Download
"Hello? I know where he hangs out... He's not at the gym." https://consolemods.org/wiki/File:Dreamphone_resp_location_gym.wav Download
"Hello? I know where he hangs out... He's not at the mall." https://consolemods.org/wiki/File:Dreamphone_resp_location_mall.wav Download
"Hello? I know where he hangs out... He's not at the movies." https://consolemods.org/wiki/File:Dreamphone_resp_location_movies.wav Download
"Hello? I know where he hangs out... He's not at the park." https://consolemods.org/wiki/File:Dreamphone_resp_location_park.wav Download
"Hello? I know where he hangs out... He's not at the snack shop." https://consolemods.org/wiki/File:Dreamphone_resp_location_snack-shop.wav Download
"Hello! I know who it is, but I'm not telling. Ha ha!" https://consolemods.org/wiki/File:Dreamphone_resp_not-telling.wav Download
"Hello? He likes most sports... but not baseball." https://consolemods.org/wiki/File:Dreamphone_resp_sport_baseball.wav Download
"Hello? He likes most sports... but not basketball." https://consolemods.org/wiki/File:Dreamphone_resp_sport_basketball.wav Download
"Hello? He likes most sports... but not skateboarding." https://consolemods.org/wiki/File:Dreamphone_resp_sport_skateboarding.wav Download
"Hello? He likes most sports... but not surfing." https://consolemods.org/wiki/File:Dreamphone_resp_sport_surfing.wav Download
"Hello? He likes most sports... but not tennis." https://consolemods.org/wiki/File:Dreamphone_resp_sport_tennis.wav Download
"Hello? He likes most sports... but not volleyball." https://consolemods.org/wiki/File:Dreamphone_resp_sport_volleyball.wav Download
"Sorry, wrong number. Dial again." https://consolemods.org/wiki/File:Dreamphone_resp_error_wrong-number.wav Download
"*ring* Hi! I just heard... it's not Bob." https://consolemods.org/wiki/File:Dreamphone_resp_system_bob.wav Download
"*ring* Hi! I just heard... it's not Gary." https://consolemods.org/wiki/File:Dreamphone_resp_system_gary.wav Download
"*ring* Hi! I just heard... it's not George." https://consolemods.org/wiki/File:Dreamphone_resp_system_george.wav Download
"*ring* Hi! I just heard... it's not Steve." https://consolemods.org/wiki/File:Dreamphone_resp_system_steve.wav Download
"*ring* Hi! I just heard... it's not Tony." https://consolemods.org/wiki/File:Dreamphone_resp_system_tony.wav Download
"*ring* Hi! I just heard... it's not Tyler." https://consolemods.org/wiki/File:Dreamphone_resp_system_tyler.wav Download

Redial Preamble

System Sounds

Dial tone, ringing, and key tones.

Setup

To setup the game, perform the following sequence:

Sort the Deck: Separate out the 12 special cards from the deck. The special cards are "Speakerphone", "Share a Secret" and "Mom Says Hang Up".

Distribute Special Cards: Each player receives one of each special card ("Speakerphone", "Share a Secret" and "Mom Says Hang Up") face up in front of them. Remove any extra from play.

Shuffle The Deck: The remaining "Boy" cards are shuffled and placed face down on the game board. As cards are used, they are discarded into a discard pile. If the main stack of cards is exhausted, the discard pile is shuffled and used again as many times as required until the game ends.

Start The Game: On the Dream Phone device, the "New Game" Button is pushed, starting the game. Note that the game will turn off if no interactions are made to the device in 5 minutes.

Main Game

Players take turns performing the following sequence:

Draw a Card: The player draws from the stack of "Boy" cards.

Dial a Boy: If a Boy Card is drawn, the player uses the Dream Phone to dial the phone number for the boy that is printed on the card. The response from the call can be useful (e.g "He's not at the Mall!"), or can be not useful (e.g "Ha Ha! I'm not telling"). The player then should scratch off any information that they have received from their notepad. The Dream Phone responses are broken into loud and quiet portions. The category of the clue is announced ("I know where he hangs out!") over the loudspeaker, but the clue itself ("He's not at the mall!") is only revealed to the current player over the quiet earpiece.

Next Player: Once a Boy card is dialed, the card goes into the discard pile, and the current player's turn is over. the action goes to the next player in sequence.

Player Vs Player

At any time before the current player dials, other players may use one of their special cards.

Speakerphone: If a speakerphone card is played, the current player must push the "Speakerphone" button on the Dream Phone before dialing their current boy. This will play both potions of the clue over the speakerphone, allowing all players to benefit from knowing the clue. Once the Speakerphone card is played, it is taken out of the game.

Share a Secret: If the "Share a Secret" card is played, the current player proceeds as normal but must reveal the clue that was exposed during the phone call to the player who played the card. They can do this by sticking their ears near the earpiece, or by using the "redial" button to repeat the last clue. The "Share a Secret" card is not discarded when played, but goes into the possession of the player it was used on.

Mom Says Hang Up: When a "Mom Says Hang Up" card is played, the turn is lost for the current player and they are not able to dial a Boy and must pass the phone to the next player. Once played, the "Mom Says Hang Up" card is taken out of the game.

Solve

When a player thinks they have enough information to guess which Boy their crush is, when it is their turn, they can press the "Solve" button on the Dream Phone. They then need to dial the number of the boy into the Dream Phone device. A victory message will play if the answer is correct. If not, a "try again" message will play and the gameplay continues.

Dreamphone Hardware Schematic

Dreamphone circuit diagram.png

See Also

Open Dream Dialer

Open Dream Dialer is a project started by me (Old Kid) to recreate Electronic Dream Phone in a computer software simulation. The project is divided into three goals:

1. Dream Phone Simulator: Recreate as accurately as possible the experience of playing Dream Phone via software recreation. This includes reverse engineering gameplay mechanics, scanning and archiving game board and card assets, and 'Dream Phone Device' dialing behavior and sound effects.

2. Open Dream Dialer: Once Dream Phone Simulator is complete, the goal will be to remove any copyrighted assets from the program and open source release as "Open Dream Dialer". This would include instructions, tools and/or assets for users to create custom game board, card and clue configurations.

3. Open Dream Dialer Device: With the ODD code complete, a "Device" can be made to emulate the behavior of the Dream Phone handset device. This currently is specified as using a Raspberry Pi Pico to run the main game code and audio playback, and I2S audio drivers playing MP3 files in response to the dialed inputs. This would serve as a drop-in alternative to the original Dream Phone handset, as well as opening the opportunity for Open Dream Phone custom user assets to be uploaded to the ODD-Device for custom audio reflecting new clue categories, boy names, responses, etc.

Game Logic Notes for DPS / ODD

DPS Program Logic Block Diagram.png

New Game Button Pushed:

The game begins when the player pushes "new game" on the device.

Build Game Board (Boy Attribute Table):

For the initialization of a new game to occur, the DPS must create the Boy Attribute Table. This is a static data pool showing which Hang-Out, Sport, Food or Clothing relates to which Boy. Using Dream Phone's Clue Card and Game Board as reference, a table can be built to consolidate all of these relationships. Note that the information is sorted so that the attributes are clustered together.This will be helpful later in the code.:(note to fix table to include boy phone numbers).

Boy Attribute Table
Person Phone Number Location Sport Food Clothing
0 Dave 5551111 Crosstown Mall Cookies Blue Jeans
1 George 5551233 Crosstown Mall Ice Cream Tie
2 Dale 5554566 Crosstown Mall Ice Cream Jacket
3 Alan 5557899 Crosstown Mall Cookies Tie
4 James 5552588 E.A.T.S. Snack Shop Hot Dogs Jacket
5 Phil 5553333 E.A.T.S. Snack Shop Pizza Glasses
6 Bruce 5553699 E.A.T.S. Snack Shop Pizza Tie
7 Tyler 5551477 E.A.T.S. Snack Shop Hot Dogs Blue Jeans
8 Jamal 5559877 Reel Movies Candy Tie
9 Gary 5553211 Reel Movies Popcorn Blue Jeans
10 Dan 5557777 Reel Movies Candy Blue Jeans
11 Spencer 5556544 Reel Movies Popcorn Jacket
12 Mark 5558522 Woodland Park Baseball Hat
13 Jason 5557411 Woodland Park Baseball Glasses
14 Steve 5559999 Woodland Park Skateboarding Jacket
15 John 5559633 Woodland Park Skateboarding Anything Yellow
16 Paul 5555515 High Tide Beach Volleyball Anything Yellow
17 Tony 5552442 High Tide Beach Volleyball Hat
18 Wayne 5553535 High Tide Beach Surfing Anything Yellow
19 Mike 5552226 High Tide Beach Surfing Hat
20 Scott 5555599 Jim's Gym Basketball Anything Yellow
21 Bob 5554884 Jim's Gym Basketball Glasses
22 Carlos 5556668 Jim's Gym Tennis Hat
23 Matt 5557557 Jim's Gym Tennis Glasses

The code so far to build the BAT works like this:

boy_names and boy_nums are variables created to associate the proper noun name and their phone number based on a list. So that boy_names[0] and boy_nums[0] would link 'dave' to his phone number '5551111'. Said another way, this uses the list entry number as the common link between the data sets. I’m not sure if it is the best programming approach, but this is the fundamental association used to make the BAT work.

boy_names = ['dave', 'george','dale','alan','james','phil','bruce','tyler','jamal','gary','dan','spencer','mark','jason','steve', 'john', 'paul', 'tony', 'wayne', 'mike', 'scott', 'bob', 'carlos', 'matt']

boy_nums = ['5551111', '5551233', '5554566', '5557899', '5552588', '5553333','5553699', '5551477', '5559877', '5553211', '5557777', '5556544', '5558522', '5557411', '5559999', '5559633', '5555515', '5552442', '5553535', '5552226', '5555599','5554884','5556668','5557557']

The variable all_clues lists clues from the BAT as they occur from column to column, left to right. Note that these are a list of strings (might be redundant? Used for language stuff)

all_clues = 'crosstown_mall', 'snack_shop', 'reel_movies', 'woodland_park', 'high_tide_beach', 'jims_gym', 'baseball', 'skateboarding', 'volleyball', 'surfing', 'basketball', 'tennis', 'ice_cream', 'cookies', 'hot_dogs', 'pizza', 'candy', 'popcorn', 'hat', 'tie', 'blue_jeans', 'jacket', 'glasses', 'anything_yellow']

Variables are created for each clue, and a list containing the number reference of the boys the clue pertains to is assigned to the variable.

crosstown_mall = [0,1,2,3]
snack_shop = [4,5,6,7]
reel_movies = [8,9,10,11]
woodland_park = [12,13,14,15]
high_tide_beach = [16,17,18,19]
jims_gym = [20,21,22,23]
baseball = [12,13]
skateboarding = [14,15]
volleyball = [16,17]
surfing = [18,19]
basketball = [20,21]
tennis = [22,23]
ice_cream = [1,2]
cookies = [0,3]
hot_dogs = [4,7]
pizza = [5,6]
candy = [8,10]
popcorn = [9,11]
hat = [12,17,19,22]
tie = [1,3,6,8]
blue_jeans = [0,7,9,10]
jacket = [2,4,11,14]
glasses = [5,13,21,23]
anything_yellow = [15,16,18,20]

Printing the strings from the list entries of the boy_names variable, by getting the list number from the snack_shop variable. This lets us say that snack_shop “contains” 'james', 'phil', 'bruce and 'tyler' when cross referenced correctly with the boy_names list.

In practice, a bit of code like this would print all the boys found in the Snack Shop:

x = 0
for i in snack_shop:
    print (boy_names[x])
    x = x + 1

Clue Logic

Clue Possibility Matrix
A B C D
0 - empty empty -
1 Crosstown Mall Baseball Cookies Blue Jeans
2 E.A.T.S. Snack Shop Skateboarding Ice Cream Tie
3 Reel Movies Volleyball Hot Dogs Jacket
4 Woodland Park Surfing Pizza Glasses
5 High Tide Beach Basketball Candy Hat
6 Jim's Gym Tennis Popcorn Anything Yellow

Dream Phone works by removing choices - "he doesn't like this" or "he isn't there". Each boy consists of a table of features that is hard coded. The game randomly selects a boy, and then randomly selects deductions from the table for every other boy on the table to reveal to you. For a game to be set up,a selection from one of the 24 boys is assigned as "the crush", and the remaining boys are assigned clues.

For Example: RNG Selects Dave as "the crush". Dave's Location is Crosstown Mall, or A1 on the Clue Possibility Matrix. Thus, he is not A2, A3, A4, A5, or A6. These values would be added to the 'negative clue' table. Dave likes cookies, or C1, thus, he is not C2, C3, C4, C5, or C6. Add values to the negative clue table. Sports and Foods values are mutually exclusive - such that if B = 0, than C = 1-6. If C=0, than B=1-6. Sum of B+C cannot equal greater than 6. Thus, if a C value above zero is found, all of B1-B6 is added to clue table. Dave(a) wears Blue Jeans, or D1. Thus, D2, D3, D4, D5 and D6 are added to clue table.

Dave's Clue Distribution
(Dave uses matrix A1, so other boys are represented as X1-X24)
Phrase Value Matrix
X1 Is not at E.A.T.S. Snack Shop A2
X2 Is not at Reel Movies A3
X3 Is not at Woodland Park A4
X4 Is not at High Tide Beach A5
X5 Is not at Jim's Gym A6
X6 Does not play Baseball B1
X7 Does not play Skateboarding B2
X8 Does not play Volleyball B3
X9 Does not play Surfing B4
X10 Does not play Basketball B5
X11 Does not play Tennis B6
X12 Does not eat Ice Cream C2
X13 Does not eat Hot Dogs C3
X14 Does not eat Pizza C4
X15 Does not eat Candy C5
X16 Does not eat Popcorn C6
X17 Does not wear Tie D2
X18 Does not wear Jacket D3
X19 Does not wear Glasses D4
X20 Does not wear Hat D5
X21 Does not wear Anything Yellow D6
X22 BLANK BOY
X23 BLANK BOY
X24 BLANK BOY

The game then randomly assigns the clue X1-X23 to boys B through X in this example. "Blank Boys" Can be Assigned null hints, "I'm not telling! Ha ha!" Because no unique clue can be assigned to this Boy. The game also has modifiers to randomly put a clue on speakerphone (probably a D10 RNG roll). This happens at the end of a turn. The win condition is when a player enters the correct boy code on their turn.

Another point to note is that the table of the boy's attributes is displayed on the game board so deductive reasoning can be exercised. For example, "Oh, he is not that the movies, that rules out the 4 boys that are at the movies.", Or, "Oh, he is not wearing jeans, that rules out the 4 boys that are not wearing jeans." Each clue should effectively eliminate 2-4 boys from the game.

Dream Phone Simulator Python Code

DPS Alpha 1.7

Run the code here: https://www.online-python.com/HFAh9oMD7T