Esempio n. 1
0
bool dol::write(nall::stream *strm) {
    unsigned i = 0, doloffset = strm->offset(), endoffset = 0;

    for(i = 0; i < max_sections; ++i)
        strm->writem(section[i].offset, 4);
    for(i = 0; i < max_sections; ++i)
        strm->writem(section[i].baseaddr, 4);
    for(i = 0; i < max_sections; ++i)
        strm->writem(section[i].size, 4);

    strm->writem(bssAddr, 4);
    strm->writem(bssSize, 4);
    strm->writem(entrypoint, 4);

    for(i = 0; i < max_sections; ++i) {
        if(section[i].offset > 0 && section[i].size > 0) {
            fillto(strm, doloffset + section[i].offset);
            strm->write(section[i].buffer.data(), section[i].size);

            unsigned end = doloffset + section[i].offset + section[i].size;
            if(end > endoffset)
                endoffset = end;
        }

        strm->seek(endoffset);
    }

    return true;
}
void TextTerminal::Reset()
{
	next_attr = 0;
	vgacolor = DEFAULT_COLOR;
	column = line = 0;
	ansisavedposx = ansisavedposy = 0;
	ansimode = NONE;
	TextBuffer* textbuf = textbufhandle->Acquire();
	TextPos fillfrom(0, 0);
	TextPos fillto(textbuf->Width()-1, textbuf->Height()-1);
	TextChar fillwith(' ', vgacolor, 0);
	textbuf->Fill(fillfrom, fillto, fillwith);
	textbuf->SetCursorEnabled(true);
	UpdateCursor(textbuf);
	textbufhandle->Release(textbuf);
}