| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <pokeagb/pokeagb.h>
-
- #define CPUFSCPY 0
- #define CPUFSSET 1
- #define CPUModeFS(size, mode) ((size >> 2) | (mode << 24))
-
- const struct BgConfig scene_default_config[4] = {
- {
- .padding = 0,
- .b_padding = 0,
- .priority = 0,
- .palette = 0,
- .size = 0,
- .map_base = 29,
- .character_base = 0,
- .bgid = 0,
- },
- {
- .padding = 0,
- .b_padding = 0,
- .priority = 1,
- .palette = 0,
- .size = 0,
- .map_base = 28,
- .character_base = 0,
- .bgid = 1,
- },
- {
- .padding = 0,
- .b_padding = 0,
- .priority = 2,
- .palette = 0,
- .size = 0,
- .map_base = 30,
- .character_base = 3,
- .bgid = 2,
- },
- {
- .padding = 0,
- .b_padding = 0,
- .priority = 3,
- .palette = 0,
- .size = 1,
- .map_base = 31,
- .character_base = 3,
- .bgid = 3,
- },
- };
-
- const struct TextColor scene_default_text_color = {0, 1, 2};
-
- void scene_default_cb_handler(void) {
- if (pal_fade_control.active)
- process_palfade();
- else {
- task_exec();
- objc_exec();
- obj_sync_superstate();
- tilemaps_sync();
- remoboxes_upload_tilesets();
- rboxid_update_tilemap_and_tileset(0);
- }
- }
-
- void scene_free_bg_maps(void) {
- for (u8 i = 0; i < 3; ++i) {
- void *tmap = bgid_get_tilemap(i);
- if (tmap != NULL) {
- free(tmap);
- bgid_nullify_tilemap(i);
- }
- }
- }
-
- void scene_vram_init(SuperCallback vblank_handler, const struct BgConfig* config) {
- vblank_handler_set(NULL);
- pal_fade_control_and_dead_struct_reset();
- gpu_tile_bg_drop_all_sets(true);
- obj_and_aux_reset_all();
- gpu_tile_obj_tags_reset();
- gpu_pal_allocator_reset();
- rboxes_free();
- tasks_init();
- bg_vram_setup(0, config, 4);
- u32 set = 0;
- CpuFastSet((void *)&set, (void *)0x06000000, CPUModeFS(0x10000, CPUFSSET));
-
- bgid_mod_x_offset(0, 0, 0);
- bgid_mod_y_offset(0, 0, 0);
- bgid_mod_x_offset(1, 0, 0);
- bgid_mod_y_offset(1, 0, 0);
- bgid_mod_x_offset(2, 0, 0);
- bgid_mod_y_offset(2, 0, 0);
- bgid_mod_x_offset(3, 0, 0);
- bgid_mod_y_offset(3, 0, 0);
-
- vblank_handler_set(vblank_handler);
- interrupts_enable(INTERRUPT_VBLANK);
- }
|