Browse Source

keep player in center of screen and scroll background instead

Thomas B 2 months ago
parent
commit
29e43b6889
1 changed files with 16 additions and 10 deletions
  1. 16
    10
      src/main.c

+ 16
- 10
src/main.c View File

@@ -1,6 +1,10 @@
1 1
 /*
2 2
  * main.c
3 3
  * Duality
4
+ *
5
+ * Based on the metasprites and galaxy examples from gbdk-2020:
6
+ * https://github.com/gbdk-2020/gbdk-2020/blob/develop/gbdk-lib/examples/cross-platform/metasprites/src/metasprites.c
7
+ * https://github.com/gbdk-2020/gbdk-2020/blob/develop/gbdk-lib/examples/gb/galaxy/galaxy.c
4 8
  */
5 9
 
6 10
 #include <gbdk/platform.h>
@@ -110,8 +114,8 @@ void main(void) {
110 114
     enable_interrupts();
111 115
 
112 116
     // Set initial position to the center of the screen, zero out speed
113
-    PosX = (DEVICE_SCREEN_PX_WIDTH / 2) << 4;
114
-    PosY = (DEVICE_SCREEN_PX_HEIGHT / 2) << 4;
117
+    PosX = 0;//(DEVICE_SCREEN_PX_WIDTH / 2) << 4;
118
+    PosY = 0;//(DEVICE_SCREEN_PX_HEIGHT / 2) << 4;
115 119
     SpdX = SpdY = 0;
116 120
 
117 121
     idx = 0; rot = 0;
@@ -154,6 +158,8 @@ void main(void) {
154 158
 
155 159
         PosX += SpdX, PosY += SpdY;
156 160
 
161
+        move_bkg(PosX >> 4, PosY >> 4);
162
+
157 163
         uint8_t hiwater = SPR_NUM_START;
158 164
 
159 165
         // NOTE: In a real game it would be better to only call the move_metasprite..()
@@ -169,32 +175,32 @@ void main(void) {
169 175
                                                   metasprites[idx].off,
170 176
                                                   idx,
171 177
                                                   hiwater,
172
-                                                  DEVICE_SPRITE_PX_OFFSET_X + (PosX >> 4),
173
-                                                  DEVICE_SPRITE_PX_OFFSET_Y + (PosY >> 4));
178
+                                                  DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2),
179
+                                                  DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2));
174 180
                 break;
175 181
             case 2:
176 182
                 hiwater += move_metasprite_flipxy(metasprites[idx].ms[0],
177 183
                                                   metasprites[idx].off,
178 184
                                                   idx,
179 185
                                                   hiwater,
180
-                                                  DEVICE_SPRITE_PX_OFFSET_X + (PosX >> 4),
181
-                                                  DEVICE_SPRITE_PX_OFFSET_Y + (PosY >> 4));
186
+                                                  DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2),
187
+                                                  DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2));
182 188
                 break;
183 189
             case 3:
184 190
                 hiwater += move_metasprite_flipx( metasprites[idx].ms[0],
185 191
                                                   metasprites[idx].off,
186 192
                                                   idx,
187 193
                                                   hiwater,
188
-                                                  DEVICE_SPRITE_PX_OFFSET_X + (PosX >> 4),
189
-                                                  DEVICE_SPRITE_PX_OFFSET_Y + (PosY >> 4));
194
+                                                  DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2),
195
+                                                  DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2));
190 196
                 break;
191 197
             default:
192 198
                 hiwater += move_metasprite_ex(    metasprites[idx].ms[0],
193 199
                                                   metasprites[idx].off,
194 200
                                                   idx,
195 201
                                                   hiwater,
196
-                                                  DEVICE_SPRITE_PX_OFFSET_X + (PosX >> 4),
197
-                                                  DEVICE_SPRITE_PX_OFFSET_Y + (PosY >> 4));
202
+                                                  DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2),
203
+                                                  DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2));
198 204
                 break;
199 205
         }
200 206
 

Loading…
Cancel
Save