MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / InitBlenderMode

Function InitBlenderMode

Source/SysGL/HLEGraphics/RendererGL.cpp:741–863  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

739#endif
740
741static void InitBlenderMode()
742{
743 u32 cycle_type = gRDPOtherMode.cycle_type;
744 u32 cvg_x_alpha = gRDPOtherMode.cvg_x_alpha;
745 u32 alpha_cvg_sel = gRDPOtherMode.alpha_cvg_sel;
746 u32 blendmode = gRDPOtherMode.blender;
747
748 // NB: If we're running in 1cycle mode, ignore the 2nd cycle.
749 u32 active_mode = (cycle_type == CYCLE_2CYCLE) ? blendmode : (blendmode & 0xcccc);
750
751 enum BlendType
752 {
753 kBlendModeOpaque,
754 kBlendModeAlphaTrans,
755 kBlendModeFade,
756 };
757 BlendType type = kBlendModeOpaque;
758
759 // FIXME(strmnnrmn): lots of these need fog!
760
761 switch (active_mode)
762 {
763 case 0x0040: // In * AIn + Mem * 1-A
764 // MarioKart (spinning logo).
765 type = kBlendModeAlphaTrans;
766 break;
767 case 0x0050: // In * AIn + Mem * 1-A | In * AIn + Mem * 1-A
768 // Extreme-G.
769 type = kBlendModeAlphaTrans;
770 break;
771 case 0x0440: // In * AFog + Mem * 1-A
772 // Bomberman64. alpha_cvg_sel: 1 cvg_x_alpha: 1
773 type = kBlendModeAlphaTrans;
774 break;
775 case 0x04d0: // In * AFog + Fog * 1-A | In * AIn + Mem * 1-A
776 // Conker.
777 type = kBlendModeAlphaTrans;
778 break;
779 case 0x0150: // In * AIn + Mem * 1-A | In * AFog + Mem * 1-A
780 // Spiderman.
781 type = kBlendModeAlphaTrans;
782 break;
783 case 0x0c08: // In * 0 + In * 1
784 // MarioKart (spinning logo)
785 // This blend mode doesn't use the alpha value
786 type = kBlendModeOpaque;
787 break;
788 case 0x0c18: // In * 0 + In * 1 | In * AIn + Mem * 1-A
789 // StarFox main menu.
790 type = kBlendModeAlphaTrans;
791 break;
792 case 0x0c40: // In * 0 + Mem * 1-A
793 // Extreme-G.
794 type = kBlendModeFade;
795 break;
796 case 0x0f0a: // In * 0 + In * 1 | In * 0 + In * 1
797 // Zelda OoT.
798 type = kBlendModeOpaque;

Callers 1

PrepareRenderStateMethod · 0.70

Calls 1

DebugBlenderFunction · 0.70

Tested by

no test coverage detected