name: Pokemon Stadium (North America)
basename: pokestadium
options:
  compiler: IDO
  symbol_addrs_path: tools/symbol_addrs.txt
  target_path: baserom.z64
  basename: pokestadium
  base_path: .
  ld_script_path: pokestadium.ld
  platform: n64
  ld_legacy_generation: true
segments:
  - name: header
    type: header
    start: 0x00
    vram: 0
    subsegments:
    - [0x0000, header, header]
  - name: boot
    type: code
    start: 0x0040
    vram: 0xA4000040
    subsegments:
    - [0x0040, asm, boot]
    - [0x0B70, bin, bootcode_font]
  - name: text
    type: code
    bss_size: 0x85E30
    start: 0x1000
    vram: 0x80000400
    subsegments:
    - [0x1000, hasm, entry] # bootloader
    - [0x1060, c, main] # rsp graphics
    - [0x11B0, bin, noppad_11B0] # There's an extra nop align here, but cant reproduce it with just splat functionality alone. need a . += 0x10 in the linker script at this spot.
    - [0x11C0, c, rsp] # rsp audio
    - [0x1A80, c, dma] # DMA transfer
    - [0x1F70, bin, noppad_1F70] # Extra nop align like earlier. Weird
    - [0x1F80, c, dp_intro] # dp intro code
    - [0x28E0, c, memmap]
    - [0x2EC0, c, memory_main] # handles the main global pool
    - [0x3640, c, memory] # memory_pool
    - [0x3A80, c, util]
    - [0x3FB0, c] # PRES-JPEG decoder
    - [0x5580, c] # there's a split here according to PAL
    - [0x60A0, c, reset] # soft reset effect
    - [0x6430, c, controller] # controller code
    - [0x6A40, c]
    - [0x6BC0, c] # 
    - [0x75F0, c] # stage loader
    - [0x8EC0, c, crash_screen] # crash handler
    - [0x9D20, c, profiler]
    - [0xAF00, c, math_util]
    - [0xB130, c, hal_libc]
    - [0xB230, c, gb_tower]
    - [0xC030, c] # extra sprites loader
    - [0xC3D0, asm, exception_set] # exception functions
    - [0xC3F0, hasm, yay0] # Yay0 decoder
    - [0xC4A0, hasm, abs] # abs function
    - [0xC4B0, asm, libleo_bootdisk]  # These are libleo's bootdisk and bootstrap files, but
    - [0xC910, hasm, libleo/bootstrap]
    - [0xC970, c]
    - [0xCE80, c] #
    - [0xD470, c] #
    - [0xDDC0, c]
    - [0xE1C0, c]
    - [0xE570, c] #
    - [0xE890, c] #
    - [0x11BA0, c] #  
    - [0x12D80, c] # 
    - [0x17300, c] #
    - [0x18140, c] # dp model animations
    - [0x18480, c] # dp model animations
    - [0x19840, c] # alternative pkm textures
    - [0x1AB70, c] # vs screen code
    - [0x1C720, c] #
    - [0x1CF30, c] # dp list code
    - [0x20330, c] # some cache cleaner
    - [0x20470, c] # dp list for UI and icons
    - [0x225A0, c] #
    - [0x22630, c] # registered pkm stats
    - [0x26820, c] # save data code
    - [0x29BA0, c] # scenary code
    - [0x2C1C0, c] # scenary cache cleaner
    - [0x2D340, c] # pkm lab pc code
    - [0x2E110, c] # stack cleaner
    - [0x2E460, c] # pkm lab pokedex code
    - [0x2FEA0, c] # minigames code
    - [0x30640, c] # gallery code
    - [0x32D10, c]
    - [0x334D0, c]
    - [0x33E30, c]
    - [0x33FE0, c]
    - [0x37370, c]
    - [0x373A0, c]  # battle code
    - [0x38BB0, c]  #
    - [0x3D140, c]  # music code
    - [0x43520, c] # 
    - [0x435B0, c] # 
    - [0x435D0, c]  # pkm lab cries code
    - [0x45720, c]  # music code
    - [0x46680, c]  # speech code
    - [0x47B60, c]  # sound code
    - [0x485C0, c]  # moves code 
    - [0x48C60, c]  # move effects code
    - [0x490A0, c]  # audio functions to 0x50C00
    - [0x49190, bin]
    - [0x49790, c]
    - [0x49BA0, c]
    - [0x49DC0, c]
    - [0x4A360, c]
    - [0x4A3E0, c]
    - [0x4B940, c]
    - [0x4BA90, c]
    - [0x4BDC0, c]
    - [0x4CBC0, c]
    - [0x4F410, c]
    - [0x4F7F0, c]
    - [0x4F870, c]
    - [0x4FDB0, c]
    - [0x4FE60, c]
    - [0x4FF50, c]
    - [0x50120, c]
    - [0x50860, c]
    - [0x50990, c]
    - [0x50A00, c]
    - [0x50C20, c]
    - [0x50CC0, c]
    - [0x517A0, c] # yay0 audio decoder
    - [0x51850, c]
    - [0x518A0, c]
    - [0x51B20, c]
    - [0x51BC0, c, libleo/readwrite]
    - [0x51C50, c, libleo/leofunc]
    - [0x520C0, c, libleo/leoint]
    - [0x52AB0, bin, noppad_52AB0] # again with the weird nop padding.
    - [0x52AC0, c, libleo/leocmdex]
    - [0x53150, c, libleo/leoread]
    - [0x53310, c, libleo/lbatobyte]
    - [0x53460, c, libleo/driverominit]
    - [0x535C0, c, libleo/leoinquiry]
    - [0x53670, c, libleo/leodiskinit]
    - [0x53710, c, libleo/readdiskid]
    - [0x53770, c, libleo/leord_diskid]
    - [0x53900, c, libleo/leomecha]
    - [0x54250, c, libleo/spdlmotor]
    - [0x54310, c, libleo/leoc2ecc]
    - [0x55400, c, libleo/setrtc]
    - [0x55570, c, libleo/leomseq_tbl]
    - [0x55720, c, libleo/leomotor]
    - [0x55810, c, libleo/leomode_sel]
    - [0x558C0, c, libleo/leord_capa]
    - [0x55960, c, libleo/leoutil]
    - [0x55BB0, c, libleo/leorezero]
    - [0x55C50, c, libleo/bytetolba]
    - [0x55DB0, c, libleo/leoreset]
    - [0x55ED0, c, libleo/leotranslat]
    - [0x56170, c, libleo/leotimer]
    - [0x56680, c, libleo/leowrite]
    - [0x567B0, c, libleo/cjcreateleomanager]
    - [0x569F0, c, libleo/leointerrupt]
    - [0x570C0, c, libleo/driveexist]
    - [0x57190, c, libleo/testunitready]
    - [0x57230, c, libleo/leotestunit]
    - [0x57270, c, libleo/readrtc]
    - [0x572D0, c, libleo/leoseek]
    - [0x57390, c, libleo/seek]
    - [0x573F0, c, libultra/io/piacs]
    - [0x574B0, hasm, libultra/os/setcause]
    - [0x574C0, c, libultra/os/sendmesg]
    - [0x57610, c, libultra/os/stopthread]
    - [0x576D0, c, libultra/os/recvmesg]
    - [0x57810, hasm, libultra/os/setintmask]
    - [0x578B0, c, libultra/os/dequeuethread]
    - [0x578F0, c, libultra/gu/scale]
    - [0x57990, c, libultra/gu/sinf]
    - [0x57B50, c, libultra/al/sl]
    - [0x57C10, c, libultra/io/sptask]
    - [0x57F00, c, libultra/os/destroythread]
    - [0x58010, c, libultra/libc/ll]
    - [0x582D0, hasm, libultra/os/exceptasm]
    - [0x58BD0, hasm, libultra/libc/bzero]
    - [0x58C70, c, libultra/al/bnkf]
    - [0x58EC0, c, libultra/io/gbpakcheckconnector]
    - [0x59350, c, libultra/io/gbpakpower]
    - [0x59460, c, libultra/io/controller]
    - [0x597A0, c, libultra/io/siacs]
    - [0x59860, bin, noppad_59860] # again with the weird nop padding.
    - [0x598C0, c, libultra/os/createthread]
    - [0x59A10, c, libultra/io/contreaddata]
    - [0x59BF0, hasm, libultra/os/setcount]
    - [0x59C00, c, libultra/io/conteeplongread]
    - [0x59C90, c, libultra/os/virtualtophysical]
    - [0x59D10, hasm, libultra/os/setsr]
    - [0x59D20, hasm, libultra/os/writebackdcache]
    - [0x59DA0, c, libultra/os/initialize]
    - [0x5A0F0, hasm, libultra/os/getsr]
    - [0x5A100, c, libultra/io/gbpakinit]
    - [0x5A330, c, libultra/io/pfsgetstatus]
    - [0x5A560, c, libultra/al/reverb]
    - [0x5B1C0, c, libultra/gu/perspective]
    - [0x5B450, c, libultra/io/sprawdma]
    - [0x5B4E0, c, libultra/io/sirawdma]
    - [0x5B590, c, libultra/os/epilinkhandle]
    - [0x5B5E0, c, libultra/io/viblack]
    - [0x5B650, c, libultra/io/sirawread]
    - [0x5B6A0, c, libultra/io/sptaskyield]
    - [0x5B6C0, c, libultra/gu/lookatref]
    - [0x5BB50, c, libultra/gu/mtxutil]
    - [0x5BDC0, c, libultra/io/visetmode]
    - [0x5BE30, c, libultra/io/virepeatline]
    - [0x5BEA0, c, libultra/io/pfsisplug]
    - [0x5C1E0, hasm, libultra/os/probetlb]
    - [0x5C2A0, c, libultra/io/pimgr]
    - [0x5C410, bin, noppad_5C410]
    - [0x5C420, c, libultra/io/devmgr]
    - [0x5C830, c, libultra/io/pirawdma]
    - [0x5C900, hasm, libultra/os/osGetCount]
    - [0x5C910, c, libultra/io/conteepprobe]
    - [0x5C980, c, libultra/io/conteepwrite]
    - [0x5CD50, c, libultra/os/getmemsize]
    - [0x5CE70, c, libultra/io/contpfs]
    - [0x5D9F0, c, libultra/os/seteventmesg]
    - [0x5DAB0, c, libultra/gu/sqrtf]
    - [0x5DAC0, c, libultra/os/afterprenmi]
    - [0x5DAE0, c, libultra/gu/mtxcatf]
    - [0x5DCF0, c, libultra/gu/mtxcatl]
    - [0x5DDB0, c, libultra/gu/random]
    - [0x5DDE0, c, libultra/libc/xprintf]
    - [0x5EAA0, c, libultra/io/gbpakgetstatus]
    - [0x5EC20, c, libultra/libc/sprintf]
    - [0x5ECA0, hasm, libultra/os/unmaptlball]
    - [0x5ECF0, c, libultra/io/epidma]
    - [0x5EDD0, c, libultra/al/heapinit]
    - [0x5EE10, c, libultra/libc/syncprintf]
    - [0x5EE50, c, libultra/libc/string]
    - [0x5EEF0, hasm, libultra/os/invalidcache]
    - [0x5EFA0, c, libultra/os/createmesgqueue]
    - [0x5EFD0, hasm, libultra/os/invalicache]
    - [0x5F050, c, libultra/io/conteeplongwrite]
    - [0x5F140, c, libultra/io/sp]
    - [0x5F170, c, libultra/io/si]
    - [0x5F1A0, c, libultra/gu/translate]
    - [0x5F240, c, libultra/os/jammesg]
    - [0x5F390, c, libultra/os/setthreadpri]
    - [0x5F470, c, libultra/os/getthreadpri]
    - [0x5F490, c, libultra/io/epirawread]
    - [0x5F5F0, c, libultra/io/viswapbuf]
    - [0x5F640, c, libultra/io/epirawdma]
    - [0x5F820, c, libultra/io/sptaskyielded]
    - [0x5F8A0, c, libultra/gu/rotateRPY]
    - [0x5FA40, hasm, libultra/libc/bcmp]
    - [0x5FB60, c, libultra/gu/rotate]
    - [0x5FD50, c, libultra/os/gettime]
    - [0x5FDE0, c, libultra/os/timerintr]
    - [0x601E0, c, libultra/al/synthesizer]
    - [0x60860, c, libultra/al/drvrNew]
    - [0x61010, c, libultra/al/mainbus]
    - [0x61160, c, libultra/al/auxbus]
    - [0x61270, c, libultra/al/env]
    - [0x61EF0, c, libultra/al/resample]
    - [0x621F0, c, libultra/al/load]
    - [0x62D40, c, libultra/al/filter]
    - [0x62D60, c, libultra/al/save]
    - [0x62E20, c, libultra/os/setglobalintmask]
    - [0x62E70, c, libultra/io/aisetfreq]
    - [0x62FC0, c, libultra/io/dpctr]
    - [0x63010, c, libultra/os/getactivequeue]
    - [0x63020, c, libultra/gu/normalize]
    - [0x630B0, hasm, libultra/os/setcompare]
    - [0x630C0, c, libultra/io/aigetstat]
    - [0x630D0, c, libultra/io/dpsetstat]
    - [0x630E0, c, libultra/al/copy]
    - [0x63160, hasm, libultra/libc/bcopy]
    - [0x63470, c, libultra/os/resetglobalintmask]
    - [0x634D0, c, libultra/gu/ortho]
    - [0x63690, hasm, libultra/os/interrupt]
    - [0x63720, c, libultra/io/vi]
    - [0x63860, c, libultra/io/viswapcontext]
    - [0x63B60, c, libultra/io/pigetcmdq]
    - [0x63B90, c, libultra/gu/cosf]
    - [0x63D00, c, libultra/io/epiread]
    - [0x63D50, c, libultra/io/visetspecial]
    - [0x63EB0, c, libultra/os/settime]
    - [0x63EE0, c, libultra/io/visetevent]
    - [0x63F50, c, libultra/io/gbpakreadid]
    - [0x64110, c, libultra/io/cartrominit]
    - [0x64270, c, libultra/io/pfsselectbank]
    - [0x642F0, hasm, libultra/os/setfpccsr]
    - [0x64300, c, libultra/io/aigetlen]
    - [0x64310, c, libultra/io/epiwrite]
    - [0x64360, hasm, libultra/os/maptlbrdb]
    - [0x643C0, c, libultra/os/yieldthread]
    - [0x64410, c, libultra/io/contramwrite]
    - [0x64660, c, libultra/io/contramread]
    - [0x64890, c, libultra/io/crc]
    - [0x64A00, hasm, libultra/os/__osGetCause]
    - [0x64A10, c, libultra/io/epirawwrite]
    - [0x64B70, c, libultra/os/settimer]
    - [0x64C50, c, libultra/libc/xldtob]
    - [0x65710, c, libultra/libc/ldiv]
    - [0x658A0, c, libultra/libc/xlitob]
    - [0x65B40, c, libultra/io/sirawwrite]
    - [0x65B90, c, libultra/io/spsetstat]
    - [0x65BA0, c, libultra/io/spgetstat]
    - [0x65BB0, bin, noppad_65BB0]
    - [0x65BC0, c, libultra/io/vimgr]
    - [0x65ED0, c, libultra/io/vigetcurrcontext]
    - [0x65EE0, hasm, libultra/os/writebackdcacheall]
    - [0x65F10, c, libultra/al/heapalloc]
    - [0x65F70, c, libultra/os/startthread]
    - [0x660C0, c, libultra/io/visetxscale]
    - [0x661F0, c, libultra/io/visetyscale]
    - [0x66250, c, libultra/libc/llcvt]
    - [0x66460, c, libultra/al/synallocfx]
    - [0x66500, c, libultra/al/syndelete]
    - [0x66510, c, libultra/io/gbpakreadwrite]
    - [0x666D0, c, libultra/io/gbpakselectbank]
    - [0x667A0, c, libultra/io/aisetnextbuf]
    - [0x66850, c, libultra/io/ai]
    - [0x66880, c, libultra/io/conteepread]
    - [0x66AD0, c, libultra/io/vigetcurrframebuf]
    - [0x66B10, c, libultra/io/spsetpc]
    - [0x66B50, c, libultra/os/sethwinterrupt]
    #- [0x66BC0, asm]
    - [0x66BC0, bin]
    - [0x66C90, bin, F3DEX2]
    - [0x68020, bin] # rest of rom part 1
    
    # .data is somewhere in here
    - [0x69790, .data, util]
    - [0x697A0, bin, rom_data_697A0]
    - [0x6A1B0, .data, crash_screen]
    - [0x6A3B0, .data, profiler]
    - [0x6A3D0, .data, gb_tower]
    - [0x6A3E0, data, rom_data_6A3E0]
    - [0x6A3F0, .data, math_util]
    - [0x6FC00, data, rom_data_6FC00]
    - [0x7A180, .data, libleo/driverominit]
    - [0x7A190, data, rom_data_7A190]
    - [0x7A2A0, .data, libultra/os/initialize]
    - [0x7A2C0, .data, libultra/al/reverb]
    - [0x7A2E0, data, rom_data_7A2E0]
    - [0x7B550, .data, libultra/gu/random]
    - [0x7B560, .data, libultra/libc/xprintf]
    - [0x7B5B0, .data, libultra/os/timerintr]
    - [0x7B5C0, .data, libultra/al/drvrNew]
    - [0x7B750, .data, libultra/al/env]
    - [0x7B890, .data, libultra/io/vi]
    - [0x7B900, data, rom_data_7B900]
    - [0x7B9F0, .data, libultra/io/gbpakreadid]
    - [0x7BA40, .data, libultra/io/cartrominit]
    - [0x7BA50, data, rom_data_7BA50]
    - [0x7BA60, .data, libultra/libc/xlitob]
    - [0x7BA90, .data, libultra/io/vimgr]
    - [0x7BAB0, .data, libultra/io/aisetnextbuf]
    - [0x7BAC0, data, rom_data_7BAC0]
    
    # Start of .rodata
    - [0x7BAC0, .rodata, rsp]
    - [0x7BB10, rodata]
    - [0x7BB20, .rodata, util]
    - [0x7BB50, rodata]
    - [0x7BBE0, .rodata, crash_screen]
    - [0x7BFA0, .rodata, profiler]
    - [0x7BFC0, .rodata, gb_tower]
    - [0x7C000, rodata, rom_rodata_7C000]
    - [0x7C180, rodata, rom_rodata_7C180]
    - [0x7C190, rodata, rom_rodata_7C190]
    - [0x7CCA0, rodata, rom_rodata_7CCA0]
    - [0x7CD10, rodata, rom_rodata_7CD10]
    - [0x7CD40, rodata, rom_rodata_7CD40]
    - [0x7CEC0, rodata, rom_rodata_7CEC0]
    - [0x7CFD0, rodata, rom_rodata_7CFD0]
    - [0x7D030, rodata, rom_rodata_7D030]
    - [0x7D040, rodata, rom_rodata_7D040]
    - [0x7D0F0, rodata, rom_rodata_7D0F0]
    - [0x7D110, rodata, rom_rodata_7D110]
    - [0x7D1B0, rodata, rom_rodata_7D1B0]
    - [0x7D230, rodata, rom_rodata_7D230]
    - [0x7D340, rodata, rom_rodata_7D340]
    - [0x7D3E0, rodata, rom_rodata_7D3E0]
    - [0x7D880, rodata, rom_rodata_7D880]
    - [0x7DF80, rodata, rom_rodata_7DF80]
    - [0x7DFD0, rodata, rom_rodata_7DFD0]
    - [0x7E0D0, rodata, rom_rodata_7E0D0]
    - [0x7E0E0, rodata, rom_rodata_7E0E0]
    - [0x7E110, rodata, rom_rodata_7E110]
    - [0x7E2F0, rodata, rom_rodata_7E2F0]
    - [0x7E560, rodata, rom_rodata_7E560]
    - [0x7E5D0, rodata, rom_rodata_7E5D0]
    - [0x7E600, rodata, rom_rodata_7E600]
    - [0x7E630, .rodata, libleo/leofunc]
    - [0x7E640, .rodata, libleo/leocmdex]
    - [0x7E6F0, rodata, rom_rodata_7E6F0]
    - [0x7E700, .rodata, libleo/leomecha]
    - [0x7E770, .rodata, libleo/leo_tbl]
    - [0x7E950, .rodata, libleo/leoc2ecc]
    - [0x7ED70, .rodata, libleo/leomseq_tbl]
    - [0x7EDF0, .rodata, libleo/leotimer]
    - [0x7EE10, rodata, rom_rodata_7EE10]
    - [0x7EE90, .rodata, libultra/gu/sinf]
    - [0x7EEE0, rodata, rom_rodata_7EEE0]
    - [0x7EF30, .rodata, libultra/al/reverb]
    - [0x7EF60, .rodata, libultra/gu/perspective]
    - [0x7EF70, .rodata, libultra/io/devmgr]
    - [0x7EF90, .rodata, libultra/libc/xprintf]
    - [0x7F090, .rodata, libultra/gu/rotateRPY]
    - [0x7F0A0, .rodata, libultra/gu/rotate]
    - [0x7F0B0, .rodata, libultra/al/synthesizer]
    - [0x7F0C0, .rodata, libultra/al/drvrNew]
    - [0x7F0E0, .rodata, libultra/al/env]
    - [0x7F130, .rodata, libultra/al/resample]
    - [0x7F180, .rodata, libultra/gu/cosf]
    - [0x7F1D0, rodata, rom_rodata_7F1D0]
    - [0x7F1E0, .rodata, libultra/libc/xldtob]
    - [0x7F240, .rodata, libultra/libc/llcvt]
    - [0x7F250, bin, F3DEX2_data] # F3DEX2 data
    - [0x7F670, bin, unk_bin_7F670]
    - [0x7F980]
    
    # .bss
    - {vram: 0x8007F190, type: .bss, name: main}
    - {vram: 0x80081900, type: .bss, name: rsp}
    - {vram: 0x80083CA0, type:  bss, name: unk_bss}
    - {vram: 0x800A6070, type: .bss, name: memory_main}
    - {vram: 0x800A60B0, type:  bss, name: unk_bss_4}
    - {vram: 0x800A7320, type: .bss, name: controller}
    - {vram: 0x800A7420, type:  bss, name: unk_bss_3}
    - {vram: 0x800A74C0, type: .bss, name: crash_screen}
    - {vram: 0x800A7EA0, type: .bss, name: profiler}
    - {vram: 0x800A8100, type:  bss, name: unk_bss_2}
    - {vram: 0x80100740, type: .bss, name: libleo/driverominit}
    - {vram: 0x801007C0, type:  bss, name: unk_bss_5}
    - {vram: 0x80101090, type: .bss, name: libleo/leomseq_tbl}
    - {vram: 0x801010D0, type:  bss, name: unk_bss_6}
    - {vram: 0x80103880, type: .bss, name: libultra/gu/rotate}
    - {vram: 0x80103890, type: .bss, name: libultra/os/timerintr}
    - {vram: 0x801038E4, type: .bss, name: libultra/io/cartrominit}
    - {vram: 0x80103950, type: .bss, name: libultra/io/vimgr}
    - {vram: 0x80104b70, type: .bss, name: libultra/io/conteepread}
  - [0x7F980]

  - name: heap
    type: code
    bss_size: 0x0 # This heap extends to the end of RAM.
    start: 0x7F980
    vram: 0x80104BB0
    subsegments:
    # .bss
    - {vram: 0x80104BB0, type: .bss, name: heap}
  - [0x7F980]
    
  # Probably the GB Tower Emulator. This fragment is built very strangely.
  - name: fragment1
    type: code
    bss_size: 0x0
    start: 0x7F980
    vram: 0x81200000
    subsegments:
    - [0x7F980,  hasm,   fragments/1/fragment1_header]
    - [0x7F9A0,  c,      fragments/1/fragment1_code]
    - [0x89020,  hasm,   fragments/1/fragment1_code_asm]
    - [0x8D1A0,  data,   fragments/1/fragment1_data]
    - [0xA8E80,  rodata, fragments/1/fragment1_rodata]
    - [0xAAB60,  bin,    fragments/1/fragment1_relocs]
    
  - name: fragment1_misc_yay0
    type: code
    bss_size: 0x0
    start: 0xADC80
    vram: 0x81800000 # unknown VRAM, need a value here to stop linker complaints
    subsegments:
    - [0xADC80,  bin,    fragments/1/fragment1_yay0_0]
    - [0xF4920,  bin,    fragments/1/fragment1_yay0_1]
    - [0xF5450,  bin,    fragments/1/fragment1_yay0_2]
    - [0xFDE40,  bin,    fragments/1/fragment1_yay0_3]
    - [0x102BA0, bin,    fragments/1/fragment1_yay0_4]

# text code
  - name: fragment2
    type: code
    bss_size: 0x0
    start: 0x107FA0
    vram: 0x87800000
    subsegments:
    - [0x107FA0, hasm,   fragments/2/fragment2_header]
    - [0x107FC0, c,      fragments/2/fragment2_code]
    - [0x10E2D0, data,   fragments/2/fragment2_data]
    - [0x117850, rodata, fragments/2/fragment2_rodata]
    - [0x1179C0, bin,    fragments/2/fragment2_relocs]

 # model animation code   
  - name: fragment3
    type: code
    bss_size: 0x0
    start: 0x118990
    vram: 0x87900000
    subsegments:
    - [0x118990, hasm,   fragments/3/fragment3_header]
    - [0x1189B0, c,      fragments/3/fragment3_code]
    - [0x11C730, data,   fragments/3/fragment3_data]
    - [0x11E810, rodata, fragments/3/fragment3_rodata]
    - [0x11E9D0, bin,    fragments/3/fragment3_reloc]

# MINIGAMES unknown code placed but not executed
  - name: fragment4
    type: code
    bss_size: 0x0
    start: 0x11F560
    vram: 0x87A00000
    subsegments:
    - [0x11F560, hasm, fragments/4/fragment4_header]
    - [0x11F580, c,    fragments/4/fragment4_code]
    - [0x120670, data, fragments/4/fragment4_data]
    - [0x120860, bin,  fragments/4/fragment4_reloc]

# DROWZEE MINIGAME unknown code placed but not executed, might be something about other controllers
  - name: fragment5
    type: code
    bss_size: 0x0
    start: 0x120920
    vram: 0x87B00000 # unknown. we dont actually know this fragment's vaddr yet, but we need a unique vaddr so the linker doesnt complain. Might be an unused fragment, as it's very very small, and seems to only poll the controller.
    subsegments:
    - [0x120920, hasm, fragments/5/fragment5_header]
    - [0x120940, c,    fragments/5/fragment5_code]
    - [0x1209E0, data, fragments/5/fragment5_data]
    - [0x120A00, bin,  fragments/5/fragment5_reloc]

# magikarp minigame code
  - name: fragment6
    type: code
    bss_size: 0x0
    start: 0x120A10
    vram: 0x86000000
    subsegments:
    - [0x120A10, hasm,   fragments/6/fragment6_header]
    - [0x120A30, c,      fragments/6/fragment6_code]
    - [0x123330, data,   fragments/6/fragment6_data]
    - [0x123890, rodata, fragments/6/fragment6_rodata]
    - [0x123940, bin,    fragments/6/fragment6_reloc]

# clefairy minigame code
  - name: fragment7
    type: code
    bss_size: 0x0
    start: 0x1278D0
    vram: 0x86100000
    subsegments:
    - [0x1278D0, hasm,   fragments/7/fragment7_header]
    - [0x1278F0, c,      fragments/7/fragment7_code]
    - [0x12BF10, data,   fragments/7/fragment7_data]
    - [0x12CC90, rodata, fragments/7/fragment7_rodata]
    - [0x12CD50, bin,    fragments/7/fragment7_reloc]

# rattata minigame code
  - name: fragment8
    type: code
    bss_size: 0x0
    start: 0x12DF40
    vram: 0x86200000
    subsegments:
    - [0x12DF40, hasm,   fragments/8/fragment8_header]
    - [0x12DF60, c,      fragments/8/fragment8_code]
    - [0x131800, data,   fragments/8/fragment8_data]
    - [0x131AE0, rodata, fragments/8/fragment8_rodata]
    - [0x131D70, bin,    fragments/8/fragment8_reloc]

  - name: fragment9
    type: code
    bss_size: 0x0
    start: 0x1329E0
    vram: 0x86300000
    subsegments:
    - [0x1329E0, hasm,   fragments/9/fragment9_header]
    - [0x132A00, c,      fragments/9/fragment9_code]
    - [0x133FE0, data,   fragments/9/fragment9_data]
    - [0x1340A0, rodata, fragments/9/fragment9_rodata]
    - [0x1340F0, bin,    fragments/9/fragment9_reloc]

# drowzee minigame code
  - name: fragment10
    type: code
    bss_size: 0x0
    start: 0x134680
    vram: 0x86400000
    subsegments:
    - [0x134680, hasm,   fragments/10/fragment10_header]
    - [0x1346A0, c,      fragments/10/fragment10_code]
    - [0x136E40, data,   fragments/10/fragment10_data]
    - [0x1386F0, bin,    fragments/10/fragment10_reloc]

# pikachu minigame code
  - name: fragment11
    type: code
    bss_size: 0x0
    start: 0x138F20
    vram: 0x86500000
    subsegments:
    - [0x138F20, hasm,   fragments/11/fragment11_header]
    - [0x138F40, c,      fragments/11/fragment11_code]
    - [0x13BB40, data,   fragments/11/fragment11_data]
    - [0x142170, rodata, fragments/11/fragment11_rodata]
    - [0x142200, bin,    fragments/11/fragment11_reloc]

# transfer pak error code
  - name: fragment12
    type: code
    bss_size: 0x0
    start: 0x142B10
    vram: 0x86600000
    subsegments:
    - [0x142B10, hasm,   fragments/12/fragment12_header]
    - [0x142B30, c,      fragments/12/fragment12_code]
    - [0x143360, data,   fragments/12/fragment12_data]
    - [0x143400, rodata, fragments/12/fragment12_rodata]
    - [0x143450, bin,    fragments/12/fragment12_reloc]

  - name: fragment13
    type: code
    bss_size: 0x0
    start: 0x143700
    vram: 0x86700000
    subsegments:
    - [0x143700, hasm,   fragments/13/fragment13_header]
    - [0x143720, c,      fragments/13/fragment13_code]
    - [0x143F40, data,   fragments/13/fragment13_data]
    - [0x143FE0, rodata, fragments/13/fragment13_rodata]
    - [0x144030, bin,    fragments/13/fragment13_reloc]

# lickitung minigame code
  - name: fragment14
    type: code
    bss_size: 0x0
    start: 0x1442E0
    vram: 0x86800000
    subsegments:
    - [0x1442E0, hasm,   fragments/14/fragment14_header]
    - [0x144300, c,      fragments/14/fragment14_code]
    - [0x14AFB0, data,   fragments/14/fragment14_data]
    - [0x14B660, rodata, fragments/14/fragment14_rodata]
    - [0x14B7E0, bin,    fragments/14/fragment14_reloc]

# gallery camera code
  - name: fragment15
    type: code
    bss_size: 0x0
    start: 0x14CA50
    vram: 0x86900000
    subsegments:
    - [0x14CA50, hasm,   fragments/15/fragment15_header]
    - [0x14CA70, c,      fragments/15/fragment15_code]
    - [0x1554D0, data,   fragments/15/fragment15_data]
    - [0x156EB0, rodata, fragments/15/fragment15_rodata]
    - [0x157060, bin,    fragments/15/fragment15_reloc]

# credits loader
  - name: fragment16
    type: code
    bss_size: 0x0
    start: 0x1589E0
    vram: 0x86A00000
    subsegments:
    - [0x1589E0, hasm,   fragments/16/fragment16_header]
    - [0x158A00, c,      fragments/16/fragment16_code]
    - [0x15AF80, data,   fragments/16/fragment16_data]
    - [0x15EB20, rodata, fragments/16/fragment16_rodata]
    - [0x15EB50, bin,    fragments/16/fragment16_reloc]

# stage loader code
  - name: fragment17
    type: code
    bss_size: 0x0
    start: 0x15F990
    vram: 0x86B00000
    subsegments:
    - [0x15F990, hasm,   fragments/17/fragment17_header]
    - [0x15F9B0, c,      fragments/17/fragment17_code]
    - [0x16B580, data,   fragments/17/fragment17_data]
    - [0x16DD70, rodata, fragments/17/fragment17_rodata]
    - [0x16DF60, bin,    fragments/17/fragment17_reloc]

# ekans minigame code
  - name: fragment18
    type: code
    bss_size: 0x0
    start: 0x1708B0
    vram: 0x86C00000
    subsegments:
    - [0x1708B0, hasm,   fragments/18/fragment18_header]
    - [0x1708D0, c,      fragments/18/fragment18_code]
    - [0x1750F0, data,   fragments/18/fragment18_data]
    - [0x17EC60, rodata, fragments/18/fragment18_rodata]
    - [0x17ED30, bin,    fragments/18/fragment18_reloc]

  - name: fragment19
    type: code
    bss_size: 0x0
    start: 0x17FB40
    vram: 0x86D00000
    subsegments:
    - [0x17FB40, hasm,   fragments/19/fragment19_header]
    - [0x17FB60, c,      fragments/19/fragment19_code]
    - [0x180070, data,   fragments/19/fragment19_data]
    - [0x180100, rodata, fragments/19/fragment19_rodata]
    - [0x180110, bin,    fragments/19/fragment19_reloc]

# metapod minigame code
  - name: fragment20
    type: code
    bss_size: 0x0
    start: 0x1802B0
    vram: 0x86E00000
    subsegments:
    - [0x1802B0, hasm,   fragments/20/fragment20_header]
    - [0x1802D0, c,      fragments/20/fragment20_code]
    - [0x183260, data,   fragments/20/fragment20_data]
    - [0x184FA0, rodata, fragments/20/fragment20_rodata]
    - [0x185010, bin,    fragments/20/fragment20_reloc]

# sandshrew minigame code
  - name: fragment21
    type: code
    bss_size: 0x0
    start: 0x185A10
    vram: 0x86F00000
    subsegments:
    - [0x185A10, hasm,   fragments/21/fragment21_header]
    - [0x185A30, c,      fragments/21/fragment21_code]
    - [0x1880A0, data,   fragments/21/fragment21_data]
    - [0x190B90, rodata, fragments/21/fragment21_rodata]
    - [0x190C00, bin,    fragments/21/fragment21_reloc]

# pokemon lab loader
  - name: fragment22
    type: code
    bss_size: 0x0
    start: 0x191660
    vram: 0x88000000
    subsegments:
    - [0x191660, hasm,   fragments/22/fragment22_header]
    - [0x191680, c,      fragments/22/fragment22_code]
    - [0x193EA0, data,   fragments/22/fragment22_data]
    - [0x1A8320, rodata, fragments/22/fragment22_rodata]
    - [0x1A8350, bin,    fragments/22/fragment22_reloc]

# pokemon lab PC loader
  - name: fragment23
    type: code
    bss_size: 0x0
    start: 0x1A8570
    vram: 0x88200000
    subsegments:
    - [0x1A8570, hasm,   fragments/23/fragment23_header]
    - [0x1A8590, c,      fragments/23/fragment23_code]
    - [0x1C0160, data,   fragments/23/fragment23_data]
    - [0x1CD3C0, rodata, fragments/23/fragment23_rodata]
    - [0x1CD500, bin,    fragments/23/fragment23_reloc]

# pokemon lab PC: list code
  - name: fragment24
    type: code
    bss_size: 0x0
    start: 0x1CE9E0
    vram: 0x88300000
    subsegments:
    - [0x1CE9E0, hasm,   fragments/24/fragment24_header]
    - [0x1CEA00, c,      fragments/24/fragment24_code]
    - [0x1E5BB0, data,   fragments/24/fragment24_data]
    - [0x1E8C40, rodata, fragments/24/fragment24_rodata]
    - [0x1E8EA0, bin,    fragments/24/fragment24_reloc]

# POKEMON LAB unknown code placed but not executed
  - name: fragment25
    type: code
    bss_size: 0x0
    start: 0x1EA640
    vram: 0x88400000
    subsegments:
    - [0x1EA640, hasm,   fragments/25/fragment25_header]
    - [0x1EA660, c,      fragments/25/fragment25_code]
    - [0x1EA740, data,   fragments/25/fragment25_data]
    - [0x1EA840, bin,    fragments/25/fragment25_reloc]

# POKEMON LAB unknown code placed but not executed
  - name: fragment26
    type: code
    bss_size: 0x0
    start: 0x1EA860
    vram: 0x88500000
    subsegments:
    - [0x1EA860, hasm,   fragments/26/fragment26_header]
    - [0x1EA880, c,      fragments/26/fragment26_code]
    - [0x1F77E0, data,   fragments/26/fragment26_data]
    - [0x1F7810, rodata, fragments/26/fragment26_rodata]
    - [0x1F7840, bin,    fragments/26/fragment26_reloc]

# pokemon lab PC: pokemon, item, boxes etc
  - name: fragment27
    type: code
    bss_size: 0x0
    start: 0x1F7C90
    vram: 0x88600000
    subsegments:
    - [0x1F7C90, hasm,   fragments/27/fragment27_header]
    - [0x1F7CB0, c,      fragments/27/fragment27_code]
    - [0x1FD750, data,   fragments/27/fragment27_data]
    - [0x214060, rodata, fragments/27/fragment27_rodata]
    - [0x2141A0, bin,    fragments/27/fragment27_reloc]

# pokemon lab: pokedex loader
  - name: fragment28
    type: code
    bss_size: 0x0
    start: 0x214900
    vram: 0x88800000
    subsegments:
    - [0x214900, hasm,   fragments/28/fragment28_header]
    - [0x214920, c,      fragments/28/fragment28_code]
    - [0x21CA50, data,   fragments/28/fragment28_data]
    - [0x23AF80, rodata, fragments/28/fragment28_rodata]
    - [0x23B0A0, bin,    fragments/28/fragment28_reloc]

# POKEMON LAB PC some text functions but not executed
  - name: fragment29
    type: code
    bss_size: 0x0
    start: 0x23C250
    vram: 0x88900000
    subsegments:
    - [0x23C250, hasm,   fragments/29/fragment29_header]
    - [0x23C270, c,      fragments/29/fragment29_code]
    - [0x23D3C0, data,   fragments/29/fragment29_data]
    - [0x23D430, bin,    fragments/29/fragment29_reloc]
    
  - name: fragment29_misc_1
    type: code
    bss_size: 0x0
    start: 0x23D500
    vram: 0x88910000 # unk VRAM, shuts linker up
    subsegments:
    - [0x23D500, bin,    fragments/29/fragment29_unk_bin_1] # PERS-SZP file, pokeball, c buttons etc textures

  - name: fragment29_misc_2
    type: code
    bss_size: 0x0
    start: 0x23FB60
    vram: 0x88920000 # unk VRAM, shuts linker up
    subsegments:
    - [0x23FB60, bin,    fragments/29/fragment29_unk_bin_2] # PERS-SZP file, pokeball, c buttons etc textures

  - name: fragment29_misc_3
    type: code
    bss_size: 0x0
    start: 0x24F430
    vram: 0x88920000 # unk VRAM, shuts linker up
    subsegments:
    - [0x24F430, bin,    fragments/29/fragment29_unk_bin_3] # PERS-SZP file, pokeball, c buttons etc textures

  - name: fragment30
    type: code
    bss_size: 0x0
    start: 0x255230
    vram: 0x88A00000 # unknown vram, since nothing loads this. probably 88A00000?
    subsegments:
    - [0x255230, hasm,   fragments/30/fragment30_header]
    - [0x255250, c,      fragments/30/fragment30_code]
    - [0x2552B0, bin,    fragments/30/fragment30_reloc]

# transfer pak checker
  - name: fragment31
    type: code
    bss_size: 0x0
    start: 0x2552C0
    vram: 0x81000000
    subsegments:
    - [0x2552C0, hasm,   fragments/31/fragment31_header]
    - [0x2552E0, bin,    fragments/31/fragment31_unk_table] # what is this?
    - [0x2554C0, c,      fragments/31/fragment31_code]
    - [0x259290, data,   fragments/31/fragment31_data]
    - [0x259480, rodata, fragments/31/fragment31_rodata]
    - [0x259AA0, bin,    fragments/31/fragment31_reloc]
    
# drowzee minigame stage animations
  - name: fragment32
    type: code
    bss_size: 0x0
    start: 0x25A740
    vram: 0x81100000
    subsegments:
    - [0x25A740, hasm,   fragments/32/fragment32_header]
    - [0x25A760, c,      fragments/32/fragment32_code]
    - [0x25B060, data,   fragments/32/fragment32_data]
    - [0x25B070, bin,    fragments/32/fragment32_reloc]

# transfer pak code
  - name: fragment33
    type: code
    bss_size: 0x0
    start: 0x25B0D0
    vram: 0x81300000
    subsegments:
    - [0x25B0D0, hasm,   fragments/33/fragment33_header]
    - [0x25B0F0, asm,    fragments/33/fragment33_code]
    - [0x25ECF0, data,   fragments/33/fragment33_data]
    - [0x25F020, rodata, fragments/33/fragment33_rodata]
    - [0x25F070, bin,    fragments/33/fragment33_reloc]

  - name: fragment33_misc
    type: code
    bss_size: 0x0
    start: 0x25F440
    vram: 0x81310000 # unk vram, shuts linker up
    subsegments:
    - [0x25F440, bin,    fragments/33/fragment33_unk_bin_1] # PRES-JPEG, transfer machine background

# alternative pokemon textures pointer loader
  - name: fragment34
    type: code
    bss_size: 0x0
    start: 0x261F70
    vram: 0x81400000
    subsegments:
    - [0x261F70, hasm,   fragments/34/fragment34_header]
    - [0x261F90, c,      fragments/34/fragment34_code]
    - [0x26F9C0, data,   fragments/34/fragment34_data]
    - [0x270570, rodata, fragments/34/fragment34_rodata]
    - [0x270590, bin,    fragments/34/fragment34_reloc]

# n64 logo code
  - name: fragment35
    type: code
    bss_size: 0x0
    start: 0x271260
    vram: 0x82000000
    subsegments:
    - [0x271260, hasm,   fragments/35/fragment35_header]
    - [0x271280, c,      fragments/35/fragment35_code]
    - [0x2717C0, bin,    fragments/35/fragment35_reloc]

# title screen code
  - name: fragment36
    type: code
    bss_size: 0x0
    start: 0x2717E0
    vram: 0x82100000
    subsegments:
    - [0x2717E0, hasm,   fragments/36/fragment36_header]
    - [0x271800, c,      fragments/36/fragment36_code]
    - [0x2725A0, data,   fragments/36/fragment36_data]
    - [0x272660, rodata, fragments/36/fragment36_rodata]
    - [0x272680, bin,    fragments/36/fragment36_reloc]

# stadium field loader
  - name: fragment37
    type: code
    bss_size: 0x0
    start: 0x272830
    vram: 0x82200000
    subsegments:
    - [0x272830, hasm,   fragments/37/fragment37_header]
    - [0x272850, c,      fragments/37/fragment37_code]
    - [0x2757D0, data,   fragments/37/fragment37_data]
    - [0x275900, rodata, fragments/37/fragment37_rodata]
    - [0x275920, bin,    fragments/37/fragment37_reloc]

# event battle loader
  - name: fragment38
    type: code
    bss_size: 0x0
    start: 0x275CE0
    vram: 0x82300000
    subsegments:
    - [0x275CE0, hasm,   fragments/38/fragment38_header]
    - [0x275D00, c,      fragments/38/fragment38_code]
    - [0x27B600, data,   fragments/38/fragment38_data]
    - [0x27B6B0, rodata, fragments/38/fragment38_rodata]
    - [0x27B700, bin,    fragments/38/fragment38_reloc]

# minigames loader
  - name: fragment39
    type: code
    bss_size: 0x0
    start: 0x27BCA0
    vram: 0x82500000
    subsegments:
    - [0x27BCA0, hasm,   fragments/39/fragment39_header]
    - [0x27BCC0, c,      fragments/39/fragment39_code]
    - [0x281E50, data,   fragments/39/fragment39_data]
    - [0x2846C0, rodata, fragments/39/fragment39_rodata]
    - [0x284790, bin,    fragments/39/fragment39_reloc]

# gym leader castle clear / pokemon gift code
  - name: fragment40
    type: code
    bss_size: 0x0
    start: 0x285DC0
    vram: 0x83100000
    subsegments:
    - [0x285DC0, hasm,   fragments/40/fragment40_header]
    - [0x285DE0, c,      fragments/40/fragment40_code]
    - [0x2879A0, data,   fragments/40/fragment40_data]
    - [0x287C80, rodata, fragments/40/fragment40_rodata]
    - [0x287CA0, bin,    fragments/40/fragment40_reloc]

# pokemon trade machine loader
  - name: fragment41
    type: code
    bss_size: 0x0
    start: 0x287EB0
    vram: 0x82F00000
    subsegments:
    - [0x287EB0, hasm,   fragments/41/fragment41_header]
    - [0x287ED0, c,      fragments/41/fragment41_code]
    - [0x29BA20, data,   fragments/41/fragment41_data]
    - [0x29BF80, rodata, fragments/41/fragment41_rodata]
    - [0x29C2D0, bin,    fragments/41/fragment41_reloc]

# gallery loader
  - name: fragment42
    type: code
    bss_size: 0x0
    start: 0x29DD30
    vram: 0x83300000
    subsegments:
    - [0x29DD30, hasm,   fragments/42/fragment42_header]
    - [0x29DD50, c,      fragments/42/fragment42_code]
    - [0x2A0EB0, data,   fragments/42/fragment42_data]
    - [0x2A0FE0, rodata, fragments/42/fragment42_rodata]
    - [0x2A1010, bin,    fragments/42/fragment42_reloc]

# gallery code
  - name: fragment43
    type: code
    bss_size: 0x0
    start: 0x2A1B30
    vram: 0x83400000
    subsegments:
    - [0x2A1B30, hasm,   fragments/43/fragment43_header]
    - [0x2A1B50, c,      fragments/43/fragment43_code]
    - [0x2A4950, data,   fragments/43/fragment43_data]
    - [0x2A49F0, rodata, fragments/43/fragment43_rodata]
    - [0x2A4A10, bin,    fragments/43/fragment43_reloc]

# gallery album code
  - name: fragment44
    type: code
    bss_size: 0x0
    start: 0x2A4DF0
    vram: 0x83500000
    subsegments:
    - [0x2A4DF0, hasm,   fragments/44/fragment44_header]
    - [0x2A4E10, c,      fragments/44/fragment44_code]
    - [0x2A8C60, rodata, fragments/44/fragment44_rodata]
    - [0x2A8DB0, bin,    fragments/44/fragment44_reloc]

# might be print code
  - name: fragment45
    type: code
    bss_size: 0x0
    start: 0x2A9790
    vram: 0x83600000
    subsegments:
    - [0x2A9790, hasm,   fragments/45/fragment45_header]
    - [0x2A97B0, c,      fragments/45/fragment45_code]
    - [0x2ACA10, data,   fragments/45/fragment45_data]
    - [0x2ACA70, rodata, fragments/45/fragment45_rodata]
    - [0x2ACA80, bin,    fragments/45/fragment45_reloc]

# gallery enlarge code
  - name: fragment46
    type: code
    bss_size: 0x0
    start: 0x2AD270
    vram: 0x83700000
    subsegments:
    - [0x2AD270, hasm,   fragments/46/fragment46_header]
    - [0x2AD290, c,      fragments/46/fragment46_code]
    - [0x2AD720, data,   fragments/46/fragment46_data]
    - [0x2AD730, bin,    fragments/46/fragment46_reloc]

# gallery rental pokemon loader
  - name: fragment47
    type: code
    bss_size: 0x0
    start: 0x2AD8F0
    vram: 0x83800000
    subsegments:
    - [0x2AD8F0, hasm,   fragments/47/fragment47_header]
    - [0x2AD910, c,      fragments/47/fragment47_code]
    - [0x2B25A0, data,   fragments/47/fragment47_data]
    - [0x2B2E50, rodata, fragments/47/fragment47_rodata]
    - [0x2B2F40, bin,    fragments/47/fragment47_reloc]

  # Gallery Debugger (unused)
  - name: fragment48
    type: code
    bss_size: 0x0
    start: 0x2B3F70
    vram: 0x83900000 # apparently not used either, but VRAM is an estimate based on the patterns around this fragment.
    subsegments:
    - [0x2B3F70, hasm,   fragments/48/fragment48_header]
    - [0x2B3F90, c,      fragments/48/fragment48_code]
    - [0x2B45A0, data,   fragments/48/fragment48_data]
    - [0x2B45C0, rodata, fragments/48/fragment48_rodata]
    - [0x2B4620, bin,    fragments/48/fragment48_reloc]

  - name: fragment49
    type: code
    bss_size: 0x0
    start: 0x2B46F0
    vram: 0x83A00000
    subsegments:
    - [0x2B46F0, hasm,   fragments/49/fragment49_header]
    - [0x2B4710, c,      fragments/49/fragment49_code]
    - [0x2B5240, data,   fragments/49/fragment49_data]
    - [0x2B5260, bin,    fragments/49/fragment49_reloc]

# hall of fame loader
  - name: fragment50
    type: code
    bss_size: 0x0
    start: 0x2B5350
    vram: 0x82600000
    subsegments:
    - [0x2B5350, hasm,   fragments/50/fragment50_header]
    - [0x2B5370, c,      fragments/50/fragment50_code]
    - [0x2B91D0, data,   fragments/50/fragment50_data]
    - [0x2BC690, rodata, fragments/50/fragment50_rodata]
    - [0x2BC760, bin,    fragments/50/fragment50_reloc]


  - name: fragment51
    type: code
    bss_size: 0x0
    start: 0x2BD0A0
    vram: 0x82800000 # unknown vram due to being unused, but based on the patterns before hand, this is probably 82800000.
    subsegments:
    - [0x2BD0A0, bin,    fragments/51/fragment51_header] # need to leave it as a bin. Splat thinks there's a pointer
    - [0x2BD0C0, c,      fragments/51/fragment51_code]
    - [0x2BD120, bin,    fragments/51/fragment51_reloc]


  - name: fragment52
    type: code
    bss_size: 0x0
    start: 0x2BD130
    vram: 0x82900000 # unknown vram due to being unused, but based on the patterns before hand, this is probably 82900000.
    subsegments:
    - [0x2BD130, bin,  fragments/52/fragment52_header] # need to leave it as a bin. Splat thinks there's a pointer
    - [0x2BD150, c,    fragments/52/fragment52_code]
    - [0x2BD600, data, fragments/52/fragment52_data]
    - [0x2BD660, bin,  fragments/52/fragment52_reloc]

  - name: fragment53
    type: code
    bss_size: 0x0
    start: 0x2BD6E0
    vram: 0x82A00000
    subsegments:
    - [0x2BD6E0, hasm, fragments/53/fragment53_header]
    - [0x2BD700, c,    fragments/53/fragment53_code]
    - [0x2BDA40, data, fragments/53/fragment53_data]
    - [0x2BDA50, bin,  fragments/53/fragment53_reloc]

# RENTAL battle, rules, registration loader
  - name: fragment54
    type: code
    bss_size: 0x0
    start: 0x2BDAC0
    vram: 0x82B00000
    subsegments:
    - [0x2BDAC0, bin,  fragments/54/fragment54_header] # need to leave it as a bin. Splat thinks there's a pointer
    - [0x2BDAE0, c,    fragments/54/fragment54_code]
    - [0x2BEBE0, data, fragments/54/fragment54_data]
    - [0x2BEC00, bin,  fragments/54/fragment54_reloc]


# RENTAL rules loader
  - name: fragment55
    type: code
    bss_size: 0x0
    start: 0x2BED20
    vram: 0x83000000
    subsegments:
    - [0x2BED20, hasm,   fragments/55/fragment55_header]
    - [0x2BED40, c,      fragments/55/fragment55_code]
    - [0x2C26E0, data,   fragments/55/fragment55_data]
    - [0x2C28A0, rodata, fragments/55/fragment55_rodata]
    - [0x2C29A0, bin,    fragments/55/fragment55_reloc]

# options code
  - name: fragment56
    type: code
    bss_size: 0x0
    start: 0x2C3220
    vram: 0x82C00000
    subsegments:
    - [0x2C3220, hasm, fragments/56/fragment56_header]
    - [0x2C3240, c,    fragments/56/fragment56_code]
    - [0x2C4880, bin,  fragments/56/fragment56_reloc]

# RENTAL registration code
  - name: fragment57
    type: code
    bss_size: 0x0
    start: 0x2C49D0
    vram: 0x82D00000
    subsegments:
    - [0x2C49D0, hasm,   fragments/57/fragment57_header]
    - [0x2C49F0, c,      fragments/57/fragment57_code]
    - [0x2CB970, data,   fragments/57/fragment57_data]
    - [0x2CE950, rodata, fragments/57/fragment57_rodata]
    - [0x2CE9C0, bin,    fragments/57/fragment57_reloc]

# sandshrew minigame stage animation
  - name: fragment58
    type: code
    bss_size: 0x0
    start: 0x2CF350
    vram: 0x84000000
    subsegments:
    - [0x2CF350, hasm,   fragments/58/fragment58_header]
    - [0x2CF370, c,      fragments/58/fragment58_code]
    - [0x2D1F30, data,   fragments/58/fragment58_data]
    - [0x2D2000, rodata, fragments/58/fragment58_rodata]
    - [0x2D2050, bin,    fragments/58/fragment58_reloc]

# stadium loader
  - name: fragment59
    type: code
    bss_size: 0x0
    start: 0x2D24C0
    vram: 0x84100000
    subsegments:
    - [0x2D24C0, hasm,   fragments/59/fragment59_header]
    - [0x2D24E0, c,      fragments/59/fragment59_code]
    - [0x2D48F0, data,   fragments/59/fragment59_data]
    - [0x2D58F0, rodata, fragments/59/fragment59_rodata]
    - [0x2D5900, bin,    fragments/59/fragment59_reloc]

# cup code
  - name: fragment60
    type: code
    bss_size: 0x0
    start: 0x2D5CB0
    vram: 0x82E00000
    subsegments:
    - [0x2D5CB0, hasm,   fragments/60/fragment60_header]
    - [0x2D5CD0, c,      fragments/60/fragment60_code]
    - [0x2D6DC0, data,   fragments/60/fragment60_data]
    - [0x2D7650, rodata, fragments/60/fragment60_rodata]
    - [0x2D7660, bin,    fragments/60/fragment60_reloc]

# RENTAL pokemon loader
  - name: fragment61
    type: code
    bss_size: 0x0
    start: 0x2D7890
    vram: 0x84200000
    subsegments:
    - [0x2D7890, hasm,   fragments/61/fragment61_header]
    - [0x2D78B0, c,      fragments/61/fragment61_code]
    - [0x2E85D0, data,   fragments/61/fragment61_data]
    - [0x2E9120, rodata, fragments/61/fragment61_rodata]
    - [0x2E93C0, bin,    fragments/61/fragment61_reloc]
    
# battle system code
  - name: fragment62
    type: code
    bss_size: 0x0
    start: 0x2EA8C0
    vram: 0x84300000
    subsegments:
    - [0x2EA8C0, hasm,   fragments/62/fragment62_header]
    - [0x2EA8E0, c,      fragments/62/fragment62_code]
    - [0x36EC10, data,   fragments/62/fragment62_data]
    - [0x3759C0, rodata, fragments/62/fragment62_rodata]
    - [0x378D00, bin,    fragments/62/fragment62_reloc]

# battle preparation flags, rules, code
  - name: fragment63
    type: code
    bss_size: 0x0
    start: 0x394100
    vram: 0x84B00000
    subsegments:
    - [0x394100, hasm,   fragments/63/fragment63_header]
    - [0x394120, c,      fragments/63/fragment63_code]
    - [0x3A3C10, data,   fragments/63/fragment63_data]
    - [0x3AD980, rodata, fragments/63/fragment63_rodata]
    - [0x3ADA10, bin,    fragments/63/fragment63_reloc]

# menu selector before battle code
  - name: fragment64
    type: code
    bss_size: 0x0
    start: 0x3AEE50
    vram: 0x84800000
    subsegments:
    - [0x3AEE50, hasm,   fragments/64/fragment64_header]
    - [0x3AEE70, c,      fragments/64/fragment64_code]
    - [0x3B2390, data,   fragments/64/fragment64_data]
    - [0x3B2530, rodata, fragments/64/fragment64_rodata]
    - [0x3B25B0, bin,    fragments/64/fragment64_reloc]

# gym leader castle loader
  - name: fragment65
    type: code
    bss_size: 0x0
    start: 0x3B2AE0
    vram: 0x84A00000
    subsegments:
    - [0x3B2AE0, hasm,   fragments/65/fragment65_header]
    - [0x3B2B00, c,      fragments/65/fragment65_code]
    - [0x3B59E0, data,   fragments/65/fragment65_data]
    - [0x3B5BE0, rodata, fragments/65/fragment65_rodata]
    - [0x3B5C10, bin,    fragments/65/fragment65_reloc]

  - name: fragment66
    type: code
    bss_size: 0x0
    start: 0x3B6130
    vram: 0x83200000
    subsegments:
    - [0x3B6130, hasm,   fragments/66/fragment66_header]
    - [0x3B6150, c,      fragments/66/fragment66_code]
    - [0x3B8080, data,   fragments/66/fragment66_data]
    - [0x3B8140, bin,    fragments/66/fragment66_reloc]

  - name: fragment67
    type: code
    bss_size: 0x0
    start: 0x3B8530
    vram: 0x8F000000
    subsegments:
    - [0x3B8530, hasm,   fragments/67/fragment67_header]
    - [0x3B8550, c,      fragments/67/fragment67_code]
    - [0x3B8560, bin,    fragments/67/fragment67_reloc]

  # These are a bunch of seemingly unused(?) fragments which all they do is access or load fragment 67.
  - name: fragment68
    type: code
    bss_size: 0x0
    start: 0x3B8570
    vram: 0x8F100000 # unknown vram. Another unused one? Might be 8F100000?
    subsegments:
    - [0x3B8570, hasm, fragments/68/fragment68_header]
    - [0x3B8590, c,    fragments/68/fragment68_code]
    - [0x3B85F0, bin,  fragments/68/fragment68_reloc]

  - name: fragment69
    type: code
    bss_size: 0x0
    start: 0x3B8600
    vram: 0x8F200000 # unknown vram. Another unused one? Might be 8F200000?
    subsegments:
    - [0x3B8600, hasm,   fragments/69/fragment69_header]
    - [0x3B8620, c,      fragments/69/fragment69_code]
    - [0x3B8680, bin,    fragments/69/fragment69_reloc]

  - name: fragment70
    type: code
    bss_size: 0x0
    start: 0x3B8690
    vram: 0x8F300000 # unknown vram. Another unused one? Might be 8F300000?
    subsegments:
    - [0x3B8690, hasm,   fragments/70/fragment70_header]
    - [0x3B86B0, c,      fragments/70/fragment70_code]
    - [0x3B8710, bin,    fragments/70/fragment70_reloc]

  - name: fragment71
    type: code
    bss_size: 0x0
    start: 0x3B8720
    vram: 0x8F400000 # unknown vram. Another unused one? Might be 8F400000?
    subsegments:
    - [0x3B8720, hasm,   fragments/71/fragment71_header]
    - [0x3B8740, c,      fragments/71/fragment71_code]
    - [0x3B87A0, bin,    fragments/71/fragment71_reloc]

  - name: fragment72
    type: code
    bss_size: 0x0
    start: 0x3B87B0
    vram: 0x8F500000 # unknown vram. Another unused one? Might be 8F500000?
    subsegments:
    - [0x3B87B0, hasm, fragments/72/fragment72_header]
    - [0x3B87D0, c,    fragments/72/fragment72_code]
    - [0x3B8830, bin,  fragments/72/fragment72_reloc]

  - name: fragment73
    type: code
    bss_size: 0x0
    start: 0x3B8840
    vram: 0x8F600000 # unknown vram. Another unused one? Might be 8F600000?
    subsegments:
    - [0x3B8840, hasm, fragments/73/fragment73_header]
    - [0x3B8860, c,    fragments/73/fragment73_code]
    - [0x3B88C0, bin,  fragments/73/fragment73_reloc]

  - name: fragment74
    type: code
    bss_size: 0x0
    start: 0x3B88D0
    vram: 0x8F700000 # unknown vram. Another unused one? Might be 8F700000?
    subsegments:
    - [0x3B88D0, hasm, fragments/74/fragment74_header]
    - [0x3B88F0, c,    fragments/74/fragment74_code]
    - [0x3B8950, bin,  fragments/74/fragment74_reloc]

  - name: fragment75
    type: code
    bss_size: 0x0
    start: 0x3B8960
    vram: 0x8FA00000
    subsegments:
    - [0x3B8960, hasm, fragments/75/fragment75_header]
    - [0x3B8980, c,    fragments/75/fragment75_code]
    - [0x3B9350, data, fragments/75/fragment75_data]
    - [0x3B9380, bin,  fragments/75/fragment75_reloc]

  - name: fragment76
    type: code
    bss_size: 0x0
    start: 0x3B9590
    vram: 0x8FB00000 # unknown vram. Another unused one? Might be 8FB00000?
    subsegments:
    - [0x3B9590, hasm, fragments/76/fragment76_header]
    - [0x3B95B0, c,    fragments/76/fragment76_code]
    - [0x3B9610, bin,  fragments/76/fragment76_reloc]

  - name: fragment77
    type: code
    bss_size: 0x0
    start: 0x3B9620
    vram: 0x8FC00000 # unknown vram. Another unused one? Might be 8FC00000?
    subsegments:
    - [0x3B9620, bin,  fragments/77/fragment77_header] # need to leave it as a bin. Splat thinks there's a pointer
    - [0x3B9640, c,    fragments/77/fragment77_code]
    - [0x3B96A0, bin,  fragments/77/fragment77_reloc]

  - [0x3B96B0, bin]
  - [0x3BA190, bin]
  - [0x3CB130, bin]
  - [0x45B580, bin]
  - [0x4A21C0, bin]
  - [0x4BD6B0, bin]
  - [0x4BE810, bin]
  - [0x4D1330, bin]
  - [0x4EB0C0, bin]
  - [0x5046B0, bin]
  - [0x52ABA0, bin]
  - [0x52F6D0, bin]
  - [0x533B20, bin]
  - [0x56E7D0, bin]
  - [0x5C7A70, bin]
  - [0x5C7AD0, bin]
  - [0x5F6790, bin]
  - [0x5F92A0, bin]
  - [0x5FFC30, bin]
  - [0x613110, bin]
  - [0x6230D0, bin]
  - [0x66E1D0, bin]
  - [0x66F540, bin]
  - [0x66FD80, bin]
  - [0x675FA0, bin]
  - [0x696350, bin]
  - [0x69D090, bin]
  - [0x6A9750, bin]
  - [0x6AE1D0, bin]
  - [0x6B0FB0, bin]
  - [0x6B4F00, bin]
  - [0x6C1AB0, bin]
  - [0x6C4CE0, bin]
  - [0x6C4E50, bin]
  - [0x6CA730, bin]
  - [0x6E2FC0, bin]
  - [0x6E8910, bin]
  - [0x6EB340, bin]
  - [0x6EC4D0, bin]
  - [0x6ECE80, bin]
  - [0x701E50, bin]
  - [0x70D3A0, bin]
  - [0x7820E0, bin]
  - [0x783760, bin]
  - [0x798CD0, bin]
  - [0x7994B0, bin]
  - [0x79AFB0, bin]
  - [0x79B8F0]
  
  # rest of ROM.. part 2. This area and beyond NEEDS to be hard-aligned to this address.
  # for the ROM to be shiftable, we need a way to fix this area beyond here to this address and for the prior area
  # to be filled with FFs instead of being binned. TODO: Make it shift
  - name: late_assets
    type: code
    bss_size: 0x0
    start: 0x7C0000
    vram: 0x8FC00000 # unknown vram. Another unused one? Might be 8FC00000?
    ld_align_segment_start: 0x7C0000
    subsegments:
    - [0x7C0000, bin]
  - [0x2000000]
