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); }