summaryrefslogtreecommitdiff
path: root/arm9/lib/include/CARD_rom.h
blob: 3d7bbb77bb40a794b97b0e8ee4a7f92a22cafb33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef NITRO_CARD_ROM_H_
#define NITRO_CARD_ROM_H_

#include "nitro/types.h"
#include "MI_exMemory.h"
#include "MI_dma.h"

typedef struct
{
    u32 offset;
    u32 length;
}
CARDRomRegion;

static inline const CARDRomRegion * CARD_GetRomRegionOVT(MIProcessor target)
{
    return (target == MI_PROCESSOR_ARM9)
    ? (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x50)
    : (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x58);
}

void CARDi_ReadRom(u32 dma, const void * src, void * dst, u32 len, MIDmaCallback done_cb, void * arg, BOOL is_async);

static inline void CARD_ReadRomAsync(u32 dma, const void * src, void * dst, u32 len, MIDmaCallback callback, void * arg)
{
    CARDi_ReadRom(dma, src, dst, len, callback, arg, TRUE);
}

void CARD_LockRom(u16 lock_id);
void CARD_UnlockRom(u16 lock_id);

static inline const CARDRomRegion * CARD_GetRomRegionFNT() {
    return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x40);
}

static inline const CARDRomRegion * CARD_GetRomRegionFAT() {
    return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x48);
}

#endif //NITRO_CARD_ROM_H_