name: Mario Kart 64 EU 1.0
sha1: a729039453210b84f17019dda3f248d5888f7690
options:
  basename: mk64.eu
  target_path: baserom.eu.z64
  base_path: .
  compiler: IDO
  platform: n64
  target_path: baserom.eu.z64
  build_path: build/eu
  find_file_boundaries: True
  header_encoding: ASCII
  ld_script_path: mk64.eu.ld
  asset_path: assets/eu
  # platform: n64
  # undefined_funcs_auto: True
  # undefined_funcs_auto_path: undefined_funcs_auto.txt
  # undefined_syms_auto: True
  # undefined_syms_auto_path: undefined_syms_auto.txt
  # symbol_addrs_path: symbol_addrs.txt
  asm_path: asm/eu
  # src_path: src
  extensions_path: tools/splat_ext
  mips_abi_float_regs: o32
  section_order: [".text", ".data", ".rodata", ".bss"]
  # auto_all_sections: [".data", ".rodata", ".bss"]
segments:
  - name: header
    type: header
    start: 0x0
  - name: boot
    type: code
    start: 0x40
    vram: 0xA4000040
    subsegments:
      - [0x40, asm, boot]
      - [0xB70, i1, rspboot_font1, 13, 14]
      - [0xB87, i1, rspboot_font2, 13, 14]
      - [0xB9E, bin, rspboot_font]
  - name: main
    type: code
    bss_size: 0x18985C
    start: 0x1000
    vram: 0x80000400
    subsegments:
      - [0x1000, asm, entry]
      - [0x1050, c, main]
      - [0x3590, c, code_80002990]
      - [0x4130, c, profiler]
      - [0x4CA0, c, crash_screen]
      - [0x5320, c, animation]
      - [0x5AD0, c, staff_ghosts]
      - [0x6B90, asm, unused_overflow_check]
      - [0x6BB0, c, code_80005FD0]
      - [0x1D0B0, c, camera]
      - [0x20560, c, render_player]
      - [0x27C20, c, kart_dma]
      - [0x288E0, c, code_80027D00]
      - [0x39FA0, c, spawn_players]
      - [0x3E820, c, code_8003DC40]
      - [0x40C10, asm, unused_mio0_decode]
      - [0x40CB0, asm, mio0_decode]
      - [0x411B0, asm, tkmk00_decode]
      - [0x418E0, c, gbiMacro]
      - [0x41A30, c, math_util_2]
      - [0x43D90, c, code_800431B0]
      - [0x58840, c, code_80057C60]
      - [0x6F5A0, c, code_8006E9C0]
      - [0x72AE0, c, update_objects]
      - [0x87A50, c, code_80086E70]
      - [0x8CDB0, c, effects]
      - [0x920A0, c, code_800914A0]
      - [0x92350, c, code_80091750]
      - [0xB05B0, c, code_800AF9B0]
      - [0xB0F50, c, menus]
      - [0xB51E0, c, save]
      - [0xB77F0, c, audio/synthesis]
      - [0xB99E0, c, audio/heap]
      - [0xBB680, c, audio/load]
      - [0xBD170, c, audio/playback]
      - [0xBEA30, c, audio/effects]
      - [0xBF4D0, c, audio/seqplayer]
      - [0xC2000, c, audio/external]
      - [0xCBFC0, c, audio/port_eu]
      - [0xCCC00, c, ../lib/src/osCreateThread]
      - [0xCCD90, c, ../lib/src/osInitialize]
      - [0xCD030, c, ../lib/src/osStartThread]
      - [0xCD180, c, ../lib/src/osCreateViManager] 
      - [0xCD4E0, c, ../lib/src/osViSetMode]
      - [0xCD550, c, ../lib/src/osViBlack]
      - [0xCD5C0, c, ../lib/src/osViSetSpecialFeatures]
      - [0xCD780, c, ../lib/src/osCreatePiManager]
      - [0xCD910, c, ../lib/src/osSetThreadPri]
      - [0xCD9F0, c, ../lib/src/osCreateMesgQueue]
      - [0xCDA20, c, ../lib/src/osViSetEvent]
      - [0xCDA90, c, ../lib/src/osSetEventMesg]
      - [0xCDB00, c, ../lib/src/osSpTaskLoadGo]
      - [0xCDDC0, c, ../lib/src/osContInit]
      - [0xCE180, c, ../lib/src/osContStartReadData]
      - [0xCE3E0, c, ../lib/src/osRecvMesg]
      - [0xCE520, asm, ../lib/asm/osWritebackDCacheAll]
      - [0xCE550, c, ../lib/src/osSendMesg]
      - [0xCE6A0, c, ../lib/src/osViSwapBuffer]
      - [0xCE6F0, asm, ../lib/asm/bzero]
      - [0xCE790, asm, ../lib/asm/osInvalICache]
      - [0xCE810, asm, ../lib/asm/osInvalDCache]
      - [0xCE8C0, c, ../lib/src/osPiStartDma]
      - [0xCE9D0, c, ../lib/src/osSpTaskYield]
      - [0xCE9F0, c, ../lib/src/osSpTaskYielded]
      - [0xCEA70, c, ../lib/src/osGetTime]
      - [0xCEB00, c, ../lib/src/math/llmuldiv]
      - [0xCEDC0, c, ../lib/src/__osGetCurrFaultedThread]
      - [0xCEDD0, asm, ../lib/asm/sqrtf]
      - [0xCEDE0, c, ../lib/src/guOrthoF]
      - [0xCEFA0, c, ../lib/src/osSetTime]
      - [0xCEFD0, c, ../lib/src/osEepromProbe]
      - [0xCF040, c, ../lib/src/osPfsIsPlug]
      - [0xCF3B0, c, ../lib/src/osPfsInit]
      - [0xCF570, c, ../lib/src/osPfsNumFiles]
      - [0xCF6C0, c, ../lib/src/osPfsFileState]
      - [0xCF9B0, c, ../lib/src/osPfsFreeBlocks]
      - [0xCFB00, c, ../lib/src/guRotateF]
      - [0xCFCF0, c, ../lib/src/guScaleF]
      - [0xCFD90, c, ../lib/src/guPerspectiveF]
      - [0xD0020, c, ../lib/src/guLookAtF]
      - [0xD0350, c, ../lib/src/guTranslateF]
      - [0xD03F0, c, ../lib/src/osSyncPrintf]
      - [0xD0450, c, ../lib/src/guMtxCatL]
      - [0xD0510, c, ../lib/src/osPfsSearchFile]
      - [0xD06D0, c, ../lib/src/osPfsDeleteFile]
      - [0xD0CE0, c, ../lib/src/osEepromLongWrite]
      - [0xD0E20, c, ../lib/src/osEepromLongRead]
      - [0xD0F60, c, ../lib/src/osPfsReadWriteFile]
      - [0xD1460, c, ../lib/src/osPfsAllocateFile]
      - [0xD1B48, c, ../lib/src/osAiSetFrequency]
      - [0xD1D70, c, ../lib/src/osAiGetLength]
      - [0xD1D80, c, ../lib/src/osAiSetNextBuffer]
      - [0xD1E30, c, ../lib/src/osGetCount]
      - [0xD1E40, asm, ../lib/asm/__osException]
      - [0xD2740, asm, ../lib/asm/__osDisableInt]
      - [0xD2760, asm, ../lib/asm/__osRestoreInt]
      - [0xD2780, c, ../lib/src/__osDequeueThread]
      - [0xD27C0, asm, ../lib/asm/__osSetSR]
      - [0xD27D0, asm, ../lib/asm/__osGetSR]
      - [0xD27E0, asm, ../lib/asm/__osSetFpcCsr]
      - [0xD27F0, c, ../lib/src/__osSiRawReadIo]
      - [0xD2840, c, ../lib/src/__osSiRawWriteIo]
      - [0xD2890, asm, ../lib/asm/osWritebackDCache]
      - [0xD2910, asm, ../lib/asm/osMapTLBRdb]
      - [0xD2970, c, ../lib/src/osPiRawReadIo]
      - [0xD29D0, c, ../lib/src/__osSetHWIntrRoutine]
      - [0xD2A20, c, ../lib/src/__osLeoInterrupt]
      - [0xD32A0, c, ../lib/src/osTimer]
      - [0xD36A0, c, ../lib/src/osGetThreadPri]
      - [0xD36C0, c, ../lib/src/__osViInit]
      - [0xD3810, c, ../lib/src/__osViGetCurrentContext]
      - [0xD3820, c, ../lib/src/__osViSwapContext]
      - [0xD3B80, c, ../lib/src/__osPiCreateAccessQueue]
      - [0xD3C40, c, ../lib/src/osPiRawStartDma]
      - [0xD3D20, c, ../lib/src/osEPiRawStartDma]
      - [0xD3E00, c, ../lib/src/__osDevMgrMain]
      - [0xD41B0, c, ../lib/src/bcopy]
      - [0xD44C0, c, ../lib/src/osVirtualToPhysical]
      - [0xD4540, c, ../lib/src/__osSpSetStatus]
      - [0xD4550, c, ../lib/src/__osSpSetPc]
      - [0xD4590, c, ../lib/src/__osSpRawStartDma]
      - [0xD4620, c, ../lib/src/__osSpDeviceBusy]
      - [0xD4650, c, ../lib/src/osSetTimer]
      - [0xD4730, c, ../lib/src/__osSiRawStartDma]
      - [0xD47E0, c, ../lib/src/__osSiCreateAccessQueue]
      - [0xD48A0, c, ../lib/src/osJamMesg]
      - [0xD49F0, c, ../lib/src/osPiGetCmdQueue]
      - [0xD4A20, c, ../lib/src/__osSpGetStatus]
      - [0xD4A30, c, ../lib/src/guMtxF2L]
      - [0xD4CA0, c, ../lib/src/osEepromWrite]
      - [0xD5180, c, ../lib/src/contpfs]
      - [0xD5EE0, c, ../lib/src/osPfsChecker]
      - [0xD6940, c, ../lib/src/contramread]
      - [0xD6CF0, c, ../lib/src/guNormalize]
      - [0xD6D80, c, ../lib/src/math/sinf]
      - [0xD6F40, c, ../lib/src/math/cosf]
      - [0xD70B0, c, ../lib/src/_Printf]
      - [0xD7D70, c, ../lib/src/guMtxCatF]
      - [0xD7F80, c, ../lib/src/contramwrite]
      - [0xD8330, c, ../lib/src/osEepromRead]
      - [0xD8630, c, ../lib/src/__osAiDeviceBusy]
      - [0xD8660, asm, ../lib/asm/osSetIntMask]
      - [0xD8700, c, ../lib/src/osDestroyThread]
      - [0xD8800, c, ../lib/src/__osSiDeviceBusy]
      - [0xD8830, c, ../lib/src/osLeoDiskInit]
      - [0xD8920, asm, ../lib/asm/__osSetCompare]
      - [0xD8930, c, ../lib/src/__osResetGlobalIntMask]
      - [0xD8990, c, ../lib/src/__osEPiRawWriteIo]
      - [0xD89E0, c, ../lib/src/osYieldThread]
      - [0xD8A30, asm, ../lib/asm/__osProbeTLB]
      - [0xD8AF0, c, ../lib/src/crc]
      - [0xD8C70, c, ../lib/src/string]
      - [0xD8D10, c, ../lib/src/_Litob]
      - [0xD8FB0, c, ../lib/src/_Ldtob]
      - [0xD9A70, c, ../lib/src/ldiv]
      - [0xD9C00, bin, lib/PR/boot/F3D_boot]
      - [0xD9CD0, bin, lib/PR/f3dex/F3DEX]
      - [0xDB0B0, bin, lib/PR/f3dlx/F3DLX]
      - [0xDD0D0, data, data_main]
      - [0xDD304, i1, crash_screen_font, 8, 136]
      - [0xDD38C, bin, unkDD38C]
      - [0xEC358, rodata, rodata_main]
      - [0xF7650, bss, bss_main]
  - name: seg2
    type: code
    bss_size: 0xFD180 # 0x3F460
    start: 0xF7650
    vram: 0x8028DF00
    subsegments:
      - [0xF7650, c, race_logic]
      - [0xFA370, c, render_courses]
      - [0x100148, c, actors]
      - [0x10CE80, c, skybox_and_splitscreen]
      - [0x111360, c, memory]
      - [0x119A00, c, actors_extended]
      - [0x11E750, c, math_util]
      - [0x121F80, data, data_seg2]
      - [0x1229D0, rodata, rodata_seg2]
      - [0x123840, bss, bss_seg2]
  - name: credits
    type: code
    bss_size: 0x1A0
    start: 0x123840 # end: 0x12B360
    vram: 0x80280000
    subsegments:
    - [0x123840, c, code_80280000]
    - [0x123E90, c, code_80280650]
    - [0x124E50, c, camera_junk]
    - [0x124FC0, c, code_80281780]
    - [0x125480, c, code_80281C40]
    - [0x1257E0, c, code_80281FA0]
    - [0x128680, data, data_credits]
    - [0x12ACC4, rodata, rodata_credits]
    - [0x12ACE0, bss, bss_credits]
  #- name: unkData
  #  type: bin
  #  start: 0x1313E0
  #  vram: 0xDD000000

  #- name: models
  #  type: mio0
  #  start: 0x821F10
  #  vram: 0x0C000000

  - [0xC00000] # end of rom
