@@ -62,7 +62,7 @@ static unsafe List<int> FindAll(uint[] arrayToSearchThrough, uint val)
6262 return list ;
6363 }
6464
65- static readonly uint [ ] BZero = new uint [ ]
65+ static readonly uint [ ] BZero1 = new uint [ ]
6666 {
6767 0x28A1000C , 0x1420001D , 0x00041823 , 0x30630003 , 0x10600003 , 0x00A32823 , 0xA8800000 , 0x00832021 ,
6868 0x2401FFE0 , 0x00A13824 , 0x10E0000C , 0x00A72823 , 0x00E43821 , 0x24840020 , 0xAC80FFE0 , 0xAC80FFE4 ,
@@ -71,6 +71,15 @@ static unsafe List<int> FindAll(uint[] arrayToSearchThrough, uint val)
7171 0x00000000 , 0x00A42821 , 0x24840001 , 0x1485FFFE , 0xA080FFFF , 0x03E00008 , 0x00000000 ,
7272 } ;
7373
74+ static readonly uint [ ] BZero2 = new uint [ ]
75+ {
76+ 0x00041823 , 0x28A1000C , 0x1420001D , 0x00000000 , 0x30630003 , 0x10600003 , 0x00A32823 , 0xA8800000 ,
77+ 0x00832021 , 0x2401FFE0 , 0x00A13824 , 0x10E0000C , 0x00A72823 , 0x00E43821 , 0xAC800000 , 0xAC800004 ,
78+ 0xAC800008 , 0xAC80000C , 0x24840020 , 0xAC80FFF0 , 0xAC80FFF4 , 0xAC80FFF8 , 0x1487FFF7 , 0xAC80FFFC ,
79+ 0x2401FFFC , 0x00A13824 , 0x10E00005 , 0x00A72823 , 0x00E43821 , 0x24840004 , 0x1487FFFE , 0xAC80FFFC ,
80+ 0x18A00005 , 0x00000000 , 0x00A42821 , 0x24840001 , 0x1485FFFE , 0xA080FFFF , 0x03E00008 , 0x00000000 ,
81+ } ;
82+
7483 static bool IsVAddr ( uint addr )
7584 {
7685 if ( 0x80000000 != ( 0xff000000 & addr ) )
@@ -91,7 +100,9 @@ static bool IsBZeroSize(int size)
91100 public DecompManager ( uint [ ] mem )
92101 {
93102 uint instructionsToInterpretCount = 16 ;
94- List < int > bzeroPositions = IndicesOf ( mem , BZero ) ;
103+ List < int > bzero1Positions = IndicesOf ( mem , BZero1 ) ;
104+ List < int > bzero2Positions = IndicesOf ( mem , BZero2 ) ;
105+ List < int > bzeroPositions = bzero1Positions . Concat ( bzero2Positions ) . ToList ( ) ;
95106 if ( bzeroPositions . Count ( ) == 0 )
96107 throw new ArgumentException ( "Failed to find bzero!" ) ;
97108
0 commit comments