struct LAYER_CTL * layer_ctl_init(struct MEMMAN *man, unsigned char *vram, int xsize ,int ysize){ struct LAYER_CTL *ctl; ctl = (struct LAYER_CTL *) mem_alloc_4k(man, sizeof(struct LAYER_CTL)); if(ctl == 0){ return ctl; } ctl->map = (unsigned char *)mem_alloc_4k(man,xsize*ysize); if(ctl->map == 0){ return ctl; } ctl->vram = vram; ctl->xsize = xsize; ctl->ysize = ysize; ctl->top = -1; for( int i = 0; i < MAX_LAYERS; i++ ){ ctl->layers[i].flags = 0; ctl->layers[i].ctl = ctl; } return ctl; }
SHEET_CTL *sheetctl_init(MEMORY_MANAGE* man, byte *vram, int xsize, int ysize) { SHEET_CTL *ctl; int i; ctl = (SHEET_CTL*)mem_alloc_4k(man, sizeof(SHEET_CTL)); if(ctl == 0) return 0; ctl->map = (byte*)mem_alloc_4k(man, xsize * ysize); if(ctl->map == 0) { mem_free_4k(man, (int)ctl, sizeof(SHEET_CTL)); return 0; } ctl->vram = vram; ctl->xsize = xsize; ctl->ysize = ysize; ctl->top = -1; // シートは1枚もない for(i = 0; i < MAX_SHEETS; i++) { ctl->sheets0[i].flags = 0; // 未使用マーク ctl->sheets0[i].ctl = ctl; // 所属を記録 } return ctl; }