MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / ReadArrayUnlock

Function ReadArrayUnlock

src/dolphin/src/card/CARDUnlock.c:118–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116#define SEC_BA(x) ((u8)(((x) >> 12) & 0x7f))
117
118static s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode)
119{
120 CARDControl* card;
121 BOOL err;
122 u8 cmd[5];
123
124 card = &__CARDBlock[chan];
125 if (!EXISelect(chan, 0, 4))
126 {
127 return CARD_RESULT_NOCARD;
128 }
129
130 data &= 0xfffff000;
131 memset(cmd, 0, 5);
132 cmd[0] = 0x52;
133 if (mode == 0)
134 {
135 cmd[1] = SEC_AD1(data);
136 cmd[2] = SEC_AD2(data);
137 cmd[3] = SEC_AD3(data);
138 cmd[4] = SEC_BA(data);
139 }
140 else
141 {
142 cmd[1] = (u8)((data & 0xff000000) >> 24);
143 cmd[2] = (u8)((data & 0x00ff0000) >> 16);
144 }
145
146 err = FALSE;
147 err |= !EXIImmEx(chan, cmd, 5, 1);
148 err |= !EXIImmEx(chan, (u8*)card->workArea + (u32)sizeof(CARDID), card->latency, 1);
149 err |= !EXIImmEx(chan, rbuf, rlen, 0);
150 err |= !EXIDeselect(chan);
151
152 return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY;
153}
154
155// Calculate Dummy Read Length, 4-32Bytes
156static s32 DummyLen(void)

Callers 2

__CARDUnlockFunction · 0.85
DoneCallbackFunction · 0.85

Calls 4

EXISelectFunction · 0.85
memsetFunction · 0.85
EXIImmExFunction · 0.85
EXIDeselectFunction · 0.85

Tested by

no test coverage detected