Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

How to use RGSS2 or RGSS3 with RPG Maker XP

Hello, for resize the window and remove the blackborders of fullscreen, use this scripts:

Resizer:: Copy and paste above main
Code:
#==============================================================================
# ** 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
=begin
#==============================================================================
# ** 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
#==============================================================================
=begin
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
=end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  Edited to handle the resized screen size
#==============================================================================
=begin
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
=end
=begin
#==============================================================================
# ** 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
=end

And paste this line in Main after Begin:
Code:
Graphics.resize_screen(816,624)

^^

EDIT: Hum... i have a great trouble with the tilesets, see the screen.
6662bug.JPG



How do I resolve this bug?
 
OK people, I know it's been a while but I have updated the tutorial. I've reworked the presentation and added a step to successfully use encrypted games. See first post for more information and don't hesitate to post any questions or comments!

Take care
-Dargor
 
I am interested in this, mainly for the 60 FPS and no visible screen tearing. However, is there a way to use rmxp's Tilemap class with RGSS2?
 
Of course, if you read Step 3 Part E, you'll see that you have to use a custom Tilemap script.
There's at least 3, maybe 4, of these that I know of on this forum. Just run a quick search, it won't be hard to find.
 
I know that, but I was just wondering if it was possible to somehow use rmxp's default tilemap class by also including the rgss1 dll or something along those lines.
 
Oh, ok I understand. No it's not possible. You can use only 1 dll. In this case we use RGSS202E.dll which contains VX tilemap class so you have to use a custom tilemap class rewrite.
 
Hmm, okay. So you can't require the RGSS1 dll or anything of the sort? If not, I guess I must use a rewrite. Are there any other problems associated with using RGSS2 in rmxp other than the tilemap/window classes and bitmap thing?

Oh yeah, and this is legal, right?
 
No, as far as I know, there is no other bugs. I've been using RGSS2 with XP for over a year now and everything works fine!
And as long as you own a legal copy of XP and VX, it is legal.
 
I got a huge problem with this, when I make any changes on the demo (and I mean ANY, even as simple as moving an event one tile to the right) when I try to play the demo it pops up a window that says "Not found the specified process", and I return everything to normal and the demo stays in that window, I have to extract the whole file again to make it work from the beginning. How can I fix that?

Edit: I tried to make a whole new project following the steps but now from the beginning I can't run the game, it says "Not found the specified process" like in the demo.
 
Make sure you are using RGSS202E.dll, rename it RGSS102E.dll and then open Game.ini and make sure that the Library is RGSS102E.dll.
Also, make sure you're using the RGSS2 Player (Game.exe from RPGVX) and not the RGSS1 Player (from RPGXP).
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top