Browse Source

optimize ship offsets. add explosion sound. tweak pickup ranges.

Thomas B 1 month ago
parent
commit
fae5d2cb39
5 changed files with 28 additions and 15 deletions
  1. 3
    1
      src/game.c
  2. 7
    4
      src/obj.c
  3. 8
    1
      src/sound.c
  4. 2
    1
      src/sound.h
  5. 8
    8
      src/sprites.c

+ 3
- 1
src/game.c View File

102
 }
102
 }
103
 
103
 
104
 static void show_explosion(uint16_t power) NONBANKED {
104
 static void show_explosion(uint16_t power) NONBANKED {
105
+    snd_explode();
106
+
105
     for (uint8_t n = 0; n < (4 * 4); n++) {
107
     for (uint8_t n = 0; n < (4 * 4); n++) {
106
         uint8_t hiwater = SPR_NUM_START;
108
         uint8_t hiwater = SPR_NUM_START;
107
         spr_draw(SPR_EXPL, FLIP_NONE, 0, 0, n >> 2, &hiwater);
109
         spr_draw(SPR_EXPL, FLIP_NONE, 0, 0, n >> 2, &hiwater);
297
             }
299
             }
298
 
300
 
299
             if (ret == OBJ_ADDED) {
301
             if (ret == OBJ_ADDED) {
300
-                snd_noise();
302
+                snd_shot();
301
             }
303
             }
302
         }
304
         }
303
 
305
 

+ 7
- 4
src/obj.c View File

58
 
58
 
59
 #define GRAVITY_RANGE (24 << POS_SCALE_OBJS)
59
 #define GRAVITY_RANGE (24 << POS_SCALE_OBJS)
60
 #define GRAVITY_SHIFT (POS_SCALE_OBJS + 4)
60
 #define GRAVITY_SHIFT (POS_SCALE_OBJS + 4)
61
+
61
 #define DAMAGE_RANGE (16 << POS_SCALE_OBJS)
62
 #define DAMAGE_RANGE (16 << POS_SCALE_OBJS)
62
 #define DAMAGE_INC 5
63
 #define DAMAGE_INC 5
63
 
64
 
64
-#define PICKUP_SMALL_RANGE (10 << POS_SCALE_OBJS)
65
-#define PICKUP_LARGE_RANGE (18 << POS_SCALE_OBJS)
65
+#define HEALTH_RANGE (18 << POS_SCALE_OBJS)
66
+#define HEALTH_INC HEALTH_MAX
67
+
68
+#define PICKUP_SMALL_RANGE (12 << POS_SCALE_OBJS)
66
 #define SHOT_RANGE (10 << POS_SCALE_OBJS)
69
 #define SHOT_RANGE (10 << POS_SCALE_OBJS)
67
 
70
 
68
 #define SCORE_SMALL 5
71
 #define SCORE_SMALL 5
173
                     }
176
                     }
174
                 }
177
                 }
175
 
178
 
176
-                if ((abs_off_x <= PICKUP_LARGE_RANGE) && (abs_off_y <= PICKUP_LARGE_RANGE)) {
177
-                    damage -= HEALTH_MAX;
179
+                if ((abs_off_x <= HEALTH_RANGE) && (abs_off_y <= HEALTH_RANGE)) {
180
+                    damage -= HEALTH_INC;
178
                 }
181
                 }
179
                 break;
182
                 break;
180
 
183
 

+ 8
- 1
src/sound.c View File

38
 #endif
38
 #endif
39
 }
39
 }
40
 
40
 
41
-void snd_noise(void) NONBANKED {
41
+void snd_shot(void) NONBANKED {
42
     NR41_REG = 0x2F; // length timer, higher value is shorter time (up to 0x3F)
42
     NR41_REG = 0x2F; // length timer, higher value is shorter time (up to 0x3F)
43
     NR42_REG = 0xF0; // initially full volume, no volume changes over time
43
     NR42_REG = 0xF0; // initially full volume, no volume changes over time
44
     NR43_REG = 0x11; // frequency distribution
44
     NR43_REG = 0x11; // frequency distribution
45
     NR44_REG = 0xC0; // trigger and enable length
45
     NR44_REG = 0xC0; // trigger and enable length
46
 }
46
 }
47
+
48
+void snd_explode(void) NONBANKED {
49
+    NR41_REG = 0x00; // length timer, higher value is shorter time (up to 0x3F)
50
+    NR42_REG = 0xF1; // initially full volume, then fade sound out
51
+    NR43_REG = 0x46; // frequency distribution
52
+    NR44_REG = 0xC0; // trigger and enable length
53
+}

+ 2
- 1
src/sound.h View File

21
 #define __SOUND_H__
21
 #define __SOUND_H__
22
 
22
 
23
 void snd_init(void);
23
 void snd_init(void);
24
-void snd_noise(void);
24
+void snd_shot(void);
25
+void snd_explode(void);
25
 
26
 
26
 #endif // __SOUND_H__
27
 #endif // __SOUND_H__

+ 8
- 8
src/sprites.c View File

117
 void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
117
 void spr_ship(enum SPRITE_ROT rot, uint8_t moving, uint8_t *hiwater) NONBANKED {
118
     switch (rot) {
118
     switch (rot) {
119
         case ROT_0:
119
         case ROT_0:
120
-            spr_draw(SPR_SHIP, FLIP_NONE, 0, 4, moving ? 1 : 0, hiwater);
120
+            spr_draw(SPR_SHIP, FLIP_NONE, -1, 4, moving ? 1 : 0, hiwater);
121
             break;
121
             break;
122
 
122
 
123
         case ROT_45:
123
         case ROT_45:
124
-            spr_draw(SPR_SHIP, FLIP_NONE, -4, 0, moving ? 3 : 2, hiwater);
124
+            spr_draw(SPR_SHIP, FLIP_NONE, -6, 0, moving ? 3 : 2, hiwater);
125
             break;
125
             break;
126
 
126
 
127
         case ROT_90:
127
         case ROT_90:
128
-            spr_draw(SPR_SHIP, FLIP_NONE, -4, 0, moving ? 5 : 4, hiwater);
128
+            spr_draw(SPR_SHIP, FLIP_NONE, -4, -1, moving ? 5 : 4, hiwater);
129
             break;
129
             break;
130
 
130
 
131
         case ROT_135:
131
         case ROT_135:
132
-            spr_draw(SPR_SHIP, FLIP_Y, -4, 0, moving ? 3 : 2, hiwater);
132
+            spr_draw(SPR_SHIP, FLIP_Y, -6, 0, moving ? 3 : 2, hiwater);
133
             break;
133
             break;
134
 
134
 
135
         case ROT_180:
135
         case ROT_180:
136
-            spr_draw(SPR_SHIP, FLIP_Y, 0, -4, moving ? 1 : 0, hiwater);
136
+            spr_draw(SPR_SHIP, FLIP_Y, -1, -4, moving ? 1 : 0, hiwater);
137
             break;
137
             break;
138
 
138
 
139
         case ROT_225:
139
         case ROT_225:
140
-            spr_draw(SPR_SHIP, FLIP_XY, 4, 0, moving ? 3 : 2, hiwater);
140
+            spr_draw(SPR_SHIP, FLIP_XY, 6, 0, moving ? 3 : 2, hiwater);
141
             break;
141
             break;
142
 
142
 
143
         case ROT_270:
143
         case ROT_270:
144
-            spr_draw(SPR_SHIP, FLIP_X, 4, 0, moving ? 5 : 4, hiwater);
144
+            spr_draw(SPR_SHIP, FLIP_X, 4, -1, moving ? 5 : 4, hiwater);
145
             break;
145
             break;
146
 
146
 
147
         case ROT_315:
147
         case ROT_315:
148
-            spr_draw(SPR_SHIP, FLIP_X, 4, 0, moving ? 3 : 2, hiwater);
148
+            spr_draw(SPR_SHIP, FLIP_X, 6, 0, moving ? 3 : 2, hiwater);
149
             break;
149
             break;
150
 
150
 
151
         default:
151
         default:

Loading…
Cancel
Save