// PSY-Q SDK (4.0; LIBCARD 3.7) functions identified by tools/psyq_sigs.py:
//   python tools/psyq_sigs.py us main --range 0x8003F8E8 0x8004EAA0 --symbols
// The SDK block spans 0x8003F8E8-0x8004EAA0; LIBSN READ.OBJ and LIBSPU S_R.OBJ
// matched twice (one copy is a lookalike) and are left unnamed.
bzero = 0x8003F8E8; // type:func
memchr = 0x8003F918; // type:func
memcpy = 0x8003F968; // type:func
memmove = 0x8003F99C; // type:func
memset = 0x8003FA08; // type:func
rand = 0x8003FA38; // type:func
srand = 0x8003FA68; // type:func
strcat = 0x8003FA78; // type:func
strcmp = 0x8003FB20; // type:func
strcpy = 0x8003FB84; // type:func
strlen = 0x8003FBC8; // type:func
sprintf = 0x8003FBF8; // type:func
SwEnterCriticalSection = 0x800404F4; // type:func
SwExitCriticalSection = 0x80040514; // type:func
SetRCnt = 0x800405F4; // type:func
GetRCnt = 0x80040690; // type:func
StartRCnt = 0x800406C8; // type:func
StopRCnt = 0x800406FC; // type:func
ResetRCnt = 0x80040734; // type:func
SetInitPadFlag = 0x8004076C; // type:func
ReadInitPadFlag = 0x8004077C; // type:func
PAD_init = 0x8004078C; // type:func
InitPAD = 0x80040828; // type:func
StartPAD = 0x800408C4; // type:func
StopPAD = 0x800408F4; // type:func
SetPatchPad = 0x8004092C; // type:func
RemovePatchPad = 0x800409AC; // type:func
_Pad1 = 0x800409E4; // type:func
_IsVSync = 0x80040A4C; // type:func
EnablePAD = 0x80040AEC; // type:func
DesablePAD = 0x80040B00; // type:func
_patch_pad = 0x80040B14; // type:func
_SendPAD = 0x80040B7C; // type:func
_send_pad = 0x80040BA4; // type:func
SendPAD = 0x80040C3C; // type:func
_remove_ChgclrPAD = 0x80040C5C; // type:func
DsSyncCallback = 0x80040CBC; // type:func
DsReadyCallback = 0x80040CD0; // type:func
DsDataCallback = 0x80040CE4; // type:func
CdInit = 0x80040D08; // type:func
def_cbsync = 0x80040DA0; // type:func
def_cbready = 0x80040DC8; // type:func
def_cbread = 0x80040DF0; // type:func
CdStatus = 0x80040E28; // type:func
CdMode = 0x80040E38; // type:func
CdLastCom = 0x80040E48; // type:func
CdLastPos = 0x80040E58; // type:func
CdReset = 0x80040E68; // type:func
CdFlush = 0x80040ED4; // type:func
CdSetDebug = 0x80040EF4; // type:func
CdComstr = 0x80040F0C; // type:func
CdIntstr = 0x80040F40; // type:func
CdSync = 0x80040F74; // type:func
CdReady = 0x80040F94; // type:func
CdSyncCallback = 0x80040FB4; // type:func
CdReadyCallback = 0x80040FCC; // type:func
CdControl = 0x80040FE4; // type:func
CdControlF = 0x8004111C; // type:func
CdControlB = 0x80041248; // type:func
CdMix = 0x8004138C; // type:func
CdGetSector = 0x800413AC; // type:func
CdGetSector2 = 0x800413CC; // type:func
CdDataCallback = 0x800413EC; // type:func
CdDataSync = 0x80041410; // type:func
CdIntToPos = 0x80041430; // type:func
CdPosToInt = 0x80041534; // type:func
getintr = 0x800415B4; // type:func
CD_sync = 0x80041B3C; // type:func
CD_ready = 0x80041DBC; // type:func
CD_cw = 0x80042088; // type:func
CD_vol = 0x800424A4; // type:func
CD_flush = 0x8004252C; // type:func
CD_initvol = 0x8004260C; // type:func
CD_initintr = 0x80042700; // type:func
CD_init = 0x80042750; // type:func
CD_datasync = 0x8004293C; // type:func
CD_getsector = 0x80042AA8; // type:func
CD_getsector2 = 0x80042BA8; // type:func
CD_set_test_parmnum = 0x80042C98; // type:func
callback = 0x80042CA8; // type:func
puts = 0x80042D8C; // type:func
putchar = 0x80042DDC; // type:func
toupper = 0x80042E90; // type:func
tolower = 0x80042EC0; // type:func
cb_read = 0x80042EF0; // type:func
cb_data = 0x800431C0; // type:func
cd_read_retry = 0x800432BC; // type:func
CdReadBreak = 0x800434D0; // type:func
CdRead = 0x8004356C; // type:func
CdReadSync = 0x80043670; // type:func
CdReadCallback = 0x8004373C; // type:func
CdReadMode = 0x80043754; // type:func
LoadTPage = 0x8004376C; // type:func
LoadClut = 0x80043858; // type:func
LoadClut2 = 0x800438C0; // type:func
SetDefDrawEnv = 0x80043928; // type:func
SetDefDispEnv = 0x800439E0; // type:func
GetTPage = 0x80043A1C; // type:func
GetClut = 0x80043A58; // type:func
DumpTPage = 0x80043A70; // type:func
DumpClut = 0x80043AD0; // type:func
NextPrim = 0x80043B10; // type:func
IsEndPrim = 0x80043B2C; // type:func
AddPrim = 0x80043B48; // type:func
AddPrims = 0x80043B84; // type:func
CatPrim = 0x80043BC0; // type:func
TermPrim = 0x80043BE4; // type:func
SetSemiTrans = 0x80043BFC; // type:func
SetShadeTex = 0x80043C24; // type:func
SetPolyF3 = 0x80043C4C; // type:func
SetPolyFT3 = 0x80043C60; // type:func
SetPolyG3 = 0x80043C74; // type:func
SetPolyGT3 = 0x80043C88; // type:func
SetPolyF4 = 0x80043C9C; // type:func
SetPolyFT4 = 0x80043CB0; // type:func
SetPolyG4 = 0x80043CC4; // type:func
SetPolyGT4 = 0x80043CD8; // type:func
SetSprt8 = 0x80043CEC; // type:func
SetSprt16 = 0x80043D00; // type:func
SetSprt = 0x80043D14; // type:func
SetTile1 = 0x80043D28; // type:func
SetTile8 = 0x80043D3C; // type:func
SetTile16 = 0x80043D50; // type:func
SetTile = 0x80043D64; // type:func
SetLineF2 = 0x80043D78; // type:func
SetLineG2 = 0x80043D8C; // type:func
SetLineF3 = 0x80043DA0; // type:func
SetLineG3 = 0x80043DC0; // type:func
SetLineF4 = 0x80043DE0; // type:func
SetLineG4 = 0x80043E00; // type:func
SetDrawTPage = 0x80043E20; // type:func
SetDrawMove = 0x80043E4C; // type:func
SetDrawLoad = 0x80043EAC; // type:func
MargePrim = 0x80043F18; // type:func
DumpDrawEnv = 0x80043F50; // type:func
DumpDispEnv = 0x80044064; // type:func
ResetGraph = 0x80044110; // type:func
SetGraphReverse = 0x80044294; // type:func
SetGraphDebug = 0x800443A8; // type:func
SetGraphQueue = 0x8004440C; // type:func
GetGraphType = 0x800444B8; // type:func
GetGraphDebug = 0x800444C8; // type:func
DrawSyncCallback = 0x800444D8; // type:func
SetDispMask = 0x80044534; // type:func
DrawSync = 0x800445D0; // type:func
checkRECT = 0x8004463C; // type:func
ClearImage = 0x80044764; // type:func
ClearImage2 = 0x800447F8; // type:func
LoadImage = 0x80044894; // type:func
StoreImage = 0x800448F8; // type:func
MoveImage = 0x8004495C; // type:func
ClearOTag = 0x80044A20; // type:func
ClearOTagR = 0x80044AD8; // type:func
DrawPrim = 0x80044B70; // type:func
DrawOTag = 0x80044BD0; // type:func
PutDrawEnv = 0x80044C44; // type:func
DrawOTagEnv = 0x80044D48; // type:func
GetDrawEnv = 0x80044E64; // type:func
PutDispEnv = 0x80044E9C; // type:func
GetDispEnv = 0x80045344; // type:func
GetODE = 0x8004537C; // type:func
SetTexWindow = 0x800453AC; // type:func
SetDrawArea = 0x800453E8; // type:func
SetDrawOffset = 0x8004546C; // type:func
SetPriority = 0x800454B0; // type:func
SetDrawMode = 0x800454DC; // type:func
SetDrawEnv = 0x80045534; // type:func
SetDrawEnv2 = 0x8004574C; // type:func
get_mode = 0x800459DC; // type:func
get_cs = 0x80045A34; // type:func
get_ce = 0x80045B00; // type:func
get_ofs = 0x80045BCC; // type:func
get_tw = 0x80045C10; // type:func
get_dx = 0x80045C94; // type:func
_status = 0x80045D44; // type:func
_otc = 0x80045D5C; // type:func
_clr = 0x80045E44; // type:func
_dws = 0x800460A0; // type:func
_drs = 0x800462DC; // type:func
_ctl = 0x80046560; // type:func
_getctl = 0x80046588; // type:func
_cwb = 0x8004659C; // type:func
_cwc = 0x800465EC; // type:func
_param = 0x80046638; // type:func
_addque = 0x80046668; // type:func
_addque2 = 0x8004668C; // type:func
_exeque = 0x8004696C; // type:func
_reset = 0x80046C58; // type:func
_sync = 0x80046DB4; // type:func
set_alarm = 0x80046EFC; // type:func
get_alarm = 0x80046F30; // type:func
_version = 0x8004709C; // type:func
memset_sys = 0x80047178; // type:func
OpenTIM = 0x800471B4; // type:func
ReadTIM = 0x800471C4; // type:func
OpenTMD = 0x8004722C; // type:func
ReadTMD = 0x8004726C; // type:func
get_tim_addr = 0x80047518; // type:func
get_tmd_addr = 0x80047638; // type:func
unpack_packet = 0x800477D0; // type:func
SetFogNearFar = 0x80048AB0; // type:func
InitGeom = 0x80048BC4; // type:func
SquareRoot0 = 0x80048C4C; // type:func
InvSquareRoot = 0x80048CDC; // type:func
VectorNormalS = 0x80048D68; // type:func
VectorNormal = 0x80048D7C; // type:func
VectorNormalSS = 0x80048DA8; // type:func
MatrixNormal = 0x80048E94; // type:func
LoadAverage12 = 0x80048F7C; // type:func
LoadAverage0 = 0x80048FCC; // type:func
LoadAverageShort12 = 0x8004901C; // type:func
LoadAverageShort0 = 0x800490A4; // type:func
LoadAverageByte = 0x8004912C; // type:func
LoadAverageCol = 0x8004918C; // type:func
MulMatrix0 = 0x8004920C; // type:func
CompMatrix = 0x8004931C; // type:func
ApplyMatrixLV = 0x8004947C; // type:func
ApplyRotMatrix = 0x800495DC; // type:func
PushMatrix = 0x8004960C; // type:func
PopMatrix = 0x800496AC; // type:func
ScaleMatrixL = 0x8004974C; // type:func
SetMulMatrix = 0x8004987C; // type:func
ApplyRotMatrixLV = 0x8004998C; // type:func
MulMatrix = 0x80049ACC; // type:func
MulMatrix2 = 0x80049BDC; // type:func
ApplyMatrix = 0x80049CEC; // type:func
ApplyMatrixSV = 0x80049D3C; // type:func
TransMatrix = 0x80049D9C; // type:func
ScaleMatrix = 0x80049DCC; // type:func
SetRotMatrix = 0x80049EFC; // type:func
SetLightMatrix = 0x80049F2C; // type:func
SetColorMatrix = 0x80049F5C; // type:func
SetTransMatrix = 0x80049F8C; // type:func
SetVertex0 = 0x80049FAC; // type:func
SetVertex1 = 0x80049FBC; // type:func
SetVertex2 = 0x80049FCC; // type:func
SetVertexTri = 0x80049FDC; // type:func
SetRGBfifo = 0x80049FFC; // type:func
SetIR123 = 0x8004A010; // type:func
SetIR0 = 0x8004A024; // type:func
SetSZfifo3 = 0x8004A030; // type:func
SetSZfifo4 = 0x8004A044; // type:func
SetSXSYfifo = 0x8004A05C; // type:func
SetRii = 0x8004A070; // type:func
SetMAC123 = 0x8004A084; // type:func
SetData32 = 0x8004A098; // type:func
SetDQA = 0x8004A0A4; // type:func
SetDQB = 0x8004A0B0; // type:func
ReadGeomOffset = 0x8004A0BC; // type:func
SetBackColor = 0x8004A0EC; // type:func
SetFarColor = 0x8004A10C; // type:func
SetGeomOffset = 0x8004A12C; // type:func
LocalLight = 0x8004A15C; // type:func
DpqColor = 0x8004A180; // type:func
NormalColor = 0x8004A19C; // type:func
NormalColor3 = 0x8004A1B8; // type:func
NormalColorDpq = 0x8004A1F4; // type:func
NormalColorDpq3 = 0x8004A218; // type:func
NormalColorCol = 0x8004A260; // type:func
NormalColorCol3 = 0x8004A280; // type:func
ColorDpq = 0x8004A2C4; // type:func
ColorCol = 0x8004A2EC; // type:func
AverageSZ3 = 0x8004A310; // type:func
AverageSZ4 = 0x8004A320; // type:func
LightColor = 0x8004A33C; // type:func
DpqColorLight = 0x8004A364; // type:func
DpqColor3 = 0x8004A38C; // type:func
Intpl = 0x8004A3C8; // type:func
Square12 = 0x8004A3EC; // type:func
Square0 = 0x8004A414; // type:func
AverageZ3 = 0x8004A43C; // type:func
AverageZ4 = 0x8004A45C; // type:func
OuterProduct12 = 0x8004A480; // type:func
OuterProduct0 = 0x8004A4D8; // type:func
Lzc = 0x8004A530; // type:func
RotTransSV = 0x8004A54C; // type:func
SquareSS12 = 0x8004A57C; // type:func
SquareSS0 = 0x8004A5B4; // type:func
SquareSL12 = 0x8004A5EC; // type:func
SquareSL0 = 0x8004A61C; // type:func
RotTransPers = 0x8004A64C; // type:func
RotTransPers3 = 0x8004A67C; // type:func
RotTrans = 0x8004A6DC; // type:func
NormalClip = 0x8004A70C; // type:func
RotTransPers4 = 0x8004A73C; // type:func
RotAverage4 = 0x8004A7BC; // type:func
RotAverageNclip4 = 0x8004A83C; // type:func
TransposeMatrix = 0x8004A8EC; // type:func
RotMatrixYXZ = 0x8004A92C; // type:func
RotMatrixZYX = 0x8004ABBC; // type:func
RotMatrixX = 0x8004AE4C; // type:func
RotMatrixY = 0x8004AFEC; // type:func
RotMatrixZ = 0x8004B18C; // type:func
ratan2 = 0x8004B32C; // type:func
_patch_gte = 0x8004B4AC; // type:func
VSync = 0x8004B54C; // type:func
v_wait = 0x8004B694; // type:func
ResetCallback = 0x8004B740; // type:func
InterruptCallback = 0x8004B770; // type:func
DMACallback = 0x8004B7A0; // type:func
VSyncCallback = 0x8004B7D0; // type:func
VSyncCallbacks = 0x8004B804; // type:func
StopCallback = 0x8004B834; // type:func
RestartCallback = 0x8004B864; // type:func
CheckCallback = 0x8004B894; // type:func
GetIntrMask = 0x8004B8A4; // type:func
SetIntrMask = 0x8004B8BC; // type:func
startIntr = 0x8004B8D8; // type:func
trapIntr = 0x8004B9B4; // type:func
setIntr = 0x8004BB9C; // type:func
stopIntr = 0x8004BCF0; // type:func
restartIntr = 0x8004BD9C; // type:func
memclr_intr = 0x8004BE24; // type:func
setjmp = 0x8004BE50; // type:func
longjmp = 0x8004BE8C; // type:func
_96_remove = 0x8004BED8; // type:func
startIntrVSync = 0x8004BF20; // type:func
trapIntrVSync = 0x8004BF78; // type:func
setIntrVSync = 0x8004BFF0; // type:func
memclr_intr_vb = 0x8004C01C; // type:func
startIntrDMA = 0x8004C048; // type:func
trapIntrDMA = 0x8004C098; // type:func
setIntrDMA = 0x8004C21C; // type:func
memclr_intr_dma = 0x8004C2C4; // type:func
SetVideoMode = 0x8004C2F0; // type:func
GetVideoMode = 0x8004C308; // type:func
PCopen = 0x8004C318; // type:func
PClseek = 0x8004C348; // type:func
PCcreat = 0x8004C36C; // type:func
_SN_read = 0x8004C458; // type:func
_SN_write = 0x8004C530; // type:func
SpuInit = 0x8004C548; // type:func
_SpuInit = 0x8004C568; // type:func
SpuStart = 0x8004C660; // type:func
_spu_init = 0x8004C6DC; // type:func
_spu_FwriteByIO = 0x8004C970; // type:func
_spu_FiDMA = 0x8004CB3C; // type:func
_spu_Fr_ = 0x8004CBFC; // type:func
_spu_t = 0x8004CCA8; // type:func
_spu_Fw = 0x8004CF38; // type:func
_spu_Fr = 0x8004CFC0; // type:func
_spu_FsetRXX = 0x8004D028; // type:func
_spu_FsetRXXa = 0x8004D070; // type:func
_spu_FgetRXXa = 0x8004D114; // type:func
_spu_FsetPCR = 0x8004D150; // type:func
_spu_FsetDelayW = 0x8004D1B0; // type:func
_spu_FsetDelayR = 0x8004D1DC; // type:func
_spu_Fw1ts = 0x8004D208; // type:func
_SpuDataCallback = 0x8004D270; // type:func
SpuQuit = 0x8004D294; // type:func
SpuInitMalloc = 0x8004D310; // type:func
SpuSetNoiseClock = 0x8004D364; // type:func
SpuSetReverb = 0x8004D3B4; // type:func
_SpuIsInAllocateArea = 0x8004D484; // type:func
_SpuIsInAllocateArea_ = 0x8004D504; // type:func
SpuReadDecodedData = 0x8004D590; // type:func
SpuSetIRQ = 0x8004D600; // type:func
SpuSetIRQCallback = 0x8004D740; // type:func
_SpuCallback = 0x8004D784; // type:func
SpuGetVoiceEnvelopeAttr = 0x8004D7A8; // type:func
SpuRead = 0x8004D818; // type:func (LIBSPU S_R.OBJ, which psyq_sigs cannot tell from S_W.OBJ)
SpuWrite = 0x8004D878; // type:func (LIBSPU S_W.OBJ)
SpuSetTransferStartAddr = 0x8004D8D8; // type:func
SpuSetTransferMode = 0x8004D930; // type:func
SpuSetTransferCallback = 0x8004D964; // type:func
SpuSetCommonAttr = 0x8004D988; // type:func
SpuSetReverbModeType = 0x8004DD1C; // type:func
_spu_setReverbAttr = 0x8004DEF8; // type:func
SpuClearReverbWorkArea = 0x8004E3C8; // type:func
SpuSetReverbModeDepth = 0x8004E574; // type:func
SpuSetReverbModeDelayTime = 0x8004E5A0; // type:func
SpuSetReverbModeFeedback = 0x8004E6B8; // type:func
InitCARD = 0x8004E794; // type:func
StartCARD = 0x8004E7E8; // type:func
StopCARD = 0x8004E820; // type:func
_patch_card = 0x8004E8D8; // type:func
_patch_card2 = 0x8004E990; // type:func
_ExitCard = 0x8004EA20; // type:func

// Game kernel: sprite actor helpers (src/main/sprite_actor.c)
addClamp255 = 0x80021AD8; // type:func
setSVector3 = 0x80021B04; // type:func
setVector3 = 0x80021B14; // type:func
copySVector3 = 0x80021B24; // type:func
copyVector3 = 0x80021B48; // type:func
spriteActorSetRawTexture = 0x80021B6C; // type:func
spriteActorSetColor = 0x80021B98; // type:func
spriteActorSetTimeScale = 0x80021BCC; // type:func
spriteActorSetSpecialAnimation = 0x80021BF0; // type:func
spriteActorSetCallback = 0x80021BF8; // type:func
popByteFromAnimationStack = 0x80021C20; // type:func
popS16FromAnimationStack = 0x80021C3C; // type:func
popU24FromAnimationStack = 0x80021C6C; // type:func
pushByteOnAnimationStack = 0x80021CA0; // type:func
pushU16OnAnimationStack = 0x80021CC4; // type:func
pushU24OnAnimationStack = 0x80021CF8; // type:func
setFixedXZ = 0x80021D3C; // type:func

// Function starts splat merged into neighbours (found while matching)

// Data referenced from C by its base address (splat only labels the field
// addresses the assembly touches). Emitted into build/us/main.syms.ld.
D_800C4A20 = 0x800C4A20;
// Battle overlay BSS main's sprite code reads while the battle is loaded
// (battle.txt's names, so the PC port shares the battle's storage).
battleSpritesDisabled = 0x800C3664;
battleEventMoviePending = 0x800D3338; // in battle .bss, set by battle_event, cleared by battle_loader, read by battle_result and battleEntryPoint
processBattleAnimationSub0_var1 = 0x800C3E1C;
pSpriteCoreListHead = 0x800D363C;
D_800589B4 = 0x800589B4; // LIBSPU SpuReverbAttr (reverb mode, depth, delay, feedback)
D_800589B8 = 0x800589B8; // LIBSPU reverb mode, the m4_mode field of D_800589B4 (read by the asm stub func_8004E774)
D_800589D0 = 0x800589D0; // LIBSPU u16[24] voice center notes

// kernel.c read-only data that stays assembly (INCLUDE_RODATA): tables used by
// kernelMain, and string blocks referenced only from .data pointer tables.
D_800180FC = 0x800180FC; // size:0x8
D_80018104 = 0x80018104; // size:0xB4 force_not_migration:True
D_8001826C = 0x8001826C; // size:0x44 force_not_migration:True

// Game kernel names (Noah's where it has one; see src/main/*.c)
kernelMain = 0x80019578; // type:func
loadGameModeOverlay = 0x800199CC; // type:func
checkSoftReboot = 0x80019CA0; // type:func
softReboot = 0x80019CD0; // type:func
showBootLogo = 0x80019D48; // type:func
initKernelMenuDrawContext = 0x8001A1E4; // type:func
setupKernelMenuDraw = 0x8001A250; // type:func
printKernelMenu = 0x8001A344; // type:func
kernelBootMenu = 0x8001A4B4; // type:func
lifeGameInit = 0x8001A5CC; // type:func
lifeGameAddNeighbour = 0x8001A684; // type:func
lifeGameStep = 0x8001A6E8; // type:func
initKernelGlobals = 0x8001AADC; // type:func
getPartyMemberGearNum = 0x8001ACF0; // type:func
waitCdIdle = 0x8001AD1C; // type:func
startLoadingPartyCharacterFiles = 0x8001AD4C; // type:func
startLoadingPartyGearFiles = 0x8001AEB8; // type:func
updatePartyFileSet = 0x8001B044; // type:func
loadPartyFiles = 0x8001B158; // type:func
processLoadedPartyFiles = 0x8001B3A8; // type:func
resetBattleAudioState = 0x8001B66C; // type:func
battleEntryPoint = 0x8001B6C4; // type:func
initGraphicsForBattle = 0x8001B844; // type:func
initBattleRenderStructs = 0x8001B94C; // type:func
loadInitialGameState = 0x8001B970; // type:func
initGameState = 0x8001BB50; // type:func
loadBattleLoader = 0x8001BBAC; // type:func
randomInRange = 0x8001BD40; // type:func
setupMenuContext1D4 = 0x8001BDDC; // type:func
setupScreenGeometryForMenu = 0x8001BE14; // type:func
setupMenuContextTransforms = 0x8001BEEC; // type:func
drawMenuDebugUpdateInputs = 0x8001BF38; // type:func
drawMenuDebug = 0x8001C074; // type:func
enterMenu = 0x8001C634; // type:func
resetSpriteCallbacks = 0x8001C944; // type:func
execSpritesCallbacksList2 = 0x8001C964; // type:func
execSpritesCallbacksList1 = 0x8001C9F8; // type:func
registerSpriteCallback2 = 0x8001CA58; // type:func
registerSpriteCallback2Sub0 = 0x8001CB48; // type:func
allocateSavePointMeshDataSub0 = 0x8001CC18; // type:func
setTaskDrawFunction = 0x8001CD64; // type:func
setTaskUpdateFunction = 0x8001CD6C; // type:func
setTaskDeleteFunction = 0x8001CD74; // type:func
allocateSavePointMeshDataSub0_callback = 0x8001CD94; // type:func
addToSpriteTransferList = 0x8001D2B0; // type:func
initPerSubgroupTransforms = 0x8001D4E8; // type:func
allocateSpecialEffectSpriteVram = 0x8001F530; // type:func
getBoundingVolumeFromSprite = 0x8001F5BC; // type:func
updateAllSubsprites = 0x8001F6B0; // type:func
executeSpriteBytecode2Sub0Sub0sub0 = 0x8001F750; // type:func
executeSpriteBytecode2Sub0Sub0 = 0x8001F8E8; // type:func
uploadBuiltinTexture = 0x8001FAB4; // type:func
executeSpriteBytecode2Sub3 = 0x8001FBA4; // type:func
spriteActorRestoreState = 0x80021D50; // type:func
spriteActorSaveState = 0x80021EBC; // type:func
spriteActorSetDefaultAnimationId = 0x80021FB8; // type:func
spriteActorSetMoveSpeed = 0x80021FC0; // type:func
spriteActorSetDirection = 0x80021FE0; // type:func
setGraphicEntityScale = 0x80022000; // type:func
spriteCallback_render2_updateMatrix = 0x80022038; // type:func
setAnimationBundle = 0x800222BC; // type:func
computeStepFromMoveSpeed = 0x80022974; // type:func
applySpriteVerticalMovement = 0x80022B2C; // type:func
modulateSpeed = 0x80022CAC; // type:func
updateSpriteMovement = 0x80022CDC; // type:func
executeSpriteBytecode2Sub1 = 0x80022D44; // type:func
savePointCallback8 = 0x80022DF4; // type:func
savePointCallbackC = 0x80022EB8; // type:func
deleteFieldEntitySub4 = 0x800230A8; // type:func
setTransparencyMode = 0x80023290; // type:func
allocateSavePointMeshData = 0x800233A4; // type:func
getSavePointCreationMode1 = 0x80023440; // type:func
resetPerSubgroupTransforms = 0x800234AC; // type:func
spriteActorSetPlayingAnimation = 0x800245D8; // type:func
executeSpriteBytecode2 = 0x800248D4; // type:func
uploadTextureToVram = 0x8002DDE4; // type:func
allocateHeap = 0x80031BDC; // type:func
freeHeap = 0x800320E8; // type:func
resetMemoryAllocStats = 0x80032498; // type:func

// Game kernel globals (Noah names)
gameState = 0x8006D634;
isBattleOverlayLoaded = 0x800591AD;
fieldDrawEnvsInitialized = 0x80059198;
gMenuContext = 0x800625A0;

// More function starts splat merged into neighbours (round 2)

// File system (src/main/filesystem.c; Noah names)
executeBattleMoveImageCommands = 0x80027EAC; // type:func
initCDAndFileSystem = 0x80028230; // type:func
setCurrentDirectory = 0x80028470; // type:func
getCurrentDirectory = 0x800284B4; // type:func
isCDBusy = 0x800286CC; // type:func
getFileSize = 0x80028738; // type:func
getFileSizeAligned = 0x800288EC; // type:func
getNegativeFileSize = 0x80028928; // type:func
getFileStartSector = 0x800289D0; // type:func
waitReadCompletion = 0x80028A60; // type:func
readRawSectorsFromDisk = 0x8002954C; // type:func
readFile = 0x800295D8; // type:func

// 3D models (src/main/model.c; Noah names)
submitModelForRendering = 0x8002C700; // type:func
initModel2 = 0x8002C8CC; // type:func
initModel1 = 0x8002CB54; // type:func
setupOverrideTPage = 0x8002CC10; // type:func
setupOverrideClut = 0x8002CC74; // type:func
initModel2Sub0 = 0x8002CCAC; // type:func
setupPrimTexturePage = 0x8002CCC8; // type:func
setupPrimClut = 0x8002CD24; // type:func
primD_isValid = 0x8002CD64; // type:func
prim0_init = 0x8002CDCC; // type:func
prim4_init = 0x8002CF34; // type:func
prim8_init = 0x8002CF58; // type:func
primC_init = 0x8002D0C0; // type:func
primD_init = 0x8002D0E4; // type:func
prim9_init = 0x8002D530; // type:func
prim2_init = 0x8002D6AC; // type:func
prim1_init = 0x8002D814; // type:func
prim5_init = 0x8002D984; // type:func
prim3_init = 0x8002DA14; // type:func
computeFaceNormal = 0x8002DB84; // type:func
loadMenuImageBundle = 0x8002DD20; // type:func

// Font, background polys, heap (Noah names)
battleSetupStringInPolyFTRot = 0x80025FA8; // type:func
initMenuTiles6Sub = 0x800263E4; // type:func
setupTotalDamageDisplayPoly = 0x80026BA4; // type:func
createBackgroundPoly = 0x8002709C; // type:func
renderBackgroundPoly = 0x800273C4; // type:func
computeBackgroundPoly = 0x800278F8; // type:func
traceNextAlloc = 0x800324B8; // type:func
mallocAndDecompress = 0x80032E88; // type:func
initFieldDrawEnvsSub0 = 0x8002DFF0; // type:func

// Stack-switching / $ra-capturing functions (Noah names)
customVramUpload = 0x8001FB30; // type:func
transfertNpcSpriteSheetElement = 0x80022A0C; // type:func
bootGame = 0x80019ACC; // type:func
executeSpriteBytecode2Extended = 0x8001FBE4; // type:func

// Entry point inside the hand-written render loops, jumped to from the
// hand-written code at 0x80030750 (another assembly file).

// MIMe and lighting (src/main/mime.c, light.c; Noah names)
dynamicVerticesDefaultUpdateFunction = 0x8003014C; // type:func
dynamicVertices_resertVertices = 0x800301C8; // type:func
dynamicVertices_updateVertices = 0x80030228; // type:func
initModelDynamicVertices = 0x800303C8; // type:func
updateDynamicVertices = 0x800305D8; // type:func
isObjectClipped = 0x8003101C; // type:func

// Compiled code right after the hand-written LZSS decoder (0x80032EB4).

// Dialog text, debug font, sound (Noah names)
setupWindowSize2 = 0x80032F54; // type:func
doPointerRelocation = 0x8003342C; // type:func
initFont = 0x80033558; // type:func
setupPrintDialogTextVar = 0x800335F4; // type:func
initFontPalettes = 0x80033698; // type:func
getDialogParamPointer = 0x80033728; // type:func
dialogSpecialCase9AndASub0 = 0x80033ABC; // type:func
addDialogWindowsToOTSub0 = 0x80033CD0; // type:func
dialogSpecialCase9AndA = 0x80033CF0; // type:func
dialogSpecialCase9AndA_2 = 0x80033DD4; // type:func
updateDialogTextImage = 0x80033DF0; // type:func
logToScreen = 0x8003700C; // type:func
initDebugFontClut = 0x80036E4C; // type:func
addDebugTextPrim = 0x800370DC; // type:func
resetDebugPrint = 0x800372CC; // type:func
printDebugTextOnScreen = 0x80037324; // type:func
deinitDebugFont = 0x8003748C; // type:func
initDebugFont = 0x800374E8; // type:func
initSoundSystem = 0x80037B88; // type:func
loadWds = 0x80037FD8; // type:func
playMusic2 = 0x800380D0; // type:func
getSamplePtr = 0x800381F4; // type:func
setupSamplesPtr = 0x80038264; // type:func
sendSamples2 = 0x8003827C; // type:func

// Dialog windows and controller input (Noah names)
addDialogWindowsToOTSub1 = 0x800345E0; // type:func
resetDialogWindow18 = 0x80034614; // type:func
dealocateDialogWindow18MemorySubSub = 0x8003463C; // type:func
dealocateDialogWindow18MemorySub = 0x800346A4; // type:func
dealocateDialogWindow18Memory = 0x800346D4; // type:func
addDialogWindowsToOTSub2 = 0x80034714; // type:func
getWindowSubStructX = 0x800347AC; // type:func
getWindowSubStructY = 0x800347C0; // type:func
setupMultiChoiceColor = 0x80034800; // type:func
setSelectedLineForMultiChoice = 0x80034874; // type:func
clearSelectedLineForMultiChoice = 0x8003487C; // type:func
updateAndRenderTextForDialogWindow = 0x80034888; // type:func
getDialogFontCharacterWidth = 0x80034F98; // type:func
printDialogCharacter = 0x80034FFC; // type:func
getInputDuringVsync = 0x800358BC; // type:func
saveInputs = 0x80035C0C; // type:func
loadInputFromVSyncBuffer = 0x80035CDC; // type:func
resetInputs = 0x80035DB0; // type:func
getInputOverflowed = 0x80036410; // type:func

// Sound driver (Noah names)
unloadWds = 0x80038310; // type:func
findInWdsLinkedList = 0x800383EC; // type:func
loadSequence = 0x80038428; // type:func
unloadSequence = 0x8003852C; // type:func
processSoundMenuSub0 = 0x80038824; // type:func
setupReverb = 0x80038934; // type:func
freeBackToSoundArena = 0x80039144; // type:func
initLoadedSampleTable = 0x80039360; // type:func
allocateSPUSpaceForSamples = 0x800395B8; // type:func
freeSamples = 0x800396E0; // type:func
findFreeSlotInLoadedSamples = 0x80039784; // type:func
createMusicInstance = 0x80039850; // type:func
freeSoundInstance = 0x800399D4; // type:func
startMusicInstance = 0x80039A80; // type:func
startMusicInstanceSub0 = 0x80039C4C; // type:func
playSoundEffect = 0x80039DB8; // type:func
PlaySoundEffect2 = 0x80039F9C; // type:func
stopAllSounds = 0x80039FF8; // type:func
stopSequence = 0x8003A094; // type:func
StopSoundEffect = 0x8003A20C; // type:func
playBattleMusic = 0x8003A89C; // type:func
playBattleMusicSub1 = 0x8003AA30; // type:func
playBattleMusicSub1Sub1 = 0x8003AFA0; // type:func
startMusicInstanceSub0Sub = 0x8003B060; // type:func
initPercussions = 0x8003B0AC; // type:func
initSoundEffectInstances = 0x8003B148; // type:func
initSoundInstance = 0x8003B22C; // type:func
initSoundEffectSoundInstance = 0x8003B32C; // type:func
freeSoundInstanceField4 = 0x8003B930; // type:func
initSoundInstanceDefaults = 0x8003B370; // type:func
initSoundInstanceTracks = 0x8003B424; // type:func
playSoundEffectSub = 0x8003B644; // type:func
addActiveSoundInstance = 0x8003B9E4; // type:func
removePlayingSound = 0x8003BA38; // type:func
audioTick = 0x8003C020; // type:func
interpolateAudioParam = 0x8003C484; // type:func
executeSequenceEvents2 = 0x8003C4C4; // type:func
executeSequenceEvents = 0x8003C6E8; // type:func
processPercussions = 0x8003CC84; // type:func
setupAdsr = 0x8003E5BC; // type:func
applyFlagToAllVoices = 0x8003E680; // type:func
playBattleMusicSub1Sub0 = 0x8003E6C0; // type:func
sendAdsrToSpu = 0x8003E900; // type:func
audioTickSub1 = 0x8003EB5C; // type:func
voicePostUpdate2 = 0x8003EBF0; // type:func
computeSampleRate = 0x8003EEA0; // type:func
voicePostUpdate1 = 0x8003EFE4; // type:func
checkHeader = 0x8003F614; // type:func
checkSeqChecksum = 0x8003F684; // type:func
setSoundError = 0x8003F6B0; // type:func

// LIBGTE REG09.OBJ / REG13.OBJ (too short for tools/psyq_sigs.py to report)
ReadGeomScreen = 0x8004A0DC; // type:func
SetGeomScreen = 0x8004A14C; // type:func
// LIBSN: the two READ.OBJ signature hits (read and write through the PC link)
PCread = 0x8004C398; // type:func
PCwrite = 0x8004C470; // type:func

// The menu overlays (menu*.txt), loaded at 0x801C5000 by enterMenu.
menu2_loadGame_entryPoint = 0x801C62A8; // type:func
partyChangeMenuEntryPoint = 0x801CB0A8; // type:func
nameEntryMenuEntryPoint = 0x801CBDBC; // type:func
shopMenuEntryPoint = 0x801CCD28; // type:func
gearShopMenuEntryPoint = 0x801CE024; // type:func
// The battle overlay (battle.txt), loaded at 0x8006FAF0 for battles.
battleMain = 0x80070F40; // type:func
// Battle functions main's sprite and shape code calls while the battle overlay
// is loaded (battle.txt).
renderCustomPolyBuffer = 0x800B1F6C; // type:func
tintCustomPolyPrimitives = 0x800B2AEC; // type:func
sampleBattleTerrainHeight = 0x800BA8F4; // type:func
battleCameraControlSpriteInit = 0x800BC158; // type:func
executeSpriteBytecode2_battle = 0x800C11CC; // type:func

// ---- Noah names (naming pass, work/naming) ----
setGameMode = 0x8001996C; // type:func
processDebugMenuForMenuList = 0x8001C1A8; // type:func
registerSpriteCallback2_2 = 0x8001CE74; // type:func
findMatchingGraphicEntity = 0x8001D0A4; // type:func
resetSpriteTransfertList = 0x8001D298; // type:func
uploadCharacterSprites = 0x8001D468; // type:func
renderSpriteActor = 0x8001E298; // type:func
renderSpriteSquishedShadow = 0x8001E9BC; // type:func
isVramPreBacked = 0x8001EE68; // type:func
initFieldEntitySub4Sub4 = 0x8001EE74; // type:func
setSpriteActorAngle = 0x800223B0; // type:func
executeSpriteBytecode = 0x80022660; // type:func
getSpriteNumVerticalStrides = 0x80022A00; // type:func
uploadNpcSpriteSheet = 0x80022A70; // type:func
OP_INIT_ENTITY_SCRIPT_sub0Sub9 = 0x80023210; // type:func
setCurrentAnimationPtr = 0x80023538; // type:func
initFieldEntitySub4Sub1 = 0x80023804; // type:func
initsFieldEntitySub4_B4 = 0x8002393C; // type:func
createSavePointMeshDataMode0 = 0x80023950; // type:func
createSavePointMeshDataMode2 = 0x80023958; // type:func
initFieldEntitySub4Sub2 = 0x800239A0; // type:func
createSavePointMeshDataMode1 = 0x800239F4; // type:func
createSavePointMeshData = 0x80023A48; // type:func
spriteBytecode2ExtendedE0 = 0x80023B84; // type:func
createSpriteActorEX = 0x80024294; // type:func
initBattleSpriteActorVram = 0x800242F4; // type:func
initializeSpriteActor = 0x8002435C; // type:func
createSpriteActor = 0x80024524; // type:func
allocateShapeTransfert = 0x80024F64; // type:func
setCharacterRenderingOT = 0x80024FE4; // type:func
setCurrentRenderingMatrix = 0x80024FF4; // type:func
shapeTransfert = 0x80025044; // type:func
clearShapeTransfertTableEntry = 0x800250E0; // type:func
clearShapeTransferEntry = 0x80025180; // type:func
addToShapeTransfertTable = 0x800251C8; // type:func
spriteBytecode2ExtendedE0_Sub0Sub0 = 0x80025224; // type:func
spriteCallback_render0 = 0x80025258; // type:func
spriteCallback_render8 = 0x8002541C; // type:func
spriteCallback_render9 = 0x80025544; // type:func
spriteCallback_render2 = 0x80025718; // type:func
computeMenuBorder = 0x80026338; // type:func
setupDamagePoly = 0x80026DCC; // type:func
getCurrentDiscNumber = 0x80028530; // type:func
fieldModelRelocation = 0x8002C3E8; // type:func
initModel5 = 0x8002C644; // type:func
setFogNearColor = 0x8002C6E0; // type:func
unflagAllocation = 0x800320B8; // type:func
realStartBattleMusic = 0x800397FC; // type:func
waitForMusic = 0x8003BDFC; // type:func
seqOP_0_restAndNoteOff = 0x8003CD08; // type:func
seqOP_1_hold = 0x8003CD30; // type:func
seqOP_10_end = 0x8003CD8C; // type:func
seqOP_11_infiniteLoop = 0x8003CE04; // type:func
seqOP_14_setOctave = 0x8003CE18; // type:func
seqOP_15_incOctave = 0x8003CE38; // type:func
seqOP_16_decOctave = 0x8003CE50; // type:func
seqOP_17_timeSignature = 0x8003CE68; // type:func
seqOP_18_loopStart = 0x8003CEF0; // type:func
seqOP_19_loopEnd = 0x8003CF38; // type:func
seqOP_1A_loopBreak = 0x8003CFA4; // type:func
seqOP_1C_playSoundEffect = 0x8003CFF0; // type:func
seqOP_1D_stopSoundEffect = 0x8003D034; // type:func
seqOP_1E_jumpToTrack = 0x8003D070; // type:func
seqOP_20_setTempo = 0x8003D0E8; // type:func
seqOP_22_tempoSlide = 0x8003D13C; // type:func
seqOP_26_setMasterVolume = 0x8003D17C; // type:func
seqOP_29_setTranspose = 0x8003D208; // type:func
seqOP_2A_changeVoiceChannel = 0x8003D21C; // type:func
seqOP_2C_setAdsr = 0x8003D298; // type:func
seqOP_2D_adjustNoteLength = 0x8003D2D0; // type:func
seqOP_2E_percussionOn = 0x8003D300; // type:func
seqOP_2F_percussionOff = 0x8003D328; // type:func
seqOP_30_legatoOn = 0x8003D340; // type:func
seqOP_31_legatoOff = 0x8003D358; // type:func
seqOP_32_pitchModOn = 0x8003D370; // type:func
seqOP_34_setNoiseClock = 0x8003D3D8; // type:func
seqOP_35_adjustNoiseClock = 0x8003D438; // type:func
seqOP_38_setupReverb = 0x8003D4E4; // type:func
seqOP_3A_reverbOn = 0x8003D53C; // type:func
seqOP_40_ADSRReset = 0x8003D5D4; // type:func
seqOP_42_setAttack = 0x8003D640; // type:func
seqOP_44_setSustain = 0x8003D678; // type:func
seqOP_45_setRelease = 0x8003D694; // type:func
seqOP_49_setSustainMode = 0x8003D714; // type:func
seqOP_4A_setReleaseMode = 0x8003D730; // type:func
seqOP_50_setPitchBend = 0x8003D74C; // type:func
seqOP_51_adjustPitchBend = 0x8003D770; // type:func
seqOP_54_pitchSlide = 0x8003D7FC; // type:func
createRotationMatrix = 0x8003F738; // type:func
getAngleCos = 0x8003F8B0; // type:func
getAngleSin = 0x8003F8CC; // type:func
FlushCache = 0x80040454; // type:func
EnterCriticalSection = 0x800404D4; // type:func
ExitCriticalSection = 0x800404E4; // type:func
worldmapSoundFilesPendingCount = 0x8004F304;
fieldMusicLoadPending = 0x8004F308;
fieldScriptEntityAlreadyInitialized = 0x8004F30C;
currentlyPlayingMusic = 0x8004F324;
currentFieldId0 = 0x8004F330;
currentFieldId1 = 0x8004F334;
currentlyLoadedMusic = 0x8004F338;
currentlyLoadedWave = 0x8004F33C;
musicVar1 = 0x8004F340;
updateMusicState2Var2 = 0x8004F348;
fieldMapNumber = 0x8004F34C;
g_menuOpenCount = 0x8004F350;
musicVar2 = 0x8004F354;
updateMusicState2Var1 = 0x8004F358;
needStartMusicInstanceSub0 = 0x8004F35C;
needReloadWds = 0x8004F360;
updateMusicState2Var3 = 0x8004F36C;
mechaOverlayLoadingMode = 0x8004F370;
fieldCompassVar = 0x8004F378;
disableCharacterShadowsRendering = 0x8004F37C;
tpageLocationTable = 0x8004FAB8;
spriteMatrixTable = 0x8004FAF8;
currentSpriteCharacterSize = 0x8004FB98;
currentRenderingMatrix = 0x8004FBB8;
sizePerBytecodeTable = 0x8004FCC0; // opcodes 0x80-0xFF, read at [op - 0x80]
movieType = 0x8004FE44;
movieNumber = 0x8004FE45;
movieReturnMode = 0x8004FE46;
movieFadeParam = 0x8004FE47;
polyRenderDefs = 0x8004FE50;
screenClippingX = 0x800500F8;
screenClippingY = 0x800500FC;
gDepthDivider = 0x80050100;
objectClippingMask = 0x80050104;
overrideTPageMode = 0x80050108;
initModel2Sub0Var1 = 0x8005010C;
g_menuOpenArg = 0x80059171;
useDebugMenuList = 0x80059178;
pRunningOnDTL = 0x8005917C;
gBattleCurrentSoundEffectSeq = 0x8005919C;
battleDefaultEntityScale = 0x800591A8;
spriteBytecode2ExtendedE0_Var0 = 0x800591AC;
isWorldMapOverlayLoaded = 0x800591AE;
initFieldVar4 = 0x800591B0;
currentFileFrom0xC = 0x800591B2;
initFieldVar5 = 0x800591B3;
isFxFragmentsSetup = 0x800591B4;
shapeTransfertDoubleBufferIndex = 0x800592F8;
shapeTransfertTableSize = 0x800592FC;
primD_initSub0Sub0Var0 = 0x80059308;
primD_initSub0Sub1Var0 = 0x8005930C;
overrideTPageValue = 0x80059310;
primD_initSub0Sub1Var1 = 0x80059314;
playSoundEffectVar0 = 0x80059404;
currentModelInstanceDrawPrims = 0x80059424;
spritesCallback2Delay = 0x80059428;
pLoadedSequencesLinkedList = 0x80059440;
menuToEnter = 0x80059460;
numMaxSoundEffectInstances = 0x80059478;
battleInitVar0 = 0x8005947C;
newPadButtonForDialogs = 0x8005948C;
newPadButtonForDialogs2 = 0x80059490;
spriteCallback2Var4 = 0x80059494;
currentModeBlock18 = 0x80059498;
battleLoadDataVar2 = 0x8005949C;
newPadButtonForField = 0x800594A4;
newPadButtonForField2 = 0x800594A8;
shapeTransfertBuffer = 0x800594B4;
menuReturnState0 = 0x800594D0;
battleInitVar1 = 0x800594F8;
spuUpdateCounter = 0x80059504;
requestedBattleConfig = 0x80059508;
shapeTransfertTableStart = 0x80059524;
g_currentModelBlockSubBlocks = 0x80059528;
currentModelBlockNormals = 0x8005952C;
shapeTransfertTableEnd = 0x80059534;
g_currentModelBlockDisplayLists = 0x80059538;
currentModelBlockVertices = 0x8005953C;
battleTransitionEffect = 0x8005954C;
pLoadedWdsLinkedList = 0x80059558;
pPlayingSoundsLinkedList = 0x80059564;
currentOTEntry = 0x80059568;
characterRenderingOT = 0x8005956C;
fieldPolyCount = 0x80059578;
musicStatusFlag = 0x8005957C;
shapeTransfertTableCurrentEntry = 0x80059580;
battleDebugDisplay = 0x8005959C;
audioTickEvent = 0x800595BC;
fieldPolyCount2 = 0x800595C0;
battleStartSeq = 0x800595D0;
pSoundEffectsInstances = 0x800595D8;
pKernelGameState = 0x8005A39C;
partyCharacterBuffers = 0x8005A414;
mechaDataTable2 = 0x8005A420;
mechaDataTable1 = 0x8005A450;
rawFieldBundle = 0x8005A4E0;
pMusic = 0x80062528;
worldmapWdsResult = 0x8006258C;
currentParty = 0x80062590;
fieldSeq = 0x8006259C;
battleMusic = 0x80062648;
battleConfigs = 0x800658DC;
encounterProbabilityWeight = 0x80065ADC;
systemErrorCount = 0x8004F2BC;
systemErrorMessages = 0x8004F2C0;
kernelMenuCursor = 0x8004F2D8;
kernelMenuProgrammers = 0x8004F2DC;
updateEntityEventCode3Var0 = 0x80065B08;
partyGearSwitchFlags = 0x8006BE2C;
partyGearActorIds = 0x8006F990;
previousCameraEye2 = 0x8006F99C;
previousCameraAt2 = 0x8006F9AC;
currentBattleConfig = 0x8006F9DC;
asyncPartyCharacterLoadingTable = 0x8006FABC;
OP_INIT_ENTITY_SCRIPT_sub0Sub5 = 0x80021C00; // type:func
vec2dRatan2 = 0x80023124; // type:func
OP_INIT_ENTITY_SCRIPT_sub0Sub3 = 0x80023340; // type:func
setupStringInPolyFT4 = 0x8002675C; // type:func
loadImageFileToVram = 0x80029EB0; // type:func
allocateBufferForVramUpload = 0x8002A260; // type:func
getCdromFnd = 0x8002C3D8; // type:func
addSPRT = 0x80031798; // type:func
addDebugTextPrim2 = 0x800317E0; // type:func
getDialogParam1 = 0x80033760; // type:func
renderString = 0x80034EAC; // type:func
isControllerConnected = 0x80035734; // type:func
logToScreenProcessString = 0x80036718; // type:func
resumeMusic = 0x80037E8C; // type:func
pauseMusic = 0x80037EE4; // type:func
changeSoundOption = 0x800386C4; // type:func
copySoundMemory = 0x80039248; // type:func
claimSpuVoice = 0x8003E724; // type:func
releaseSpuVoice = 0x8003E83C; // type:func
voicePostUpdate2Sub0 = 0x8003EF04; // type:func
voicePostUpdate2Sub1 = 0x8003EFA0; // type:func
_bu_init = 0x80040464; // type:func
OpenEvent = 0x80040474; // type:func
CloseEvent = 0x80040484; // type:func
EnableEvent = 0x800404A4; // type:func
DisableEvent = 0x800404B4; // type:func
VectorNormalInner = 0x80048DD8; // type:func
seqOP_58_pitchLFO = 0x8003D8B8; // type:func
seqOP_59_pitchLFOWaveform = 0x8003D9A4; // type:func
seqOP_57_pitchLFOSpeed = 0x8003DAB0; // type:func
seqOP_5B_pitchLFOOff = 0x8003DB0C; // type:func
seqOP_60_setVolume = 0x8003DB2C; // type:func
seqOP_61_adjustVolume = 0x8003DB58; // type:func
seqOP_62_volumeSlide = 0x8003DB98; // type:func
seqOP_78_volumeSlideMulti = 0x8003DBE4; // type:func
seqOP_64_volumeLFO = 0x8003DC50; // type:func
seqOP_65_volumeLFOWaveform = 0x8003DD24; // type:func
seqOP_63_volumeLFOSpeed = 0x8003DE18; // type:func
seqOP_67_volumeLFOOff = 0x8003DE74; // type:func
seqOP_68_setPan = 0x8003DE94; // type:func
seqOP_6A_panSlide = 0x8003DEE4; // type:func
seqOP_6C_panLFO = 0x8003DF78; // type:func
seqOP_6D_panLFOWaveform = 0x8003E04C; // type:func
seqOP_6F_panLFOOff = 0x8003E160; // type:func
seqOP_71_LFOUpdate = 0x8003E1F8; // type:func
seqOP_76_LFORestart = 0x8003E360; // type:func
seqOP_7C_changeWdsAndADSR = 0x8003E44C; // type:func
seqOP_7E_changeBank = 0x8003E4F0; // type:func
seqOP_7F_waitRelease = 0x8003E54C; // type:func
getFilenameFromPC = 0x80028998; // type:func
batchStartLoadingFiles = 0x80029AFC; // type:func
freeModelBlock = 0x8002CBBC; // type:func
MulRotationMatrix = 0x80030A30; // type:func
flagAllocation = 0x800320A4; // type:func
decompress = 0x80032EB4; // type:func
callAddDebugTextPrim = 0x800366F0; // type:func
createMusicInstanceSub0 = 0x8003F67C; // type:func
bootMode = 0x80018088;
gameModes = 0x8001808C; // size:0x70 force_not_migration:True
startKernel = 0x80019524; // type:func
clearMemoryRange = 0x80019560; // type:func
dumpRamToPcFile = 0x80019C2C; // type:func
showSystemError = 0x80019EF8; // type:func
resetFieldScriptEntityInit = 0x8001AC94; // type:func
loadNewField = 0x8001B484; // type:func
loadRawFieldBundle = 0x8001B53C; // type:func
reloadWdsIfNeeded = 0x8001B5A8; // type:func
updateNeedStartMusicInstanceSub0 = 0x8001B5E8; // type:func
startBattleLoadingDuringEffect2 = 0x8001BB0C; // type:func
deleteAllTasks = 0x8001C8DC; // type:func
getTaskUpdateFunction = 0x8001CD7C; // type:func
getTaskDeleteFunction = 0x8001CD88; // type:func
findFirstChildTask = 0x8001D10C; // type:func
findTaskByCallback = 0x8001D164; // type:func
freeTaskPair = 0x8001D19C; // type:func
allocateTaskPair = 0x8001D1D8; // type:func
savePointCallbackC_sub1 = 0x8001D3F4; // type:func
uploadCharacterSpriteSub1 = 0x8001D53C; // type:func
uploadCharacterSprite = 0x8001DAE8; // type:func
setupSpriteActorTransform = 0x8001E148; // type:func
submitSpriteActorToRendering = 0x8001E3D8; // type:func
setupSpriteObjectMatrix = 0x80022090; // type:func
initFieldEntitySub4Sub5Sub0 = 0x80022224; // type:func
getModeForSavePointMesh = 0x80023468; // type:func
spawnEffectSprite = 0x80023FD8; // type:func
spriteBytecode2ExtendedE0_Sub0 = 0x80024730; // type:func
resetSpriteSystem = 0x80024F20; // type:func
freeShapeTransfert = 0x80024FB8; // type:func
spriteCallback_render1 = 0x80025710; // type:func
spriteCallback_render15 = 0x800257F0; // type:func
fadePaletteColors = 0x80026F44; // type:func
lerpPaletteColors = 0x80026FE8; // type:func
freeHeapIfNotNull = 0x80027D40; // type:func
setupImageMoveCommand = 0x80027D64; // type:func
freeImageMoveCommand = 0x8002800C; // type:func
reportReadError = 0x8002804C; // type:func
shutdownCDAndFileSystem = 0x800283D4; // type:func
loadPcHostFile = 0x80028570; // type:func
getRemainingReadSize = 0x800286BC; // type:func
setSectorBuffer = 0x80028A94; // type:func
clearSectorBuffer = 0x80028AAC; // type:func
getNextStreamedSector = 0x80028B14; // type:func
mergeFreeSectorSlots = 0x80028ECC; // type:func
getNextStreamedPacket = 0x80028F30; // type:func
releaseSectorSlot = 0x8002945C; // type:func
releaseStreamedPacket = 0x800294B4; // type:func
startFileRead = 0x80029690; // type:func
seekToFile = 0x8002A2D0; // type:func
setCdMode = 0x8002A428; // type:func
stopCdRead = 0x8002A498; // type:func
freeLoadingBatchBuffers = 0x8002A524; // type:func
allocateFileGroupBatch = 0x8002A57C; // type:func
cdCommandSyncCallback = 0x8002A68C; // type:func
batchLoadReadyCallback = 0x8002AC24; // type:func
readFileReadyCallback = 0x8002B084; // type:func
streamReadyCallback = 0x8002B2F0; // type:func
imageFileReadyCallback = 0x8002B5D0; // type:func
readImageFileSectorFromPc = 0x8002B8B0; // type:func
batchLoadDataCallback = 0x8002BA40; // type:func
streamDataCallback = 0x8002BA58; // type:func
imageFileDataCallback = 0x8002BB50; // type:func
processImageFileSectorPc = 0x8002BF38; // type:func
undoFieldModelRelocation = 0x8002C4BC; // type:func
relocateModelBlock = 0x8002C59C; // type:func
setupOverrideTPageFull = 0x8002CC54; // type:func
primA_init = 0x8002D180; // type:func
primB_init = 0x8002D244; // type:func
prim6_init = 0x8002D77C; // type:func
prim10_init = 0x8002DAFC; // type:func
getLargestAbsComponent = 0x8002DC9C; // type:func
getBssEnd = 0x8002DFE0; // type:func
prim3_0 = 0x8002E010; // type:func size:0x1E4
prim6_2 = 0x8002E448; // type:func size:0x204
FT3_FAKE = 0x8002F2E0; // type:func
GT3_FAKE = 0x8002F4B4; // type:func
primD_1 = 0x8002FAE8; // type:func
primD_4 = 0x8002FCFC; // type:func
// Entry stubs inside the render loops (one per primitive shape) that
// polyRenderDefs (model.c) points at: alternative entries (alabel). The
// size: on the routines that contain them keeps splat from splitting the
// routines there. Noah's names where it has them, else the same primT_M
// pattern (T = a polyRenderDefs row using it, M = render mode).
prim2_0 = 0x8002E024; // type:alabel
prim4_0 = 0x8002E038; // type:alabel
prim5_0 = 0x8002E04C; // type:alabel
primF_0 = 0x8002E22C; // type:alabel
primE_0 = 0x8002E240; // type:alabel
primC_0 = 0x8002E254; // type:alabel
primD_0 = 0x8002E268; // type:alabel
prim2_2 = 0x8002E45C; // type:alabel
prim4_2 = 0x8002E470; // type:alabel
prim5_2 = 0x8002E484; // type:alabel
primE_2 = 0x8002E660; // type:alabel
primC_2 = 0x8002E674; // type:alabel
primD_2 = 0x8002E688; // type:alabel
prim2_3 = 0x8002E8C8; // type:alabel
prim4_3 = 0x8002E8DC; // type:alabel
prim5_3 = 0x8002E8F0; // type:alabel
primE_3 = 0x8002EACC; // type:alabel
primC_3 = 0x8002EAE0; // type:alabel
primD_3 = 0x8002EAF4; // type:alabel
prim5_4 = 0x8002EF0C; // type:alabel
dynamicVertices_updateNormals = 0x800302D4; // type:func
freeModelDynamicVertices = 0x800306D0; // type:func
patchSelfModifyingCode = 0x80030988; // type:func
setupLightMatrix = 0x80030B14; // type:func
setAmbientColorFixed = 0x80030C40; // type:func
setAmbientColor = 0x80030C78; // type:func
isProjectedTriangleOnScreen = 0x80030EE8; // type:func
addPolyF3 = 0x800315A0; // type:func
addPolyFT3 = 0x800315C4; // type:func
addPolyG3 = 0x800315E8; // type:func
addPolyGT3 = 0x8003160C; // type:func
addPolyF4 = 0x80031630; // type:func
addPolyFT4 = 0x80031654; // type:func
addPolyG4 = 0x80031678; // type:func
addPolyGT4 = 0x8003169C; // type:func
addLineF2 = 0x800316C0; // type:func
addLineG2 = 0x800316E4; // type:func
addLineF3 = 0x80031708; // type:func
addLineG3 = 0x8003172C; // type:func
addLineF4 = 0x80031750; // type:func
addLineG4 = 0x80031774; // type:func
addSprt16 = 0x800317BC; // type:func
addTile = 0x80031804; // type:func
addTile16 = 0x80031828; // type:func
addTile8 = 0x8003184C; // type:func
addTile1 = 0x80031870; // type:func
getAllocationSize = 0x80031894; // type:func
getAllocationUser = 0x800318A8; // type:func
getAllocationCaller = 0x800318BC; // type:func
isAllocationFlagged = 0x800318DC; // type:func
loadHeapSymbolFile = 0x800318F8; // type:func
initHeap = 0x80031A68; // type:func
resetHeap = 0x80031B10; // type:func
getHeapUser = 0x80031B9C; // type:func
setHeapUser = 0x80031BA8; // type:func
getLastAllocRequest = 0x80031BC4; // type:func
shrinkAllocation = 0x80031F70; // type:func
mergeFreeHeapBlocks = 0x80031FF8; // type:func
freeHeapForUser = 0x8003218C; // type:func
freeAllHeap = 0x8003223C; // type:func
forceFreeAllHeap = 0x800322B4; // type:func
getTotalFreeHeap = 0x80032340; // type:func
getLargestFreeHeapBlock = 0x80032404; // type:func
findSymbolNameForAddress = 0x800324C4; // type:func
printHeapBlockInfo = 0x80032584; // type:func
dumpHeapBlocks = 0x8003278C; // type:func
unflagAndFreeHeap = 0x80032BAC; // type:func
printHeapDebug = 0x80032BDC; // type:func
freeHeapDelayed = 0x80032C18; // type:func
updateDelayedFrees = 0x80032CB8; // type:func
flushDelayedFrees = 0x80032D60; // type:func
writeHeapDumpString = 0x80032DCC; // type:func
dumpHeapToPcFile = 0x80032E04; // type:func
getFontData = 0x800334B8; // type:func
getTextBundle = 0x800334C8; // type:func
freeFontData = 0x800334D8; // type:func
freeTextBundle = 0x80033518; // type:func
initFontAndTextBundle = 0x80033668; // type:func
getDialogParam0 = 0x8003373C; // type:func
getAccessoryName = 0x800337E8; // type:func
getUsableItemName = 0x80033818; // type:func
getWeaponName = 0x80033848; // type:func
getItemLabelString = 0x800338D8; // type:func
drawCircleMenuChi_updateSub0Sub1 = 0x80033908; // type:func
drawCircleMenuChi_updateSub0Sub2 = 0x800339FC; // type:func
getGearAccessoryName = 0x80033A2C; // type:func
getGearWeaponName = 0x80033A5C; // type:func
decodeCharacterCodes = 0x80033B34; // type:func
findCharacterCode = 0x80033BAC; // type:func
encodeStringToCharCodes = 0x80033C20; // type:func
readPadButtons = 0x8003569C; // type:func
remapPadButtons = 0x800357C0; // type:func
getInputReplayCount = 0x80035DA0; // type:func
incrementPlayTime = 0x80035E44; // type:func
dumpVramToTimFile = 0x80035F1C; // type:func
dumpVramToPpmFile = 0x80035FF8; // type:func
initPadVibration = 0x8003611C; // type:func
updatePadActuator = 0x80036188; // type:func
updatePadVibration = 0x80036220; // type:func
startPadVibration = 0x80036258; // type:func
setPadVibrationDisabled = 0x80036270; // type:func
initPadSystem = 0x80036288; // type:func
vsyncCallback = 0x8003634C; // type:func
setDebuggerPollEnabled = 0x800363E0; // type:func
setVsyncUserCallback = 0x800363F0; // type:func
mergeQueuedInputs = 0x80036420; // type:func
printPadRawData = 0x80036528; // type:func
printPadDebugInfo = 0x800365FC; // type:func
setPrintCharCallback = 0x800366E0; // type:func
setDebugFontFlags = 0x80036CD8; // type:func
clearDebugFontFlags = 0x80036CF8; // type:func
getDebugFontFlags = 0x80036D18; // type:func
setDebugFontStateFlags = 0x80036D30; // type:func
clearDebugFontStateFlags = 0x80036D50; // type:func
getDebugFontStateFlags = 0x80036D70; // type:func
setDebugFontCharWidth = 0x80036D88; // type:func
setDebugFontCharHeight = 0x80036D98; // type:func
setDebugFontCursorX = 0x80036DA8; // type:func
setDebugFontCursorY = 0x80036DB8; // type:func
setDebugFontColor = 0x80036DC8; // type:func
getDebugFontCharWidth = 0x80036F44; // type:func
getDebugFontCharHeight = 0x80036F5C; // type:func
getDebugFontCursorX = 0x80036F74; // type:func
getDebugFontCursorY = 0x80036F8C; // type:func
getDebugFontNumPrims = 0x80036FA4; // type:func
saveDebugFontCursor = 0x80036FBC; // type:func
restoreDebugFontCursor = 0x80036FE4; // type:func
setDebugFontCursorPosition = 0x80037058; // type:func
setDebugFontBuffer = 0x8003747C; // type:func
selectionSort = 0x80037878; // type:func
sprintf_screen = 0x800379C8; // type:func
loadBattleMechaAndEnvironment = 0x800379D8; // type:func
shutdownSoundSystem = 0x80037DC0; // type:func
enableAudioTick = 0x80037F44; // type:func
disableAudioTick = 0x80037F88; // type:func
findSequenceInLoadedList = 0x8003864C; // type:func
setCdMixVolume = 0x8003885C; // type:func
startReverbAreaClear = 0x80038AD4; // type:func
clearNextReverbChunk = 0x80038B4C; // type:func
setMasterVolume = 0x80038C68; // type:func
setCdVolume = 0x80038D18; // type:func
setCdReverbAndMix = 0x80038DB4; // type:func
initSoundArena = 0x80038EC0; // type:func
allocateFromSoundArena = 0x80038F18; // type:func
allocateFromSoundArenaTop = 0x80039024; // type:func
getLargestSoundArenaGap = 0x800391CC; // type:func
clearSoundMemory = 0x800392EC; // type:func
allocateSpuRam = 0x800393B8; // type:func
allocateSpuRamFromTop = 0x800394B8; // type:func
setSpuBlockTag = 0x80039748; // type:func
findSpuBlock = 0x800397C0; // type:func
createMusicInstanceInBuffer = 0x80039910; // type:func
fadeOutMusicInstance = 0x80039C8C; // type:func
enableSoundEffects = 0x80039D2C; // type:func
playSoundEffectInFreeSlot = 0x80039E60; // type:func
playSoundEffectOnChannel = 0x80039EC4; // type:func
stopSoundEffectById = 0x8003A14C; // type:func
setSoundEffectVolume = 0x8003A2E4; // type:func
setSoundEffectChannelVolume = 0x8003A344; // type:func
fadeSoundEffectVolume = 0x8003A3B8; // type:func
fadeSoundEffectChannelVolume = 0x8003A450; // type:func
setSoundEffectPan = 0x8003A4FC; // type:func
setSoundEffectChannelPan = 0x8003A55C; // type:func
getPlayingSoundEffectMask = 0x8003A5D0; // type:func
isMusicInstancePlaying = 0x8003A82C; // type:func
setMusicInstanceTempo = 0x8003A838; // type:func
setMusicInstancePitch = 0x8003A948; // type:func
setMusicInstancePan = 0x8003A9BC; // type:func
setMusicInstanceTrackMuteMask = 0x8003AAC4; // type:func
keyOffMusicInstance = 0x8003AFFC; // type:func
removeAndFreeSoundInstance = 0x8003B1FC; // type:func
getSoundInstanceSize = 0x8003BB40; // type:func
spuDmaCompletionCallback = 0x8003BB64; // type:func
loadWdsSub0 = 0x8003BC10; // type:func
queueSpuRead = 0x8003BC34; // type:func
queueSpuReadDecodedData = 0x8003BC58; // type:func
loadWdsSub0Sub = 0x8003BCA0; // type:func
loadWdsSub0SubSub = 0x8003BDBC; // type:func
startTransfert = 0x8003BE68; // type:func
spuIrqCallback = 0x8003BFA0; // type:func
setSpuIrqHook = 0x8003C010; // type:func
seqOP_unused = 0x8003CD00; // type:func
seqOP_A_nop = 0x8003CD4C; // type:func
seqOP_E_skip3 = 0x8003CD7C; // type:func
seqOP_F_nop = 0x8003CD84; // type:func
seqOP_79_setMeasure = 0x8003CE9C; // type:func
seqOP_21_adjustTempo = 0x8003D110; // type:func
seqOP_27_masterVolumeSlide = 0x8003D1BC; // type:func
seqOP_3B_reverbOff = 0x8003D59C; // type:func
seqOP_3C_skip3 = 0x8003D5BC; // type:func
seqOP_3D_nop = 0x8003D5C4; // type:func
seqOP_3E_nop = 0x8003D5CC; // type:func
seqOP_41_setAdsrModes = 0x8003D60C; // type:func
seqOP_43_setDecay = 0x8003D65C; // type:func
seqOP_46_setSustainLevel = 0x8003D6B4; // type:func
seqOP_47_setDecayAndSustainLevel = 0x8003D6D0; // type:func
seqOP_48_setAttackMode = 0x8003D6F8; // type:func
seqOP_52_adjustPitchBendFine = 0x8003D79C; // type:func
seqOP_5C_pitchSlideOff = 0x8003D86C; // type:func
seqOP_56_portamento = 0x8003D884; // type:func
seqOP_5A_pitchLFOOn = 0x8003DAEC; // type:func
seqOP_66_volumeLFOOn = 0x8003DE54; // type:func
seqOP_69_adjustPan = 0x8003DEB4; // type:func
seqOP_6B_panLFOSpeed = 0x8003DF3C; // type:func
seqOP_6E_panLFOOn = 0x8003E140; // type:func
scaleLfoDepth = 0x8003E290; // type:func
seqOP_75_nop = 0x8003E358; // type:func
resetLfoState = 0x8003E3E0; // type:func
seqOP_77_LFOOff = 0x8003E40C; // type:func
clearSpuVoiceOwners = 0x8003E700; // type:func
keyOffSpuVoice = 0x8003E8A4; // type:func
stepLfoDisabled = 0x8003F190; // type:func
stepLfoSquare = 0x8003F1A4; // type:func
stepLfoSquareBipolar = 0x8003F1EC; // type:func
stepLfoTriangle = 0x8003F240; // type:func
stepLfoSawtooth = 0x8003F308; // type:func
stepLfoRandom = 0x8003F354; // type:func
stepLfoRandomBipolar = 0x8003F3C0; // type:func
setLfoRandomSeed = 0x8003F42C; // type:func
getLfoRandom = 0x8003F43C; // type:func
setSpuKeyOn = 0x8003F468; // type:func
setSpuKeyOff = 0x8003F484; // type:func
setSpuReverbVoices = 0x8003F4A0; // type:func
setSpuVoiceStartAddr = 0x8003F4C4; // type:func
setSpuVoiceLoopAddr = 0x8003F4E0; // type:func
setSpuVoiceVolume = 0x8003F4FC; // type:func
setSpuVoicePitch = 0x8003F518; // type:func
setSpuVoiceAttack = 0x8003F530; // type:func
setSpuVoiceDecay = 0x8003F560; // type:func
setSpuVoiceSustain = 0x8003F588; // type:func
setSpuVoiceRelease = 0x8003F5BC; // type:func
setSpuVoiceSustainLevel = 0x8003F5EC; // type:func
typeOfPlayableCharacterLoaded = 0x8004F31C;
fieldRequestedGears = 0x8004F320;
loadFieldSeqVar0 = 0x8004F32C;
playMusicSubVar2 = 0x8004F364;
playMusicSubVar0 = 0x8004F368;
characterOrGearsLoadingInProgress = 0x8004F374;
spriteBytecode2ExtendedE0_Sub0Sub0_callback = 0x8004FD40;
g_playTimeOverflow = 0x800501F8;
inputOverflowed = 0x80050208;
pAddDebugTextPrim = 0x80050594;
debugTextPalette = 0x80050598;
lfoWaveformFuncs = 0x800508A4;
pitchTable2 = 0x80050BF0;
registerSpriteCallback2Counter2 = 0x80059184;
allocateSavePointMeshDataSub0_var1 = 0x80059188;
registerSpriteCallback2Counter = 0x8005918C;
spriteTransfertListHead = 0x80059190;
specialEffectSpriteY = 0x80059194;
specialEffectSpriteX = 0x80059196;
loadVramSpriteParam = 0x800591B8;
currentGameModeOverlay = 0x800592BC;
oldBootMode = 0x800592C0;
shapeTransfertTemporaryBuffersLinkedLists = 0x80059300;
dialogFontVar0 = 0x8005934C;
dialogFontVar4 = 0x80059350;
dialogFontVar2 = 0x80059354;
dialogFontVar3 = 0x80059358;
dialogFontVarPtr2 = 0x8005935C;
printDialogTextVar = 0x80059360;
dialogFontVar1 = 0x80059364;
dialogFontVarPtr = 0x8005936C;
g_timeVSyncCount = 0x80059370;
inputReplayPosition = 0x8005937C;
inputReplayPosition2 = 0x80059380;
inputReplayOffset = 0x80059384;
debugFontRam = 0x80059394;
debugFontClutRect = 0x80059398;
g_playTimeSeconds = 0x80059418;
g_playTimeMinutes = 0x80059420;
loadWdsSub0SubVar1 = 0x80059458;
allocateSavePointMeshDataSub0_var0 = 0x80059464;
battleLoadDataVar0_raw = 0x80059470;
g_playTimeHours = 0x80059484;
g_playTimeInVsync = 0x80059488;
spriteCallbacksPreviousEntry = 0x800594C0;
shapeTransfertTable = 0x800594C4;
loadWdsSub0SubVar0 = 0x800594F4;
pendingKeyOn = 0x800594FC;
spuDmaTransertEntry = 0x80059510;
battleLoadDataVar1 = 0x80059520;
pendingKeyOff2 = 0x80059550;
pendingKeyOff = 0x80059554;
newPadButtonForScripts = 0x80059570;
spriteCallback2Var2 = 0x8005958C;
spriteCallbacksCurrentEntry = 0x80059590;
spriteCallbackHead = 0x80059594;
fogNearColor = 0x80059598;
battleEnvLoadingCommands = 0x8005A1DC;
g_spuVolumes = 0x8005A3C0;
spuVoiceOwners = 0x8006252C;
spuAllocatedBlocks = 0x8006F9FC;
printfStub = 0x80019964; // type:func
resetDefaultMemoryAllocStats = 0x80019C7C; // type:func
resetFieldAndPreloadPartyFiles = 0x8001ACA4; // type:func
allocateDrawTask = 0x8001CAF0; // type:func
freeDrawTask = 0x8001CBE8; // type:func
allocateUpdateTask = 0x8001CD08; // type:func
freeUpdateTask = 0x8001CE44; // type:func
detachChildSpriteActors = 0x8001D034; // type:func
clearSpriteTransfertList = 0x8001D2A4; // type:func
renderSpriteActorUpperPart = 0x8001E2F8; // type:func
renderSpriteActorLowerPart = 0x8001E368; // type:func
submitSpriteActorUpperPart = 0x8001EE88; // type:func
submitSpriteActorLowerPart = 0x8001F1D4; // type:func
savePointCallback8Counted = 0x80022E8C; // type:func
reallocateSubSpriteBuffer = 0x80022FC4; // type:func
allocateSpriteVramLocations = 0x8002303C; // type:func
setSpriteActorStaticFrame = 0x80023170; // type:func
spriteCallback_renderBillboardModel = 0x80025A88; // type:func
scalePaletteColorsClamped = 0x80025C04; // type:func
blendPaletteColors = 0x80025D4C; // type:func
setupStringInSprt = 0x80026A0C; // type:func
getDirectoryFileOffset = 0x80028548; // type:func
getLoadingFileSizeAligned = 0x80028808; // type:func
getLoadingFileStartSector = 0x80028A18; // type:func
hasSectorSlotNotInState = 0x80028E60; // type:func
seekToFileUnchecked = 0x8002A394; // type:func
printImageFileLoadState = 0x8002C310; // type:func
freeModelBlockDisplayList = 0x8002C68C; // type:func
renderLitFlatQuads = 0x80030C98; // type:func
resetHeapTraceState = 0x80031A30; // type:func
setHeapAllowFailure = 0x80031BB4; // type:func
unpinAllocation = 0x800320D0; // type:func
walkHeapBlockList = 0x800323B4; // type:func
allocateSoundBlock = 0x80032B0C; // type:func
fakeCalloc = 0x80032B64; // type:func
relocateOffsetTable = 0x80033474; // type:func
getDeathblowName = 0x80033784; // type:func
getGearDeathblowName = 0x800339C8; // type:func
getGearFuelAbilityName = 0x80033A8C; // type:func
remapAnalogJoystickButtons = 0x8003582C; // type:func
getDpadStickX = 0x80035884; // type:func
getDpadStickY = 0x800358A0; // type:func
setDebugFontLineStart = 0x8003708C; // type:func
clearLoadedSequences = 0x80038624; // type:func
stopAllMusicAndSounds = 0x8003869C; // type:func
setSequenceReverbEnabled = 0x800388D4; // type:func
setMusicInstanceStopExempt = 0x8003890C; // type:func
applyOutputModeVolumes = 0x80038DF4; // type:func
setVolumePairForOutputMode = 0x80038E6C; // type:func
resumeMusicInstance = 0x80039B68; // type:func
stopAllMusicInstances = 0x80039CC4; // type:func
setSoundEffectVoiceCount = 0x80039D78; // type:func
playSoundEffectFixedSlot = 0x80039E18; // type:func
playSoundEffectInFreeSlotVolPan = 0x80039F18; // type:func
findFreeSoundEffectSlot = 0x8003A65C; // type:func
setMusicLoopSelector = 0x8003ABE8; // type:func
getMusicInstancePlayTime = 0x8003ABF0; // type:func
getMusicInstanceLoopCount = 0x8003AC58; // type:func
processMusicInstanceSnapshot = 0x8003AD20; // type:func
freeMusicInstanceSnapshot = 0x8003AD98; // type:func
saveMusicInstanceSnapshot = 0x8003ADCC; // type:func
restoreMusicInstanceSnapshot = 0x8003AE84; // type:func
seekMusicToMeasure = 0x8003AF24; // type:func
copySoundInstanceState = 0x8003B97C; // type:func
applyFlagToActiveTracks = 0x8003BB08; // type:func
queueSpuReadDecodedCdData = 0x8003BC7C; // type:func
seqOP_D_selectLoopPoint = 0x8003CD54; // type:func
seqOP_24_setInstanceVar = 0x8003CEC0; // type:func
seqOP_25_adjustInstanceVar = 0x8003CED4; // type:func
seqOP_33_pitchModOff = 0x8003D3A4; // type:func
seqOP_36_noiseModeOn = 0x8003D4A4; // type:func
seqOP_37_noiseModeOff = 0x8003D4C4; // type:func
seqOP_53_adjustPitchBend16 = 0x8003D7C8; // type:func
seqOP_55_toggleEndlessPitchSlide = 0x8003D854; // type:func
seqOP_70_LFOSelect = 0x8003E180; // type:func
seqOP_72_LFODelayAndFade = 0x8003E308; // type:func
seqOP_7D_setTempoScale = 0x8003E4BC; // type:func
assignSpuVoiceOwner = 0x8003E7E0; // type:func
stepLfoTriangleBipolar = 0x8003F2A0; // type:func
ChangeClearPAD = 0x800405D4; // type:func
InitPAD2 = 0x80040A8C; // type:func
StartPAD2 = 0x80040A9C; // type:func
StopPAD2 = 0x80040AAC; // type:func
PAD_init2 = 0x80040ABC; // type:func
SysEnqIntRP = 0x80040ACC; // type:func
SysDeqIntRP = 0x80040ADC; // type:func
DeliverEvent = 0x80040E18; // type:func
ChangeClearRCnt = 0x8004B730; // type:func
ReturnFromException = 0x8004BEF0; // type:func
ResetEntryInt = 0x8004BF00; // type:func
HookEntryInt = 0x8004BF10; // type:func
PCclose = 0x8004C338; // type:func
InitCARD2 = 0x8004E850; // type:func
StartCARD2 = 0x8004E860; // type:func
StopCARD2 = 0x8004E870; // type:func
postBootLogoNop = 0x8001B6BC; // type:func
primE_init = 0x8002D354; // type:func
primF_init = 0x8002D420; // type:func
getTextBank16String = 0x800337B8; // type:func
getTextBank24String = 0x80033878; // type:func
getTextBank25String = 0x800338A8; // type:func
getTextBank19String = 0x80033938; // type:func
getTextBank21String = 0x80033968; // type:func
getTextBank27String = 0x80033998; // type:func
fieldBootedOnce = 0x8004F2F8;
savedMusicInstance = 0x8004F2FC;
compassGraphicDataLoaded = 0x8004F344;
disableMechaRendering = 0x8004F380;
playWorldmapMusic = 0x8004F384;
battleTransitionSoundEffects = 0x8004F388;
debugMenuNameBuffers = 0x8004F39C;
debugMenuNames = 0x8004FA9C;
shadowQuadCorners = 0x8004FAD8;
spriteModelLightColors = 0x8004FD80;
spriteModelLightDirections = 0x8004FDA0;
rotatedGlyphCorners = 0x8004FDC0;
batchMaxSkipSectors = 0x8004FDE0;
readFileErrorCount = 0x8004FDE4;
batchReadErrorCount = 0x8004FDE8;
streamReadErrorCount = 0x8004FDEC;
fatFileTableBuffer = 0x8004FDF0;
fatDirectoryTableBuffer = 0x8004FDF4;
remainingReadSize = 0x8004FDF8;
readInProgress = 0x8004FDFC;
batchFilesRemaining = 0x8004FE00;
readCurrentSector = 0x8004FE04;
readDestination = 0x8004FE08;
loadingBatchCommands = 0x8004FE0C;
startOfDirectoryFileIndex = 0x8004FE14;
readDirectoryFileIndex = 0x8004FE18;
cdCommandState = 0x8004FE1C;
streamSectorSlots = 0x8004FE2C;
streamSectorBuffer = 0x8004FE30;
readStopRequested = 0x8004FE34;
readNextSeekFile = 0x8004FE38;
batchSkippingGap = 0x8004FE3C;
streamSectorSlotCount = 0x8004FE40;
cdromFnd = 0x8004FE48;
pcStreamFd = 0x8004FE4C;
heapUserNames = 0x80050110;
heapTypeNames = 0x80050140;
fontPalettes = 0x80050190;
remapSlotButtonBits = 0x800501E8;
vsyncUserCallback = 0x800501FC;
dpadToStickX = 0x8005020C;
dpadToStickY = 0x8005021C;
pad0RepeatTimer = 0x8005022C;
pad1RepeatTimer = 0x80050230;
dpadButtonMapping = 0x80050238;
seqOpcodes = 0x80050624;
opcodeSizes = 0x80050824;
spuRegisters = 0x800508E4;
reverbWorkAreaSizes = 0x800508E8;
errorSoundSed = 0x80050910;
errorSoundSedBody = 0x80050924;
errorSoundWds = 0x80050940;
noteDeltaTimeTable = 0x800509B0;
noteKeyTable = 0x80050A94;
pitchToOctaveSemitone = 0x80050B78;
gearSwitchDisabled = 0x80059179;
victoryFanfarePlayed = 0x80059180;
libLsBanner = 0x800591C8;
runningOnDTL = 0x80010000;
discFileTable = 0x80010004; // force_not_migration:True
discDirectoryTable = 0x80018004; // force_not_migration:True
overlayLoadAddress = 0x80018084; // size:0x4 force_not_migration:True
battleBlinkingPolyBuffer = 0x8001C76C;
gameModeOverlayFileIds = 0x8004EAA0;
compressedBootLogo = 0x8004EABC;
movieScrollingTextEnabled = 0x8004F300;
fieldScriptTimerTicks = 0x8004F318;
fieldScriptTimerMode = 0x8004F328;
compressedPauseImage = 0x8004FBD8;
readCursorIndex = 0x8004FE10;
cdErrorRecoveryAction = 0x8004FE20;
streamNextConsumeSequence = 0x8004FE24;
streamNextReadSequence = 0x8004FE26;
streamNextDataSequence = 0x8004FE28;
crossedBoxGlyph = 0x800501D0;
compressedDebugFont = 0x80050240;
battlingMainTaskIndex = 0x80050618;
rcossin_tbl = 0x800523F0;
zeroSprintfSpec = 0x800563F0;
rcntIntrRegs = 0x800563FC;
rcntRegisters = 0x80056400;
rcntIntrMaskBits = 0x80056404;
padInitFlag = 0x80056414;
sio0Regs = 0x80056418;
padIntrRegs = 0x8005641C;
cdCommandSendsSetloc = 0x80056420;
CD_cbsync = 0x800564A8;
CD_cbready = 0x800564AC;
CD_debug = 0x800564B4;
CD_status = 0x800564B8;
CD_status1 = 0x800564BC;
CD_nopen = 0x800564C0;
CD_pos = 0x800564C4;
CD_mode = 0x800564C8;
CD_com = 0x800564C9;
cdCommandTraits = 0x80056570;
cdReg0 = 0x80056770;
cdReg1 = 0x80056774;
cdReg2 = 0x80056778;
cdReg3 = 0x8005677C;
cdComDelayReg = 0x80056780;
cdSpuRegs = 0x80056784;
cdLastIntr = 0x80056788;
cdDebugInfo = 0x8005678C;
cdBusConfigReg = 0x800567A4;
cdDpcrReg = 0x800567A8;
cdDmaMadrReg = 0x800567AC;
cdDmaBcrReg = 0x800567B0;
cdDmaChcrReg = 0x800567B4;
ctypeClassTable = 0x800567C0;
cdReadCallbackFunc = 0x80056844;
cdReadState = 0x80056848;
gpuDriverFuncs = 0x80056888;
pGpuDriver = 0x800568C8;
GPU_printf = 0x800568CC;
gpuEnvState = 0x800568D0;
gpuVramWidths = 0x80056950;
gpuVramHeights = 0x80056964;
moveImagePacket = 0x80056978; // LIBGPU SYS MoveImage packet
clearOTagTerminator = 0x8005698C;
gpuGp0Reg = 0x800569A0;
gpuGp1Reg = 0x800569A4;
gpuDma2MadrReg = 0x800569A8;
gpuDma2BcrReg = 0x800569AC;
gpuDma2ChcrReg = 0x800569B0;
gpuDma6MadrReg = 0x800569B4;
gpuDma6BcrReg = 0x800569B8;
gpuDma6ChcrReg = 0x800569BC;
gpuDpcrReg = 0x800569C0;
gpuLastQueueCall = 0x800569C4;
gpuAddqueSavedMask = 0x800569DC;
gpuExequeSavedMask = 0x800569E0;
gpuResetSavedMask = 0x800569E4;
gpuAlarmDeadline = 0x800569E8;
gpuAlarmCount = 0x800569EC;
ratanTable = 0x80057030;
vsyncGpuStatReg = 0x8005783C;
vsyncHblankCountReg = 0x80057840;
vsyncLastHcount = 0x80057844;
vsyncLastVcount = 0x80057848;
strLibraryCopyright = 0x8005784C;
intrDispatcherState = 0x800578A4;
intrEnvTable = 0x8005890C;
pIntrEnv = 0x8005892C;
intrStatusReg = 0x80058930;
intrMaskReg = 0x80058934;
intrDpcrReg = 0x80058938;
intrTrapTimeoutCount = 0x8005893C;
vsyncCallbacks = 0x80058940;
vblankCounter = 0x80058960;
rcnt1ModeReg = 0x80058964;
dmaDicrReg = 0x80058968;
dmaCallbacks = 0x8005896C;
dmaChannelRegs = 0x8005898C;
libetcVideoMode = 0x80058990;
spuZeroBuffer = 0x80058A00;
_spu_RXX = 0x80058E08;
spuDmaMadrReg = 0x80058E0C;
spuDmaBcrReg = 0x80058E10;
spuDmaChcrReg = 0x80058E14;
spuDpcrReg = 0x80058E18;
spuBusDelayReg = 0x80058E1C;
spuDummyVoiceBlock = 0x80058E48;
spuDmaReadMode = 0x80058E58;
spuDmaStartAddr = 0x80058E5C;
spuDmaBlockCount = 0x80058E60;
spuRevWorkAreaSizes = 0x80058E98;
spuReverbPresets = 0x80058EC0;
battleScriptLoaderTaskCreationInProgress = 0x800591AF;
debugPrintSink = 0x800592B8;
kernelMenuFrameCount = 0x800592C4;
kernelMenuOddOrEven = 0x800592C8;
gKernelDisplayContext = 0x800592CC;
kernelMenuRunning = 0x800592D0;
lifeGameCells = 0x800592D4;
lifeGameNeighbourCounts = 0x800592D8;
lifeGameTiles = 0x800592DC;
customVramUploadPtr = 0x800592E4;
customVramUploadX = 0x800592E8;
customVramUploadY = 0x800592EA;
currentNpcSpriteUploadRect = 0x800592F0;
currentNpcSpriteUploadDataPtr = 0x800592F4;
heapNextAllocType = 0x80059318;
currentHeapUser = 0x8005931C;
heapFirstBlockData = 0x80059320;
heapNeedsMerge = 0x8005932C;
heapAllowFailure = 0x80059330;
heapSymbolFileStart = 0x80059334;
heapSymbolFileEnd = 0x80059338;
heapLastRequestSize = 0x8005933C;
heapLastRequestCaller = 0x80059340;
heapDumpFileHandle = 0x80059348;
dialogTextBundle = 0x80059368;
previousDownButtons = 0x80059374;
previousDownButtons2 = 0x80059378;
lastPadType = 0x80059388;
debuggerPollEnabled = 0x80059390;
debugFontExternalBuffer = 0x800593A0;
soundReverbMode = 0x80059409;
soundReverbDelay = 0x8005940A;
soundReverbFeedback = 0x8005940B;
soundReverbDepthVolume = 0x8005940C;
soundArenaHead = 0x80059410;
textSpriteMode1 = 0x80059414;
battleEventReturnMode = 0x8005942C;
pad0LeftStickX = 0x80059430;
pad1LeftStickX = 0x80059434;
pad0LeftStickY = 0x80059438;
pad1LeftStickY = 0x8005943C;
pad0RightStickX = 0x80059444;
pad1RightStickX = 0x80059448;
pad0RightStickY = 0x8005944C;
pad1RightStickY = 0x80059450;
menuSharedResources = 0x8005945C;
battleLoaderProbeBlock = 0x80059480;
battleLoaderMemoryBlock = 0x800594AC;
savedMenuSelectedEntry = 0x800594CC;
dialogWindowColor = 0x800594D4;
reverbWorkAreaBlock = 0x800594D8;
remappedPadPressed = 0x800594DC;
remappedPadPressed2 = 0x800594E0;
lfoRandomSeed = 0x800594E4;
remappedPadRepeat = 0x800594E8;
remappedPadRepeat2 = 0x800594EC;
soundErrorCode = 0x80059500;
spuIrqHook = 0x8005950C;
spuIrqCount = 0x80059514;
soundArenaSize = 0x8005951C;
cdMixAttenuation = 0x80059530;
audioTickCount = 0x80059540;
soundEffectVoiceCount = 0x80059544;
spuDecodedDataHalf = 0x80059548;
wdsFile3 = 0x80059560;
sendSamplesSpuAddr = 0x80059584;
sendSamplesBytesLeft = 0x80059588;
dialogWindowBlendMode = 0x800595A0;
reverbClearBuffer = 0x800595A4;
battleCharacterConfigFile = 0x800595A8;
wdsFile5 = 0x800595AC;
audioTickTotalTime = 0x800595C4;
remappedPadButtons = 0x800595C8;
remappedPadButtons2 = 0x800595CC;
textSpriteMode0 = 0x800595D4;
reverbClearSpuAddr = 0x800595DC;
reverbClearBytesLeft = 0x800595E0;
soundArenaEnd = 0x800595E4;
kernelMenuDrawEnvDoubleBuffer = 0x800595E8;
discardSectorBuffer = 0x800596F8;
readSectorHeader = 0x80059EF8;
pcImageFileFd = 0x80059F04;
savedCdReadyCallback = 0x80059F08;
currentReadFileIndex = 0x80059F0C;
cdReadLocation = 0x80059F10;
cdFilterParam = 0x80059F14;
cdModeParam = 0x80059F18;
cdControlResult = 0x80059F1C;
imageFilePixelPosMode = 0x80059F24;
imageFilePixelX = 0x80059F28;
imageFilePixelY = 0x80059F2C;
imageFileClutPosMode = 0x80059F30;
imageFileClutX = 0x80059F34;
imageFileClutY = 0x80059F38;
imageFileUnitsRemaining = 0x80059F3C;
imageFileUploadX = 0x80059F40;
imageFileUploadY = 0x80059F44;
imageFileUploadWidth = 0x80059F48;
imageFileRowsPerSector = 0x80059F4C;
imageFileSectorsRemaining = 0x80059F50;
pcStreamPacketHeader = 0x80059F54;
pcStreamPacketData = 0x80059F58;
pcStreamPacketSectorCount = 0x80059F5C;
pcStreamPacketSectorIndex = 0x80059F60;
lightDirectionMatrix = 0x80059F64;
lightColorMatrix = 0x80059F84;
heapUserTypeNames = 0x80059FA4;
delayedFreeListHead = 0x80059FCC;
renderStringWindow = 0x80059FD8;
renderStringLine = 0x8005A068;
dialogNumberCharCodes = 0x8005A0C8; // u16[12] number-to-text buffer (dialog.c)
dialogSpecialCase9AndA_2Data = 0x8005A0E4;
padActuators = 0x8005A1BC;
zeroPrintSpec = 0x8005A1CC;
randSeed = 0x8005A1FC;
padIntrHandlerEntry = 0x8005A200;
cdSyncResult = 0x8005A210;
cdReadyResult = 0x8005A218;
cdDataEndResult = 0x8005A220;
cdAlarm = 0x8005A228;
putcharColumn = 0x8005A234;
clearImagePacket = 0x8005A238;
clearImageEnvPacket = 0x8005A25C;
gpuCtlShadow = 0x8005A27C;
timStreamPtr = 0x8005A37C;
tmdVertexTop = 0x8005A380;
tmdNormalTop = 0x8005A384;
tmdPrimPtr = 0x8005A388;
tmdPrimCount = 0x8005A38C;
battleScriptGameStateVars = 0x8005A3A0;
partyFieldActorIds = 0x8005A444;
createSavePointMeshData_mode6 = 0x8005A474;
cdReadSetlocCount = 0x8005A488;
cdReadCommandOkCount = 0x8005A48C;
cdReadCommandErrorCount = 0x8005A490;
cdReadRecoveryCount = 0x8005A494;
cdReadRecoveryErrorCount = 0x8005A498;
compassGraphicDataStaging = 0x8005A4A0;
cdStopRecoveryCount = 0x8005A4A4;
gearShopOrderingTables = 0x8005A4AC;
streamFrameNumber = 0x8005A4B8;
loadFieldSeqVar1 = 0x8005A4BC;
rawFieldBundleSize = 0x8005A4C0;
_spu_RQ = 0x8005A4C8;
cdErrorCount = 0x8005A4DC;
fieldWdsSlots = 0x80062518;
partyLoadingBatchCommands = 0x800625A4;
padReceiveBuffers = 0x800625FC;
GlobalCallback = 0x80062640;
battleEnvMechaInitData = 0x800658C8;
mechaOverlayProbeBlock = 0x800658CC;
partyCharacterBuffersCompressed = 0x80065AFC;
soundArena = 0x80065B0C;
createSavePointMeshData_mode5 = 0x8006BE10;
mechaOverlayMemoryBlock = 0x8006BE24;
_que = 0x8006BE34;
battlingEntryParams = 0x8005061C;
newPadButtonForScripts2 = 0x80059574;
cdStopRecoveryOkCount = 0x8005A4A8;
cdStopRecoveryErrorCount = 0x8005A4B4;
overlayStateSaveBlock = 0x8005A4E4;
movieRequestEndFrame = 0x80062514;
battleNonDefendTurnCount = 0x8005941C;
savedPartyIsOnGear = 0x8005A408;
fieldMouseState = 0x80065848;
primF_2 = 0x8002E64C; // type:func size:0x268
prim6_3 = 0x8002E8B4; // type:func size:0x204
primF_3 = 0x8002EAB8; // type:func size:0x268
prim0_1 = 0x8002ED20; // type:func
prim5_5 = 0x8002F0E4; // type:func
prim2_1 = 0x8002F6B4; // type:func
prim8_1 = 0x8002F8D0; // type:func
primD_5 = 0x8002FF0C; // type:func
prim10_0 = 0x80030750; // type:func
setBattlingMainTaskIndex = 0x800379B4; // type:func
debugFontNop = 0x800379D0; // type:func
PCinit = 0x8004C38C; // type:func
SpuGetReverbModeType = 0x8004E774; // type:func
spuIrqEnableRequest = 0x8005955C;
inputReplayScriptButtons = 0x8005A0FC;
inputReplayScriptButtons2 = 0x8005A11C;
inputReplayDialogButtons = 0x8005A13C;
inputReplayDialogButtons2 = 0x8005A15C;
inputReplayFieldButtons = 0x8005A17C;
inputReplayFieldButtons2 = 0x8005A19C;
battleLoadingCommands = 0x8006F9BC;
spuMallocTable = 0x8006FAC8;
fxFragmentInitialized = 0x800591B1;
battleCameraVar1 = 0x80059454;
battlePartyCharacterIds = 0x80059468;
fxUploadBuffer = 0x800594BC;
FxFragmentSpecialAnimation = 0x800594F0;
battlingEntryMatchType = 0x8005061D; // battlingEntryParams[1]
battlingEntryGear1 = 0x8005061E; // battlingEntryParams[2]
battlingEntryGear2 = 0x8005061F; // battlingEntryParams[3]
battlingEntryWinsNeeded = 0x80050620; // battlingEntryParams[4]
battlingEntryComLevel = 0x80050621; // battlingEntryParams[5]
battlingResult = 0x80050622; // battlingEntryParams[6]
fieldWdsSlot1 = 0x8006251C; // fieldWdsSlots[1] addressed on its own
finishPrimRenderLoop = 0x8002E1F4; // type:func size:0x254
prim4_4 = 0x8002EEF8; // type:func size:0x1EC
getSoundInstanceSeqName = 0x8003ACC8; // type:func
GPU_cw = 0x800471A4; // type:func
WaitEvent = 0x8004E564; // type:func
_card_info = 0x8004E784; // type:func
