LEGO Star Wars: The Video Game (PlayStation 2)/ROM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png 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 mode): returns a file descriptor (fd)
  • 0x00100ca8: NuFilePos(int fd)
  • 0x00100f70: NuFileClose(fileName)
  • 0x00101140: int (size) NuFileLoadBuffer(fileName, addrForBuffer, size)
  • 0x00101a30: NuFileBeginBlkRead(fd, header?)
  • 0x00101b70: NuFileendBlockRead(fd)
  • 0x00101c28: NuFileBeginBlkWrite(fd, a1)
  • 0x00101d18: NuFileEndBlkWrite(fd)
  • 0x001021d0: FNC_001021d0(a0, fileName, a2, a3)
  • 0x00102770: find in datfile(a0, fileName)
  • 0x001028d8: NuDatFileOpen?(*a0, fileNameToFind)
  • 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)
  • 0x001069b8: char *strstr(const char *str, const char *substr)
  • 0x00106af0: int strcmp(a0, a1)
  • 0x00106b40: int strcmpIgnoreCase?(a0, a1)
  • 0x00106de0: stringToUpper(*src, *dest)
  • 0x00106e38: NuHexStringToI(a0)
  • 0x00106ef0: bool isLetter?(a0)
  • 0x00106f50: int atoi(const char *nptr)
  • 0x001070a0: charToUpper(byte a0)
  • 0x00107268: NuPPLoadBuffer?(fd, a1, a2)
  • 0x00107548: DatLoadBuffer Unpack?
  • 0x00108340: initDevices()
  • 0x00108900: LoadModule(moduleName, a1, a2)
  • 0x00108b58: bool ReturnCodeCheckNuFileClose(fileName)?
  • 0x00108b78: NuFileOpenDir(a0)
  • 0x00108c70: NuFileCloseDir(a0)
  • 0x00108cd0: openFilePS2(str?, int index?)
  • 0x00108d60: closeFilePS2?(a0)
  • 0x00108da8: FNC_00108da8(a0,a1,buff_length): The name of the third parameter is given in this same function used in LEGO Star Wars II, which has more assertion and debug messages.
  • 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): calculates how many shifts it takes for 1 << x to equal a0
  • 0x0010de58: MEM[0033dcc8] = f12
  • 0x0010efa0: MEM[0033dcd0] = a0 (double)
  • 0x0010efb0: MEM[a0] = a1 (MEM[0033dce0] if a0 == 0)
  • 0x0010f120-0x0010f7b4: vector register operations
  • 0x0010fb08: NuAnimCurve2CalcVal(a0, a1, a2)
  • 0x00111bd0: readSomeAnimFile(filename, *a1, a2, a3)
  • 0x00111c80: NuAnimDataLoadBuff?(a0, a1)
  • 0x00114ee8: bool specObjValid(specObj)
  • 0x00114f38: FNC_00114f38(specObj?)
  • 0x00114f88: FNC_00114f88(specObj?, a1)
  • 0x00115408: NuSpecialGetOriginRadius(*specObj)
  • 0x00115510: FNC_00115510(scene, string)
  • 0x00115818: MEM[0033e234] = f12
  • 0x001196a8: MEM[0033e3a0] = 1
  • 0x001196b8: MEM[0033e3a0] = 0
  • 0x00119a08: 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)
  • 0x00182780: NuSoundUpdateV(token, a1)
  • 0x00183a10: bool? initSoundServices(a0, a1, a2, a3)
  • 0x001835f8: InitReverb(int reverbType, a1)
  • 0x001fdf18: APICharacterSysInit(a0, a1, a2, a3, t0, t1, &charArray, t3)