ENTRY(Start)

gNumMusicPlayers = 4;
gMaxLines = 60;

SECTIONS {
    . = 0x2020000;

    ewram (NOLOAD) :
    ALIGN(4)
    {
    }

    . = 0x3000000;

    iwram (NOLOAD) :
    ALIGN(4)
    {
        . = 0x1A80;
        tools/agbcc/lib/libgcc.a:dp-bit.o(.bss);
        tools/agbcc/lib/libgcc.a:fp-bit.o(.bss);
    }

    . = 0x8000000;

    .text :
    ALIGN(4)
    {
        asm/crt0.o(.text);
        asm/main.o(.text);
        src/malloc.o(.text);
        asm/dma3_manager.o(.text);
        src/gpu_regs.o(.text);
        asm/gpu_bg.o(.text);
        asm/pixel_buffer.o(.text);
        asm/window.o(.text);
        asm/text_renderer.o(.text);
        asm/gpu_obj.o(.text);
        asm/string_util.o(.text);
        asm/rom_80093CC.o(.text);
        asm/rtc.o(.text);
        asm/main_menu.o(.text);
        asm/rom_8032654.o(.text);
        asm/tileset_animation.o(.text);
        asm/rom_80A18F4.o(.text);
        asm/task.o(.text);
        asm/rom_80A92F4.o(.text);
        asm/multiboot.o(.text);
        asm/rom_81BAD84.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/contest_ai_scripts.o(script_data);
        data/script_funcs.o(script_data);
    } =0

    lib_text :
    ALIGN(4)
    {
        asm/libgcnmultiboot.o(.text);
        asm/libmks4agb.o(.text);
        asm/libagbbackup.o(.text);
        asm/librtc.o(.text);
        asm/librfu.o(.text);
        asm/libagbsyscall.o(.text);
        tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text);
        tools/agbcc/lib/libgcc.a:_divdi3.o(.text);
        tools/agbcc/lib/libgcc.a:_divsi3.o(.text);
        tools/agbcc/lib/libgcc.a:_dvmd_tls.o(.text);
        tools/agbcc/lib/libgcc.a:_fixunsdfsi.o(.text);
        tools/agbcc/lib/libgcc.a:_fixunssfsi.o(.text);
        tools/agbcc/lib/libgcc.a:_modsi3.o(.text);
        tools/agbcc/lib/libgcc.a:_muldi3.o(.text);
        tools/agbcc/lib/libgcc.a:_udivdi3.o(.text);
        tools/agbcc/lib/libgcc.a:_udivsi3.o(.text);
        tools/agbcc/lib/libgcc.a:_umodsi3.o(.text);
        tools/agbcc/lib/libgcc.a:dp-bit.o(.text);
        tools/agbcc/lib/libgcc.a:fp-bit.o(.text);
        tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text);
        tools/agbcc/lib/libgcc.a:_negdi2.o(.text);
        asm/libc.o(.text);
    } =0

    .rodata :
    ALIGN(4)
    {
        data/data2.o(.rodata);
        data/m4a_tables.o(.rodata);
        data/sound_data.o(.rodata);
    } =0

    lib_rodata :
    ALIGN(4)
    {
        data/libagbbackup_rodata.o(.rodata);
        data/librtc_rodata.o(.rodata);
        data/librfu_rodata.o(.rodata);
        tools/agbcc/lib/libgcc.a:_divdi3.o(.rodata);
        tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata);
    } =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(0x00)
        . = 0x8B00000 - gap1_start;
    } =0

    anim_mon_front_pic_data :
    ALIGN(4)
    {
        data/anim_mon_front_pics.o(anim_mon_front_pic_data);
    } =0

    gap2 :
    {
        gap2_start = ABSOLUTE(.);
        BYTE(0x00)
        . = 0x8C00000 - gap2_start;
    } =0

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

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