BRESULT menubase_open(int num) { MENUBASE *mb; SCRNMENU smenu; VRAMHDL hdl; mb = &menubase; menubase_close(); if (scrnmng_entermenu(&smenu) != SUCCESS) { goto mbopn_err; } mb->width = smenu.width; mb->height = smenu.height; mb->bpp = smenu.bpp; hdl = vram_create(mb->width, mb->height, TRUE, smenu.bpp); menuvram = hdl; if (hdl == NULL) { goto mbopn_err; } unionrect_rst(&mb->rect); mb->num = num; return(SUCCESS); mbopn_err: return(FAILURE); }
/* * 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; }
BOOL vramdraw_create(void) { SYS_T *sys; VRAMHDL v; sys = &gamecore.sys; #ifndef SIZE_QVGA v = vram_create(sys->width, sys->height, FALSE, DEFAULT_BPP); #else v = vram_create(320, 240, FALSE, DEFAULT_BPP); #endif mainvram = v; if (v == NULL) { TRACEOUT(("couldn't create mainvram")); return(FAILURE); } // vram 0と1は最初から開いてます… #ifndef SIZE_QVGA gamecore.vram[0] = vram_create(sys->width, sys->height, TRUE, DEFAULT_BPP); gamecore.vram[1] = vram_create(sys->width, sys->height, TRUE, DEFAULT_BPP); #else gamecore.vram[0] = vram_create(320, 240, TRUE, DEFAULT_BPP); gamecore.vram[1] = vram_create(320, 240, TRUE, DEFAULT_BPP); #endif unionrect_rst(&gamecore.vramrect); return(SUCCESS); }
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); }
// 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); }