Registration Code (Part 1): w%kQ6
Registration Code (Part 2): b<#$1[*(cw~
In order to register on this forum, you must use the codes above. Combine them into one code (copy paste).

psofix (Phantasy Star Online Hook)

Topics regarding the online game Phantasy Star Online (PC version).
Post Reply
User avatar
atom0s
Site Admin
Posts: 401
Joined: Sun Jan 04, 2015 11:23 pm
Location: 127.0.0.1
Contact:

psofix (Phantasy Star Online Hook)

Post by atom0s » Tue Jan 06, 2015 9:41 pm

What is psofix?
  • psofix is an injected dynamic-linked library (.dll) for Phantasy Star Online, whose purpose is to fix various bugs found within the game, as well as extend features using a plugin system to allow users, such as yourself, to create and share extended features that do not require updates of the main project. psofix includes a number of bug fixes internally, which can be configured to be enabled or not based on the users choice. The plugin interface extends what users have access to by exposing userful events to every loaded plugin, such as Direct3D events.

What is psofix for?
  • psofix is created for (specifically) Phantasy Star Online v2 for the PC. This project is not designed for any other version of the game, or any other application for that matter. The project is aimed to overall, work for any version of PSOPC, the internal mechanics of the hook does not use address-specific code at all, but rather API hooks to achive the goals it currently has. The main purpose is to force the game to play windowed, without issue.

User System Requirements List Of Features
Below are a list of features currently included inside the main distributed hook package. Some of the things listed here are a little vague on the descriptions to keep the lists nice and neat looking, please see the notes below for more details on certain things listed.

Main Files
  • Full, unrestricted hook.
  • Loader to inject hook into pso.exe
Bug Fixes
  • Fixes windowed mode to give you a full, true, windowed mode. (See Note 1.)
  • Fixes windowed mode being forced to a specific size. (See Note 1.)
  • Fixes DirectInput from handling keyboard events when PSO does not have focus, or is minimized.
  • Fixes alt+tabbing and minimizing. PSO will not crash if you switch windows. (See Note 2.)
  • Fixes blinking that PSO does in the task bar when it does not have focus.
Internal Features
  • Includes hooking option to disable the mouse movement, unlocking the mouse from PSO so you can use it freely. (See Note 3.)
  • Includes hooking option to connect to any server you wish, in case you play on private servers.
  • Includes hooking option to fix typing problems on Windows Vista and Windows 7. (See Note 4.)
  • Includes aspect ratio resizing, so you do not mess up the look of the screen.
  • Includes in-game console for easier command access.
  • Includes plugin system to allow loading external modules for various purposes.
Included Plugins
  • Currently, none.

Notes
  • Keep In Mind...
    Everything done by the hook is done in memory, no patches are made to your pso.exe meaning if you do not wish to use psofix any more, or you wish to play without it sometimes, you just simply don't use it. Your pso.exe is untouched, no files are edited at all to make anything work above. psofix will only access its configuration files and plugin files, it does not touch any other files on your system.
  • :!: Note 1. Windowed Mode
    psofix includes the ability to force the fullscreen game into windowed mode. This means you do not need to use the windowed mode pso.exe anymore. The window mode in psofix strives to give you normal gameplay is if the game was designed to run in a window. Various fixes are added to the hook to ensure that there are no bugs left unfixed while playing windowed. This window mode is also not limited to a set size window. You can play PSO at any screen resolution you wish. However, the actual game being rendered cannot exceed a certain resolution, and must stretch to the windows size. (This is not something fixable this is hard coded into the game.)
  • :!: Note 2. Alt+Tabbing
    Currently, this ONLY works if you are playing windowed. The game will still crash if you attempt to use psofix while the game is set to play fullscreen. This is a feature being worked on.
  • :!: Note 3. Mouse Hook
    The mouse hook is for those who do not use the mouse in game at all. This will completely remove that annoying "rubber-band" effect the mouse has when you click outside of the PSO window. Keep in mind, this fully disables mouse movement in game when this is enabled. So only enable it if you wish to not use the mouse ever, at all.
  • :!: Note 4. Imm Ime Hook (Typing Issue)
    The Imm Ime hook allows Windows Vista and Windows 7 users to be able to type normally in game, without needing to install the Windows IME as before. This removes the need to be annoyed with the IME not working, or needing to hold some weird key combination while moving the window to get the typing to work.
In-Game Console
The in-game console allows you to access functions that are registered to the console, such as loading and unloading plugin files, finding help with specific functions, etc. Plugins can also register commands to the console to extend their functionality and expose more useful features to the users.

The in-game console can be accessed by pressing the: Insert key.

psofix currently registers the following functions to the console automatically:
  • clear
  • load
  • unload
  • help
Commands
  • Command: clear
    Syntax: /clear
    Arguments: None.
    The clear command allows you to delete the current text visible inside the console window.
  • Command: load
    Syntax: /load [plugin]
    Arguments: [plugin] which should be replaced with the name of the plugin you wish to load. (Does not require you to type .dll in the name, but you can if you wish to.)
    The load command allows you to load a plugin while playing. Plugins that fail to load will print an error the console giving a reason why it failed. You can report these issues/errors to plugin developers to help with making plugins work properly.
  • Command: unload
    Syntax: /unload [plugin]
    Arguments: [plugin] which should be replaced with the name of a plugin that is currently loaded.
    The unload command allows you to unload a plugin that has already been loaded. Plugins that fail for any reason will print an error to the console giving a reason why they failed. You can report these issues/errors to plugin developers to help with making plugins work properly.
  • Command: help
    Syntax: /help [command]
    Arguments: [command] should be replaced with the name of the command you want help with. This argument is optional. If you do not put a command name in, /help will print a full list of currently registered commands and their descriptions.
    The help command prints the description of the given command. If no command is given, then it will print a table of all the currently registered commands to the console.
Configuring psofix
psofix comes with default standard settings to be used out of the box for typical users. These settings are 'minimal' in the sense that they should work for everyone.

Default Settings
  • Screen Resolution: 800x600
  • Direct3D Resolution: 640x480
  • Startup Position -1, -1 (Center screen.)
  • Aspect Ratio 4:3
  • Mouse Hook: Disabled
  • Imm Ime Hook: Disabled
  • Winsock Hook: Disabled
These settings are set in the hopes that they will work for anyone whom plans to not take the time to configure psofix at all, or whom don't think they need to and wish to just use it with default settings.

Below are posts which detail each configuration file. Please read through them before editing any files! All configuration files can be edited using a standard text-editor such as Notepad. (I recommend using Notepad++)
Attachments
WalkThroughWalls.rar
Plugin for psofix.
(6.85 KiB) Downloaded 70 times
UltimateMapFix.rar
Plugin for psofix.
(7.45 KiB) Downloaded 71 times
psofix_v140.rar
(506.09 KiB) Downloaded 70 times
Derp~
Need a great web host? Check out: AnHonestHost.com


Donations can be made via Paypal:
https://www.paypal.me/atom0s
User avatar
atom0s
Site Admin
Posts: 401
Joined: Sun Jan 04, 2015 11:23 pm
Location: 127.0.0.1
Contact:

Re: psofix (Phantasy Star Online Hook)

Post by atom0s » Tue Jan 06, 2015 9:42 pm

/config/hookconfig.xml

The hookconfig.xml file contains the main hook configuration options. These options allow you to disable and enable certain hooks and features, alter the screen resolution and startup position, and such.

Default hookconfig.xml (Last updated, December 06, 2009)

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="6">
<HookConfig class_id="0" tracking_level="0" version="1">
	<WindowWidth>800</WindowWidth>
	<WindowHeight>600</WindowHeight>
	<WindowStartX>-1</WindowStartX>
	<WindowStartY>-1</WindowStartY>
	<AspectWidth>4</AspectWidth>
	<AspectHeight>3</AspectHeight>
	<UseMouseHook>0</UseMouseHook>
	<UseImmImeHook>0</UseImmImeHook>
	<UseWinsockHook>0</UseWinsockHook>
	<ServerAddress>gsproduc.ath.cx</ServerAddress>
	<DebugMode>0</DebugMode>
</HookConfig>
</boost_serialization>
Configuration Options In-depth
  • WindowWidth and WindowHeight
    These set the overall size of the window. You should keep a respectable resolution ratio when adjusting these to keep the game looking normal and not too stretched. (Ex. 640x480, 800x600, 1024x768, 1280x1024, etc.)

    WindowStartX and WindowStartY
    These determine the startup position, based on the top left pixel, of the window. If you set both of these options to -1, the window will automatically center itself on your screen during startup.

    AspectWidth and AspectHeight
    These are used in the calculations while resizing the window. These should match the proper ratio of your screen resolution.

    UseMouseHook
    Enables the hook to remove mouse movement in game. This fully removes mouse movement so do not enable it if you want to use the mouse to move your character while playing.

    UseImmImeHook
    Enables the hook to allow users on Windows Vista/Windows 7 to be able to chat and type without installing the Windows IME.

    UseWinsockHook and ServerAddress
    Enables the hook to force pso to connect to the server address you specify in ServerAddress.

    DebugMode
    Enables the hooks debug mode which creates a console and prints debug messages. This can be left disabled and is only useful for plugin developers or people debugging the main hook. (Turning this on does not effect game play.)
Configuration Notes
  • Setting WindowWidth and WindowHeight to the same resolution as your screen will cause the hook to NOT make the game windowed. This is to allow those who wish to have the features of psopchax while playing in fullscreen mode. (The windowed flag in Direct3D configurations must be 0 to work properly!)
Derp~
Need a great web host? Check out: AnHonestHost.com


Donations can be made via Paypal:
https://www.paypal.me/atom0s
User avatar
atom0s
Site Admin
Posts: 401
Joined: Sun Jan 04, 2015 11:23 pm
Location: 127.0.0.1
Contact:

Re: psofix (Phantasy Star Online Hook)

Post by atom0s » Tue Jan 06, 2015 9:42 pm

/config/d3d8config.xml

The d3d8config.xml file contains the Direct3D8 presentation paramters passed when PSO attempts to create its Direct3D device to render with. This configuration file is only exposed in the off-chance that the default settings do not work for everyone. You should NOT edit this file without reading this entire post and without knowing what you are doing. This file is specifically for advanced users and troubleshooting. Do not edit unless you take caution and understand that small changes can make this hook not work anymore!

Default d3d8config.xml (Last updated, December 06, 2009)

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="6">
<D3D8Config class_id="0" tracking_level="0" version="1">
	<BackBufferWidth>640</BackBufferWidth>
	<BackBufferHeight>480</BackBufferHeight>
	<BackBufferFormat>22</BackBufferFormat>
	<BackBufferCount>1</BackBufferCount>
	<MultiSampleType>0</MultiSampleType>
	<SwapEffect>1</SwapEffect>
	<Windowed>1</Windowed>
	<EnableAutoDepthStencil>1</EnableAutoDepthStencil>
	<AutoDepthStencilFormat>80</AutoDepthStencilFormat>
	<Flags>1</Flags>
	<FullscreenRefreshRate>0</FullscreenRefreshRate>
	<FullscreenPresentInterval>0</FullscreenPresentInterval>
</D3D8Config>
</boost_serialization>
Configuration Options In-depth

Detailed information per-configuration will not be given for this file. Please do not edit it unless you know what you are doing or you have been asked to edit it during a troubleshoot with a trusted member/user.
  • Windowed
    This tells Direct3D whether or not the device will be rendering to a windowed application, or if it is given full rights to the device and render to the whole screen. This is the only option you should ever need to change! You should only set this to 0 if you wish to play fullscreen.
Configuration Notes
  • I will stress this again, DO NOT edit this file if you do not know what you are doing!!!
  • If you adjust Windowed to 0 to play in fullscreen, please be sure to edit the hookconfig.xml to match your screens current resolution!
Derp~
Need a great web host? Check out: AnHonestHost.com


Donations can be made via Paypal:
https://www.paypal.me/atom0s
Aleron Ives
Posts: 2
Joined: Tue Feb 03, 2015 1:50 pm
Location: California
Contact:

Re: psofix (Phantasy Star Online Hook)

Post by Aleron Ives » Tue Feb 03, 2015 2:35 pm

Congratulations on getting your own domain. :) I was surprised to see you online the other day, so I'm glad you're still around.

I was hoping you might be able to shed some light on the Imm Ime patch that you included with psofix and also made as a separate patch for pso.exe. BlueCrab and I have been trying to come up with a way to fix typing on Vista/7/8 for good, and it's not going so well. :oops: Your patch doesn't totally disable the IME, as we can still type Japanese with the patch enabled, but when we press Enter to accept the text, it changes from Japanese into a "?". Without the patch, though, then direct input doesn't work at all, of course.

I was able to confirm that PSO is normally supposed to interface with and read output from the IME menus, because under XP, PSO will display the IME's list of Kanji within the game when you type Japanese. I used window mode on XP to confirm that PSO's list matches what the IME shows. Windows 7 doesn't do this, though, and instead you can see the Windows IME menu trying to display on top of PSO (and failing) when you type Japanese.

If you have any ideas as to how to make PSO interface properly with the new IME, we could really use your help. BlueCrab has been looking at the Microsoft IME documentation, and it's spotty at best. We can't figure out what Microsoft changed, let alone whether it's possible to fix PSO to work correctly again. I have screenshots and stuff, too, but I won't clutter up this topic further unless you feel like taking a look.... :mrgreen:
BlueCrab
Posts: 2
Joined: Wed Feb 04, 2015 6:10 am

Re: psofix (Phantasy Star Online Hook)

Post by BlueCrab » Wed Feb 04, 2015 7:33 am

To kinda continue on from what Aleron Ives has said, I'd appreciate it if you might be able to send me the source code to psofix. I see that it is GPLv3'ed, but I didn't see the source code anywhere on the site/forums/your github. It'd help If I saw what others have tried to at least partially fix the problem to potentially strategize how to fix it the right way. :)

I'm not much of a Windows programmer, thus my experience with the IME and such is somewhat limited, so my attempts to figure out what's wrong with the game are pretty much completely guess-and-test, which isn't really all that helpful in the end. :lol:
User avatar
atom0s
Site Admin
Posts: 401
Joined: Sun Jan 04, 2015 11:23 pm
Location: 127.0.0.1
Contact:

Re: psofix (Phantasy Star Online Hook)

Post by atom0s » Thu Feb 05, 2015 12:11 am

psofix is not released open source under any license. Only the plugin sdk was released under GPL. psofix is not open source at all and I do not plan on releasing it either.
Given how past things have happened with my work and PSO I do not really have any plans on fixing or releasing anything else for the game.
Derp~
Need a great web host? Check out: AnHonestHost.com


Donations can be made via Paypal:
https://www.paypal.me/atom0s
BlueCrab
Posts: 2
Joined: Wed Feb 04, 2015 6:10 am

Re: psofix (Phantasy Star Online Hook)

Post by BlueCrab » Fri Feb 06, 2015 5:31 pm

atom0s wrote:psofix is not released open source under any license. Only the plugin sdk was released under GPL. psofix is not open source at all and I do not plan on releasing it either.
Given how past things have happened with my work and PSO I do not really have any plans on fixing or releasing anything else for the game.
Ah... Well, that's a sad outcome, and I'm sorry that you have had bad experiences in the past with regard to your PSO-related projects (not that there's anything I could really do about it, unfortunately).

Well, thank you for your work either way. psofix is certainly a neat little project, and it actually did inspire me to look into doing some similar (DLL-based hooking) stuff. I hadn't even thought of using a DLL to do that until I had seen psofix around.
Aleron Ives
Posts: 2
Joined: Tue Feb 03, 2015 1:50 pm
Location: California
Contact:

Re: psofix (Phantasy Star Online Hook)

Post by Aleron Ives » Sat Feb 07, 2015 10:34 pm

I don't know what happened, but I hope it wasn't anything that I did. Thanks for the reply nonetheless.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest