void vramdraw_destroy(void) { int i; for (i=0; i<GAMECORE_MAXVRAM; i++) { vram_destroy(gamecore.vram[i]); } vram_destroy(mainvram); mainvram = NULL; }
void menubase_close(void) { MENUBASE *mb; VRAMHDL hdl; int num; mb = &menubase; num = mb->num; if (num) { mb->num = 0; if (num == 1) { menusys_close(); } else { menudlg_destroy(); } hdl = menuvram; if (hdl) { menubase_draw(NULL, NULL); menuvram = NULL; vram_destroy(hdl); } scrnmng_leavemenu(); } }
/* * menu */ BOOL scrnmng_entermenu(SCRNMENU *smenu) { int bpp; if (smenu == NULL) { goto smem_err; } bpp = scrnmng.sm.bpp; if (bpp == 32) { bpp = 24; } vram_destroy(scrnmng.vram); scrnmng.vram = vram_create(scrnmng.width, scrnmng.height, FALSE, bpp); if (scrnmng.vram == NULL) { goto smem_err; } scrndraw_redraw(); smenu->width = scrnmng.width; smenu->height = scrnmng.height; smenu->bpp = bpp; return SUCCESS; smem_err: return FAILURE; }
static void wndclose(MENUSYS *sys, int depth) { MSYSWND wnd; sys->depth = depth; wnd = sys->wnd + depth; while(depth < MENUSYS_MAX) { menubase_clrrect(wnd->vram); vram_destroy(wnd->vram); wnd->vram = NULL; wnd++; depth++; } }
void gamecore_reset(void) { _SYSTIME st; vram_destroy(gamecore.mouseevt.map); gamecore.mouseevt.map = NULL; textdisp_multireset(); effect_trush(); textwin_allclose(); anime_alltrush(); timemng_gettime(&st); srand(((st.day[0] << 24) | (st.hour[0] << 16) | (st.minute[0] << 8) | st.second[0])); gamecore.event = GAMEEV_SUCCESS; }
void screen_disclaimer ( bool force ) { if ( DEV > 1 ) return; vram_init ( VRAM_DEFAULT ); bool nolddor_released_ZoS = 0; if ( nolddor_released_ZoS || force ) { _disclaimer_cool (); } else { _disclaimer_simple ( ); } vram_destroy(); }
BOOL scrnmng_entermenu(SCRNMENU *smenu) { if (smenu == NULL) { goto smem_err; } vram_destroy(scrnmng.vram); scrnmng.vram = vram_create(scrnmng.width, scrnmng.height, FALSE, scrnmng.bpp); if (scrnmng.vram == NULL) { goto smem_err; } scrndraw_redraw(); smenu->width = scrnmng.width; smenu->height = scrnmng.height; smenu->bpp = (scrnmng.bpp == 32)?24:scrnmng.bpp; return(SUCCESS); smem_err: return(FAILURE); }
static void creditmix(VRAMHDL vram, int pos, const char *label, UINT32 col) { VRAMHDL tmp; if ((vram == NULL) || (label == NULL)) { goto cmix_exit; } tmp = NULL; cgload_data(&tmp, ARCTYPE_GRAPHICS, label); if (tmp == NULL) { goto cmix_exit; } tmp->posy = vram->height - tmp->height; if (pos) { tmp->posx = vram->width - tmp->width; } vrammix_mixalpha(vram, tmp, col, NULL); vram_destroy(tmp); cmix_exit: return; }
// VSET : 仮想VRAMの設定 Nonaka.K, T.Yui int isfcmd_50(SCR_OPE *op) { SINT32 num; POINT_T pt; VRAMHDL *vram; if ((scr_getval(op, &num) != SUCCESS) || (scr_getpt(op, &pt) != SUCCESS)) { return(GAMEEV_WRONGLENG); } if ((num >= 0) && (num < GAMECORE_MAXVRAM)) { vram = gamecore.vram + num; if (*vram) { vram_destroy(*vram); } #ifdef SIZE_QVGA vramdraw_halfsize(&pt); #endif *vram = vram_create(pt.x, pt.y, TRUE, DEFAULT_BPP); effect_vramdraw(num, NULL); } return(GAMEEV_SUCCESS); }
// SGL : セーブイメージを読み込む (T.Yui) int isfcmd_6f(SCR_OPE *op) { SINT32 savenum; SINT32 num; POINT_T pt; VRAMHDL dst; SAVEHDL sh; _SAVEINF inf; BOOL r; if ((scr_getval(op, &savenum) != SUCCESS) || (scr_getval(op, &num) != SUCCESS) || (scr_getpt(op, &pt) != SUCCESS)) { return(GAMEEV_WRONGLENG); } if ((num < 0) || (num >= GAMECORE_MAXVRAM)) { goto cmd6f_exit; } dst = gamecore.vram[num]; if (dst == NULL) { goto cmd6f_exit; } sh = savefile_open(FALSE); r = sh->readinf(sh, savenum, &inf, -1, -1); sh->close(sh); if (r == SUCCESS) { #ifdef SIZE_QVGA vramdraw_halfpoint(&pt); #endif vramcpy_cpy(dst, (VRAMHDL)inf.preview, &pt, NULL); vram_destroy((VRAMHDL)inf.preview); } cmd6f_exit: return(GAMEEV_SUCCESS); }
void vramdraw_savebmp(int num, const char *dir, const char *name, int pos, const char *credit0, const char *credit1) { int i; char path[MAX_PATH]; char work[32]; BMPDATA inf; VRAMHDL vram; UINT tmp; UINT bmpsize; BMPFILE bf; BMPINFO bi; BYTE *dat; FILEH fh; if ((num < 0) || (num >= GAMECORE_MAXVRAM) || (name == NULL)) { goto vdsb_err1; } if (dir == NULL) { dir = ""; } for (i=0; i<100; i++) { milstr_ncpy(path, dir, sizeof(path)); milstr_ncat(path, name, sizeof(path)); sprintf(work, "%02u.bmp", i); milstr_ncat(path, work, sizeof(path)); if (file_attr(path) == -1) { break; } taskmng_rol(); } if (i >= 100) { goto vdsb_err1; } vram = vram_copy(gamecore.vram[num]); if (vram == NULL) { goto vdsb_err1; } creditmix(vram, pos, credit1, 0x000000); creditmix(vram, pos, credit0, 0xffffff); inf.width = vram->width; inf.height = vram->height; inf.bpp = 24; bmpdata_setinfo(&bi, &inf, TRUE); bmpsize = bmpdata_getdatasize(&bi); ZeroMemory(&bf, sizeof(bf)); bf.bfType[0] = 'B'; bf.bfType[1] = 'M'; tmp = sizeof(BMPFILE) + sizeof(BMPINFO); STOREINTELDWORD(bf.bfOffBits, tmp); tmp += bmpsize; STOREINTELDWORD(bf.bfSize, tmp); dat = bmpdata_bmp24cnv(&bi, vram); if (dat == NULL) { goto vdsb_err2; } fh = file_create(path); if (fh == FILEH_INVALID) { goto vdsb_err3; } file_write(fh, &bf, sizeof(bf)); file_write(fh, &bi, sizeof(bi)); file_write(fh, dat, bmpsize); file_close(fh); vdsb_err3: _MFREE(dat); vdsb_err2: vram_destroy(vram); vdsb_err1: return; }
static BOOL readinf(SAVEHDL hdl, int num, SAVEINF inf, int width, int height) { SAVEISF isf; SAVEDATA dat; int remain; BYTE *ptr; BMPINFO *bi; UINT bmpsize; if (inf == NULL) { goto sfrt_err1; } ZeroMemory(inf, sizeof(_SAVEINF)); isf = (SAVEISF)(hdl + 1); if ((num < 0) || (num >= isf->gamesaves)) { goto sfrt_err1; } dat = saveread(isf, num); if (dat == NULL) { goto sfrt_err1; } ptr = dat->ptr; remain = dat->size; remain -= sizeof(_SYSTIME); if (remain < 0) { goto sfrt_err2; } savefile_cnvdate(&inf->date, ptr); ptr += sizeof(_SYSTIME); if (gamecore.sys.type & GAME_SAVEGRPH) { remain -= sizeof(BMPINFO); if (remain < 0) { goto sfrt_err2; } bi = (BMPINFO *)ptr; if (LOADINTELDWORD(bi->biSize) != sizeof(BMPINFO)) { goto sfrt_err2; } ptr += sizeof(BMPINFO); bmpsize = bmpdata_getdatasizeex(bi, FALSE); remain -= bmpsize; if (remain < 0) { goto sfrt_err2; } if (width < 0) { width = LOADINTELDWORD(bi->biWidth); #ifdef SIZE_QVGA width = vramdraw_half(width); #endif } if (height < 0) { height = (SINT32)LOADINTELDWORD(bi->biHeight); if (height < 0) { height *= -1; } #ifdef SIZE_QVGA height = vramdraw_half(height); #endif } inf->preview = bmpdata_vram24cnvex(width, height, bi, ptr, FALSE); ptr += bmpsize; } inf->comment[0] = '\0'; if (gamecore.sys.type & GAME_SAVECOM) { remain -= isf->commsize; if (remain < 0) { goto sfrt_err2; } CopyMemory(inf->comment, ptr, isf->commsize); inf->comment[isf->commsize] = '\0'; ptr += isf->commsize; } _MFREE(dat); return(SUCCESS); sfrt_err2: vram_destroy((VRAMHDL)inf->preview); inf->preview = NULL; _MFREE(dat); sfrt_err1: return(FAILURE); }