void michael_final(u_int8_t digest[MICHAEL_DIGEST_LENGTH], MICHAEL_CTX *ctx) { static const u_int8_t pad[] = { 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; michael_update(ctx, pad, sizeof(pad)); PUTLE32(digest, ctx->michael_l); PUTLE32(digest + MICHAEL_RAW_BLOCK_LENGTH, ctx->michael_r); }
void CALLBACK GPUreadDataMem(uint32_t * pMem, int iSize) { _TR int i; if (DataReadMode != DR_VRAMTRANSFER) return; GPUIsBusy; // adjust read ptr, if necessary while (VRAMRead.ImagePtr >= psxVuw_eom) VRAMRead.ImagePtr -= iGPUHeight * 1024; while (VRAMRead.ImagePtr < psxVuw) VRAMRead.ImagePtr += iGPUHeight * 1024; for (i = 0; i < iSize; i++) { // do 2 seperate 16bit reads for compatibility (wrap issues) if ((VRAMRead.ColsRemaining > 0) && (VRAMRead.RowsRemaining > 0)) { // lower 16 bit lGPUdataRet = (uint32_t) GETLE16(VRAMRead.ImagePtr); VRAMRead.ImagePtr++; if (VRAMRead.ImagePtr >= psxVuw_eom) VRAMRead.ImagePtr -= iGPUHeight * 1024; VRAMRead.RowsRemaining--; if (VRAMRead.RowsRemaining <= 0) { VRAMRead.RowsRemaining = VRAMRead.Width; VRAMRead.ColsRemaining--; VRAMRead.ImagePtr += 1024 - VRAMRead.Width; if (VRAMRead.ImagePtr >= psxVuw_eom) VRAMRead.ImagePtr -= iGPUHeight * 1024; } // higher 16 bit (always, even if it's an odd width) lGPUdataRet |= (uint32_t) GETLE16(VRAMRead.ImagePtr) << 16; PUTLE32(pMem, lGPUdataRet); pMem++; if (VRAMRead.ColsRemaining <= 0) { FinishedVRAMRead(); goto ENDREAD; } VRAMRead.ImagePtr++; if (VRAMRead.ImagePtr >= psxVuw_eom) VRAMRead.ImagePtr -= iGPUHeight * 1024; VRAMRead.RowsRemaining--; if (VRAMRead.RowsRemaining <= 0) { VRAMRead.RowsRemaining = VRAMRead.Width; VRAMRead.ColsRemaining--; VRAMRead.ImagePtr += 1024 - VRAMRead.Width; if (VRAMRead.ImagePtr >= psxVuw_eom) VRAMRead.ImagePtr -= iGPUHeight * 1024; } if (VRAMRead.ColsRemaining <= 0) { FinishedVRAMRead(); goto ENDREAD; } } else { FinishedVRAMRead(); goto ENDREAD; } } ENDREAD: GPUIsIdle; }