- Joined
- Sep 16, 2012
- Messages
- 5,781
- Reaction score
- 1,041
- First Language
- English
- Primarily Uses
THE ORIGINAL .DLL IS NO LONGER AVAILABLE - AN UPDATE IS COMING SOON
PLEASE SEE THE LAST POSTS OF THIS TOPIC FOR THE MOST RECENT NEWS
High-Resolution .DLL Guide
Introduction
The High-Resolution .DLL is part of the high-resolution RPG Maker Project, found here:
It is important to note this .DLL is NOT a hack – it is a modification to the original .DLL which is legal because it has been approved by Enterbrain themselves. Further modifications to this .DLL are illegal unless Archeia can obtain permission from Enterbrain after each one.
Despite the legalities slowing down the process of updates, the .DLL is stable and works with a variety of resolutions, even those different from the resolution you set the window to function at, through Yanfly Engine Ace.
Essentially, all the .DLL allows is for the maximum resolution of 544*416 of RPG Maker to be broken, and fixes some bugs that appear as a result of this. However, to be able to use the .DLL to its fullest, you will need a series of scripts to optimize the game’s performance as well as a resolution-changing script. This guide will take you through the steps of installation, and introduce you to the scripts that you require to obtain the best performance from your game.
Installation
Please note: In this guide, whenever I refer to ‘RPG Maker Program’, I refer to RPG Maker VX ACE, NOT your game project.
To install the High-Resolution .DLL on its own, please download the file from here:
Once the file has been downloaded, open the location in your computer where RPG Maker is.
- For example, if you are running Steam RPG Maker, you will need to go here:
C:\Program Files (x86)\Steam\steamapps\common\RPGVXAce
Just paste that into your Windows Explorer at the top.
- However, if you are not running Steam RPG Maker, it will be here:
C:\Program Files (x86)\Enterbrain\RPGVXAce
Again, paste that into your Windows Explorer.
I recommend making a shortcut to these directories in your favourites sidebar so you can access them again if need be.
Now in either instance, you should see a file named RGSS300 or RGSS301. This is your original RGSS file. Right-click that, select ‘cut’, and go to your desktop. Paste the file there. This will serve as your backup, so you can put it into a folder if you like. Now go back to your RPG Maker program. You should not have any RGSS300/301 file(s) there anymore. Go to your downloads, and find the High-Resolution .DLL you have just downloaded. Cut and paste that into your RPG Maker program. Make sure it is named RGSS301.
Now, if you open Ace via Steam or normally, it should open fine. If it says something like ‘Cannot find RGSS301 file’ or something like that, name your RGSS file accordingly.
However, any games you create will not yet be high-resolution. For this .DLL to work, we need to install Yanfly Engine Ace.
However, YEA comes with a lot of additional material that is not needed for this .DLL. I have cut out the unnecessary parts of YEA for your convenience, here:
Code:
#==============================================================================## ▼ Yanfly Engine Ace - Ace Core Engine v1.09# -- Last Updated: 2012.02.19# -- Level: Easy, Normal# -- Requires: n/a##==============================================================================module YEAmodule CORE#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# - Screen Resolution Size -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# RPG Maker VX Ace has the option of having larger width and height for# your games. Resizing the width and height will have these changes:## Default Resized Min Tiles Default Min Tiles New# Width 544 640 17 20# Height 416 480 13 15## * Note: Maximum width is 640 while maximum height is 480.# Minimum width is 110 while maximum height is 10.# These are limitations set by RPG Maker VX Ace's engine.## By selecting resize, all of the default menus will have their windows# adjusted, but scripts provided by non-Yanfly Engine sources may or may# not adjust themselves properly.#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-RESIZE_WIDTH = 1344RESIZE_HEIGHT = 768end # COREend # YEA#==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================Graphics.resize_screen(YEA::CORE::RESIZE_WIDTH, YEA::CORE::RESIZE_HEIGHT)#==============================================================================# ■ Game_Event#==============================================================================class Game_Event < Game_Character#--------------------------------------------------------------------------# overwrite method: near_the_screen?#--------------------------------------------------------------------------def near_the_screen?(dx = nil, dy = nil)dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil?dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil?ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32ax >= -dx && ax <= dx && ay >= -dy && ay <= dyendend # Game_Event#==============================================================================# ■ Game_Map#==============================================================================class Game_Map#--------------------------------------------------------------------------# overwrite method: scroll_down#--------------------------------------------------------------------------def scroll_down(distance)if loop_vertical?@display_y += distance@display_y %= @map.height * 256@parallax_y += distance if @parallax_loop_yelselast_y = @display_ydh = Graphics.height > height * 32 ? height : screen_tile_y@display_y = [@display_y + distance, height - dh].min@parallax_y += @display_y - last_yendend#--------------------------------------------------------------------------# overwrite method: scroll_right#--------------------------------------------------------------------------def scroll_right(distance)if loop_horizontal?@display_x += distance@display_x %= @map.width * 256@parallax_x += distance if @parallax_loop_xelselast_x = @display_xdw = Graphics.width > width * 32 ? width : screen_tile_x@display_x = [@display_x + distance, width - dw].min@parallax_x += @display_x - last_xendendend # Game_Map#==============================================================================# ■ Spriteset_Map#==============================================================================class Spriteset_Map#--------------------------------------------------------------------------# overwrite method: create_viewports#--------------------------------------------------------------------------def create_viewportsif Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal?dx = (Graphics.width - $game_map.width * 32) / 2elsedx = 0enddw = [Graphics.width, $game_map.width * 32].mindw = Graphics.width if $game_map.loop_horizontal?if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical?dy = (Graphics.height - $game_map.height * 32) / 2elsedy = 0enddh = [Graphics.height, $game_map.height * 32].mindh = Graphics.height if $game_map.loop_vertical?@viewport1 = Viewport.new(dx, dy, dw, dh)@viewport2 = Viewport.new(dx, dy, dw, dh)@viewport3 = Viewport.new(dx, dy, dw, dh)@viewport2.z = 50@viewport3.z = 100end#--------------------------------------------------------------------------# new method: update_viewport_sizes#--------------------------------------------------------------------------def update_viewport_sizesif Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal?dx = (Graphics.width - $game_map.width * 32) / 2elsedx = 0enddw = [Graphics.width, $game_map.width * 32].mindw = Graphics.width if $game_map.loop_horizontal?if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical?dy = (Graphics.height - $game_map.height * 32) / 2elsedy = 0enddh = [Graphics.height, $game_map.height * 32].mindh = Graphics.height if $game_map.loop_vertical?rect = Rect.new(dx, dy, dw, dh)for viewport in [@viewport1, @viewport2, @viewport3]viewport.rect = rectendendend # Spriteset_Map#==============================================================================# ■ Scene_Map#==============================================================================class Scene_Map < Scene_Base#--------------------------------------------------------------------------# alias method: post_transfer#--------------------------------------------------------------------------alias scene_map_post_transfer_ace post_transferdef post_transfer@spriteset.update_viewport_sizesscene_map_post_transfer_aceendend # Scene_Map
To install this script, paste it into the materials category of your script editor, above Main. Press [iNS] in that list to add in more space to put this in, if need be. Remember to name the script!
Once this script is installed, observe where I have entered this information near the top:
RESIZE_WIDTH = 1344
RESIZE_HEIGHT = 768
This is the closest size to my screen, divisible by 32. I have chosen a size smaller than my size of 1366 because choosing a size larger would’ve meant that the map would’ve scrolled. I’ll come back to this later, but it is perhaps entirely possible to have a resolution of 1378*768 on a 1366*768 screen without issues. Feel free to experiment with screen sizes, but keep in mind that whatever resolution you put here may affect what’s shown on your map size, and vice-versa. It’s a juggling act.
Remember to save your project and test it out. If done correctly, the game should launch. However, performance may be poor. We’ll come to the rest of the necessities for this .DLL, as well as how to improve performance next.
Necessities
Personally, I have the following scripts installed:
- Zeus’ Fullscreen [F5]:
http://forums.rpgmakerweb.com/index.php?/topic/14081-fullscreen/
- FenixFyreX’s Plane Fix:
- Dekita’s Resolution Setter [ALT+Arrow]:
http://dekitarpg.wordpress.com/2014/10/16/resolution-setter/
- Sixth’s Timer and Picture Display Fix:
http://forums.rpgmak...n-dll/?p=346713
- Killozapit’s Word Wrap:
http://www.rpgmakervxace.net/topic/6964-word-wrapping-message-boxes/
- Kread’s Offscreen Custom Movement fix: [Number 8 on the linked list]
http://rpgmaker.net/tutorials/816/
(This is critical if you use custom move routes because otherwise the events won’t work outside of the default 17*13 window.)
UPDATE: You can now use resolutions that are not a multiple of 32, with Hudell's script snippet! To use this, extend your map's area to the right by one tile - it essentially tricks the engine into thinking there is one tile less than what it is displaying, thereby preventing a wraparound. This updated snippet allows you to use smaller maps that have been centered by Yanfly's Engine snippet.
Code:
class Game_Map
def width
if Graphics.width % 32 == 0
@map.width
else
@map.width - 1
end
end
def height
if Graphics.height % 32 == 0
@map.height
else
@map.height - 1
end
end
end
class Game_Player < Game_Character
def center_x
((Graphics.width / 32).floor - 1) / 2.0
end
def center_y
((Graphics.height / 32).floor - 1) / 2.0
end
end
You will also need to redraw your maps so that they conform to the new screen size you set.
For example, if you are using 1344*768, you will need maps that are 42 tiles wide and 24 tiles high.
However, the Yanfly Engine Ace snippet above will auto-center anything smaller than this, so feel free to experiment with smaller (and larger, if you have Hudell's script!) sizes.
All of these together should give you basically this result:
http://i.imgur.com/m3JuxKk.jpg
Various Resolution Optimizations
One of the flaws I have found so far via large-scale testing is that if you give someone a game that is 1344*768 and they run it on a 1024*768 screen, the game will be blurry. I do not yet know why (but I suspect this is downscaling in action, though it is only blurry on 1024*768 and 800*600)
- A potential fix might be this: http://forums.rpgmakerweb.com/index.php?/topic/33783-resolution-selection-script/
Therefore, if you can force the player to use a resolution other than 1024 or 800 while you are using 1344, the graphics can probably be redrawn or resized. I have not been able to test this thoroughly yet, but it may be an apt solution.
There may be one small bug: The window size decreases, if the game is played on a larger-resolution screen. However, this may be because the larger-resolution screen is trying it display more pixels per inch, thereby reducing the size of the display on the smaller-resolution game. I will see if there is a workaround.
Remember that when using this .DLL, it does not matter what resolution you set the original screen to. For example, here are some screenshots from the 1344*768-set resolution, through other various resolution windows:
You can see that there are some resolutions at which 1344*768 becomes very blurry, but a very slight blur on the 1366 resolution is due to the screenshot program, subsequent uploading and downloading (which thereby reduced the quality of the screenshot very slightly anyway).
The game screen also changes size depending on what the original resolution was set at, and what resolution the game-playing computer screen is. I look forward to more tests in this department.
There are some scripts you can install to assist with automatic resolution resizing/displays:
- Tsukihime's Battle Sprite Auto-Position (I don't use this one as I have CP Battle System)
[Note: apparently does not work with YEA]
http://himeworks.com/2013/02/battle-sprite-auto-position/
Performance Optimization
When running this .DLL on a game without performance optimizing scripts (and just the .DLL alone) you will notice a significant slowdown.
For other performance issues pertaining to the user’s computers, try these in conjunction with each other:
- Yanfly Stop Movement:
https://yanflychannel.wordpress.com/rmvxa/utility-scripts/stop-all-movement/
- Galv’s Move Route Extras:
http://galvs-scripts.com/galvs-move-route-extras/
- Mithran's Text Cache
http://forums.rpgmakerweb.com/index.php?/topic/1001-text-cache/
Please note: The performance was tested on one of the lowest high-end laptops you can find. This laptop can run games like Skyrim and Naruto Storm 3 at about 20-30 frames per second, but with significant lag unless the game(s) are put to their lowest graphical quality and in the case of Storm 3, the lowest resolution possible.
Things to Consider
Even for professional game developers, it is very difficult to account for every single resolution.
However, here is a list of common resolutions:
http://forums.rpgmakerweb.com/index.php?/topic/31953-high-res-rpg-maker-project/page-21#entry352937
You can still choose to 'bypass' this and use your own, such as 1344*768, since it is the closest to the resolution of 1366*768.
For reference, 1344*768 consists of 42*24 tile-sized maps.
Many of the solutions I’ve provided here are simply band-aids, and will not fix the underlying issue – that they may need fixes in the actual .DLL. However, they work visually, and that’s what matters with this .DLL, since the main advantage of this .DLL is to break Ace’s previously-default limits and show far more onscreen, much like an actual game.
If you are a scripting expert, it is highly recommended that you work with other resolution scripters to see if you can make an options window that adjusts the game window, and is compatible with all the other scripts listed above. If you can do this, then Ace can have a true resolution revolution.
Additionally, please remember that this .DLL is experimental. It is fine to distribute games with this, but it is by no means announced as a finished ‘product’. The more testing that can come of this, the better the final result will be.
End Result
If you are able to achieve a lag-free experience (lag-free for me is defined as going no lower than 30fps, as the difference between 30 and 60fps is minimal compared to the difference between 0 and 30) with a perfect display that accounts for all resolutions like the image below:
http://i.imgur.com/m3JuxKk.jpg
Then you’re golden.
Please share your results!
Last edited by a moderator:

