|
@@ -65,66 +65,64 @@ void spr_draw(enum SPRITES sprite, enum SPRITE_FLIP flip,
|
65
|
65
|
}
|
66
|
66
|
|
67
|
67
|
START_ROM_BANK(metasprites[sprite].bank) {
|
|
68
|
+ if (frame >= metasprites[sprite].ms_n) {
|
|
69
|
+ frame = 0;
|
|
70
|
+ }
|
68
|
71
|
|
69
|
|
- if (frame >= metasprites[sprite].ms_n) {
|
70
|
|
- frame = 0;
|
71
|
|
- }
|
|
72
|
+ uint8_t pa_off = 0;
|
72
|
73
|
|
73
|
|
- uint8_t pa_off = 0;
|
|
74
|
+ if (_cpu == CGB_TYPE) {
|
|
75
|
+ if ((metasprites[sprite].pa_i & PALETTE_ALL_FLAGS) == PALETTE_DYNAMIC_LOAD) {
|
|
76
|
+ uint8_t pa_i = frame;
|
|
77
|
+ if (pa_i >= metasprites[sprite].pa_n) {
|
|
78
|
+ pa_i = 0;
|
|
79
|
+ }
|
74
|
80
|
|
75
|
|
- if (_cpu == CGB_TYPE) {
|
76
|
|
- if ((metasprites[sprite].pa_i & PALETTE_ALL_FLAGS) == PALETTE_DYNAMIC_LOAD) {
|
77
|
|
- uint8_t pa_i = frame;
|
78
|
|
- if (pa_i >= metasprites[sprite].pa_n) {
|
79
|
|
- pa_i = 0;
|
80
|
|
- }
|
|
81
|
+ set_sprite_palette((metasprites[sprite].pa_i & PALETTE_NO_FLAGS) + pa_i, 1, metasprites[sprite].pa + (pa_i * 4));
|
|
82
|
+ } else if ((metasprites[sprite].pa_i & PALETTE_ALL_FLAGS) == PALETTE_DYNAMIC_LOAD_IP) {
|
|
83
|
+ pa_off = frame;
|
|
84
|
+ if (pa_off >= metasprites[sprite].pa_n) {
|
|
85
|
+ pa_off = 0;
|
|
86
|
+ }
|
81
|
87
|
|
82
|
|
- set_sprite_palette((metasprites[sprite].pa_i & PALETTE_NO_FLAGS) + pa_i, 1, metasprites[sprite].pa + (pa_i * 4));
|
83
|
|
- } else if ((metasprites[sprite].pa_i & PALETTE_ALL_FLAGS) == PALETTE_DYNAMIC_LOAD_IP) {
|
84
|
|
- pa_off = frame;
|
85
|
|
- if (pa_off >= metasprites[sprite].pa_n) {
|
86
|
|
- pa_off = 0;
|
|
88
|
+ set_sprite_palette((metasprites[sprite].pa_i & PALETTE_NO_FLAGS), 1, metasprites[sprite].pa + (pa_off * 4));
|
87
|
89
|
}
|
88
|
|
-
|
89
|
|
- set_sprite_palette((metasprites[sprite].pa_i & PALETTE_NO_FLAGS), 1, metasprites[sprite].pa + (pa_off * 4));
|
90
|
90
|
}
|
91
|
|
- }
|
92
|
|
-
|
93
|
|
- switch (flip) {
|
94
|
|
- case FLIP_Y:
|
95
|
|
- *hiwater += move_metasprite_flipy(
|
96
|
|
- metasprites[sprite].ms[frame], metasprites[sprite].off,
|
97
|
|
- (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
98
|
|
- DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
99
|
|
- DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
100
|
|
- break;
|
101
|
|
-
|
102
|
|
- case FLIP_XY:
|
103
|
|
- *hiwater += move_metasprite_flipxy(
|
104
|
|
- metasprites[sprite].ms[frame], metasprites[sprite].off,
|
105
|
|
- (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
106
|
|
- DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
107
|
|
- DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
108
|
|
- break;
|
109
|
|
-
|
110
|
|
- case FLIP_X:
|
111
|
|
- *hiwater += move_metasprite_flipx(
|
112
|
|
- metasprites[sprite].ms[frame], metasprites[sprite].off,
|
113
|
|
- (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
114
|
|
- DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
115
|
|
- DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
116
|
|
- break;
|
117
|
|
-
|
118
|
|
- case FLIP_NONE:
|
119
|
|
- default:
|
120
|
|
- *hiwater += move_metasprite_ex(
|
121
|
|
- metasprites[sprite].ms[frame], metasprites[sprite].off,
|
122
|
|
- (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
123
|
|
- DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
124
|
|
- DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
125
|
|
- break;
|
126
|
|
- }
|
127
|
91
|
|
|
92
|
+ switch (flip) {
|
|
93
|
+ case FLIP_Y:
|
|
94
|
+ *hiwater += move_metasprite_flipy(
|
|
95
|
+ metasprites[sprite].ms[frame], metasprites[sprite].off,
|
|
96
|
+ (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
|
97
|
+ DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
|
98
|
+ DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
|
99
|
+ break;
|
|
100
|
+
|
|
101
|
+ case FLIP_XY:
|
|
102
|
+ *hiwater += move_metasprite_flipxy(
|
|
103
|
+ metasprites[sprite].ms[frame], metasprites[sprite].off,
|
|
104
|
+ (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
|
105
|
+ DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
|
106
|
+ DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
|
107
|
+ break;
|
|
108
|
+
|
|
109
|
+ case FLIP_X:
|
|
110
|
+ *hiwater += move_metasprite_flipx(
|
|
111
|
+ metasprites[sprite].ms[frame], metasprites[sprite].off,
|
|
112
|
+ (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
|
113
|
+ DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
|
114
|
+ DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
|
115
|
+ break;
|
|
116
|
+
|
|
117
|
+ case FLIP_NONE:
|
|
118
|
+ default:
|
|
119
|
+ *hiwater += move_metasprite_ex(
|
|
120
|
+ metasprites[sprite].ms[frame], metasprites[sprite].off,
|
|
121
|
+ (metasprites[sprite].pa_i - pa_off) & PALETTE_NO_FLAGS, *hiwater,
|
|
122
|
+ DEVICE_SPRITE_PX_OFFSET_X + (DEVICE_SCREEN_PX_WIDTH / 2) + x_off,
|
|
123
|
+ DEVICE_SPRITE_PX_OFFSET_Y + (DEVICE_SCREEN_PX_HEIGHT / 2) + y_off);
|
|
124
|
+ break;
|
|
125
|
+ }
|
128
|
126
|
} END_ROM_BANK
|
129
|
127
|
}
|
130
|
128
|
|