Rygar: The Battle of Argus (a port of the PS2 game Rygar: The Legendary Adventure) has a broken bloom effect. In Dolphin, the bloom effect results in the top-left part of the screen being drawn over the entire screen. If the top-left part of the screen is particularly bright, then the whole screen will end up being white.
This writeup analyzes the RygarBloom2.dff fifolog on issue 12763.
EFB copy 4, 5, and 6 are relevant; however, EFB copy 6 is only for restoring the previous screen state and can mostly be ignored. After those EFB copies is object 268, which handles combining the earlier EFB copies and is the start of the bloom logic. EFB copy 7 makes a copy of the area that was drawn to by object 268, which is used for further processing later on.
EFB copy 4 (00045a56)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 640
EFB Height: 456
BP register BPMEM_MIPMAP_STRIDE (a0)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x1057D20
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: Yes
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
EFB copy 5 (00045aaa6)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 640
EFB Height: 456
BP register BPMEM_MIPMAP_STRIDE (50)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x109F1A0
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RA8/IA8 (Z16 too?) (3)
Gamma correction: 1.0
Half scale: Yes
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: Yes
Automatic color conversion: Yes
EFB copy 6 (00045af6)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 320
EFB Height: 228
BP register BPMEM_MIPMAP_STRIDE (a0)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10108A0
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
Object 268
Z and alpha modes (00045a24)
These are actually set in EFB copy 4, but they only become relevant here.
BP register BPMEM_ALPHACOMPARE
Test 1: Always (7) (ref: 0x00)
Test 2: Always (7) (ref: 0x00)
Logic: And (0)
BP register BPMEM_ZCOMPARE
EFB pixel format: RGB8_Z24 (0)
Depth format: linear (0)
Early depth test: Yes
BP register BPMEM_ZMODE
Z mode: Enable test: Yes
Compare function: LEqual (3)
Enable updates: No
BP register BPMEM_BLENDMODE
Enable: Yes
Logic ops: No
Dither: Yes
Color write: Yes
Alpha write: Yes
Dest factor: 1-src_alpha (5)
Source factor: src_alpha (4)
Subtract: No
Logic mode: Clear (0) (0)
Texture 0 (00045b46)
Texture 0 points to EFB copy 4.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 320
Height: 228
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x1057D20
Texture 1 (00045b6e)
Texture 1 points to EFB copy 5.
BP register BPMEM_TX_SETMODE0 Texture Unit 1
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 1
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 1
Width: 320
Height: 228
Format: IA8 (3)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 1
Even TMEM Offset: 800
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 1
Odd TMEM Offset: c00
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 1
Source address (32 byte aligned): 0x109F1A0
Texture ref configuration (00045b91)
TEV stage 0 uses texture 1 (EFB copy 5), while stages 1 and 2 use texture 0 (EFB copy 4).
BP register BPMEM_TREF number 0
Stage 0 texmap: 1
Stage 0 tex coord: 0
Stage 0 enable texmap: Yes
Stage 0 color channel: Color chan 0 (0)
Stage 1 texmap: 0
Stage 1 tex coord: 0
Stage 1 enable texmap: Yes
Stage 1 color channel: Color chan 0 (0)
BP register BPMEM_TREF number 1
Stage 0 texmap: 0
Stage 0 tex coord: 0
Stage 0 enable texmap: Yes
Stage 0 color channel: Color chan 0 (0)
Stage 1 texmap: 3
Stage 1 tex coord: 3
Stage 1 enable texmap: Yes
Stage 1 color channel: Color chan 0 (0)
TEV configuration (00045b9b)
Partially-written values that are set once and then overwritten have been omitted.
BP register BPMEM_TEV_ALPHA_ENV Tev stage 0
dest.a = ras.a*tex.a
a: ZERO (7)
b: tex (4)
c: ras (5)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_TEV_ALPHA_ENV Tev stage 1
dest.a = prev.a*tex.a
a: ZERO (7)
b: tex (4)
c: prev (0)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_TEV_ALPHA_ENV Tev stage 2
dest.a = prev.a*tex.a
a: ZERO (7)
b: tex (4)
c: prev (0)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_TEV_COLOR_ENV Tev stage 0
dest.rgb = tex.rgb - konst.rgb*1
a: ZERO (15)
b: ONE (12)
c: konst.rgb (14)
d: tex.rgb (8)
Bias: 0 (0)
Op: Subtract (1) / Comparison: Equal to (1)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
BP register BPMEM_TEV_COLOR_ENV Tev stage 1
dest.rgb = prev.rgb*1
a: ZERO (15)
b: ONE (12)
c: prev.rgb (0)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
BP register BPMEM_TEV_COLOR_ENV Tev stage 2
dest.rgb = (tex.rgb*prev.rgb) * 2
a: ZERO (15)
b: prev.rgb (0)
c: tex.rgb (8)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 2 (1) / Compare mode: GR16 (1)
Dest: prev (0)
TEV color configuration (00045b64 and 00045bd7)
BP register BPMEM_TEV_COLOR_RA Tev register 0
Type: Constant (1)
Alpha: 0ff
Red: 07a
BP register BPMEM_TEV_COLOR_BG Tev register 0
Type: Constant (1)
Green: 07a
Blue: 07a
BP register BPMEM_TEV_KSEL number 0
Swap 1: 0
Swap 2: 1
Color sel 0: Konst 0 RGB (invalid for alpha) (12)
Alpha sel 0: 1 (0)
Color sel 1: 1/4 (6)
Alpha sel 1: 1 (0)
Genmode (00045bfa)
BP register BPMEM_GENMODE
Num tex gens: 1
Num color channels: 1
Unused bit: 0
Flat shading (unconfirmed): No
Multisampling: No
Num TEV stages: 3
Cull mode: None (0)
Num indirect stages: 0
ZFreeze: No
Primitive data (00045c65)
This draws a rectangle with x and y coordinates ranging from 0 to 128, a z-coordinate of 0, a color of ffffffff (white), and texture coordinates ranging from 0 to 1.
VAT 2 refers to vertex attribute table 2. The game actually configures two separate VATs (1 and 2), both in object 0 at offset 000001a7. One of them uses indexed values (where each vertex specifies an index into various arrays), and the other uses direct values (where each vertex has the data put right into it). Primitive commands can specify which VAT to use (from VAT 0 to VAT 7), but a lot of games choose to only use one VAT and reconfigure it when needed instead of setting up several and choosing the right one as needed.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffffff 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffffff 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffffff 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffffff 3f800000 (1) 3f800000 (1)
EFB copy 7 (00045ceb)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 128
EFB Height: 128
BP register BPMEM_MIPMAP_STRIDE (40)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10CC380
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
The EFB format in use here is RGB8, meaning each pixel in the framebuffer has 8 bits of red, green, and blue data, and no alpha data.
EFB copy 4 copies the whole screen. Half-size mode is enabled, so the final image is reduced from 640 by 456 to 320 by 228. Since the bloom effect involves blurring the image, reducing the texture size at this point has no downsides and reduces the amount of memory used by a factor of 4. EFB copy 4 uses the RGBA8 texture format, so the destination texture has 8 bits of red, green, blue, and alpha data; red, green, and blue come from the EFB, but the alpha channel needs a default value. This value is 1.0 (or 255). See Z_EFB_copy_4.png.
EFB copy 5 also copies the whole screen with half-size mode enabled. It uses the IA8 texture format, which is composed of an 8-bit intensity channel and an 8-bit alpha channel. The intensity channel is based on the red, green, and blue components of the EFB, weighted to produce a nice-looking greyscale image (using BT.601). Note that black receives a value of 16 and white receives a value of 235, with values outside of that range being reserved for other purposes. When drawing, the IA8 format uses the intensity channel value for the red, green, and blue channels (all of which get the same value). See Z_EFB_copy_5.png.
These two EFB copies are then combined together in a 128 by 128 region anchored at the top-left of the screen. The colors created via this process are computed through 3 TEV stages. The first TEV stage's color result is tex.rgb - konst.rgb*1
, the second stage's color result is prev.rgb*1
, and the third stage's color result is (tex.rgb*prev.rgb) * 2
. In the first stage, tex
refers to EFB copy 5, and konst
refers to Konst color 0's RGB values, which are all 0x7a
. The second stage is a no-op. In the third stage, tex
refers to EFB copy 4. Also note that all of these stages have clamp enabled, which restricts values to 0-255, so it is impossible for the value to go negative between stages.
In effect, what this produces is this:
float brightness = 2 * clamp(screen.intensity - (0x7a / 255.0), 0.0, 1.0);
dest.rgb = brightness * screen.rgb;
The overall brightness of the intensity EFB copy is reduced, so only particularly bright regions remain (see Z_EFB_copy_5_subtract.png). The brightness is then multiplied by 2, so that subtraction doesn't mean everything in the final result is dark (see Z_EFB_copy_5_subtract_multiply.png). That brightness amount is then multiplied by the original color data. See Z_EFB_copy_7.png for the result it has produced so far.
The GameCube/Wii's GPU can only work with a single framebuffer. If a developer wishes to make other computations using the GPU, such as creating a texture for dynamic shadows, then they will need to draw on top of what's already been drawn on the screen. The usual approach here is to make an EFB copy of what was already there, and then draw whatever is needed, and then later draw back over the screen with that EFB copy. Rygar does this (EFB copy 6). Sometimes, this process goes wrong, as happened with SpongeBob Squarepants: Battle for Bikini Bottom (and other Heavy Iron Studios titles). However, there's another aspect: you can back up what's on the screen for later use, but there's still stuff on the screen in the place you plan to draw. One option to solve this is to clear the screen at the same time as the EFB copy is made (there's a field in the EFB copy command to do this); Rygar does not use this functionality. Another option is to draw something over the screen that you know will show up. Of course, if you plan on drawing over the whole region anyways, this is not a needed step... as long as you know for sure it will be drawn over completely.
Now's when I mention that the TEV configuration for object 268 also covers the alpha channel. Specifically, stage 0 uses the rasterized color multiplied by the texture alpha, and then stages 1 and 2 multiply the previous stage's result with the texture alpha. Since stage 0 uses tex1 (EFB copy) 5 and stages 1 and 2 use (EFB copy 4), this results in a final alpha of ras * tex1.a * tex0.a * tex0.a
. The rasterized color's alpha is 0xff, and I previously stated that an EFB copy from an EFB without an alpha channel should have the resulting alpha be 1. So, this should always result in a final alpha value of 1, right?
Unfortunately, Dolphin was handling this incorrectly. An EFB copy using a normal texture format would always have an alpha channel of 1, but an EFB copy using an intensity format ended up with an alpha channel of 0. So the final alpha value ended up being 0 instead.
Even still, the alpha value wouldn't matter in most cases, as it's only used if the game specifies that blending should be enabled, and if you always want to update part of the screen, you generally won't want blending or the alpha enabled. Here, the alpha test is set to always pass, so pixels are always drawn (even if the alpha is 0)... but blending is configured to still use alpha, and it blends with the new color multiplied by the new color's alpha plus the color already in the framebuffer times 1 minus the new color's alpha. If the new color's alpha were always 1 (as it should be on real hardware), then this would always set it to the new color... but instead, since the new color's alpha is always 0, the color already used in the framebuffer is used. In short, nothing is actually drawn, and what was already on screen in the relevant area (in this case, Z_EFB_copy_7_bad.png) ends up being used as the input to the bloom effect.
Fixing the way Dolphin handles the alpha channel for intensity texture formats fixes the bloom, but I'll continue analyzing how the bloom effect works because it's interesting.
One other oddity is that tex0.a
is used twice; TEV stage 1 exists only to multiply by alpha a second time (as it simply passes through the color from the previous stage without making any further changes). This implies that they were trying to handle alpha with the bloom effect, but it's not clear exactly what that would entail, and if the alpha was expected to be something other than 1 then they would run into the same issue Dolphin did (albeit to a lesser extent) unless they manually clear their draw region in that case only. I don't myself know whether the game uses an EFB with alpha in some cases, so it might be that they do handle this correctly when needed and just re-used the same TEV logic elsewhere because it worked fine. (Also note that the alpha value for both textures should be the same, as intensity texture formats don't modify alpha, so all they're doing is taking the cube of the EFB's alpha value.)
Most of the remaining process is repeated blurring.
Object 269
Configuration (00045d1d)
BP register BPMEM_TREF number 0
Stage 0 texmap: 0
Stage 0 tex coord: 0
Stage 0 enable texmap: No
Stage 0 color channel: Color chan 0 (0)
Stage 1 texmap: 0
Stage 1 tex coord: 0
Stage 1 enable texmap: Yes
Stage 1 color channel: Color chan 0 (0)
BP register BPMEM_TEV_COLOR_ENV Tev stage 0
dest.rgb = tex.rgb*ras.rgb
a: ZERO (15)
b: ras.rgb (10)
c: tex.rgb (8)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
BP register BPMEM_TEV_ALPHA_ENV Tev stage 0
dest.a = tex.a*ras.a
a: ZERO (7)
b: ras (5)
c: tex (4)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_GENMODE
Num tex gens: 0
Num color channels: 1
Unused bit: 0
Flat shading (unconfirmed): No
Multisampling: No
Num TEV stages: 1
Cull mode: None (0)
Num indirect stages: 0
ZFreeze: No
Primitives (00045d62)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
42800000 (64) 00000000 (0) 00000000 (0) 000000ff
42800000 (64) 42800000 (64) 00000000 (0) 000000ff
Objects 270-282
For whatever reason, the game re-configures genmode and the xfmem channel information to the same value between each set of primitives. I've skipped this, but that's why this is listed as 13 objects.
Configuration (00045da5)
The texture is EFB copy 7.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
BP register BPMEM_BLENDMODE
Enable: Yes
Logic ops: No
Dither: Yes
Color write: Yes
Alpha write: Yes
Dest factor: 1 (1)
Source factor: src_alpha (4)
Subtract: No
Logic mode: Clear (0) (0)
BP register BPMEM_TREF number 0
Stage 0 texmap: 0
Stage 0 tex coord: 0
Stage 0 enable texmap: Yes
Stage 0 color channel: Color chan 0 (0)
Stage 1 texmap: 0
Stage 1 tex coord: 0
Stage 1 enable texmap: Yes
Stage 1 color channel: Color chan 0 (0)
BP register BPMEM_TEV_COLOR_ENV Tev stage 0
dest.rgb = tex.rgb*ras.rgb
a: ZERO (15)
b: ras.rgb (10)
c: tex.rgb (8)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
BP register BPMEM_TEV_ALPHA_ENV Tev stage 0
dest.a = tex.a*ras.a
a: ZERO (7)
b: ras (5)
c: tex (4)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_GENMODE
Num tex gens: 1
Num color channels: 1
Unused bit: 0
Flat shading (unconfirmed): No
Multisampling: No
Num TEV stages: 1
Cull mode: None (0)
Num indirect stages: 0
ZFreeze: No
Primitives (00045e47)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff16 3c8ccccd (0.0171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 3c8ccccd (0.0171875) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff16 3f823333 (1.01719) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff16 3f823333 (1.01719) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff15 3d0ccccd (0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 3d0ccccd (0.034375) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff15 3f846666 (1.03437) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff15 3f846666 (1.03437) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff14 3d533334 (0.0515625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 3d533334 (0.0515625) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff14 3f86999a (1.05156) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff14 3f86999a (1.05156) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff13 3d8ccccd (0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 3d8ccccd (0.06875) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff13 3f88cccd (1.06875) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff13 3f88cccd (1.06875) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff11 3db00000 (0.0859375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 3db00000 (0.0859375) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff11 3f8b0000 (1.08594) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff11 3f8b0000 (1.08594) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff0f 3dd33334 (0.103125) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 3dd33334 (0.103125) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff0f 3f8d3333 (1.10312) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff0f 3f8d3333 (1.10312) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff16 80000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 80000000 (0) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff15 bc8ccccd (-0.0171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 bc8ccccd (-0.0171875) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff15 3f7b999a (0.982813) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff15 3f7b999a (0.982813) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff14 bd0ccccd (-0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 bd0ccccd (-0.034375) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff14 3f773333 (0.965625) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff14 3f773333 (0.965625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff13 bd533334 (-0.0515625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 bd533334 (-0.0515625) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff13 3f72cccd (0.948438) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff13 3f72cccd (0.948438) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff11 bd8ccccd (-0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 bd8ccccd (-0.06875) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff11 3f6e6666 (0.93125) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff11 3f6e6666 (0.93125) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff0f bdb00000 (-0.0859375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f bdb00000 (-0.0859375) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff0f 3f6a0000 (0.914063) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff0f 3f6a0000 (0.914063) 3f800000 (1)
EFB copy 8 (000463f6)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 64
EFB Height: 64
BP register BPMEM_MIPMAP_STRIDE (20)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10DC940
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
Object 283 (00046472)
Configuration is the same as object 269.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
42800000 (64) 00000000 (0) 00000000 (0) 000000ff
42800000 (64) 42800000 (64) 00000000 (0) 000000ff
Objects 284-296
Configuration (000464ba)
The TEV configuration is the same as object 270. The texture is EFB copy 8.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 64
Height: 64
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10DC940
Primitives (00046557)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff16 00000000 (0) 3f823333 (1.01719)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 3c8ccccd (0.0171875)
42800000 (64) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 3c8ccccd (0.0171875)
42800000 (64) 42800000 (64) 00000000 (0) ffffff16 3f800000 (1) 3f823333 (1.01719)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff15 00000000 (0) 3f846666 (1.03437)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) 3d0ccccd (0.034375)
42800000 (64) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) 3d0ccccd (0.034375)
42800000 (64) 42800000 (64) 00000000 (0) ffffff15 3f800000 (1) 3f846666 (1.03437)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff14 00000000 (0) 3f86999a (1.05156)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) 3d533334 (0.0515625)
42800000 (64) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) 3d533334 (0.0515625)
42800000 (64) 42800000 (64) 00000000 (0) ffffff14 3f800000 (1) 3f86999a (1.05156)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff13 00000000 (0) 3f88cccd (1.06875)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) 3d8ccccd (0.06875)
42800000 (64) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) 3d8ccccd (0.06875)
42800000 (64) 42800000 (64) 00000000 (0) ffffff13 3f800000 (1) 3f88cccd (1.06875)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff11 00000000 (0) 3f8b0000 (1.08594)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) 3db00000 (0.0859375)
42800000 (64) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) 3db00000 (0.0859375)
42800000 (64) 42800000 (64) 00000000 (0) ffffff11 3f800000 (1) 3f8b0000 (1.08594)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff0f 00000000 (0) 3f8d3333 (1.10312)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) 3dd33334 (0.103125)
42800000 (64) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) 3dd33334 (0.103125)
42800000 (64) 42800000 (64) 00000000 (0) ffffff0f 3f800000 (1) 3f8d3333 (1.10312)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff16 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 80000000 (0)
42800000 (64) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 80000000 (0)
42800000 (64) 42800000 (64) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff15 00000000 (0) 3f7b999a (0.982813)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) bc8ccccd (-0.0171875)
42800000 (64) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) bc8ccccd (-0.0171875)
42800000 (64) 42800000 (64) 00000000 (0) ffffff15 3f800000 (1) 3f7b999a (0.982813)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff14 00000000 (0) 3f773333 (0.965625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) bd0ccccd (-0.034375)
42800000 (64) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) bd0ccccd (-0.034375)
42800000 (64) 42800000 (64) 00000000 (0) ffffff14 3f800000 (1) 3f773333 (0.965625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff13 00000000 (0) 3f72cccd (0.948438)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) bd533334 (-0.0515625)
42800000 (64) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) bd533334 (-0.0515625)
42800000 (64) 42800000 (64) 00000000 (0) ffffff13 3f800000 (1) 3f72cccd (0.948438)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff11 00000000 (0) 3f6e6666 (0.93125)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) bd8ccccd (-0.06875)
42800000 (64) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) bd8ccccd (-0.06875)
42800000 (64) 42800000 (64) 00000000 (0) ffffff11 3f800000 (1) 3f6e6666 (0.93125)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42800000 (64) 00000000 (0) ffffff0f 00000000 (0) 3f6a0000 (0.914063)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) bdb00000 (-0.0859375)
42800000 (64) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) bdb00000 (-0.0859375)
42800000 (64) 42800000 (64) 00000000 (0) ffffff0f 3f800000 (1) 3f6a0000 (0.914063)
EFB copy 9 (00046b06)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 64
EFB Height: 64
BP register BPMEM_MIPMAP_STRIDE (20)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10DC940
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
First, the game draws a black region from (0, 0) to (64, 64), as it is about to draw with alpha enabled and it doesn't want to use what's currently on the screen there. (Hmmm...)
Then, using EFB copy 7 as the texture, the game repeatedly draws over the same region (from (0, 0) to (64, 64)) but with slightly different texture coordinates and alpha values. The blend state is set so that the new color multiplied by alpha is added directly to the color in the framebuffer, and the alpha values across all of the draws eventually sum to 0xff, so this only serves to blur it without changing the overall brightness. The texture has clamping enabled, so texture coordinates outside of the range [0, 1)
use the nearest in-bounds texel.
This first pass blends horizontally, with the top-left coordinates being (0, 0), (1.1/64, 0), (2.2/64, 0), ..., up to (6.6/64, 0), followed by (-0, 0), (-1.1/64), ..., (-5.5/64, 0). Apart from the duplication of (0, 0) and the incomplete mirroring caused by that, this is mostly reasonable... except that since the texture has clamping enabled, results will be brighter than intended if the the edge of the texture is not black. This is easiest to see when using free-look, by positioning a torch right at the edge of the screen (or even on the corner of the screen); the bloom for it will be brighter than normal. This could have been avoided by keeping the texture coordinates in the range (0, 1) and changing the position coordinates as needed instead, but it doesn't seem to be that big of a deal for normal situations, especially since bloom can't work with things that are off screen since they're not in the initial EFB copies, so the extra brightness somewhat compensates for that.
This is followed by a 64 by 64 EFB copy, then drawing over the same 64 by 64 region in black, then repeating the same process with texture coordinates changing vertically instead of horizontally (but now, the texture from that EFB copy is used instead of the one from the 128 by 128 EFB copy), and then another 64 by 64 EFB copy is made.
Object 279 (00046b82)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
42000000 (32) 00000000 (0) 00000000 (0) 000000ff
42000000 (32) 42000000 (32) 00000000 (0) 000000ff
Objects 298-310
Configuration (00046bc5)
The TEV configuration is the same as object 270. The texture is EFB copy 7.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitives (00046c67)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff16 3d0ccccd (0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 3d0ccccd (0.034375) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff16 3f846666 (1.03437) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff16 3f846666 (1.03437) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff15 3d8ccccd (0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 3d8ccccd (0.06875) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff15 3f88cccd (1.06875) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff15 3f88cccd (1.06875) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff14 3dd33334 (0.103125) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 3dd33334 (0.103125) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff14 3f8d3333 (1.10312) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff14 3f8d3333 (1.10312) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff13 3e0ccccd (0.1375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 3e0ccccd (0.1375) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff13 3f91999a (1.1375) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff13 3f91999a (1.1375) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff11 3e300000 (0.171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 3e300000 (0.171875) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff11 3f960000 (1.17188) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff11 3f960000 (1.17188) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff0f 3e533334 (0.20625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 3e533334 (0.20625) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff0f 3f9a6666 (1.20625) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff0f 3f9a6666 (1.20625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff16 80000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 80000000 (0) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff15 bd0ccccd (-0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 bd0ccccd (-0.034375) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff15 3f773333 (0.965625) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff15 3f773333 (0.965625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff14 bd8ccccd (-0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 bd8ccccd (-0.06875) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff14 3f6e6666 (0.93125) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff14 3f6e6666 (0.93125) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff13 bdd33334 (-0.103125) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 bdd33334 (-0.103125) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff13 3f65999a (0.896875) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff13 3f65999a (0.896875) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff11 be0ccccd (-0.1375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 be0ccccd (-0.1375) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff11 3f5ccccd (0.8625) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff11 3f5ccccd (0.8625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff0f be300000 (-0.171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f be300000 (-0.171875) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff0f 3f540000 (0.828125) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff0f 3f540000 (0.828125) 3f800000 (1)
EFB copy 10 (00047216)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 32
EFB Height: 32
BP register BPMEM_MIPMAP_STRIDE (10)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10E0F00
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
Object 311 (00047292)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
42000000 (32) 00000000 (0) 00000000 (0) 000000ff
42000000 (32) 42000000 (32) 00000000 (0) 000000ff
Objects 312-324
Configuration (000472da)
The TEV configuration is the same as object 270. The texture is EFB copy 10.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 32
Height: 32
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10E0F00
Primitives (00047377)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff16 00000000 (0) 3f846666 (1.03437)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 3d0ccccd (0.034375)
42000000 (32) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 3d0ccccd (0.034375)
42000000 (32) 42000000 (32) 00000000 (0) ffffff16 3f800000 (1) 3f846666 (1.03437)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff15 00000000 (0) 3f88cccd (1.06875)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) 3d8ccccd (0.06875)
42000000 (32) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) 3d8ccccd (0.06875)
42000000 (32) 42000000 (32) 00000000 (0) ffffff15 3f800000 (1) 3f88cccd (1.06875)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff14 00000000 (0) 3f8d3333 (1.10312)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) 3dd33334 (0.103125)
42000000 (32) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) 3dd33334 (0.103125)
42000000 (32) 42000000 (32) 00000000 (0) ffffff14 3f800000 (1) 3f8d3333 (1.10312)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff13 00000000 (0) 3f91999a (1.1375)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) 3e0ccccd (0.1375)
42000000 (32) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) 3e0ccccd (0.1375)
42000000 (32) 42000000 (32) 00000000 (0) ffffff13 3f800000 (1) 3f91999a (1.1375)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff11 00000000 (0) 3f960000 (1.17188)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) 3e300000 (0.171875)
42000000 (32) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) 3e300000 (0.171875)
42000000 (32) 42000000 (32) 00000000 (0) ffffff11 3f800000 (1) 3f960000 (1.17188)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff0f 00000000 (0) 3f9a6666 (1.20625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) 3e533334 (0.20625)
42000000 (32) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) 3e533334 (0.20625)
42000000 (32) 42000000 (32) 00000000 (0) ffffff0f 3f800000 (1) 3f9a6666 (1.20625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff16 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 80000000 (0)
42000000 (32) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 80000000 (0)
42000000 (32) 42000000 (32) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff15 00000000 (0) 3f773333 (0.965625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) bd0ccccd (-0.034375)
42000000 (32) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) bd0ccccd (-0.034375)
42000000 (32) 42000000 (32) 00000000 (0) ffffff15 3f800000 (1) 3f773333 (0.965625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff14 00000000 (0) 3f6e6666 (0.93125)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) bd8ccccd (-0.06875)
42000000 (32) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) bd8ccccd (-0.06875)
42000000 (32) 42000000 (32) 00000000 (0) ffffff14 3f800000 (1) 3f6e6666 (0.93125)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff13 00000000 (0) 3f65999a (0.896875)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) bdd33334 (-0.103125)
42000000 (32) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) bdd33334 (-0.103125)
42000000 (32) 42000000 (32) 00000000 (0) ffffff13 3f800000 (1) 3f65999a (0.896875)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff11 00000000 (0) 3f5ccccd (0.8625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) be0ccccd (-0.1375)
42000000 (32) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) be0ccccd (-0.1375)
42000000 (32) 42000000 (32) 00000000 (0) ffffff11 3f800000 (1) 3f5ccccd (0.8625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 42000000 (32) 00000000 (0) ffffff0f 00000000 (0) 3f540000 (0.828125)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) be300000 (-0.171875)
42000000 (32) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) be300000 (-0.171875)
42000000 (32) 42000000 (32) 00000000 (0) ffffff0f 3f800000 (1) 3f540000 (0.828125)
EFB copy 11 (00047926)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 32
EFB Height: 32
BP register BPMEM_MIPMAP_STRIDE (10)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10E0F00
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
The same process is performed using a 32x32 area. Note that this starts with the 128x128 texture (EFB copy 7), not the 64x64 texture generated earlier. The step size is now 1.1/32 instead of 1.1/64.
Object 325 (000479a2)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
41800000 (16) 00000000 (0) 00000000 (0) 000000ff
41800000 (16) 41800000 (16) 00000000 (0) 000000ff
Objects 326-338
Configuration (000479e5)
The TEV configuration is the same as object 270. The texture is EFB copy 7.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitives (00047a87)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff16 3d8ccccd (0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 3d8ccccd (0.06875) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff16 3f88cccd (1.06875) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff16 3f88cccd (1.06875) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff15 3e0ccccd (0.1375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 3e0ccccd (0.1375) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff15 3f91999a (1.1375) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff15 3f91999a (1.1375) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff14 3e533334 (0.20625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 3e533334 (0.20625) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff14 3f9a6666 (1.20625) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff14 3f9a6666 (1.20625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff13 3e8ccccd (0.275) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 3e8ccccd (0.275) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff13 3fa33333 (1.275) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff13 3fa33333 (1.275) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff11 3eb00000 (0.34375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 3eb00000 (0.34375) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff11 3fac0000 (1.34375) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff11 3fac0000 (1.34375) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff0f 3ed33334 (0.4125) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 3ed33334 (0.4125) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff0f 3fb4cccd (1.4125) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff0f 3fb4cccd (1.4125) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff16 80000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 80000000 (0) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff15 bd8ccccd (-0.06875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 bd8ccccd (-0.06875) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff15 3f6e6666 (0.93125) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff15 3f6e6666 (0.93125) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff14 be0ccccd (-0.1375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 be0ccccd (-0.1375) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff14 3f5ccccd (0.8625) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff14 3f5ccccd (0.8625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff13 be533334 (-0.20625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 be533334 (-0.20625) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff13 3f4b3333 (0.79375) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff13 3f4b3333 (0.79375) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff11 be8ccccd (-0.275) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 be8ccccd (-0.275) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff11 3f39999a (0.725) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff11 3f39999a (0.725) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff0f beb00000 (-0.34375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f beb00000 (-0.34375) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff0f 3f280000 (0.65625) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff0f 3f280000 (0.65625) 3f800000 (1)
EFB copy 12 (00048036)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 16
EFB Height: 16
BP register BPMEM_MIPMAP_STRIDE (8)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10E24C0
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
Object 339 (000480b2)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
41800000 (16) 00000000 (0) 00000000 (0) 000000ff
41800000 (16) 41800000 (16) 00000000 (0) 000000ff
Objects 340-352
Configuration (000480fa)
The TEV configuration is the same as object 270. The texture is EFB copy 12.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 16
Height: 16
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10E24C0
Primitives (00048197)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff16 00000000 (0) 3f88cccd (1.06875)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 3d8ccccd (0.06875)
41800000 (16) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 3d8ccccd (0.06875)
41800000 (16) 41800000 (16) 00000000 (0) ffffff16 3f800000 (1) 3f88cccd (1.06875)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff15 00000000 (0) 3f91999a (1.1375)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) 3e0ccccd (0.1375)
41800000 (16) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) 3e0ccccd (0.1375)
41800000 (16) 41800000 (16) 00000000 (0) ffffff15 3f800000 (1) 3f91999a (1.1375)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff14 00000000 (0) 3f9a6666 (1.20625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) 3e533334 (0.20625)
41800000 (16) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) 3e533334 (0.20625)
41800000 (16) 41800000 (16) 00000000 (0) ffffff14 3f800000 (1) 3f9a6666 (1.20625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff13 00000000 (0) 3fa33333 (1.275)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) 3e8ccccd (0.275)
41800000 (16) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) 3e8ccccd (0.275)
41800000 (16) 41800000 (16) 00000000 (0) ffffff13 3f800000 (1) 3fa33333 (1.275)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff11 00000000 (0) 3fac0000 (1.34375)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) 3eb00000 (0.34375)
41800000 (16) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) 3eb00000 (0.34375)
41800000 (16) 41800000 (16) 00000000 (0) ffffff11 3f800000 (1) 3fac0000 (1.34375)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff0f 00000000 (0) 3fb4cccd (1.4125)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) 3ed33334 (0.4125)
41800000 (16) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) 3ed33334 (0.4125)
41800000 (16) 41800000 (16) 00000000 (0) ffffff0f 3f800000 (1) 3fb4cccd (1.4125)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff16 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 80000000 (0)
41800000 (16) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 80000000 (0)
41800000 (16) 41800000 (16) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff15 00000000 (0) 3f6e6666 (0.93125)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) bd8ccccd (-0.06875)
41800000 (16) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) bd8ccccd (-0.06875)
41800000 (16) 41800000 (16) 00000000 (0) ffffff15 3f800000 (1) 3f6e6666 (0.93125)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff14 00000000 (0) 3f5ccccd (0.8625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) be0ccccd (-0.1375)
41800000 (16) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) be0ccccd (-0.1375)
41800000 (16) 41800000 (16) 00000000 (0) ffffff14 3f800000 (1) 3f5ccccd (0.8625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff13 00000000 (0) 3f4b3333 (0.79375)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) be533334 (-0.20625)
41800000 (16) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) be533334 (-0.20625)
41800000 (16) 41800000 (16) 00000000 (0) ffffff13 3f800000 (1) 3f4b3333 (0.79375)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff11 00000000 (0) 3f39999a (0.725)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) be8ccccd (-0.275)
41800000 (16) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) be8ccccd (-0.275)
41800000 (16) 41800000 (16) 00000000 (0) ffffff11 3f800000 (1) 3f39999a (0.725)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 41800000 (16) 00000000 (0) ffffff0f 00000000 (0) 3f280000 (0.65625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) beb00000 (-0.34375)
41800000 (16) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) beb00000 (-0.34375)
41800000 (16) 41800000 (16) 00000000 (0) ffffff0f 3f800000 (1) 3f280000 (0.65625)
EFB copy 13 (00048746)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 16
EFB Height: 16
BP register BPMEM_MIPMAP_STRIDE (8)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10E24C0
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
The process is performed yet again, this time using a 16x16 area (but still starting with the 128x128 texture (EFB copy 7)). The step size is now 1.1/16 instead of 1.1/64.
Object 353 (000487c2)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 43000000 (128) 00000000 (0) 000000ff
Objects 354-366
Configuration (00048805)
The TEV configuration is the same as object 270. The texture is EFB copy 7.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitives (000488a7)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff16 3c0ccccd (0.00859375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 3c0ccccd (0.00859375) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff16 3f81199a (1.00859) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff16 3f81199a (1.00859) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff15 3c8ccccd (0.0171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 3c8ccccd (0.0171875) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff15 3f823333 (1.01719) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff15 3f823333 (1.01719) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff14 3cd33334 (0.0257813) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 3cd33334 (0.0257813) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff14 3f834ccd (1.02578) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff14 3f834ccd (1.02578) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff13 3d0ccccd (0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 3d0ccccd (0.034375) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff13 3f846666 (1.03437) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff13 3f846666 (1.03437) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff11 3d300000 (0.0429688) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 3d300000 (0.0429688) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff11 3f858000 (1.04297) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff11 3f858000 (1.04297) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff0f 3d533334 (0.0515625) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 3d533334 (0.0515625) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff0f 3f86999a (1.05156) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff0f 3f86999a (1.05156) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff16 80000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 80000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff15 bc0ccccd (-0.00859375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 bc0ccccd (-0.00859375) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff15 3f7dcccd (0.991406) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff15 3f7dcccd (0.991406) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff14 bc8ccccd (-0.0171875) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 bc8ccccd (-0.0171875) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff14 3f7b999a (0.982813) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff14 3f7b999a (0.982813) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff13 bcd33334 (-0.0257813) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 bcd33334 (-0.0257813) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff13 3f796666 (0.974219) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff13 3f796666 (0.974219) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff11 bd0ccccd (-0.034375) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 bd0ccccd (-0.034375) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff11 3f773333 (0.965625) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff11 3f773333 (0.965625) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff0f bd300000 (-0.0429688) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f bd300000 (-0.0429688) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff0f 3f750000 (0.957031) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff0f 3f750000 (0.957031) 3f800000 (1)
EFB copy 14 (00048e56)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 128
EFB Height: 128
BP register BPMEM_MIPMAP_STRIDE (40)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10CC380
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
Object 367 (00048ed2)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 43000000 (128) 00000000 (0) 000000ff
Objects 368-380
Configuration (00048f1a)
The TEV configuration is the same as object 270. The texture is EFB copy 14.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitives (00048fb7)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff1b 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff1b 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff1b 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff1b 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff16 00000000 (0) 3f81199a (1.00859)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 3c0ccccd (0.00859375)
43000000 (128) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 3c0ccccd (0.00859375)
43000000 (128) 43000000 (128) 00000000 (0) ffffff16 3f800000 (1) 3f81199a (1.00859)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff15 00000000 (0) 3f823333 (1.01719)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) 3c8ccccd (0.0171875)
43000000 (128) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) 3c8ccccd (0.0171875)
43000000 (128) 43000000 (128) 00000000 (0) ffffff15 3f800000 (1) 3f823333 (1.01719)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff14 00000000 (0) 3f834ccd (1.02578)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) 3cd33334 (0.0257813)
43000000 (128) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) 3cd33334 (0.0257813)
43000000 (128) 43000000 (128) 00000000 (0) ffffff14 3f800000 (1) 3f834ccd (1.02578)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff13 00000000 (0) 3f846666 (1.03437)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) 3d0ccccd (0.034375)
43000000 (128) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) 3d0ccccd (0.034375)
43000000 (128) 43000000 (128) 00000000 (0) ffffff13 3f800000 (1) 3f846666 (1.03437)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff11 00000000 (0) 3f858000 (1.04297)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) 3d300000 (0.0429688)
43000000 (128) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) 3d300000 (0.0429688)
43000000 (128) 43000000 (128) 00000000 (0) ffffff11 3f800000 (1) 3f858000 (1.04297)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff0f 00000000 (0) 3f86999a (1.05156)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) 3d533334 (0.0515625)
43000000 (128) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) 3d533334 (0.0515625)
43000000 (128) 43000000 (128) 00000000 (0) ffffff0f 3f800000 (1) 3f86999a (1.05156)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff16 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff16 00000000 (0) 80000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) ffffff16 3f800000 (1) 80000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) ffffff16 3f800000 (1) 3f800000 (1)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff15 00000000 (0) 3f7dcccd (0.991406)
00000000 (0) 00000000 (0) 00000000 (0) ffffff15 00000000 (0) bc0ccccd (-0.00859375)
43000000 (128) 00000000 (0) 00000000 (0) ffffff15 3f800000 (1) bc0ccccd (-0.00859375)
43000000 (128) 43000000 (128) 00000000 (0) ffffff15 3f800000 (1) 3f7dcccd (0.991406)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff14 00000000 (0) 3f7b999a (0.982813)
00000000 (0) 00000000 (0) 00000000 (0) ffffff14 00000000 (0) bc8ccccd (-0.0171875)
43000000 (128) 00000000 (0) 00000000 (0) ffffff14 3f800000 (1) bc8ccccd (-0.0171875)
43000000 (128) 43000000 (128) 00000000 (0) ffffff14 3f800000 (1) 3f7b999a (0.982813)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff13 00000000 (0) 3f796666 (0.974219)
00000000 (0) 00000000 (0) 00000000 (0) ffffff13 00000000 (0) bcd33334 (-0.0257813)
43000000 (128) 00000000 (0) 00000000 (0) ffffff13 3f800000 (1) bcd33334 (-0.0257813)
43000000 (128) 43000000 (128) 00000000 (0) ffffff13 3f800000 (1) 3f796666 (0.974219)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff11 00000000 (0) 3f773333 (0.965625)
00000000 (0) 00000000 (0) 00000000 (0) ffffff11 00000000 (0) bd0ccccd (-0.034375)
43000000 (128) 00000000 (0) 00000000 (0) ffffff11 3f800000 (1) bd0ccccd (-0.034375)
43000000 (128) 43000000 (128) 00000000 (0) ffffff11 3f800000 (1) 3f773333 (0.965625)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) ffffff0f 00000000 (0) 3f750000 (0.957031)
00000000 (0) 00000000 (0) 00000000 (0) ffffff0f 00000000 (0) bd300000 (-0.0429688)
43000000 (128) 00000000 (0) 00000000 (0) ffffff0f 3f800000 (1) bd300000 (-0.0429688)
43000000 (128) 43000000 (128) 00000000 (0) ffffff0f 3f800000 (1) 3f750000 (0.957031)
EFB copy 15 (00049566)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 128
EFB Height: 128
BP register BPMEM_MIPMAP_STRIDE (40)
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10CC380
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
The process is performed one final time, now time using a 128x128 area (and still the 128x128 texture from EFB copy 7). The step size is now 1.1/128 instead of 1.1/64.
Now, there are several blurred textures based on the content of the screen that was bright, in various dimensions: 64x64 (EFB copy 9), 32x32 (EFB copy 11), 16x16 (EFB copy 13), and 128x128 (EFB copy 15). Although this order might seem odd, doing the 128x128 version last makes sense: it is able to re-use the memory originally used by EFB copy 7, as nothing else will rely on it after that point. (The others, however, could be in any order; it could have also been done as 16x16, 32x32, 64x64, 128x128 with no immediately apparent downsides.)
Object 381 (000495e2)
Configured to clear to black.
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) 000000ff
00000000 (0) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 00000000 (0) 00000000 (0) 000000ff
43000000 (128) 43000000 (128) 00000000 (0) 000000ff
Object 382
Configuration (0004962a)
The TEV configuration is the same as object 270. The texture is EFB copy 15.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitive data (000496c7)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) fffffff6 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) fffffff6 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) fffffff6 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) fffffff6 3f800000 (1) 3f800000 (1)
Object 383
Configuration (0004972a)
The TEV configuration is the same as object 270. The texture is EFB copy 9.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 64
Height: 64
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10DC940
Primitive data (00049760)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) fffffff6 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) fffffff6 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) fffffff6 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) fffffff6 3f800000 (1) 3f800000 (1)
Object 384
Configuration (000497c3)
The TEV configuration is the same as object 270. The texture is EFB copy 11.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 32
Height: 32
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10E0F00
Primitive data (000497f9)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43000000 (128) 00000000 (0) fffffff6 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) fffffff6 00000000 (0) 00000000 (0)
43000000 (128) 00000000 (0) 00000000 (0) fffffff6 3f800000 (1) 00000000 (0)
43000000 (128) 43000000 (128) 00000000 (0) fffffff6 3f800000 (1) 3f800000 (1)
Object 385
Configuration (0004985c)
The TEV configuration is the same as object 270. The texture is EFB copy 13.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 16
Height: 16
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10E24C0
Primitive data (00049892)
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 16
Height: 16
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10E24C0
EFB copy 16 (000498f5)
BP register BPMEM_EFB_TL
EFB Left: 0
EFB Top: 0
BP register BPMEM_EFB_WH
EFB Width: 128
EFB Height: 128
BP register BPMEM_MIPMAP_STRIDE
No description available
BP register BPMEM_EFB_ADDR
EFB Target address (32 byte aligned): 0x10CC380
BP register BPMEM_TRIGGER_EFB_COPY
Clamping: Top and Bottom
Converting from RGB to YUV: No
Target pixel format: RGBA8 (6)
Gamma correction: 1.0
Half scale: No
Vertical scaling: No
Clear: No
Frame to field: Progressive (0)
Copy to XFB: No
Intensity format: No
Automatic color conversion: Yes
As a final step, all 4 of those blurred textures are additively blended together atop a black background (with an alpha value of 0xf6 (about 96%) each, which makes the result a little bit darker than it would be at 100%, but the brightness is still increased fairly significantly). This then becomes EFB copy 16.
Object 368
TEV configuration (00049927)
BP register BPMEM_BLENDMODE
Enable: No
Logic ops: No
Dither: Yes
Color write: Yes
Alpha write: Yes
Dest factor: 0 (0)
Source factor: 1 (1)
Subtract: No
Logic mode: Clear (0) (0)
BP register BPMEM_TEV_COLOR_ENV Tev stage 0
dest.rgb = tex.rgb*ras.rgb
a: ZERO (15)
b: ras.rgb (10)
c: tex.rgb (8)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
BP register BPMEM_TEV_ALPHA_ENV Tev stage 0
dest.a = tex.a*ras.a
a: ZERO (7)
b: ras (5)
c: tex (4)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
Texture configuration (0004996d)
The texture is EFB copy 6.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Near (0)
Mipmap filter: None (0)
Min filter: Near (0)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 320
Height: 228
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10108A0
Primitive data (000499a3)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43640000 (228) 00000000 (0) ffffffff 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffffff 00000000 (0) 00000000 (0)
43a00000 (320) 00000000 (0) 00000000 (0) ffffffff 3f800000 (1) 00000000 (0)
43a00000 (320) 43640000 (228) 00000000 (0) ffffffff 3f800000 (1) 3f800000 (1)
Object 387
TEV configuration (00049a06 and 00049a33)
BP register BPMEM_BLENDMODE
Enable: Yes
Logic ops: No
Dither: Yes
Color write: Yes
Alpha write: Yes
Dest factor: 1 (1)
Source factor: src_alpha (4)
Subtract: No
Logic mode: Clear (0) (0)
BP register BPMEM_TEV_ALPHA_ENV Tev stage 0
dest.a = ras.a*tex.a
a: ZERO (7)
b: tex (4)
c: ras (5)
d: ZERO (7)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 1 (0) / Compare mode: R8 (0)
Dest: prev (0)
Ras sel: 0
Tex sel: 0
BP register BPMEM_TEV_COLOR_ENV Tev stage 0
dest.rgb = (ras.rgb*tex.rgb) * 4
a: ZERO (15)
b: tex.rgb (8)
c: ras.rgb (10)
d: ZERO (15)
Bias: 0 (0)
Op: Add (0) / Comparison: Greater than (0)
Clamp: Yes
Scale factor: 4 (2) / Compare mode: BGR24 (2)
Dest: prev (0)
Texture configuration (00049a0b)
The texture is EFB copy 16.
BP register BPMEM_TX_SETMODE0 Texture Unit 0
Wrap S: Clamp (0)
Wrap T: Clamp (0)
Mag filter: Linear (1)
Mipmap filter: None (0)
Min filter: Linear (1)
LOD type: Edge LOD (0)
LOD bias: 0 (0)
Max anisotropic filtering: 1 (0)
LOD/bias clamp: No
BP register BPMEM_TX_SETMODE1 Texture Unit 0
Min LOD: 0 (0)
Max LOD: 0 (0)
BP register BPMEM_TX_SETIMAGE0 Texture Unit 0
Width: 128
Height: 128
Format: RGBA8 (6)
BP register BPMEM_TX_SETIMAGE1 Texture Unit 0
Even TMEM Offset: 0
Even TMEM Width: 3
Even TMEM Height: 3
Cache is manually managed: No
BP register BPMEM_TX_SETIMAGE2 Texture Unit 0
Odd TMEM Offset: 4000
Odd TMEM Width: 3
Odd TMEM Height: 3
BP register BPMEM_TX_SETIMAGE3 Texture Unit 0
Source address (32 byte aligned): 0x10CC380
Primitive data (00049a63)
Primitive GX_DRAW_QUADS (0) VAT 2
00000000 (0) 43e40000 (456) 00000000 (0) ffffff4c 00000000 (0) 3f800000 (1)
00000000 (0) 00000000 (0) 00000000 (0) ffffff4c 00000000 (0) 00000000 (0)
44200000 (640) 00000000 (0) 00000000 (0) ffffff4c 3f800000 (1) 00000000 (0)
44200000 (640) 43e40000 (456) 00000000 (0) ffffff4c 3f800000 (1) 3f800000 (1)
The top-left of the screen is then restored (using EFB copy 6). Following that, the bloom effect is drawn over the screen using additive blending. However, the TEV is configured to multiply rgb values by 4 here (see Z_EFB_copy_16_bad_multiply.png), and those values are still clamped into the range of 0-1 (0-0xff). The drawing also has alpha enabled, which results in the brightness being reduced when blending; here, alpha is set to 0x4c (a bit over a fourth), mostly canceling out the multiplication by 4 earlier (see Z_EFB_copy_16_multiply_divide.png).
After that, the HUD is drawn, and then the game is finished rendering. The end result is in Z_Final.png.
The original bug report (12763) wasn't about broken bloom in general, though. As bad as the broken version of the effect looks in these examples, there are also cases where the screen becomes completely white and it is impossible to see anything.
On a seemingly-unrelated note, there are several magic numbers throughout this bloom process: the initial konst color of #7a7a7a
, the offset of 1.1
during the blurring process, the alpha values during the blurring process, the alpha value of 0xf6
when combining the blurred textures, and the alpha value of 0x4c
when drawing the final texture over the screen. These all seem somewhat arbitrary, don't they?
It turns out that the game uses different values during different situations. In the problematic fifolog in that issue (White_Screen_Rygar_Battle_of_Argus.zip
), the konst color is instead #ffffff
, the blurring alpha is 0x6a
, an the final alpha is 0xff
(the blurring process seems to be unchanged). Since the konst color is 0xff
, and any intensity value is between 0 and 0xff (as they're between 16 and 235), subtracting the konst color from intensity always results in black, so EFB copy 7 and everything after it are completely black. So under normal operation, the bloom effect is effectively disabled in that scene. However, with Dolphin's bug, EFB copy 7 instead got what was already on the screen, and the rest of the bloom effect continued as normal... except that the final alpha configuration of 0xff
instead of 0x4c
means there is no equivalent to the final division by 4, so the end result is extremely bright, completely washing everything out when the additive blending is applied. (If freelook is used so that the top-left of the screen is looking at something dark (such as the black void that is seen when looking up), then the rest of the game can be seen rendering properly behind this bloom.
Presumably, the game turned off the bloom effect here because it is an outdoors (or at least well-lit) area, and applying bloom to it would be somewhat silly (though in this case, it isn't bright enough for the original intensity value of 0x7a
to actually do anything). Presumably, the game's designers adjusted the bloom configuration for different areas to give ideal results.
It's somewhat odd that the game disables the bloom effect this way. I initially assumed that the bloom effect was broken (and the game was trying to subtract intensity from the color, which would work if clamping weren't enabled); since I have been working only off of fifologs of the game, I didn't know that it was configured differently elsewhere. It's a bit of a performance loss to run the bloom logic in situations where it should always do nothing, but I don't think the bloom effect is that expensive performance-wise either.
Yes, see this line. (It's only set for EFB copies, and not XFB copies, but XFB copies aren't used for anything other than the final copy to the screen, so that doesn't matter).
Use Tools → FIFO Player, and load a DFF file (you can record one during normal emulation with the FIFO player and then play it back when emulation is not already running, or download one from various bug reports). The analyze tab lists all of the graphics commands, but actually understanding what they're doing is a lot harder (the easiest way is to look at how Dolphin uses those values in the software renderer, since the software renderer directly uses graphics registers instead of the values being used to compile a shader with several layers of indirection).
I think that is indeed what you would need to do, but games do indeed do things wrong (e.g. here it does
(0, 0)
and(-0, 0)
and ends at(6.6, 0)
and(-5.5, 0)
, which isn't properly mirrored), and I'm guessing many other games do things that are technically wrong but aren't noticeable normally.I don't think that would even work, since the algorithm would be detecting images that are properly blurred, while when bloom fails at higher resolutions the blurring stops working properly.