2021-02-06 18:09:13 -06:00
/ * This file is part of libWiiSharp
* Copyright ( C ) 2009 Leathl
* Copyright ( C ) 2020 Github Contributors
*
* libWiiSharp is free software : you can redistribute it and / or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* libWiiSharp is distributed in the hope that it will be
* useful , but WITHOUT ANY WARRANTY ; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
* /
2020-12-28 22:28:44 -06:00
using System ;
using System.IO ;
namespace libWiiSharp
{
2021-02-06 18:09:13 -06:00
internal class BNS_Data
2020-12-28 22:28:44 -06:00
{
2021-02-06 22:53:40 -06:00
private readonly byte [ ] magic = new byte [ 4 ]
2021-02-06 18:09:13 -06:00
{
2021-02-06 22:53:40 -06:00
68 ,
65 ,
84 ,
65
2021-02-06 18:09:13 -06:00
} ;
private uint size = 315392 ;
private byte [ ] data ;
2020-12-28 22:28:44 -06:00
2021-02-06 18:09:13 -06:00
public uint Size
{
2021-02-06 22:53:40 -06:00
get = > size ;
set = > size = value ;
2021-02-06 18:09:13 -06:00
}
2020-12-28 22:28:44 -06:00
2021-02-06 18:09:13 -06:00
public byte [ ] Data
{
2021-02-06 22:53:40 -06:00
get = > data ;
set = > data = value ;
2021-02-06 18:09:13 -06:00
}
2020-12-28 22:28:44 -06:00
2021-02-06 18:09:13 -06:00
public void Write ( Stream outStream )
{
2021-02-06 22:53:40 -06:00
byte [ ] bytes = BitConverter . GetBytes ( Shared . Swap ( size ) ) ;
outStream . Write ( magic , 0 , magic . Length ) ;
2021-02-06 18:09:13 -06:00
outStream . Write ( bytes , 0 , bytes . Length ) ;
2021-02-06 22:53:40 -06:00
outStream . Write ( data , 0 , data . Length ) ;
2021-02-06 18:09:13 -06:00
}
2020-12-28 22:28:44 -06:00
2021-02-06 18:09:13 -06:00
public void Read ( Stream input )
{
BinaryReader binaryReader = new BinaryReader ( input ) ;
2021-02-06 22:53:40 -06:00
size = Shared . CompareByteArrays ( magic , binaryReader . ReadBytes ( 4 ) ) ? Shared . Swap ( binaryReader . ReadUInt32 ( ) ) : throw new Exception ( "This is not a valid BNS audfo file!" ) ;
data = binaryReader . ReadBytes ( ( int ) size - 8 ) ;
2021-02-06 18:09:13 -06:00
}
2020-12-28 22:28:44 -06:00
}
}