-
1How to play
Press any button to power Симон up. The LEDs will pulsating. This is the Attract mode. If you do nothing, it will timeout eventually and power off. Your choices are:
- Green: easy - decadent Western Simon (i.e. normal Simon)
- Blue: harder - the sounds will no longer be keyed to the color
- Yellow: hardest - the positions will no longer be consistent with the color
- Red: nightmare - when it's your turn, your button colors will also shift around each round
- Black: impossible - when it's your turn, your button colors will shift around for each step
To select "impossible" mode, press two (or more) buttons at once.
Gameplay is simple. Remember the colors Simon shows and repeat the colors back. Get it wrong and you lose. Take too long and you lose. If you can go far enough, you'll eventually win, but I strongly suspect that it's not humanly possible.
Sometimes Симон will show two buttons/colors at a time. When it's your turn to repeat, for that step you must push both buttons/colors simultaneously.
To clear the high scores, start with Симон powered off. Press and hold two buttons. All lights will start to blink. Hold the two buttons for ten seconds and the lights will change to the normal pre-game fade in and out. At that point the scores are cleared and you can let go of the buttons.
-
2Building
There's no special instructions for installing the surface-mount components. Obviously, make sure all of the LEDs and ICs are installed facing the right direction.
You should program the controller and flash ROM before attaching the AA battery holder and speaker, as the speaker will get in the way of the two programming headers.
To create the SPI flash disk image (this procedure is for Linux and is for a 4MB chip):
- dd if=/dev/zero bs=4M count=1 | tr '\0' '\377' > image
- mkfs.vfat image
- sudo mount -o loop image /mnt
- cd /mnt && unzip sounds.zip
- sudo unmount /mnt
The firmware doesn't care how big the flash chip is as long as the "0x03" read command works and the chip is large enough for all of the samples. As a rule of thumb, each megabyte of space can hold about a minute of audio. It's best to start with an image file full of "FF" bytes, as that make the programming go much faster (FF is the default erased content of flash ROM).
Program the SPI flash chip first. If the controller is programmed, then it must be held in RESET or erased while programming the flash chip to insure the SPI bus is kept quiescent. The FLASH programming header has the same pinout as the traditional AVR ISP pinout, with !RESET being replaced with !CS. The easiest way to program the chip is to wire up a Raspberry Pi to do the job. Connect 3.3v power and ground (pins 1 and 6), the MOSI, MISO and SCK and SPI_CE0_N pins (pin 19, 21, 23 and 24) up to the programming header. Use raspi_config to enable SPI and reboot, then install "flashrom" and use it to program the image (-p linux_spi:dev=/dev/spidev0.0,spispeed=20000)
Compile the firmware with an avr-gcc compiler and link with avr libc. Program the result into the controller with avrdude and a suitable PDI capable programmer connected to the PDI header.
Also, set fuse5 to 0xe9 to program the brownout detector. For extra credit, seed the PRNG by filling the first 16 bytes of eeprom with random bytes.
Note that neither the flash programming header nor the PDI header are 5 volt tolerant. Use 3.3v only! If your PDI programmer cannot provide target power, you can force the boost converter to supply power by holding down (or shorting) one of the buttons during programming.
The AA battery holder mounts on the back of the board. Screw it down using a pair of 4-40 1/4" trumpet head bolts. The bolts screw into threaded inserts that go into the "speaker table" piece. The speaker sticks onto the "speaker table" with an adhesive pad that comes with the speaker. Make sure you orient the speaker so that the speaker wires go into the holes on the board.
The speaker wires are soldered to their holes. Note that because the amplifier is a push-pull design, neither speaker wire is grounded.
-
33D printed case
Print the top, back and battery lid in opaque material (black is traditional). Print 4 of the buttons from transparent or translucent material.
Drop the buttons into the holes from the back of the top piece. Lay the board on top with the keying boss in the big hole. Lay the back on top, lining up the screw holes. Secure the two together with two #4 pan head self tapping screws.Insert two AA batteries in the battery holder. Insert the tab of the battery lid into the short side of the hole in the back that doesn’t have the arch. Lay the lid down so that it fits flush. Screw it down with a #2 3/16” pan head self-tapping screw.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.