aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cfg/mcuconf.h8
-rwxr-xr-xopenocd.sh2
-rw-r--r--source/flapbird.c28
-rw-r--r--source/main.c3
4 files changed, 32 insertions, 9 deletions
diff --git a/cfg/mcuconf.h b/cfg/mcuconf.h
index 96e9080..dc36c84 100644
--- a/cfg/mcuconf.h
+++ b/cfg/mcuconf.h
@@ -39,7 +39,7 @@
* HAL driver system settings.
*/
#define STM32_NO_INIT FALSE
-#define STM32_VOS STM32_VOS_1P2
+#define STM32_VOS STM32_VOS_1P5
#define STM32_PVD_ENABLE TRUE
#define STM32_PLS STM32_PLS_LEV4
#define STM32_HSI16_ENABLED TRUE
@@ -50,9 +50,9 @@
#define STM32_ADC_CLOCK_ENABLED TRUE
#define STM32_MSIRANGE STM32_MSIRANGE_4M
#define STM32_SW STM32_SW_MSI
-#define STM32_PLLSRC STM32_PLLSRC_NONE
-#define STM32_PLLMUL_VALUE 1
-#define STM32_PLLDIV_VALUE 8
+#define STM32_PLLSRC STM32_PLLSRC_HSI16
+#define STM32_PLLMUL_VALUE 3
+#define STM32_PLLDIV_VALUE 3
#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE1 STM32_PPRE1_DIV1
#define STM32_PPRE2 STM32_PPRE2_DIV1
diff --git a/openocd.sh b/openocd.sh
index 1ce7e72..28d46ca 100755
--- a/openocd.sh
+++ b/openocd.sh
@@ -1 +1 @@
-openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32l0.cfg -c "init; program build/ch.hex verify reset exit"
+openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32l0.cfg -c "init; program build/ch.hex verify reset exit"
diff --git a/source/flapbird.c b/source/flapbird.c
index f2dd2cf..800e892 100644
--- a/source/flapbird.c
+++ b/source/flapbird.c
@@ -1,5 +1,8 @@
#include "buttons.h"
#include "dogs.h"
+#include "hal.h"
+
+#include <stdint.h>
static const unsigned char bird[] = {
8, 8,
@@ -20,11 +23,23 @@ static int py;
static int vy;
static int counter;
+static uint32_t next = 31415926;
+
+int rand()
+{
+ uint32_t tr = RTC->TR;
+ uint32_t dr = RTC->DR;
+ next = next * (0x197244 + dr) + tr;
+ return (unsigned int)(next / 65536) % 32768;
+}
+
+#define NEW_BAR() (rand() % 50 + 5)
+
void flapbird_init()
{
score = 0;
- t1x = DISP_WIDTH / 2, t1o = 15;
- t2x = DISP_WIDTH, t2o = 49;
+ t1x = DISP_WIDTH / 2, t1o = NEW_BAR();
+ t2x = DISP_WIDTH, t2o = NEW_BAR();
py = DISP_HEIGHT / 2 - 4;
vy = 0;
counter = 0;
@@ -69,11 +84,16 @@ int flapbird_loop()
score = (py + 2 > t2o - 10 && py + 6 < t2o + 10) ? score + 1 : 0;
t1x -= 2;
- if (t1x <= -5)
+ if (t1x <= -5) {
t1x = DISP_WIDTH;
+ t1o = NEW_BAR();
+ }
+
t2x -= 2;
- if (t2x <= -5)
+ if (t2x <= -5) {
t2x = DISP_WIDTH;
+ t2o = NEW_BAR();
+ }
return 100;
}
diff --git a/source/main.c b/source/main.c
index fd753ea..89f3cf0 100644
--- a/source/main.c
+++ b/source/main.c
@@ -67,6 +67,9 @@ static void alarm_callback(RTCDriver *rtcp, rtcevent_t event)
int main(void)
{
halInit();
+
+ RCC->CR &= ~(RCC_CR_PLLON); // Ensure that the PLL is off (unused).
+
//chSysInit();
buttons_init();