======= KMYINIT.C ======== - ISP_FEED_CFG -- TRANSLUCENCY_CACHE_SIZE(0x200) - FPU_SHAD_SCALE -- SCALE_FACTOR(1) - FPU_CULL_VAL -- 1.0f - FPU_PERP_VAL -- 0.0f - SPAN_SORT_CFG -- SPAN_SORT_ENABLE | OFFSET_SORT_ENABLE - FOG_COL_RAM -- RED(127) | GREEN(127) | BLUE(127) - FOG_COL_VERT -- RED(127) | GREEN(127) | BLUE(127) - FOG_CLAMP_MIN -- ALPHA(0) | RED(0) | GREEN(0) | BLUE(0) - FOG_CLAMP_MAX -- ALPHA(255) | RED(255) | GREEN(255) | BLUE(255) - HALF_OFFSET -- TSP_TEXEL_SAMPLE_POSITION_CENTER | TSP_PIXEL_SAMPLE_POSITION_CENTER | FPU_PIXEL_SAMPLE_POSITION_CENTER - FPU_PARAM_CFG -- REGION_HEADER_TYPE__2 | TSP_PARAMETER_BURST_TRIGGER(31) | ISP_PARAMETER_BURST_TRIGGER(31) | POINTER_BURST_SIZE(7) // must be less than OPB size | POINTER_FIRST_BURST_SIZE(7) // half of pointer burst size(?) =========================== jargon: OPB - Object Pointer Block (a list of pointers to objects in the object list) OL - Object list ISP - Image Synthesis Processor TSP - Texture Shading Processor ====== KMYSETUPTA.C ====== The OPB initial area size that is needed for one TA input list is the product of the total OPB size for all lists specified by the TA_ALLOC_CTRL register before the input of that list, multiplied by the number of Tiles in the Global Tile Clip area that is specified by the TA_GLOB_TILE_CLIP register. The amount of memory that should be reserved in texture memory as the OPB initial area is the sum of the OPB initial area size for the one list added together for each of the polygon lists that are input to the TA. (OPB initial area size for one list) = {(Opaque list OPB size)} * (Number of Tiles in Global Tile Clip area) x 4 bytes + 4byte - TA_GLOB_TILE_CLIP -- TILE_Y_NUM(480 / 32) | TILE_X_NUM(640 / 32) (removes polygons that are entirely outside the clip area) - TA_ALLOC_CTRL -- TA_ALLOC_CTRL__OPB_MODE_INCREASING | TA_ALLOC_CTRL__PT_OPB__NONE | TA_ALLOC_CTRL__TM_OPB__NONE | TA_ALLOC_CTRL__T_OPB__NONE | TA_ALLOC_CTRL__OM_OPB__NONE | TA_ALLOC_CTRL__O_OPB__16 - TA_ISP_BASE -- (Base address for ISP/TSP parameters (relative address from the start of texture memory) (read by PARAM_BASE)) - TA_OL_LIMIT - The last address of the object list (relative address from the start of texture memory) - TA_PARAM_LIMIT aka TA_ISP_LIMIT - The last address of the ISP/TSP parameter list (relative address from the start of texture memory) - TA_NEXT_OPB_INIT - the address for storing additional OPBs during list initialization (relative address from the start of texture memory) The value in the TA_NEXT_OPB_INIT register, which should be set prior to list initialization, is the sum starting address value of the Object List that is stored in texture memory and the OPB initial area size. (TA_NEXT_OPB_INIT register value) = (TA_OL_BASE register value at list initialization) + (OPB initial area size at list initialization) -- &object_list[0] + (sizeof (mem->object_list)) (end of object_list) - SOFTRESET = SOFTRESET__TA_SOFT_RESET - SOFTRESET = 0 - TA_GLOB_TILE_CLIP = TILE_Y_NUM(15) | TILE_X_NUM(20) // 640x480 - TA_ISP_BASE = 0x00000000 - TA_ISP_LIMIT = 0x00100000 - TA_OL_BASE = 0x00100000 - TA_OL_LIMIT = 0x00200000 - TA_NEXT_OPB_INIT = 0x00100000 - TA_LIST_INIT - dummy read on TA_LIST_INIT ==== BGPLANE ==== KMYSETPASSDEPTH.C KMYINITIALIZEBGPLANE.C [ 0] = DEPTH_COMPARE_MODE(GREATER) [ 1] = SRC_ALPHA(One) | FOG_CONTROL(NO_FOG) [ 2] = 0 [ 3] = 0.0 // x [ 4] = 0.0 // y [ 5] = 1.f/100000 // 1/z [ 6] = 0x0FF000000 // color [ 7] = 0.0 // x [ 8] = 0.0 // y [ 9] = 1.f/100000 // 1/z [10] = 0x0FF000000 // color [11] = 0.0 // x [12] = 0.0 // y [13] = 1.f/100000 // 1/z [14] = 0x0FF000000 // color ==== KMYSTARTRENDER.C ==== region array diagram on page 179 REGION_BASE the region array is not generated by the TA PARAM_BASE -- equal to TA_ISP_BASE FB_W_CTRL -- FB_PACKMODE__565_RGB ISP_BACKGND_T // address of ISP/TSP parameters, without using TA -- TAG_ADDRESS(0x00200000/4) -- TAG_OFFSET(0) -- SKIP(1) ISP_BACKGND_D -- Z coordinate ; 0x03727c5ac (1.f/100000) FB_W_LINESTRIDE -- 640 / 8; FB_W_SOF1 -- framebuffer address STARTRENDER ==== store queue ==== store queue write: 0xe000_0000 - 0xe3ff_fffc write vertex list to: 0x10000000 TA: "List of Input Parameters" page 201 (TA) Parameter Format control: - End of List 0x0000_0000 - User Tile Clip 0x2000_0000 - Object List Set 0x4000_0000 page 196 Parameter Control Word page 222 ISP/TSP Instruction Word page 226 TSP Instruction Word page 233 Texture Control Word Volume 0 Col_Type 0 Packed (32-bit ARGB) 1 Floating (32-bit float * 4) Textured 0 Offset 0 Gouraud 0 16bit_UV 0 Global: Polygon Type 0 Vertex: Polygon Type 0 - x y are 32-bit floating point in screen space - z specified as reciprocal 1/z