ENTRY(Start)

gNumMusicPlayers = 4;
gMaxLines = 0;

SECTIONS {
    . = 0x2000000;

    ewram (NOLOAD) :
    ALIGN(4)
    {
        gHeap = .;

        . = 0x1C000;

<EWRAM>

        *libc.a:impure.o(.data);
        *libc.a:locale.o(.data);
        *libc.a:mallocr.o(.data);
        . = 0x40000;
    }

    . = 0x3000000;

    iwram (NOLOAD) :
    ALIGN(4)
    {
        /* .bss starts at 0x3000000 */
<BSS>

        /* .bss.code starts at 0x30028E0 */
        src/m4a_2.o(.bss.code);

        /* COMMON starts at 0x30030E0 */
<COMMON>

        *libc.a:sbrkr.o(COMMON);
        end = .;

        . = 0x8000;
    }

    . = 0x8000000;

    .text :
    ALIGN(4)
    {
        asm/crt0.o(.text);
        src/main.o(.text);
        src/gpu_regs.o(.text);
        src/dma3_manager.o(.text);
        src/bg.o(.text);
        src/malloc.o(.text);
        src/text_printer.o(.text);
        asm/text_printer.o(.text);
        src/window.o(.text);
        asm/blit.o(.text);
        src/window_8bpp.o(.text);
        src/text.o(.text);
        src/sprite.o(.text);
        src/string_util.o(.text);
        asm/link.o(.text);
        asm/multiboot.o(.text);
        asm/main_menu.o(.text);
        asm/battle_controllers.o(.text);
        asm/decompress.o(.text);
        asm/battle_1.o(.text);
        asm/battle_2.o(.text);
        asm/battle_util.o(.text);
        asm/battle_script_commands.o(.text);
        asm/battle_util2.o(.text);
        asm/battle_controller_player.o(.text);
        asm/battle_gfx_sfx_util.o(.text);
        asm/battle_controller_opponent.o(.text);
        asm/battle_ai_switch_items.o(.text);
        asm/battle_controller_link_opponent.o(.text);
        src/pokemon.o(.text);
        asm/pokemon_3.o(.text);
        asm/trig.o(.text);
        src/random.o(.text);
        asm/util.o(.text);
        asm/blend_palette.o(.text);
        asm/daycare.o(.text);
        asm/egg_hatch.o(.text);
        asm/battle_interface.o(.text);
        asm/smokescreen.o(.text);
        asm/pokeball.o(.text);
        src/load_save.o(.text);
        asm/trade.o(.text);
        asm/play_time.o(.text);
        asm/new_game.o(.text);
        asm/overworld.o(.text);
        asm/fieldmap.o(.text);
        asm/metatile_behavior.o(.text);
        asm/field_camera.o(.text);
        asm/field_door.o(.text);
        asm/field_player_avatar.o(.text);
        asm/field_map_obj.o(.text);
        asm/field_ground_effect.o(.text);
        asm/map_obj_80688E4.o(.text);
        asm/field_message_box.o(.text);
        asm/map_obj_lock.o(.text);
        asm/text_window_graphics.o(.text);
        src/script.o(.text);
        asm/scrcmd.o(.text);
        asm/field_control_avatar.o(.text);
        asm/event_data.o(.text);
        asm/coord_event_weather.o(.text);
        asm/field_tasks.o(.text);
        asm/start_menu.o(.text);
        asm/tileset_anims.o(.text);
        asm/palette.o(.text);
        src/sound.o(.text);
        asm/battle_anim.o(.text);
        asm/battle_anim_8074480.o(.text);
        src/task.o(.text);
        asm/reshow_battle_screen.o(.text);
        asm/battle_anim_8078178.o(.text);
        asm/title_screen.o(.text);
        asm/reset_save_heap.o(.text);
        asm/field_weather.o(.text);
        asm/field_weather_effects.o(.text);
        asm/field_fadetransition.o(.text);
        asm/field_screen_effect.o(.text);
        asm/battle_setup.o(.text);
        asm/cable_club.o(.text);
        asm/trainer_see.o(.text);
        asm/wild_encounter.o(.text);
        asm/field_effect.o(.text);
        asm/unknown_task.o(.text);
        asm/option_menu.o(.text);
        asm/pokedex.o(.text);
        asm/trainer_card.o(.text);
        asm/pokemon_storage_system.o(.text);
        asm/pokemon_icon.o(.text);
        asm/script_movement.o(.text);
        asm/fldeff_cut.o(.text);
        asm/mail_data.o(.text);
        asm/map_name_popup.o(.text);
        asm/item_menu_icons.o(.text);
        asm/battle_anim_80989F8.o(.text);
        asm/item.o(.text);
        asm/shop.o(.text);
        asm/berry.o(.text);
        asm/script_menu.o(.text);
        asm/naming_screen.o(.text);
        src/money.o(.text);
        asm/script_pokemon_util_80A0058.o(.text);
        asm/field_poison.o(.text);
        asm/pokemon_size_record.o(.text);
        asm/pc_screen_effect.o(.text);
        asm/fldeff_poison.o(.text);
        asm/fldeff_berrytree.o(.text);
        asm/field_special_scene.o(.text);
        asm/safari_zone.o(.text);
        asm/item_use.o(.text);
        asm/battle_anim_80A22E8.o(.text);
        asm/bike.o(.text);
        asm/easy_chat.o(.text);
        asm/mon_markings.o(.text);
        asm/mail.o(.text);
        asm/menu_helpers.o(.text);
        asm/script_pokemon_util_80BF8FC.o(.text);
        asm/heal_location.o(.text);
        asm/region_map.o(.text);
        src/battle_ai_script_commands.o(.text);
        asm/rom6.o(.text);
        asm/fldeff_flash.o(.text);
        asm/post_battle_event_funcs.o(.text);
        asm/prof_pc.o(.text);
        asm/hof_pc.o(.text);
        asm/field_specials.o(.text);
        asm/battle_records.o(.text);
        asm/evolution_scene.o(.text);
        src/coins.o(.text);
        asm/fldeff_strength.o(.text);
        asm/battle_transition.o(.text);
        asm/battle_controller_link_partner.o(.text);
        asm/battle_message.o(.text);
        src/math_util.o(.text);
        asm/roulette_util.o(.text);
        asm/cable_car_util.o(.text);
        src/save.o(.text);
        asm/mystery_event_script.o(.text);
        asm/field_effect_helpers.o(.text);
        asm/battle_anim_sound_tasks.o(.text);
        asm/battle_controller_safari.o(.text);
        asm/fldeff_sweetscent.o(.text);
        asm/battle_anim_80DE2C0.o(.text);
        asm/learn_move.o(.text);
        asm/fldeff_softboiled.o(.text);
        asm/battle_tower.o(.text);
        asm/battle_controller_oak.o(.text);
        asm/player_pc.o(.text);
        asm/intro.o(.text);
        asm/battle_anim_80EEC0C.o(.text);
        asm/hall_of_fame.o(.text);
        asm/credits.o(.text);
        asm/diploma.o(.text);
        asm/save_failed_screen.o(.text);
        asm/clear_save_data_screen.o(.text);
        asm/evolution_graphics.o(.text);
        asm/fldeff_teleport.o(.text);
        asm/new_menu_helpers.o(.text);
        asm/box_party_pokemon_dropdown.o(.text);
        asm/save_menu_util.o(.text);
        asm/map_preview_screen.o(.text);
        asm/link_rfu_2.o(.text);
        asm/link_rfu.o(.text);
        asm/pokedex_screen.o(.text);
        asm/list_menu.o(.text);
        asm/item_menu.o(.text);
        asm/save_location.o(.text);
        asm/bag.o(.text);
        asm/battle_dome_cards.o(.text);
        asm/unk_810C3A4.o(.text);
        asm/vs_seeker.o(.text);
        asm/item_pc.o(.text);
        asm/mailbox_pc.o(.text);
        asm/menu.o(.text);
        src/quest_log.o(.text);
        asm/quest_log.o(.text);
        asm/link_rfu_3.o(.text);
        asm/pokemon_special_anim.o(.text);
        asm/party_menu.o(.text);
        asm/union_room_chat.o(.text);
        asm/help_system_812B1E0.o(.text);
        asm/quest_log_battle.o(.text);
        asm/fame_checker.o(.text);
        asm/menu2.o(.text);
        asm/oak_speech.o(.text);
        asm/tm_case.o(.text);
        asm/menu_indicators.o(.text);
        asm/pokedex_area_markers.o(.text);
        asm/pokemon_summary_screen.o(.text);
        asm/help_system.o(.text);
        asm/wild_pokemon_area.o(.text);
        asm/unk_text_util.o(.text);
        asm/berry_pouch.o(.text);
        asm/itemfinder.o(.text);
        asm/buy_menu_helpers.o(.text);
        asm/slot_machine.o(.text);
        asm/roamer.o(.text);
        asm/mystery_gift_menu.o(.text);
        asm/link_rfu_4.o(.text);
        asm/mevent.o(.text);
        asm/mevent_server.o(.text);
        asm/mevent_8145654.o(.text);
        src/menews_jisan.o(.text);
        asm/seagallop.o(.text);
        asm/unk_8147500.o(.text);
        asm/unk_8147AA8.o(.text);
        asm/unk_814B6F0.o(.text);
        asm/unk_814BB4C.o(.text);
        asm/unk_814D5C8.o(.text);
        asm/wireless_communication_status_screen.o(.text);
        asm/braille_text.o(.text);
        asm/text_window.o(.text);
        asm/quest_log_8150454.o(.text);
        asm/unk_81507FC.o(.text);
        asm/battle_controller_pokedude.o(.text);
        asm/unk_8159F40.o(.text);
        asm/teachy_tv.o(.text);
        asm/unk_815C27C.o(.text);
        asm/unk_815C980.o(.text);
        asm/ss_anne.o(.text);
        asm/cereader_tool.o(.text);
        asm/trainer_tower.o(.text);
        asm/unk_815EDDC.o(.text);
        asm/unk_815F138.o(.text);
        asm/berry_fix_program.o(.text);
    } =0

    script_data :
    ALIGN(4)
    {
        data/event_scripts.o(script_data);
        data/battle_anim_scripts.o(script_data);
        data/battle_scripts_1.o(script_data);
        data/field_effect_scripts.o(script_data);
        data/battle_scripts_2.o(script_data);
        data/battle_ai_scripts.o(script_data);
        data/mystery_event_script_cmd_table.o(script_data);
    } =0

    lib_text :
    ALIGN(4)
    {
        asm/libgcnmultiboot.o(.text);
        asm/m4a_1.o(.text);
        src/m4a_2.o(.text);
        asm/m4a_3.o(.text);
        src/m4a_4.o(.text);
        src/agb_flash.o(.text);
        src/agb_flash_1m.o(.text);
        src/agb_flash_mx.o(.text);
        src/agb_flash_le.o(.text);
        asm/librfu.o(.text);
        src/isagbprn.o(.text);
        asm/libagbsyscall.o(.text);
        *libgcc.a:_call_via_rX.o(.text);
        *libgcc.a:_divdi3.o(.text);
        *libgcc.a:_divsi3.o(.text);
        *libgcc.a:_dvmd_tls.o(.text);
        *libgcc.a:_fixunsdfsi.o(.text);
        *libgcc.a:_modsi3.o(.text);
        *libgcc.a:_muldi3.o(.text);
        *libgcc.a:_udivdi3.o(.text);
        *libgcc.a:_udivsi3.o(.text);
        *libgcc.a:_umodsi3.o(.text);
        *libgcc.a:dp-bit.o(.text);
        *libgcc.a:fp-bit.o(.text);
        *libgcc.a:_lshrdi3.o(.text);
        *libgcc.a:_negdi2.o(.text);
        *libc.a:memcpy.o(.text);
        *libc.a:memset.o(.text);
        *libc.a:strcmp.o(.text);
        *libc.a:strcpy.o(.text);
        *libc.a:impure.o(.text);
        *libc.a:vsprintf.o(.text);
        *libc.a:vfprintf.o(.text);
        *libc.a:wsetup.o(.text);
        *libc.a:dtoa.o(.text);
        *libc.a:fflush.o(.text);
        *libc.a:findfp.o(.text);
        *libc.a:freer.o(.text);
        *libc.a:mtrim.o(.text);
        *libc.a:fvwrite.o(.text);
        *libc.a:fwalk.o(.text);
        *libc.a:locale.o(.text);
        *libc.a:makebuf.o(.text);
        *libc.a:mallocr.o(.text);
        *libc.a:mbtowc_r.o(.text);
        *libc.a:memchr.o(.text);
        *libc.a:memmove.o(.text);
        *libc.a:mlock.o(.text);
        *libc.a:mprec.o(.text);
        *libc.a:s_isinf.o(.text);
        *libc.a:s_isnan.o(.text);
        *libc.a:sbrkr.o(.text);
        *libc.a:stdio.o(.text);
        *libc.a:strlen.o(.text);
        *libc.a:syscalls.o(.text);
        *libc.a:writer.o(.text);
        *libc.a:callocr.o(.text);
        *libc.a:closer.o(.text);
        *libc.a:errno.o(.text);
        *libc.a:fstatr.o(.text);
        *libc.a:libcfunc.o(.text);
        *libc.a:lseekr.o(.text);
        *libc.a:readr.o(.text);
    } =0

    .rodata :
    ALIGN(4)
    {
        src/main.o(.rodata);
        src/bg.o(.rodata);
        src/malloc.o(.rodata);
        src/text_printer.o(.rodata);
        src/window.o(.rodata);
        src/text.o(.rodata);
        src/sprite.o(.rodata);
        src/bg_regs.o(.rodata);
        src/string_util.o(.rodata);
        data/data.o(.rodata);
        src/battle_ai_script_commands.o(.rodata);
        data/data_83F5738.o(.rodata);
        src/save.o(.rodata);
        data/data_83FECCC.o(.rodata);
        src/quest_log.o(.rodata);
        data/quest_log.o(.rodata);
        data/data_83FECCC.o(.rodata.8456C74);
        src/menews_jisan.o(.rodata);
        data/data_8468C98.o(.rodata);
        src/m4a_tables.o(.rodata);
        data/sound_data.o(.rodata);
    } =0

    lib_rodata :
    ALIGN(4)
    {
        src/agb_flash.o(.rodata);
        src/agb_flash_1m.o(.rodata);
        src/agb_flash_mx.o(.rodata);
        src/agb_flash_le.o(.rodata);
        data/librfu_rodata.o(.rodata);
        src/isagbprn.o(.rodata);
        *libgcc.a:_divdi3.o(.rodata);
        *libgcc.a:_udivdi3.o(.rodata);
        *libc.a:memcpy.o(.rodata);
        *libc.a:memset.o(.rodata);
        *libc.a:strcmp.o(.rodata);
        *libc.a:strcpy.o(.rodata);
        *libc.a:impure.o(.rodata);
        *libc.a:vsprintf.o(.rodata);
        *libc.a:vfprintf.o(.rodata);
        *libc.a:wsetup.o(.rodata);
        *libc.a:dtoa.o(.rodata);
        *libc.a:fflush.o(.rodata);
        *libc.a:findfp.o(.rodata);
        *libc.a:freer.o(.rodata);
        *libc.a:mtrim.o(.rodata);
        *libc.a:fvwrite.o(.rodata);
        *libc.a:fwalk.o(.rodata);
        *libc.a:locale.o(.rodata);
        *libc.a:makebuf.o(.rodata);
        *libc.a:mallocr.o(.rodata);
        *libc.a:mbtowc_r.o(.rodata);
        *libc.a:memchr.o(.rodata);
        *libc.a:memmove.o(.rodata);
        *libc.a:mlock.o(.rodata);
        *libc.a:mprec.o(.rodata);
        *libc.a:s_isinf.o(.rodata);
        *libc.a:s_isnan.o(.rodata);
        *libc.a:sbrkr.o(.rodata);
        *libc.a:stdio.o(.rodata);
        *libc.a:strlen.o(.rodata);
        *libc.a:syscalls.o(.rodata);
        *libc.a:writer.o(.rodata);
        *libc.a:callocr.o(.rodata);
        *libc.a:closer.o(.rodata);
        *libc.a:errno.o(.rodata);
        *libc.a:fstatr.o(.rodata);
        *libc.a:libcfunc.o(.rodata);
        *libc.a:lseekr.o(.rodata);
        *libc.a:readr.o(.rodata);

        . = ALIGN(4);
    } =0

    other_data :
    ALIGN(4)
    {
        data/unknown_serial_data.o(.rodata);
        data/multiboot_berry_glitch_fix.o(.rodata);
        data/multiboot_pokemon_colosseum.o(.rodata);
    } =0

    gap1 :
    {
        gap1_start = ABSOLUTE(.);
        BYTE(0xFF)
        . = 0x8D00000 - gap1_start;
    } =0xFF

    gfx_data :
    ALIGN(4)
    {
        data/graphics.o(gfx_data);
    } =0

    /* DWARF 2 sections */
    .debug_aranges  0 : { *(.debug_aranges) }
    .debug_pubnames 0 : { *(.debug_pubnames) }
    .debug_info     0 : { *(.debug_info) }
    .debug_abbrev   0 : { *(.debug_abbrev) }
    .debug_line     0 : { *(.debug_line) }
    .debug_frame    0 : { *(.debug_frame) }
    .debug_str      0 : { *(.debug_str) }
    .debug_loc      0 : { *(.debug_loc) }
    .debug_macinfo  0 : { *(.debug_macinfo) }

    /* Discard everything not specifically mentioned above. */
    /DISCARD/ :
    {
        *(*);
    }
}
