|
|
|
|
1
|
-#include <pokeagb/pokeagb.h>
|
|
|
2
|
#include <agb_debug.h>
|
1
|
#include <agb_debug.h>
|
3
|
-#include <tileset_animation/smoke.h>
|
|
|
4
|
-#include <tileset_animation/water_stone.h>
|
|
|
|
|
2
|
+#include <pokeagb/pokeagb.h>
|
5
|
#include <tileset_animation/flowers_mag.h>
|
3
|
#include <tileset_animation/flowers_mag.h>
|
6
|
#include <tileset_animation/flowers_ora.h>
|
4
|
#include <tileset_animation/flowers_ora.h>
|
|
|
5
|
+#include <tileset_animation/smoke.h>
|
|
|
6
|
+#include <tileset_animation/water_deep.h>
|
|
|
7
|
+#include <tileset_animation/water_normal.h>
|
|
|
8
|
+#include <tileset_animation/water_sea.h>
|
|
|
9
|
+#include <tileset_animation/water_edge.h>
|
|
|
10
|
+#include <tileset_animation/water_stone.h>
|
|
|
11
|
+#include <tileset_animation/waterfall.h>
|
7
|
|
12
|
|
8
|
#define NUM_MAX_ANIMATIONS 16
|
13
|
#define NUM_MAX_ANIMATIONS 16
|
9
|
|
14
|
|
|
|
|
|
22
|
const void *image;
|
27
|
const void *image;
|
23
|
};
|
28
|
};
|
24
|
|
29
|
|
|
|
30
|
+#define AS_WATER 9
|
|
|
31
|
+
|
25
|
const struct TilesetAnimation hesperia_second_animations[] = {
|
32
|
const struct TilesetAnimation hesperia_second_animations[] = {
|
26
|
{.tile_start = 0x10C, .frame_length = 14, .tile_length = 4, .frame_count = 10, .image = flowers_magTiles},
|
33
|
{.tile_start = 0x10C, .frame_length = 14, .tile_length = 4, .frame_count = 10, .image = flowers_magTiles},
|
27
|
{.tile_start = 0x110, .frame_length = 14, .tile_length = 4, .frame_count = 15, .image = flowers_oraTiles},
|
34
|
{.tile_start = 0x110, .frame_length = 14, .tile_length = 4, .frame_count = 15, .image = flowers_oraTiles},
|
28
|
{.tile_start = 0x114, .frame_length = 7, .tile_length = 4, .frame_count = 8, .image = smokeTiles},
|
35
|
{.tile_start = 0x114, .frame_length = 7, .tile_length = 4, .frame_count = 8, .image = smokeTiles},
|
29
|
{.tile_start = 0x13C, .frame_length = 7, .tile_length = 4, .frame_count = 4, .image = water_stoneTiles},
|
36
|
{.tile_start = 0x13C, .frame_length = 7, .tile_length = 4, .frame_count = 4, .image = water_stoneTiles},
|
|
|
37
|
+ {.tile_start = 0x118, .frame_length = 4, .tile_length = 36, .frame_count = 8, .image = waterfallTiles},
|
|
|
38
|
+ {.tile_start = 0x140, .frame_length = AS_WATER, .tile_length = 36, .frame_count = 8, .image = water_normalTiles},
|
|
|
39
|
+ {.tile_start = 0x168, .frame_length = AS_WATER, .tile_length = 4, .frame_count = 8, .image = water_seaTiles},
|
|
|
40
|
+ {.tile_start = 0x16C, .frame_length = AS_WATER, .tile_length = 4, .frame_count = 8, .image = water_deepTiles},
|
|
|
41
|
+ {.tile_start = 0x164, .frame_length = AS_WATER, .tile_length = 4, .frame_count = 8, .image = water_edgeTiles},
|
30
|
{.tile_start = 0, .frame_length = 0, .tile_length = 0, .frame_count = 0, .image = (void *)0xFFFFFFFF},
|
42
|
{.tile_start = 0, .frame_length = 0, .tile_length = 0, .frame_count = 0, .image = (void *)0xFFFFFFFF},
|
31
|
};
|
43
|
};
|
32
|
|
44
|
|
|
|
|
|
37
|
void *current_vram = vram_address + (0x20 * anim[cur_anim].tile_start);
|
49
|
void *current_vram = vram_address + (0x20 * anim[cur_anim].tile_start);
|
38
|
|
50
|
|
39
|
if (anim_state->cur_frame[cur_anim] == 0) {
|
51
|
if (anim_state->cur_frame[cur_anim] == 0) {
|
40
|
- memcpy(current_vram, anim[cur_anim].image +
|
|
|
41
|
- (0x20 * anim[cur_anim].tile_length * anim_state->cur_tile[cur_anim]),
|
|
|
42
|
- anim[cur_anim].tile_length * 0x20);
|
|
|
|
|
52
|
+ memcpy(current_vram,
|
|
|
53
|
+ anim[cur_anim].image + (0x20 * anim[cur_anim].tile_length * anim_state->cur_tile[cur_anim]),
|
|
|
54
|
+ anim[cur_anim].tile_length * 0x20);
|
43
|
}
|
55
|
}
|
44
|
|
56
|
|
45
|
anim_state->cur_frame[cur_anim] += 1;
|
57
|
anim_state->cur_frame[cur_anim] += 1;
|
|
|
|
|
55
|
}
|
67
|
}
|
56
|
if (cur_anim >= NUM_MAX_ANIMATIONS) {
|
68
|
if (cur_anim >= NUM_MAX_ANIMATIONS) {
|
57
|
dprintf("Warning! Animation State array not big enough to play all animations\n"
|
69
|
dprintf("Warning! Animation State array not big enough to play all animations\n"
|
58
|
- "Please increase the limit in %s\n", __FILE__);
|
|
|
|
|
70
|
+ "Please increase the limit in %s\n",
|
|
|
71
|
+ __FILE__);
|
59
|
}
|
72
|
}
|
60
|
}
|
73
|
}
|
61
|
|
74
|
|
|
|
|
|
76
|
|
89
|
|
77
|
void main_second_animator_init(void) {
|
90
|
void main_second_animator_init(void) {
|
78
|
blockset_two_current_frame = 0;
|
91
|
blockset_two_current_frame = 0;
|
79
|
- blockset_two_max_frame = 0x3C0;
|
|
|
|
|
92
|
+ blockset_two_max_frame = 0x3624;
|
80
|
blockset_two_animator = main_second_animator;
|
93
|
blockset_two_animator = main_second_animator;
|
81
|
|
94
|
|
82
|
for (int i = 0; i < NUM_MAX_ANIMATIONS; i++) {
|
95
|
for (int i = 0; i < NUM_MAX_ANIMATIONS; i++) {
|