Browse Source

optimize ship sprite so thruster is visible at 45 degrees

Thomas B 1 month ago
parent
commit
e5eead6cbc
4 changed files with 32 additions and 21 deletions
  1. BIN
      data/rockshp_spr24.png
  2. BIN
      data/rockshp_spr24.xcf
  3. 28
    17
      src/main.c
  4. 4
    4
      src/sprites.c

BIN
data/rockshp_spr24.png View File


BIN
data/rockshp_spr24.xcf View File


+ 28
- 17
src/main.c View File

@@ -194,7 +194,7 @@ static void splash_anim(uint8_t *hiwater) NONBANKED {
194 194
 
195 195
     if (++frame >= 60) {
196 196
         frame = 0;
197
-        if (++state >= 10) {
197
+        if (++state >= 12) {
198 198
             state = 0;
199 199
         }
200 200
     }
@@ -204,50 +204,61 @@ static void splash_anim(uint8_t *hiwater) NONBANKED {
204 204
     int32_t score = 0;
205 205
     obj_do(&spd_off_x, &spd_off_y, &score, hiwater, 1);
206 206
 
207
-    switch (state) {
208
-        case 0:
209
-        case 2:
210
-            spr_draw(SPR_SHIP, FLIP_NONE, -4, -42 - 1, 4, hiwater);
211
-            break;
207
+    /*
208
+     * 0: right
209
+     * 1: right shoot
210
+     * 2: right
211
+     * 3: top-right (add)
212
+     * 4: top
213
+     * 5: top-left
214
+     * 6: left
215
+     * 7: left shoot
216
+     * 8: left
217
+     * 9: top-left (add)
218
+     * 10: top
219
+     * 11: top-right
220
+     */
212 221
 
222
+    switch (state) {
213 223
         case 1:
214
-            spr_draw(SPR_SHIP, FLIP_NONE, -4, -42 - 1, 4, hiwater);
215 224
             if (frame == 0) {
216 225
                 obj_add(SPR_SHOT, SHIP_OFF, -42, SHOT_SPEED, 0);
217 226
                 sample_play(SFX_SHOT);
218 227
             }
228
+        case 0:
229
+        case 2:
230
+            spr_draw(SPR_SHIP, FLIP_NONE, -4, -42 - 1, 4, hiwater);
219 231
             break;
220 232
 
221 233
         case 3:
222 234
             if (frame == 30) {
223 235
                 obj_add(SPR_LIGHT, 42, -42, 0, 0);
224 236
             }
225
-            spr_draw(SPR_SHIP, FLIP_NONE, -1, -42 + 4, 0, hiwater);
237
+        case 11:
238
+            spr_draw(SPR_SHIP, FLIP_NONE, 1, -42 - 1, 2, hiwater);
226 239
             break;
227 240
 
228
-        case 8:
241
+        case 9:
229 242
             if (frame == 30) {
230 243
                 obj_add(SPR_DARK, -42, -42, 0, 0);
231 244
             }
232
-            spr_draw(SPR_SHIP, FLIP_NONE, -1, -42 + 4, 0, hiwater);
245
+        case 5:
246
+            spr_draw(SPR_SHIP, FLIP_X, -1, -42 - 1, 2, hiwater);
233 247
             break;
234 248
 
235 249
         case 4:
236
-        case 9:
250
+        case 10:
237 251
             spr_draw(SPR_SHIP, FLIP_NONE, -1, -42 + 4, 0, hiwater);
238 252
             break;
239 253
 
240
-        case 5:
241 254
         case 7:
242
-            spr_draw(SPR_SHIP, FLIP_X, 4, -42, 4, hiwater);
243
-            break;
244
-
245
-        case 6:
246
-            spr_draw(SPR_SHIP, FLIP_X, 4, -42, 4, hiwater);
247 255
             if (frame == 0) {
248 256
                 obj_add(SPR_SHOT, -SHIP_OFF, -42, -SHOT_SPEED, 0);
249 257
                 sample_play(SFX_SHOT);
250 258
             }
259
+        case 6:
260
+        case 8:
261
+            spr_draw(SPR_SHIP, FLIP_X, 4, -42, 4, hiwater);
251 262
             break;
252 263
     }
253 264
 }

+ 4
- 4
src/sprites.c View File

@@ -129,7 +129,7 @@ void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
129 129
             break;
130 130
 
131 131
         case ROT_45:
132
-            spr_draw(SPR_SHIP, FLIP_NONE, -6, 0, moving ? 3 : 2, hiwater);
132
+            spr_draw(SPR_SHIP, FLIP_NONE, 1, -1, moving ? 3 : 2, hiwater);
133 133
             break;
134 134
 
135 135
         case ROT_90:
@@ -137,7 +137,7 @@ void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
137 137
             break;
138 138
 
139 139
         case ROT_135:
140
-            spr_draw(SPR_SHIP, FLIP_Y, -6, 0, moving ? 3 : 2, hiwater);
140
+            spr_draw(SPR_SHIP, FLIP_Y, 1, 1, moving ? 3 : 2, hiwater);
141 141
             break;
142 142
 
143 143
         case ROT_180:
@@ -145,7 +145,7 @@ void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
145 145
             break;
146 146
 
147 147
         case ROT_225:
148
-            spr_draw(SPR_SHIP, FLIP_XY, 6, 0, moving ? 3 : 2, hiwater);
148
+            spr_draw(SPR_SHIP, FLIP_XY, -1, 1, moving ? 3 : 2, hiwater);
149 149
             break;
150 150
 
151 151
         case ROT_270:
@@ -153,7 +153,7 @@ void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
153 153
             break;
154 154
 
155 155
         case ROT_315:
156
-            spr_draw(SPR_SHIP, FLIP_X, 6, 0, moving ? 3 : 2, hiwater);
156
+            spr_draw(SPR_SHIP, FLIP_X, -1, -1, moving ? 3 : 2, hiwater);
157 157
             break;
158 158
 
159 159
         default:

Loading…
Cancel
Save