mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@41 b871894f-2f95-9b40-918c-086798483c85
189 lines
7.0 KiB
C
189 lines
7.0 KiB
C
/*---------------------------------------------------------------------------*
|
||
Project: CtrBrom - swi - include
|
||
File: swi.h
|
||
|
||
Copyright 2008 Nintendo. All rights reserved.
|
||
|
||
These coded instructions, statements, and computer programs contain
|
||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||
Company Ltd., and are protected by Federal copyright law. They may
|
||
not be disclosed to third parties or copied or duplicated in any form,
|
||
in whole or in part, without the prior written consent of Nintendo.
|
||
|
||
$Log: $
|
||
$NoKeywords: $
|
||
*---------------------------------------------------------------------------*/
|
||
#ifndef BROM_SWI_SWI_H_
|
||
#define BROM_SWI_SWI_H_
|
||
|
||
|
||
#include <brom/misc.h>
|
||
#include <brom/types.h>
|
||
#include <brom/memorymap.h>
|
||
#include <ctr/ioreg.h>
|
||
|
||
#include <brom/os.h>
|
||
#if 0
|
||
#include <brom/mi/stream.h>
|
||
#include <brom/mi/uncompress.h>
|
||
|
||
#include <firm/os/common/systemCall.h>
|
||
#endif
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
void SWI_Halt( void );
|
||
void SWI_WaitByLoop( s32 count );
|
||
void SWI_WaitIntr( BOOL clear, OSIrqMask mask );
|
||
void SWI_WaitVBlankIntr( void );
|
||
void SWI_CpuSet( const void* src, void* dest, u32 dmaCntData );
|
||
void SWI_CpuSetFast( const void* src, void* dest, u32 dmaCntData );
|
||
void SWI_UnPackBits32( const void* src, void* dest, const MIUnpackBitsParam *paramp );
|
||
void SWI_UnCompLZ77Byte( const void* src, void* dest );
|
||
void SWI_UnCompRLByte( const void* src, void* dest );
|
||
s32 SWI_DivS32( s32 number, s32 denom );
|
||
u16 SWI_SqrtU32( u32 src );
|
||
u16 SWI_GetCRC16( u32 start, const u16 *datap, u32 size );
|
||
s32 SWI_UnCompHuffman( const u8 *srcp, u32 *destp, u8 *tableBufp, const MIReadStreamCallbacks *scb );
|
||
s32 SWI_UnCompLZ77Short( const u8 *srcp, u16 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
|
||
s32 SWI_UnCompRLShort( const u8 *srcp, u16 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
|
||
s32 SWI_UnCompLZ77Stream( const u8 *srcp, u8 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
|
||
u32 SWI_GetSinTable( s32 index );
|
||
u32 SWI_GetPitchTable( s32 index);
|
||
u32 SWI_GetVolumeTable( s32 index );
|
||
void SWIi_Terminate( void );
|
||
|
||
#ifdef SDK_ARM9
|
||
void SWI_SetPauseReg( u32 w );
|
||
void SWI_UnDiffByte2Byte( const void *src, void *dest );
|
||
void SWI_UnDiffShort2Short( const void *src, void *dest );
|
||
#else // SDK_ARM7
|
||
void SWI_Sleep( void );
|
||
void SWI_SetPauseHi( u32 dummy0, u32 dummy1, u8 b );
|
||
void SWI_SetPauseCheckFlag( void );
|
||
void SWI_ChangeSoundBias16( u32 UpDown, u32 stepLoops );
|
||
#endif
|
||
|
||
|
||
/*---------------------------------------------------------------------------*
|
||
Name: SWI_CpuClear
|
||
|
||
Description: clear memory by SWI_CpuSet
|
||
|
||
<20>ECPU<50><55>RAM<41>N<EFBFBD><4E><EFBFBD>A<EFBFBD><41><EFBFBD>܂<EFBFBD><DC82>B
|
||
<20>E<EFBFBD>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^<5E>̓X<CD83>^<5E>b<EFBFBD>N<EFBFBD>ɒu<C992><75><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>փR<D683>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
|
||
|
||
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
|
||
data <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^
|
||
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
size <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
|
||
bit <20>]<5D><><EFBFBD>r<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>i16|32<33>j
|
||
|
||
Arguments: data : clear data
|
||
destp : destination address
|
||
size : clear size ( by byte )
|
||
bit : bit width ( 16 or 32 )
|
||
|
||
Returns: None
|
||
|
||
*---------------------------------------------------------------------------*/
|
||
#define SWI_CpuClear( data, destp, size, bit ) \
|
||
do{ \
|
||
vu##bit tmp = (vu##bit )(data); \
|
||
SWI_CpuSet((u8 *)&(tmp), (u8 *)(destp), ( \
|
||
MI_DMA_SRC_FIX | \
|
||
MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff))); \
|
||
} while(0)
|
||
|
||
/*---------------------------------------------------------------------------*
|
||
Name: SWI_CpuCopy
|
||
|
||
Description: copy memory by SWI_CpuSet
|
||
|
||
<20>ECPU<50>ŃR<C583>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
|
||
|
||
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
|
||
srcp : <20>\<5C>[<5B>X<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
destp : <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
size : <20>]<5D><><EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
|
||
bit : <20>]<5D><><EFBFBD>r<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>i16|32<33>j
|
||
|
||
Arguments: srcp : source address
|
||
destp : destination address
|
||
size : size to copy ( by byte )
|
||
bit : bit width ( 16 or 32 )
|
||
|
||
Returns: None
|
||
|
||
*---------------------------------------------------------------------------*/
|
||
#define SWI_CpuCopy( srcp, destp, size, bit ) \
|
||
\
|
||
SWI_CpuSet((u8 *)(srcp), (u8 *)(destp), ( \
|
||
MI_DMA_SRC_INC | \
|
||
MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff)))
|
||
|
||
/*---------------------------------------------------------------------------*
|
||
Name: SWI_CpuClearFast
|
||
|
||
Description: clear memory by SWI_CpuSetFast quickly
|
||
|
||
<20>ECPU<50>ō<EFBFBD><C58D><EFBFBD><EFBFBD><EFBFBD>RAM<41>N<EFBFBD><4E><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD>R<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD>܂<EFBFBD><DC82>B
|
||
<20>E<EFBFBD>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^<5E>̓X<CD83>^<5E>b<EFBFBD>N<EFBFBD>ɒu<C992><75><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>փR<D683>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
|
||
<20>E32Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD>\<5C>Ȏ<EFBFBD><C88E>ɂ<EFBFBD>32Byte<74>P<EFBFBD>ʂ̕<CA82><CC95><EFBFBD><EFBFBD>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>߂<EFBFBD><DF82>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>A
|
||
<20>[<5B><><EFBFBD><EFBFBD>4Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B
|
||
|
||
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
|
||
data <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^
|
||
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
size <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
|
||
|
||
Arguments: data : clear data
|
||
destp : destination address
|
||
size : clear size ( by byte )
|
||
|
||
Returns: None
|
||
|
||
*---------------------------------------------------------------------------*/
|
||
#define SWI_CpuClearFast( data, destp, size ) \
|
||
do{ \
|
||
vu32 tmp = (vu32 )(data); \
|
||
SWI_CpuSetFast((u8 *)&(tmp), (u8 *)(destp), ( \
|
||
MI_DMA_SRC_FIX | ((size)/(32/8) & 0x1fffff))); \
|
||
} while(0)
|
||
|
||
/*---------------------------------------------------------------------------*
|
||
Name: SWI_CpuCopyFast
|
||
|
||
Description: clear memory by SWI_CpuSetFast quickly
|
||
|
||
<20>ECPU<50>ō<EFBFBD><C58D><EFBFBD><EFBFBD>ɃR<C983>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
|
||
<20>E32Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD>\<5C>Ȏ<EFBFBD><C88E>ɂ͕<C982><CD95><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>^<5E>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>߂<EFBFBD><DF82>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>A
|
||
<20>[<5B><><EFBFBD><EFBFBD>4Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B
|
||
|
||
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
|
||
srcp <20>\<5C>[<5B>X<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
|
||
size <20>]<5D><><EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
|
||
|
||
Arguments: srcp : source address
|
||
destp : destination address
|
||
size : size to copy ( by byte )
|
||
|
||
Returns: None
|
||
|
||
*---------------------------------------------------------------------------*/
|
||
#define SWI_CpuCopyFast( srcp, destp, size ) \
|
||
\
|
||
SWI_CpuSetFast((u8 *)(srcp), (u8 *)(destp), ( \
|
||
MI_DMA_SRC_INC | ((size)/(32/8) & 0x1fffff)))
|
||
|
||
|
||
#ifdef __cplusplus
|
||
} /* extern "C" */
|
||
#endif
|
||
|
||
/* BROM_SWI_SWI_H_ */
|
||
#endif
|