- SET_FARVAR(seg, info->win_func_ptr.segoff, 0x0);
- SET_FARVAR(seg, info->bytes_per_scanline, modeinfo.linesize);
- SET_FARVAR(seg, info->xres, modeinfo.width);
- SET_FARVAR(seg, info->yres, modeinfo.height);
- SET_FARVAR(seg, info->xcharsize, 8);
- SET_FARVAR(seg, info->ycharsize, 16);
- if (modeinfo.depth == 4)
- SET_FARVAR(seg, info->planes, 4);
- else
- SET_FARVAR(seg, info->planes, 1);
- SET_FARVAR(seg, info->bits_per_pixel, modeinfo.depth);
- SET_FARVAR(seg, info->banks,
- (modeinfo.linesize * modeinfo.height + 65535) / 65536);
- if (modeinfo.depth == 4)
- SET_FARVAR(seg, info->mem_model, VBE_MEMORYMODEL_PLANAR);
- else if (modeinfo.depth == 8)
- SET_FARVAR(seg, info->mem_model, VBE_MEMORYMODEL_PACKED_PIXEL);
- else
- SET_FARVAR(seg, info->mem_model, VBE_MEMORYMODEL_DIRECT_COLOR);
+ extern void entry_104f05(void);
+ SET_FARVAR(seg, info->win_func_ptr
+ , SEGOFF(get_global_seg(), (u32)entry_104f05));
+ int width = GET_GLOBAL(vmode_g->width);
+ int height = GET_GLOBAL(vmode_g->height);
+ int linesize = DIV_ROUND_UP(width * vga_bpp(vmode_g), 8);
+ SET_FARVAR(seg, info->bytes_per_scanline, linesize);
+ SET_FARVAR(seg, info->xres, width);
+ SET_FARVAR(seg, info->yres, height);
+ SET_FARVAR(seg, info->xcharsize, GET_GLOBAL(vmode_g->cwidth));
+ SET_FARVAR(seg, info->ycharsize, GET_GLOBAL(vmode_g->cheight));
+ int planes = (depth == 4) ? 4 : 1;
+ SET_FARVAR(seg, info->planes, planes);
+ SET_FARVAR(seg, info->bits_per_pixel, depth);
+ SET_FARVAR(seg, info->banks, 1);
+ SET_FARVAR(seg, info->mem_model, GET_GLOBAL(vmode_g->memmodel));