Platform game written for the GHI/OutrageousCircuits RETRO game device. Navigate the caves collecting all the pickups and avoiding the creatures and haunted mine carts that patrol the caves. Oh and remember to watch out for the poisonous plants... This game demonstrates the ability to have multiple animated sprites where the sprites can overlap the background environment. See how the player moves past the fence and climbs the wall in the 3rd screen.

Dependencies:   mbed

Committer:
taylorza
Date:
Fri Jan 02 01:55:12 2015 +0000
Revision:
5:a758c7d4da03
Tweaked graphics

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 5:a758c7d4da03 1 #ifndef __SOUNDBLOCK_H__
taylorza 5:a758c7d4da03 2 #define __SOUNDBLOCK_H__
taylorza 5:a758c7d4da03 3
taylorza 5:a758c7d4da03 4 #define US_PER_BIT 32
taylorza 5:a758c7d4da03 5
taylorza 5:a758c7d4da03 6 // Fix16 representation of 1000000/32
taylorza 5:a758c7d4da03 7 #define FREQ_NUMERATOR 0x7a120000
taylorza 5:a758c7d4da03 8
taylorza 5:a758c7d4da03 9
taylorza 5:a758c7d4da03 10 // Fix16 representation of 1000000/24
taylorza 5:a758c7d4da03 11 //#define FREQ_NUMERATOR 0xa2c20000
taylorza 5:a758c7d4da03 12
taylorza 5:a758c7d4da03 13 #define TONE(stepCount, stepDuration, pitch, pitchSlide, duty, dutySlide) SoundBlock(SoundBlock::Tone, stepCount, stepDuration, pitch, pitchSlide, duty, dutySlide)
taylorza 5:a758c7d4da03 14 #define NOISE(stepCount, stepDuration, pitch, pitchSlide) SoundBlock(SoundBlock::Noise, stepCount, stepDuration, pitch, pitchSlide, 128, 0)
taylorza 5:a758c7d4da03 15 #define PAUSE(stepCount, stepDuration) SoundBlock(SoundBlock::Pause, stepCount, stepDuration, 0, 0, 0, 0)
taylorza 5:a758c7d4da03 16
taylorza 5:a758c7d4da03 17 #define CREATE_EFFECT(name) \
taylorza 5:a758c7d4da03 18 static const SoundBlock name[] = \
taylorza 5:a758c7d4da03 19 { \
taylorza 5:a758c7d4da03 20
taylorza 5:a758c7d4da03 21 #define END_EFFECT \
taylorza 5:a758c7d4da03 22 };
taylorza 5:a758c7d4da03 23
taylorza 5:a758c7d4da03 24 #define EFFECT(name) name, sizeof(name)/sizeof(SoundBlock)
taylorza 5:a758c7d4da03 25
taylorza 5:a758c7d4da03 26 class SoundChannel;
taylorza 5:a758c7d4da03 27
taylorza 5:a758c7d4da03 28 class SoundBlock
taylorza 5:a758c7d4da03 29 {
taylorza 5:a758c7d4da03 30 public:
taylorza 5:a758c7d4da03 31 enum ToneType {Tone, Noise, Pause};
taylorza 5:a758c7d4da03 32
taylorza 5:a758c7d4da03 33 public:
taylorza 5:a758c7d4da03 34 SoundBlock(ToneType toneType, uint16_t stepCount, uint16_t stepDuration, uint16_t pitch, int16_t pitchSlide, uint8_t duty, int8_t dutySlide);
taylorza 5:a758c7d4da03 35 SoundBlock(ToneType toneType, uint16_t stepCount, uint16_t stepDuration);
taylorza 5:a758c7d4da03 36
taylorza 5:a758c7d4da03 37 protected:
taylorza 5:a758c7d4da03 38 SoundBlock();
taylorza 5:a758c7d4da03 39
taylorza 5:a758c7d4da03 40 private:
taylorza 5:a758c7d4da03 41 void initialize(ToneType toneType, uint16_t stepCount, uint16_t stepDuration, uint16_t pitch, int16_t pitchSlide, uint8_t duty, int8_t dutySlide);
taylorza 5:a758c7d4da03 42
taylorza 5:a758c7d4da03 43 protected:
taylorza 5:a758c7d4da03 44 inline ToneType getToneType() { return _toneType; }
taylorza 5:a758c7d4da03 45 inline uint16_t getStepCount() { return _stepCount; }
taylorza 5:a758c7d4da03 46 inline uint16_t getStepDuration() { return _stepDuration; }
taylorza 5:a758c7d4da03 47 inline fix16_t getPitch(fix16_t offset) { return fix16_div(FREQ_NUMERATOR, _pitch + offset); }
taylorza 5:a758c7d4da03 48 inline fix16_t getPitchSlide() {return _pitchSlide; }
taylorza 5:a758c7d4da03 49 inline uint8_t getDuty(int8_t offset) { return (uint8_t)(_duty + offset); }
taylorza 5:a758c7d4da03 50 inline int8_t getDutySlide() { return _dutySlide; }
taylorza 5:a758c7d4da03 51
taylorza 5:a758c7d4da03 52 private:
taylorza 5:a758c7d4da03 53 ToneType _toneType;
taylorza 5:a758c7d4da03 54 uint16_t _stepCount;
taylorza 5:a758c7d4da03 55 uint16_t _stepDuration;
taylorza 5:a758c7d4da03 56 fix16_t _pitch;
taylorza 5:a758c7d4da03 57 fix16_t _pitchSlide;
taylorza 5:a758c7d4da03 58 uint8_t _duty;
taylorza 5:a758c7d4da03 59 int8_t _dutySlide;
taylorza 5:a758c7d4da03 60
taylorza 5:a758c7d4da03 61 friend class SoundChannel;
taylorza 5:a758c7d4da03 62 };
taylorza 5:a758c7d4da03 63 #endif //__SOUNDBLOCK_H__
taylorza 5:a758c7d4da03 64
taylorza 5:a758c7d4da03 65