initial full HD support

This commit is contained in:
Sebastian Krzyszkowiak 2012-12-10 12:44:22 +01:00
parent 5f56fcc1e6
commit f17b7bf100
2 changed files with 22 additions and 15 deletions

View file

@ -28,28 +28,28 @@ void Map_Draw(struct Game *game) {
float x=0,y=0; float x=0,y=0;
switch (game->map.selected) { switch (game->map.selected) {
case 1: case 1:
x=0.175; x=0.2;
y=0.25; y=0.25;
break; break;
case 2: case 2:
x=0.5; x=0.495;
y=0.375; y=0.35;
break; break;
case 3: case 3:
x=0.738; x=0.72;
y=0.4; y=0.4;
break; break;
case 4: case 4:
x=0.7; x=0.7;
y=0.7625; y=0.77;
break; break;
case 5: case 5:
x=0.225; x=0.248;
y=0.75; y=0.75;
break; break;
case 6: case 6:
x=0.425; x=0.425;
y=0.65; y=0.675;
break; break;
} }
al_draw_scaled_bitmap(game->map.arrow, 0, 0, al_get_bitmap_width(game->map.arrow), al_get_bitmap_height(game->map.arrow), game->viewportWidth*x, game->viewportHeight*y + ((sin(game->map.arrowpos)+0.5)/20.0)*game->viewportHeight, game->viewportWidth*0.1, game->viewportHeight*0.16, 0); al_draw_scaled_bitmap(game->map.arrow, 0, 0, al_get_bitmap_width(game->map.arrow), al_get_bitmap_height(game->map.arrow), game->viewportWidth*x, game->viewportHeight*y + ((sin(game->map.arrowpos)+0.5)/20.0)*game->viewportHeight, game->viewportWidth*0.1, game->viewportHeight*0.16, 0);

View file

@ -71,6 +71,7 @@
double old_time = 0, fps; double old_time = 0, fps;
int frames_done = 0; int frames_done = 0;
bool memoryscale;
char* GetDataFilePath(char* filename) { char* GetDataFilePath(char* filename) {
@ -351,12 +352,16 @@ ALLEGRO_BITMAP* LoadScaledBitmap(char* filename, int width, int height) {
al_clear_to_color(al_map_rgba(0,0,0,0)); al_clear_to_color(al_map_rgba(0,0,0,0));
char* origfn = GetDataFilePath(filename); char* origfn = GetDataFilePath(filename);
void GenerateBitmap() { void GenerateBitmap() {
al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP); if (memoryscale) al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
source = al_load_bitmap( origfn ); source = al_load_bitmap( origfn );
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR | ALLEGRO_MAG_LINEAR); if (memoryscale) {
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR | ALLEGRO_MAG_LINEAR);
ScaleBitmap(source, width, height); ScaleBitmap(source, width, height);
}
else {
al_draw_scaled_bitmap(source, 0, 0, al_get_bitmap_width(source), al_get_bitmap_height(source), 0, 0, width, height, 0);
}
/*al_save_bitmap(cachefn, target); /*al_save_bitmap(cachefn, target);
PrintConsole(game, "Cache bitmap %s generated.", filename);*/ PrintConsole(game, "Cache bitmap %s generated.", filename);*/
al_destroy_bitmap(source); al_destroy_bitmap(source);
@ -375,11 +380,12 @@ ALLEGRO_BITMAP* LoadScaledBitmap(char* filename, int width, int height) {
return target;*/ return target;*/
} }
void SetupViewport(struct Game *game) { void SetupViewport(struct Game *game) {
game->viewportWidth = al_get_display_width(game->display); game->viewportWidth = al_get_display_width(game->display);
game->viewportHeight = al_get_display_height(game->display); game->viewportHeight = al_get_display_height(game->display);
if (atoi(GetConfigOptionDefault("SuperDerpy", "letterbox", "1"))) { if (atoi(GetConfigOptionDefault("SuperDerpy", "letterbox", "1"))) {
float const aspectRatio = (float)800 / (float)500; float const aspectRatio = (float)1920 / (float)1080; // full HD
int clipWidth = game->viewportWidth, clipHeight = game->viewportWidth / aspectRatio; int clipWidth = game->viewportWidth, clipHeight = game->viewportWidth / aspectRatio;
int clipX = 0, clipY = (game->viewportHeight - clipHeight) / 2; int clipX = 0, clipY = (game->viewportHeight - clipHeight) / 2;
if (clipY <= 0) { if (clipY <= 0) {
@ -391,7 +397,7 @@ void SetupViewport(struct Game *game) {
al_set_clipping_rectangle(clipX, clipY, clipWidth, clipHeight); al_set_clipping_rectangle(clipX, clipY, clipWidth, clipHeight);
/*float scaleX = (float)clipWidth / (float)800, /*float scaleX = (float)clipWidth / (float)800,
scaleY = (float)clipHeight / (float)500;*/ scaleY = (float)clipHeight / (float)450;*/
ALLEGRO_TRANSFORM projection; ALLEGRO_TRANSFORM projection;
al_build_transform(&projection, clipX, clipY, 1, 1, 0.0f); al_build_transform(&projection, clipX, clipY, 1, 1, 0.0f);
al_use_transform(&projection); al_use_transform(&projection);
@ -454,8 +460,9 @@ int main(int argc, char **argv){
game.debug = atoi(GetConfigOptionDefault("SuperDerpy", "debug", "0")); game.debug = atoi(GetConfigOptionDefault("SuperDerpy", "debug", "0"));
game.width = atoi(GetConfigOptionDefault("SuperDerpy", "width", "800")); game.width = atoi(GetConfigOptionDefault("SuperDerpy", "width", "800"));
if (game.width<320) game.width=320; if (game.width<320) game.width=320;
game.height = atoi(GetConfigOptionDefault("SuperDerpy", "height", "500")); game.height = atoi(GetConfigOptionDefault("SuperDerpy", "height", "450"));
if (game.height<200) game.height=200; if (game.height<200) game.height=180;
memoryscale = !atoi(GetConfigOptionDefault("SuperDerpy", "GPU_scaling", "1"));
if(!al_init_image_addon()) { if(!al_init_image_addon()) {
fprintf(stderr, "failed to initialize image addon!\n"); fprintf(stderr, "failed to initialize image addon!\n");