Difference between revisions of "TODO:Crash Bandicoot Hacking Wikia"
Jump to navigation
Jump to search
(Created page with "==Remaining topics to discuss== *Entry Point *Main Loop *NS/Paging System #EID encoding/decoding; determining type from EID string #Filesystem Mapping? #Entry Querying #Page O...") |
m (4 revisions imported: Initial import from Wikia) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
==Remaining topics to discuss== | ==Remaining topics to discuss== | ||
− | *Entry Point | + | *[[Entry point|Entry Point]] |
− | * | + | *[[Game Loop]] |
*NS/Paging System | *NS/Paging System | ||
#EID encoding/decoding; determining type from EID string | #EID encoding/decoding; determining type from EID string | ||
Line 9: | Line 9: | ||
: a. Initialization/Deinitialization | : a. Initialization/Deinitialization | ||
− | :: i. | + | :: i. [[Paging and Subsystem Initialization]] |
:: ii. Paging and Subsystem Deinitialization | :: ii. Paging and Subsystem Deinitialization | ||
Line 98: | Line 98: | ||
#<span style="line-height:21px;">Hardware Init Routine</span> | #<span style="line-height:21px;">Hardware Init Routine</span> | ||
− | |||
#<span style="line-height:21px;">Hardware Deinit Routine</span> | #<span style="line-height:21px;">Hardware Deinit Routine</span> | ||
− | *<span style="line-height:21px;"> | + | *<span style="line-height:21px;">Hardware </span><span style="line-height:21px;">Libraries</span> |
#<span style="line-height:21px;"></span><span style="line-height:21px;">Controller</span> | #<span style="line-height:21px;"></span><span style="line-height:21px;">Controller</span> | ||
Line 177: | Line 176: | ||
:::: - incl. assembly routine portion | :::: - incl. assembly routine portion | ||
− | + | : iv. Object Font Primitive Creation | |
+ | :::: | ||
− | ::: B. | + | ::: B. [[World|Worlds]] (incomplete, format only partially explained) |
:::: i. World Model Creation | :::: i. World Model Creation | ||
Line 203: | Line 203: | ||
-GOOL/Objects | -GOOL/Objects | ||
− | : 1. OPAT Initialization/Deinitialization | + | : 1. [[OPAT|OPAT Initialization/Deinitialization]] |
: 2. sub_8001AC60? | : 2. sub_8001AC60? | ||
Line 287: | Line 287: | ||
:::: - Incl. nearest object query | :::: - Incl. nearest object query | ||
− | :: c) Interpret Object | + | :: c) [[GOOL Interpreter|Interpret Object]] |
:: - incl. GOOL Reference Translation | :: - incl. GOOL Reference Translation | ||
Line 380: | Line 380: | ||
:::: - Update Sort List | :::: - Update Sort List | ||
− | ::: - Camera Update | + | ::: - [[Camera Update]] |
:: - incl update level misc | :: - incl update level misc | ||
Line 398: | Line 398: | ||
-Camera | -Camera | ||
− | : 1) Camera Update | + | : 1) [[Camera Update]] |
:: a) Camera Follow | :: a) Camera Follow | ||
Line 419: | Line 419: | ||
− | -Sort List | + | -[[Sort List]] |
: 1) Format | : 1) Format | ||
Line 500: | Line 500: | ||
:: c) 4 Random Number routines | :: c) 4 Random Number routines | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 17:44, 27 April 2019
Remaining topics to discuss
- Entry Point
- Game Loop
- NS/Paging System
- EID encoding/decoding; determining type from EID string
- Filesystem Mapping?
- Entry Querying
- Page Operations
- a. Initialization/Deinitialization
- ii. Paging and Subsystem Deinitialization
- b. Page Management
- i. Page Allocation
- ii. Page Deallocation (free)
- iii. Page Creation
- iv. Page Deletion (truncatePages)
- c. Page Update
- i. Update Page (single)
- - incl Page Chunk Decompression/Initialization
- - Chunk Decompress Routine
- ii. Update Pages (global)
- - incl Update New Pages (called from level update when load new zone)
- iii. Update Page [chunk] Entries
- d. Page Search and Request/Open
- i. Search
- A. Find Hash Pair
- B. Find Page (that contains entry w/EID)
- ii. Request/Open
- A. Page Chunk
- - Pages a single new page with req. CID, EID
- B. Page Entry
- - Variant intended to page a single new page with req. entry w/EID; since paging the new page requires Updating Page Entries, which replaces the data fields of hash pairs for its entries with pointers to them, this returns a pointer to the resolved entry in its hash pair
- C. Open Entry
- - Variant intended to increment read requests for an already paged page with req. entry w/EID;will page chunk if it does not exist; can optionally schedule paging the chunk with req. entry as part of a 'group' of contiguous chunks, during next page update
- i) **Open Entry Given Container Chunk - also a variant, is just the bottom half of the open entry routine
- D. Close Entry
- - Decrements read requests for an already paged page with req. entry w/EID;
- E. Unpage Chunk
- - Clears the chunk's entry in the page map
- F. Close Entries and Unpage Chunk
- - Closes chunk's n last opened entries, and unpages if all have been closed
- e. Page Queries
- A. Get Number of Free or Available Pages
- B. Get Number of Free or Available Pages With Specified List Entries
- f. Texture Pages
- A. Unpage Texture Page
- g. Zone-Specific
- A. Close Zone Entries and Unpage Zone Chunks
- B. Unpage a Texture Page among Zone Entries [i.e. that is already paged]
- Misc/incomplete
- a. Seek Disc to file
- b. Find Audio Page?
- Hardware Initialization
- Hardware Init Routine
- Hardware Deinit Routine
- Hardware Libraries
- Controller
- a. Controller Initialization
- b. Controller Read
- 2. GPU
- a. GPU Initialization
- b. GPU Deinitialization
- c. GPU Shaders
- d. GPU Driver
- A. Clear Screen
- B. Fill Screen w/Black Tile
- C. Draw Sync
- - incl root counter callback
- D. OT (prim list)
- i. Initialize OT
- ii. Get OT Pointer
- E. Swap Buffers and Render Stage
- F. Render Primitive
- G. Game Rate Calculations
- 3. GFX
- a. [Page] Texture Chunk to VRAM
- b. Global Matrices
- A. Set Projection and Screen Offset
- B. Generate View Matrix, Rot, Angles, World Models, etc.
- C. Generate Matrices for Map**
- c. Global Light Matrices
- A. Light Matrix Generation
- d. Matrix Transformation Routine
- e. Primitive Creation
- A. Objects
- i. Object SVTX Primitive Creation
- - incl. 3 clipping-related routines
- - incl. 2 svtx vertex shading (light) routines
- - incl. assembly routine portion
- ii. Object CVTX Primitive Creation
- iii. Object Sprite Primitive Creation
- - incl. rotation assembly portion
- - incl. assembly routine portion
- iv. Object Font Primitive Creation
- B. Worlds (incomplete, format only partially explained)
- i. World Model Creation
- - incl also sub_8001A460?
- ii. World Primitive Creation
- - 7 Variations, incl 1 unused
- - incl. optimized world model copying
- - incl. assembly routine portion for each variation
- f. Memory Card Images
- A. 3 undocumented routines
- g. Audio Matrix Generation (assembly portion)
-GOOL/Objects
- 2. sub_8001AC60?
- 3. Object Hierarchy
- a. Object Left-parent/Right-sibling desc.
- b. Object Adoption
- i. Add Child Object
- ii. Remove Child Object
- c) Object Traversal
- i) General Traversal
- 1) Pre-order traversal with callback
- 2) Post-order traversal with callback
- 3) List handle pre-order traversal with callback
- 4) List handle post-order traversal with callback
- ii) Object Find Traversal
- 1) Object Find traversal with callback
- - Callback routines: HasID, HasStateFlags
- 2) Object Find/Query traversal (no callback)
- - Find nearest object (incl. send asynchronously handled event-another routine)
- 4) Object Initialization, Creation, and Termination
- a) Object Initialization
- b) Object Creation
- i) Process Object 'Creation'
- ii) Entity Object Spawning
- c) Object Termination
- i) 3 Object Termination variants
- ii) Mass Object Termination
- 5) Object Update
- a) Object Trans Block Interpretation
- b) Object Code Block Interpretation
- c) Object Colors Update
- d) Object Physics Update
- - Object Paths
- e) Object Primitive Creation
- - Text Creation Routines
- f) Object Bound Box Update
- g) Object Bound Collision Registration
- 6) GOOL
- a) Changing Object State
- b) Sending Object Events
- - incl. Object Collision Events
- - incl. Broadcasting Events
- - Incl. nearest object query
- - incl. GOOL Reference Translation
- - incl. Reading Control Pad
- - See also geometric computations and calculations for objects
-Geometric Computations/Calculations
- 1) For Objects
- a) Object Rotation
- - 2 Variations
- 2) Seek
- 3) Distance
- a) Euclidean distance
- - in 3 space
- - in XYZ plane
- b) Manhattan distance
- c) Absolute 1D distance
- 4) Angles
- a) Angular distance
- b) Angle in XZ plane (btwn 2 vectors)
- c) Angle in YZ plane (btwn 2 vectors)
- 5) Vector Operations
- a) Matrix Transformation
- 2 variations... (1 for visual, 1 for audio)
- b) 2D Projection
- 6) Collision Test
- a) Test 2 3D spaces for a collision
- b) Test point for containment by 3D space
- c) Test 3D space given by 2 points for collision with another 3D space
- 7) General Math Functions
- a) Sine
- b) Cosine
- c) Square Root
- d) Atan2 (ratan2)
-GOOL Globals Initialization...
-Level
- 1) Initialization
- - LDAT Initialization
- - GOOL Globals Reset
- - Load Universal Entries
- - Create HUD + Level Restart (*sub_8002E98C)
- (Level Restart Creates Crash Object)
- 2) Level Update
- - Zone
- A) Camera Path
- i) Progress
- - Update Sort List
- - incl update level misc
- 3) Level Current Zone Spawn Objects [outlier]
- 4) Level Save State
- 5) Level Restart
- 6) Level-Specific
- a) Level Specific World Vertex Shader Parameter Initialization
- b) Level Specific Audio Vector Parameter Initialization
-Camera
- a) Camera Follow
- A) Camera Get Projected Progress Non-forward
- B) Camera Get Projected Progress Forward
- C) Camera Adjust Progress (w/speed)
- b) Other Camera Modes
- A) Camera Calculate Progress
- B) Other: todo
- c) Death Camera
- TODO
- 1) Format
- 2) Encoding/Decoding
-Solid Surface Collision
- 1) Node Querying
- -(one routine calls query routine for each zone)
- 2) Translation
- -incl smooth, pull, and stop at solid
- a) Stopping at Floor
- - incl. Finding Highest Object Below
- - incl. Finding Average Y
- b) Stopping at Walls
- A) Wall Plot
- i) Initialization/Deinitialization (BINF)
- ii) Plotting a Wall
- - 2 Variations
- iii) Node Subdivision Wall Plotting
- iv) Object Sides Wall Plotting
- v) Zone Boundaries Wall Plotting
- vi) Testing the Wall Plot
- - Replotting Walls
- c) Stopping at Ceiling
- - incl. Finding Ceiling
- d) Stopping at Bottom Zone Bounds
- e) Node Death Events
- - incl. Handle Nodes...
- 3) GOOL Operations
- a) Vector Rebound
- b) Closest Solid Thing Above/Below or in Front/Behind
- c) Highest Solid Thing Above
- d) TODO remaining
-Audio/MIDI
TODO
-Memory Card
TODO
-Misc
- 1) Demo Mode
- a) PBAK initialization
- b) Demo mode routine
- c) 4 Random Number routines