stock fixmemset(aArray[], iValue, iSize = sizeof(aArray)) {
new iAddress;
#emit LOAD.S.pri 12
#emit STOR.S.pri iAddress
iSize *= 4;
while (iSize > 0) {
if (iSize >= 4096) {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 4096
iSize -= 4096;
iAddress += 4096;
} else if (iSize >= 1024) {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 1024
iSize -= 1024;
iAddress += 1024;
} else if (iSize >= 256) {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 256
iSize -= 256;
iAddress += 256;
} else if (iSize >= 64) {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 64
iSize -= 64;
iAddress += 64;
} else if (iSize >= 16) {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 16
iSize -= 16;
iAddress += 16;
} else {
#emit LOAD.S.alt iAddress
#emit LOAD.S.pri iValue
#emit FILL 4
iSize -= 4;
iAddress += 4;
}
}
#pragma unused aArray
}
#emit LOAD.S.pri 12
#emit STOR.S.pri iAddress
enum pPaperInfo
{
PaperdbID,
PaperUsed,
PaperMaker[25],
PaperTitle[64],
SafeSaving,
};
new PaperInfo[MAX_LOADED_PAPERS][pPaperInfo];
stock ClearPaper(paper)
{
new
string[] = "None",
i = 0;
fixmemset(PaperInfo[paper], 0, pPaperInfo);
memcpy(PaperInfo[paper][pPaperInfo:0], string, _:PaperMaker * 4, 20, 20);
memcpy(PaperInfo[paper][pPaperInfo:0], string, _:PaperTitle * 4, 20, 20);
for(; i != MAX_LOADED_PAPERTEXTS; ++i) {
fixmemset(PaperText[paper][0], 0, MAX_PAPERTEXT_LENGTH);
memcpy(PaperText[paper][0], string, 0, 20, MAX_PAPERTEXT_LENGTH);
}
SavePapers();
return 1;
}
pra que essas 2 primeiras linhas?
PHP код:
|
O FILL vai preencher apenas o tamanho que tiver escrito apуs ele, certo?
Ou seja, FILL 4096 vai preencher apenas os primeiros 4096 bytes, a contar a partir do primeiro byte do registro alternativo, certo ? |
Mas isso ainda me parece meio sem sentido...
o iValue й um valor do tamanho de uma das dimensхes do array, entгo pra que alguйm copiaria o valor do tamanho dessa dimensгo para uma variбvel que foi criada e que aparentemente nгo tem nenhuma aplicaзгo? |
#emit LOAD.S.pri 12
#emit STOR.S.pri iAddress