Resolution Script

Started by mikeymacabre, July 04, 2008, 12:08:53 pm

Previous topic - Next topic

mikeymacabre

July 04, 2008, 12:08:53 pm Last Edit: July 25, 2008, 05:26:37 pm by Blizzard
ok, i am trying to find a script to put rpg maker vx in 1024x768.  I have this script and wondered if it could be modified to work with the higher resolution.  I dont know much about scripting and this is not my script.  I found it somewhere.

#==============================================================================
# ** Resolution Changer VX
#------------------------------------------------------------------------------
# by Syvkal
# Version 1.0
# 06-27-08
#==============================================================================
#
#  - INTRODUCTION -
#
#  This system allows you to resize the Game screen without stretching the
#  graphics. It enables you to be able to fit more onto one screen
#
#------------------------------------------------------------------------------
#
#  - USAGE -
#
#  Simply use the one line:
#
#      Graphics.resize_screen(width,height)
#
#  Place this in main just below 'begin'
#
#------------------------------------------------------------------------------
#
#  - PROBLEMS -
#
#  Certain problems may occur while using this script
#  These include:
#    -  Windows not properly sized
#    -  Windows not in the proper position
#    -  Images such as the Title Graphic not fitting
#
#  NONE OF THESE PROBLEMS ARE ERRORS
#   -------------------------------
#
#  Please do not report any of these problems, the resolution script will
#  the screen size, it's up to you to make the scripts fit it
#
#  However the script is quite new and only took me about 10 minutes, so if
#  there are any errors please do report them 
#
#------------------------------------------------------------------------------
#
#  - IMPORTANT -
#
#  When resizing the window try to make the width and height a multiple of 32
#  This will reduce the amount of errors
#
#  Also due to the Built in function, the current max screen size is 640 x 480
#  In later versions this problem may be able to be over come, but I'm not sure
#
#==============================================================================

#==============================================================================
# ** Sprite_Base
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Sprite_Base < Sprite
  #--------------------------------------------------------------------------
  # * Start Animation
  #--------------------------------------------------------------------------
  def start_animation(animation, mirror = false)
    dispose_animation
    @animation = animation
    return if @animation == nil
    @animation_mirror = mirror
    @animation_duration = @animation.frame_max * 4 + 1
    load_animation_bitmap
    @animation_sprites = []
    if @animation.position != 3 or not @@animations.include?(animation)
      if @use_sprite
        for i in 0..15
          sprite = ::Sprite.new(viewport)
          sprite.visible = false
          @animation_sprites.push(sprite)
        end
        unless @@animations.include?(animation)
          @@animations.push(animation)
        end
      end
    end
    if @animation.position == 3
      if viewport == nil
        @animation_ox = Graphics.width / 2
        @animation_oy = Graphics.height / 2
      else
        @animation_ox = viewport.rect.width / 2
        @animation_oy = viewport.rect.height / 2
      end
    else
      @animation_ox = x - ox + width / 2
      @animation_oy = y - oy + height / 2
      if @animation.position == 0
        @animation_oy -= height / 2
      elsif @animation.position == 2
        @animation_oy += height / 2
      end
    end
  end
end

#==============================================================================
# ** Sprite_Timer
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Sprite_Timer < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     viewport : viewport
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    self.bitmap = Bitmap.new(88, 48)
    self.bitmap.font.name = "Arial"
    self.bitmap.font.size = 32
    self.x = Graphics.width - self.bitmap.width
    self.y = 0
    self.z = 200
    update
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport2.z = 50
    @viewport3.z = 100
  end
end

#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    @viewport2.z = 50
    @viewport3.z = 100
  end
  #--------------------------------------------------------------------------
  # * Create Battleback Sprite
  #--------------------------------------------------------------------------
  def create_battleback
    source = $game_temp.background_bitmap
    bitmap = Bitmap.new(Graphics.width + 96, Graphics.height + 64)
    bitmap.stretch_blt(bitmap.rect, source, source.rect)
    bitmap.radial_blur(90, 12)
    @battleback_sprite = Sprite.new(@viewport1)
    @battleback_sprite.bitmap = bitmap
    @battleback_sprite.ox = 320
    @battleback_sprite.oy = 240
    @battleback_sprite.x = 272
    @battleback_sprite.y = 176
    @battleback_sprite.wave_amp = 8
    @battleback_sprite.wave_length = 240
    @battleback_sprite.wave_speed = 120
  end
  #--------------------------------------------------------------------------
  # * Create Battlefloor Sprite
  #--------------------------------------------------------------------------
  def create_battlefloor
    @battlefloor_sprite = Sprite.new(@viewport1)
    @battlefloor_sprite.bitmap = Cache.system("BattleFloor")
    @battlefloor_sprite.x = 0
    @battlefloor_sprite.y = 192
    @battlefloor_sprite.z = 1
    @battlefloor_sprite.opacity = 128
  end
end


#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Scroll Setup
  #--------------------------------------------------------------------------
  def setup_scroll
    @scroll_direction = 2
    @scroll_rest = 0
    @scroll_speed = 4
    @margin_x = (width - (Graphics.width / 32)) * 256 / 2
    @margin_y = (height - (Graphics.height / 32)) * 256 / 2
  end
  #--------------------------------------------------------------------------
  # * Calculate X coordinate for parallax display
  #     bitmap : Parallax bitmap
  #--------------------------------------------------------------------------
  def calc_parallax_x(bitmap)
    if bitmap == nil
      return 0
    elsif @parallax_loop_x
      return @parallax_x / 16
    elsif loop_horizontal?
      return 0
    else
      w1 = bitmap.width - Graphics.width
      w2 = @map.width * 32 - Graphics.width
      if w1 <= 0 or w2 <= 0
        return 0
      else
        return @parallax_x * w1 / w2 / 8
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Calculate Y coordinate for parallax display
  #     bitmap : Parallax bitmap
  #--------------------------------------------------------------------------
  def calc_parallax_y(bitmap)
    if bitmap == nil
      return 0
    elsif @parallax_loop_y
      return @parallax_y / 16
    elsif loop_vertical?
      return 0
    else
      h1 = bitmap.height - Graphics.height
      h2 = @map.height * 32 - Graphics.height
      if h1 <= 0 or h2 <= 0
        return 0
      else
        return @parallax_y * h1 / h2 / 8
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Scroll Down
  #     distance : scroll distance
  #--------------------------------------------------------------------------
  def scroll_down(distance)
    if loop_vertical?
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
    else
      last_y = @display_y
      @display_y = [@display_y + distance, (height - (Graphics.height / 32)) * 256].min
      @parallax_y += @display_y - last_y
    end
  end
  #--------------------------------------------------------------------------
  # * Scroll Right
  #     distance : scroll distance
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    if loop_horizontal?
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
    else
      last_x = @display_x
      @display_x = [@display_x + distance, (width - (Graphics.width / 32)) * 256].min
      @parallax_x += @display_x - last_x
    end
  end
end

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # * Set Map Display Position to Center of Screen
  #     x : x-coordinate
  #     y : y-coordinate
  #--------------------------------------------------------------------------
  def center(x, y)
    center_x = (Graphics.width / 2 - 16) * 8
    center_y = (Graphics.width / 2 - 16) * 8
    display_x = x * 256 - center_x                   # Calculate coordinates
    unless $game_map.loop_horizontal?                 # No loop horizontally?
      max_x = ($game_map.width - (Graphics.width / 32)) * 256
      display_x = [0, [display_x, max_x].min].max     # Adjust coordinates
    end
    display_y = y * 256 - center_y                   # Calculate coordinates
    unless $game_map.loop_vertical?                   # No loop vertically?
      max_y = ($game_map.height - (Graphics.height / 32)) * 256
      display_y = [0, [display_y, max_y].min].max     # Adjust coordinates
    end
    $game_map.set_display_pos(display_x, display_y)   # Change map location
  end
  #--------------------------------------------------------------------------
  # * Update Scroll
  #--------------------------------------------------------------------------
  def update_scroll(last_real_x, last_real_y)
    center_x = (Graphics.width / 2 - 16) * 8
    center_y = (Graphics.width / 2 - 16) * 8
    ax1 = $game_map.adjust_x(last_real_x)
    ay1 = $game_map.adjust_y(last_real_y)
    ax2 = $game_map.adjust_x(@real_x)
    ay2 = $game_map.adjust_y(@real_y)
    if ay2 > ay1 and ay2 > center_y
      $game_map.scroll_down(ay2 - ay1)
    end
    if ax2 < ax1 and ax2 < center_x
      $game_map.scroll_left(ax1 - ax2)
    end
    if ax2 > ax1 and ax2 > center_x
      $game_map.scroll_right(ax2 - ax1)
    end
    if ay2 < ay1 and ay2 < center_y
      $game_map.scroll_up(ay1 - ay2)
    end
  end
end

My goal is to use higher resolution sprites but right now it would just make the sprits huge.  i figure if i can increase the resolution of the game, then i can increase the sprite resolution without them getting super huge.

Thanks to anyone who can get this going.   :D

Starrodkirby86

I don't think that script is meant to be one line (And Aqua doesn't think so too)...Maybe it's just a copy-paste error, but right now it's an eyesore...>_< It's probably a formatting error when it came to the copying, but nevertheless...

In my humble opinion though, just modify anything that says 640 by 480 to 1024 by 768. Of course, that's going to lead to errors (I bet), experimenting is the best way to deal with stuff (Trial and Error). Have a backup if you're really cautious.

What's osu!? It's a rhythm game. Thought I should have a signature with a working rank. ;P It's now clickable!
Still Aqua's biggest fan (Or am I?).