The current URL is datacrystal.tcrf.net.
LEGO Star Wars: The Video Game (PlayStation 2)/ROM map
The following article is a ROM map for LEGO Star Wars: The Video Game (PlayStation 2).
This ROM map covers the functions and instructions of the game code. Addresses are from the US release.
This page's format will change as more content is added and documented. There will be a list of hexadecimal addresses, and for each address or range of addresses, there will either be a function header written in C-like pseudocode, a link to more detailed function information when available, and/or a brief description.
Some information about the source code--specifically the names of certain functions and which C file they were located in--can be ascertained from logger messages left in the code. These functions with "official" names will be in bold.
Functions
0x001008c0
: NuFileOpen(fileName, int a1)0x00100ca8
: NuFilePos(a0)0x00101140
: int (size) NuFileLoadBuffer(fileName, addrForBuffer, size)0x00101a30
: NuFileBeginBlkRead(a0, a1)0x00101b70
: NuFileendBlockRead(a0)0x00101c28
: NuFileBeginBlkWrite(a0, a1)0x00101d18
: NuFileEndBlkWrite(a0)0x001021d0
: FNC_001021d0(a0, fileName, a2, a3)0x00102770
: find in datfile(a0, fileName)0x00102b50
: NuDatOpenEx(fileName, a1, a2, a3)0x00103ca0
: jal NuDatOpenEx(a0, a1, a2, 0)0x00103cf0
: readFPK(filePath, a1, a2, alignmentGran)0x00104cc0
: MEM[a0 + 540]--0x00104ea0
: FNC_00104ea0(fileName)0x00105180
: malloc(size, location, a2)0x00105490
: mem free(a0, location, a2)0x00106898
: void strcat(destAddr, srcAddr)0x001068f0
: int strcpy(destAddr, srcAddr)0x00106928
: int strncpy(destAddr, srcAddr)0x00106988
: int strlen(strAddr)0x00106af0
: int strcmp(a0, a1)0x00106b40
: int strcmpIgnoreCase?(a0, a1)0x00106e38
: NuHexStringToI(a0)0x00106ef0
: bool isLetter?(a0)0x001070a0
: charToUpper?(byte a0)0x00107268
: NuPPLoadBuffer?0x00108900
: LoadModule(moduleName, a1, a2)0x00108b58
: bool ReturnCodeCheckNuFileClose(fileName)?0x00108b78
: NuFileOpenDir(a0)0x00108c70
: NuFileCloseDir(a0)0x00108cd0
: openFilePS2(str?, int index?)0x00108ea8
0x00109698
: NuMcOpenDir(a0, a1, dirName)0x001097e8
: void NuMcCloseDir(int offset)0x00109878
: Likely related to threads.0x0010a3a0
: vectorAddition(a0 = a1 + a2)0x0010a3d8
: vectorSubtraction(a0 = a1 - a2)0x0010a410
: scalarMult(destVec, srcVec, scalarFloat)0x0010a478
: crossProduct(destVec, srcVec1, srcVec2)0x0010a4c8
: float dotProduct(vec1, vec2)0x0010a5b8
: float vectorLength(a0)0x0010a5e8
: float vectorComponentSum(a0)0x0010a9a0
: vecA = vecB * f12 + vecC(1.0 - f12)0x0010c010
: resetCamera?(nuCamera)0x0010ddb8
: shiftAmountCalc(int targetNum)0x0010de58
: MEM[0033dcc8] = f120x0010efa0
: MEM[0033dcd0] = a0 (double)0x0010efb0
: MEM[a0] = a1 (MEM[0033dce0] if a0 == 0)0x0010f120
-0x0010f7b4
: vector register operations0x0010fb08
: NuAnimCurve2CalcVal(a0, a1, a2)0x00111bd0
: readSomeAnimFile(filename, a1, a2, a3)0x00111c80
: NuAnimDataLoadBuff?0x00114ee8
: bool specObjValid(specObj)0x00114f38
: FNC_00114f38(specObj?)0x00114f88
: FNC_00114f88(specObj?, a1)0x00115408
: NuSpecialGetOriginRadius(specObj)0x00115510
: FNC_00115510(scene, string)0x00115818
: MEM[0033e234] = f120x001196a8
: MEM[0033e3a0] = 10x001196b8
: MEM[0033e3a0] = 00x00119a08
: FNC_00119a08(scene?, a1)0x00119b58
: FNC_00119b58(nuCamera, a1)0x0011b4c8
: &NuCamera malloc()0x0011b908
: NuCameraClipTestExtents(a0, a1, f12)0x0011cc90
: FNC_0011cc90(a0, txtrOffset)0x0011cd58
: FNC_0011cd58(a0, txtrOffset + 1?)0x0011d388
: CreateFont(fontName, addrForBuffer, a2)0x0011d608
: &CreateMemFont(a0, size?, a2)0x0011d820
: FNC_0011d820(&memfont)