Search
lxdream.org :: lxdream/src/pvr2/scene.c :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/pvr2/scene.c
changeset 934:3acd3b3ee6d1
prev863:a5e5310061e2
next1066:ddffe9d2b332
author nkeynes
date Mon Jan 26 07:26:24 2009 +0000 (15 years ago)
permissions -rw-r--r--
last change Add read_byte_for_write mem function for correct implementation of AND.B and friends
with TLB enabled.
Add read_byte and read_long MMIO stubs to do correct sign extension of IO reads
file annotate diff log raw
1.1 --- a/src/pvr2/scene.c Sun Sep 28 01:09:51 2008 +0000
1.2 +++ b/src/pvr2/scene.c Mon Jan 26 07:26:24 2009 +0000
1.3 @@ -506,13 +506,13 @@
1.4
1.5 static void scene_extract_polygons( pvraddr_t tile_entry )
1.6 {
1.7 - uint32_t *tile_list = (uint32_t *)(video_base+tile_entry);
1.8 + uint32_t *tile_list = (uint32_t *)(pvr2_main_ram+tile_entry);
1.9 do {
1.10 uint32_t entry = *tile_list++;
1.11 if( entry >> 28 == 0x0F ) {
1.12 break;
1.13 } else if( entry >> 28 == 0x0E ) {
1.14 - tile_list = (uint32_t *)(video_base + (entry&0x007FFFFF));
1.15 + tile_list = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.16 } else {
1.17 pvraddr_t polyaddr = entry&0x000FFFFF;
1.18 shadow_mode_t is_modified = (entry & 0x01000000) ? pvr2_scene.shadow_mode : SHADOW_NONE;
1.19 @@ -571,13 +571,13 @@
1.20
1.21 static void scene_extract_vertexes( pvraddr_t tile_entry )
1.22 {
1.23 - uint32_t *tile_list = (uint32_t *)(video_base+tile_entry);
1.24 + uint32_t *tile_list = (uint32_t *)(pvr2_main_ram+tile_entry);
1.25 do {
1.26 uint32_t entry = *tile_list++;
1.27 if( entry >> 28 == 0x0F ) {
1.28 break;
1.29 } else if( entry >> 28 == 0x0E ) {
1.30 - tile_list = (uint32_t *)(video_base + (entry&0x007FFFFF));
1.31 + tile_list = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.32 } else {
1.33 pvraddr_t polyaddr = entry&0x000FFFFF;
1.34 shadow_mode_t is_modified = (entry & 0x01000000) ? pvr2_scene.shadow_mode : SHADOW_NONE;
1.35 @@ -737,11 +737,11 @@
1.36 fog_col = MMIO_READ( PVR2, RENDER_FOGVRTCOL );
1.37 unpack_bgra( fog_col, pvr2_scene.fog_vert_colour );
1.38
1.39 - uint32_t *tilebuffer = (uint32_t *)(video_base + MMIO_READ( PVR2, RENDER_TILEBASE ));
1.40 + uint32_t *tilebuffer = (uint32_t *)(pvr2_main_ram + MMIO_READ( PVR2, RENDER_TILEBASE ));
1.41 uint32_t *segment = tilebuffer;
1.42 uint32_t shadow = MMIO_READ(PVR2,RENDER_SHADOW);
1.43 pvr2_scene.segment_list = (struct tile_segment *)tilebuffer;
1.44 - pvr2_scene.pvr2_pbuf = (uint32_t *)(video_base + MMIO_READ(PVR2,RENDER_POLYBASE));
1.45 + pvr2_scene.pvr2_pbuf = (uint32_t *)(pvr2_main_ram + MMIO_READ(PVR2,RENDER_POLYBASE));
1.46 pvr2_scene.shadow_mode = shadow & 0x100 ? SHADOW_CHEAP : SHADOW_FULL;
1.47 scene_shadow_intensity = U8TOFLOAT(shadow&0xFF);
1.48
1.49 @@ -814,7 +814,7 @@
1.50 fprintf( f, "Polygons: %d\n", pvr2_scene.poly_count );
1.51 for( i=0; i<pvr2_scene.poly_count; i++ ) {
1.52 struct polygon_struct *poly = &pvr2_scene.poly_array[i];
1.53 - fprintf( f, " %08X ", ((unsigned char *)poly->context) - video_base );
1.54 + fprintf( f, " %08X ", ((unsigned char *)poly->context) - pvr2_main_ram );
1.55 switch( poly->vertex_count ) {
1.56 case 3: fprintf( f, "Tri " ); break;
1.57 case 4: fprintf( f, "Quad " ); break;
.