Rollo tweaks.
- Turn off the "zoom" log message.
- Make it stop rendering. Add a workaround to not always flipping the last page by drawing one
extra frame.
diff --git a/res/raw/rollo.c b/res/raw/rollo.c
index 5dcb16c..cff4620 100644
--- a/res/raw/rollo.c
+++ b/res/raw/rollo.c
@@ -24,6 +24,22 @@
// Drawing constants, should be parameters ======
#define VIEW_ANGLE 1.28700222f
+int g_oneLastFrame = 1;
+int one_last_frame(int more) {
+ if (more) {
+ g_oneLastFrame = 1;
+ return 1;
+ } else {
+ if (g_oneLastFrame) {
+ g_oneLastFrame = 0;
+ return 1;
+ } else {
+ g_oneLastFrame = 1;
+ return 0;
+ }
+ }
+}
+
void init() {
g_AttractionTable[0] = 4.5f;
g_AttractionTable[1] = 4.5f;
@@ -295,7 +311,7 @@
g_DT = (newTime - g_LastTime) / 1000.f;
g_LastTime = newTime;
- debugF("zoom", g_Zoom);
+ //debugF("zoom", g_Zoom);
if (g_Zoom != g_ZoomTarget) {
float dz = (g_ZoomTarget - g_Zoom) * g_DT * 5;
if (dz && (fabsf(dz) < 0.03f)) {
@@ -317,7 +333,8 @@
pfClearColor(0.0f, 0.0f, 0.0f, g_Zoom);
if (g_Zoom == 0) {
// Nothing else to do if fully zoomed out.
- return 1;
+ g_PosPage = roundf(g_PosPage);
+ return one_last_frame(0);
}
} else {
pfClearColor(0.0f, 0.0f, 0.0f, 0.80f);
@@ -370,6 +387,6 @@
// Bug workaround where the last frame is not always displayed
// So we keep rendering until the bug is fixed.
- return 1;//(g_PosVelocity != 0) || fracf(g_PosPage);
+ return one_last_frame((g_PosVelocity != 0) || fracf(g_PosPage) || g_Zoom != g_ZoomTarget);
}