[RM2K3] RPG MAKER MANIACS PATCH (FOR OFFICIAL VERSION)

Posts

There are some really big changes made in mp210519

  • ACCORD and ULTIMATE_RT_EB are now parts of the game engine.
  • F9 scene is replaced by a debugger window with Switches, Variables, StringVars, MapEventData and PictureData, it pauses the game, press F9 again to unpause (even after closing).
  • F10 (the event processing cancel button) was removed.
  • F12 resets to titlescreen without pressing Alt (like it was before 2003-1.10).
  • Generating dungeon maps while playing was removed.
  • Mouse controls in the show message textbox are disabled by default.
  • Shifting the game window's position doesn't pause the game.
  • FullPackageFlag is not necessary to prevent RTP-not-found-error.
  • You can add RunTimePackageKey to RPG_RT.ini to change the registry key where the engine searches for RTP.
  • The ExFont can now be replaced by adding a file named "exfont" to the windowskins folder (System).
  • Numeric input event command now supports entering by using the keyboard's number keys.
  • You can add WinW and WinH to RPG_RT.ini to specify a game screen size (normal zoom is the reference, so defaults are 320 and 240), stuff like titlescreen gets centered.
  • If you change the game screen size, it will be applied after LOGO was shown if you run without TestPlay mode.
  • New data type, the string variable, read from "Text" folder, can be referenced just like variables in text, but with a "T" instead of "V".
  • Engine supports 32bit pictures that don't use a palette (alpha values are not supported for now, only 0 and 255).
  • More variable pointer options for a wide range of commands (only when you use TPC).

New commands (only for TPC)

Control String Variables:
  • Set by single ID, batch, pointered ID or pointered batch.
  • Operators: Set, Concatenate, Insert, Replace, Substring, Join, Load File, Convert to Number, Get Length, Text Search, Split, Save as File, Pop Text Line
  • Base Operands: Text, From String Var, From Var, From pointered Var, From Switch, From pointered Switch
  • Get name of actor, skill, item, enemy, troop, terrain, terrain, element, state, animation, tileset, switch, variable, textvar, commonevent, jobclass, animationbattler, map, mapevent or partymember.

Get Game Info:
  • Get map size.
  • Collect top or bottom tile IDs from map rectangle.
  • Get game window size.
  • Get game screen pixel color data.

Edit Picture:
  • Set pixel or rectangle to specified color.

Output Image:
  • Save game screen as 32bit graphic file.
  • Save specified picture as 32bit graphic file.

Add Move Route:
  • Add movement command to route of an event, vehicle or the player.

So... holy fork... I guess there's much work to do now to make DestinyScript (originally made by Bananen-Joe for 2000-1.07) compatible with this new update beast, I just started porting it to mp200128 last October.

EDIT:
Also there's some incredible FPS boost going on in pf-version (PerFrame). On my system the benchmark of s2k3mp destroyer reached frames dropping when spawning around 900 chickens, now it starts to happen at 2400.
Is it just me or has RPG_RT.exe been replaced completely with a new file in mp210519? I'm asking because nothing fits anymore, the content and structure of it looks heavily different now. If that's the case, it's insanely incredible to achieve this in such a "short" time while EasyRPG is indev for over ten years now to become an ideal replacement, so I still doubt it. I'm just very confused right now from trying to compare the mp210519 data with mp200128 and raw 2003-1.12.

The changelog says "The engine was fully updated/renewed/improved/renovated/modernized/refurbished (全更新) since hacking little parts over and over again just continues to increase the false-positives-rate.". So is that literally what happened here? It would explain where the new super-duper-increased framerate performance smoothyness comes from.

~炬燵あ
author=KotatsuAkira
Is it just me or has RPG_RT.exe been replaced completely with a new file in mp210519? I'm asking because nothing fits anymore, the content and structure of it looks heavily different now. If that's the case, it's insanely incredible to achieve this in such a "short" time while EasyRPG is indev for over ten years now to become an ideal replacement, so I still doubt it. I'm just very confused right now from trying to compare the mp210519 data with mp200128 and raw 2003-1.12.

The changelog says "The engine was fully updated/renewed/improved/renovated/modernized/refurbished (全更新) since hacking little parts over and over again just continues to increase the false-positives-rate.". So is that literally what happened here? It would explain where the new super-duper-increased framerate performance smoothyness comes from.

~炬燵あ

For what I read today on discord he rebuild it from scratch
BingShan has said that in the past but I was also very confused about it because of the same thing you just said. I'm wondering if maybe he found a way to disassembled it entirely and with enough metadata to meaningfully reassemble it afterwards, so he didn't rewrite it but just "rewired" it. If that's the case I want to know how, because I've been trying something similar a few years ago and came to the conclusion that there are too many things that are not analyzed correctly and would need tremendous amounts of manual work to get fixed before it could be reassembled without breaking.
author=Cherry
BingShan has said that in the past but I was also very confused about it because of the same thing you just said. I'm wondering if maybe he found a way to disassembled it entirely and with enough metadata to meaningfully reassemble it afterwards, so he didn't rewrite it but just "rewired" it. If that's the case I want to know how, because I've been trying something similar a few years ago and came to the conclusion that there are too many things that are not analyzed correctly and would need tremendous amounts of manual work to get fixed before it could be reassembled without breaking.

Start talking about it on February 8 2020.
https://twitter.com/BingShan1024/status/1226079062134624258?s=20

From what I understand he did as you said, but not clearly how, apart from a few screenshots of the process on 10 and 20 February of the same year.

https://twitter.com/BingShan1024/status/1226893902021459974?s=20
https://twitter.com/BingShan1024/status/1230496742635798528?s=20

What was achieved in 2-3 years (guess there was some work before to document everything) is really impressive. 3 years is very fast for this.

BingShan should become a security researcher, is really smart in figuring out / patching assembler code it seems.

To answer the question where we wasted time for comparison. By now we could likely write EasyRPG Player again in 5 years, we gained so much knowledge over the last 10 years. I started C++ programming in 2008 so I was still very inexperienced (also C++03 sucks, C++11 made the language so much better).

Our goals are a bit different. BingShan "only" targets RPG Maker 2003 Steam on Windows. One could say the Maniac Patch is now a new game engine. Our goal is to make RPG Maker 2000/2003 games run everywhere.

- No need for RPG Maker 2000 specific support (also no 2000 battle system) or bugs in older engine versions
- Not multiplattform (no platform specific bugs to fix, they are annoying. Also
developing for Android sucks so much, all developers in the team equally hate it. It is zero fun to target this platform, I only have hate against Android).
- No support for additional patches such as Ineluki Key Patch

Especially the Web Player support made our code more complex: You must return every frame to the browser, so something like "Start transition, render the transition for one frame, End transition" in a tight loop doesn't work anymore, you must enable the transition, yield the interpreter, return to the browser, do the transition, resume the interpreter. When you don't do this the web browser will report your tab as stuck and kill it :(.

And by far our biggest time waster in EasyRPG development was that we only relied on "blackbox testing" for figuring out stuff. This just wastes tons of time because you usually do not catch the quirks / edge-cases.

We were stuck in the following cycle for years:

1. You get a bug report with a stuck game submitted
2. You open the game
3. You notice the game event code is a terrible, undocumented mess out of 100 parallel processes, so you try to understand the game code first and why it hangs in Player (this takes hours)
4. After 8 hours of figuring out what the game does you introduce one line of code to the Player that fixes it
5. a Week later you get a report that a game that worked before broke and guess what, it was the fix you just added!

We were kinda stuck in this situation for years, Event and Move Route handling must be frame-perfect, otherwise you break too many games.

Since last year we started to analyze the RPG_RT code and this dramatically improved the compatibility because you suddenly saw the hundreds of edge cases we missed and then suddenly all the game-breaking bugs are gone, the games just worked.

Then we did the same recently for Battle 2000 and 2003 (we had lots of problems with event timings): The 2000 Battle code is quite nice but the 2003 code is a disgusting ugly sphagetti code monster. Whoever wrote this had no idea what they were doing. (I'm imprssed that BingShan got the battle working)

When you analyze RPG_RT for a while you notice quickly, that the RPG 2000 devs were smart developers and RPG 2003 feels like some outsourced garbage pile. Probably tight deadlines, completely new dev team and Enterbrain wanted to make some money. Their added features introduced lots of bugs because they didn't consider all the places where it interacts with old functionalty. The change class event command is just broken and the same applies to equipment that invokes states. The 2003 battle code is also a mess, the algorithms have bugs and the CBA (item animations) code is also ugly.
As far as I'm concerned, what he did is impressive, I never imagined it was possible to achieve something like this in such a short time.
I who have always used 2k3, I can only be happy that someone continues to support it
Finding out about this patch has blown my friends and I's minds open. Bless BingShan and his continued work on this old engine. He is a lifesaver.

Only thing we're trying to parse out right now is how the mouse feature works. I see in the patch notes that the mouse click is automatically turned off. Is there a specific way to have it turned back on? I've tried a combination of some of the mouse based commands, but nothing so far has worked. I'm not super code literate, but I would really like to make use of the mouse if I can. Any advice would be appreciated, thank you! :>
You can reactivate it via TPC, press f3 or right click and select "create with TPC" to create a command and paste this:
@sys.gameOpt .mouse.disableMsgProcession 0

if it doesn't work try replacing 0 with 1
It's my first time posting here, so hello!

The new version of the patch is great, except for the fact that it changed back the "name" "class" and "nickname" in the status menu to their original states. I modified the strings in the RPG_RT to say something different, but he restructured the exe completely so I'm not quite sure how to remedy this. Hopefully Mr.BingShan makes it so that you can modify these in the database at some point, since that'd be a nice feature to have now that we can't modify them through a resource editor.

If anyone here has any clue on how I could possibly fix this I'd be grateful!
I just installed this for the first time. It appears to have worked, I don't get any errors and as far as I can tell the new commands are all there. Are there any game-breaking bugs I should be aware of before I dive into a new project?
Nothing that I'd know about. At least I was able to play through s2k3mp destroyer (with RPG_RT of mp210519-pf inserted) and the program didn't explode. But by looking at the changelog of fixes in mp210530, there is at least a little chance that it still has some bugs in the rewritten engine that was done for mp210519.

(Well... working on something with RPG2003 has always been some kind of bugdisaster-management, so...)

~炬燵あ
There was a new update (mp210809) nobody has mentioned yet, so here are the changes. Didn't test anything of this for now.

Fixed

Save/Load
  • If the content of a parallel-process-event changed between save and load, it wasn't recognized.
  • Directions of mapevents/vehicles and swapped event-graphics were not saved properly.

System
  • The game screen could get dark (black?) after a reset.

StringPicture
  • Automatic size-calculation for the image has been improved.
  • Some control-characters were handled incorrect.

MessageWindow
  • There were problems determining how many lines of text have to be displayed.

Graphics
  • Alpha-channel of image files in 32bit should work now.

Choices
  • Error occured on multiple choices in one step. I don't understand that one.

VariableOperations
  • If source (or what does "left side" mean?) area is defined, target area of variables wasn't handled correctly.

MapEvent
  • Unfixing the direction could be used when the page configuration was set to fixed graphic.

KeyInputEX
  • There was a problem receiving the mousewheel's status.

SystemFunctions
  • Enable/disable player's access to menu and save worked wrong way round.

StringVarFileIO
  • Paths containing doublebyte-characters were considered to be invalid.

ActorBattleCommands
  • Given values weren't processed correctly by the engine.

GetGameInfo
  • Getting a TileID had problems working.


Added

  • Supporting some additions from EasyRPG (ID: 203~216). What does that mean?
  • Variables can now receive EXP to next level of actor or party-slot.
  • The folder "Text" for StringVars can have subfolders now (and can be auto-created).
  • Flashing a character can now use variable pointers.
  • Iterating a loop by counting through the events on map.
  • Get current ChipSet-ID, database/dynamic actor face/char and the mapscreen's coordinates.
  • Checking existence/deleted status of event in conditional branches.
  • New command to draw tiles on a picture.
  • Pictures can ignore transparency values.



And mp210530 also had some stuff. I'm not gonna list the bugfixes of that old thing, but regarding new additions it got a function for receiving data about the event currently running, new operands for variable control and var-array sorting.
author=KotatsuAkira
Supporting some additions from EasyRPG (ID: 203~216). What does that mean?


There are some hardcoded strings in RPG_RT.exe and in EasyRPG Player the strings can be translated through additional LDB chunks.

This is now also supported by ManiacPatch.

We communicate a bit with each other to prevent redundant stuff in the database :).

Fields Easyrpg
This patch is really insane. I dug into it pretty hard over the weekend. Unlocks a ton of possibilities, and holy crap does it make a ton of things easier.

Anyone know much about this:
author=patch notes
New data type, the string variable, read from "Text" folder, can be referenced just like variables in text, but with a "T" instead of "V"


"Text" folder... this seems to imply we could have a glossary of terms in a file somewhere that could be read by our game? Anyone know how this works exactly?
author=narcodis
This patch is really insane. I dug into it pretty hard over the weekend. Unlocks a ton of possibilities, and holy crap does it make a ton of things easier.

Anyone know much about this:
author=patch notes
New data type, the string variable, read from "Text" folder, can be referenced just like variables in text, but with a "T" instead of "V"


"Text" folder... this seems to imply we could have a glossary of terms in a file somewhere that could be read by our game? Anyone know how this works exactly?


You have a Text folder like Charaset/Chipset/etc ...
And you can read every file inside this folder, store the result inside a new system of variables ( T instead of V ).
With some tip, you can extract BDD ( texts with EasyRPG ), and show in message text ( or picture ) things like item/skill 's descriptions / price / target ...
Actually Easyrpg player try to support some features from Maniacs.
I have a test build that support blending (add, sub, mul)
A new update is out, here are the changes of mp211010.

Added

Editor

Skills
  • Option to calculate hitrate

Switch/Var
  • Edit names while coding in TPC (F4/F5)

EditCmd
  • Added Footy2 to TPC

Engine

StringVar
  • Removed file output folder limitations
  • Operand to delete substrings
  • Operands to replace/delete/trim content through REGEXP

Animation
  • Choose playback buffer
  • Play animation backwards
  • Use picture, XY or variables as base position
  • Caching is disabled by default

GameOption
  • Set limit of animations that can play at same time

ShowPicture
  • Set zoomrate for Width and Height independently (normal draw only)
  • Restrict spritesheet animation to part of source image

MovePicture
  • Set zoomrate for Width and Height independently (normal draw only)

StringPicture
  • Use variable pointers for strings

Condition
  • Check file output

Load
  • Option to disable blackscreen

RPG_RT.ini
  • New option for textfile IO: "Encoding" (default: 0)

System
  • Set all thread locales to system default at startup


Fixed

Engine

Load
  • Changed ChipSet didn't load
  • Control problems with WAV files played right before game reset

TitleLogo
  • Display errors if size was below default

Picture
  • Some properties were wrong on new picture on same ID after game reset

Map
  • Random encounters didn't start if set to 25 steps

GameOption
  • Problems with FatalMix TestPlay flag setting

StringVar
  • Split operation didn't work when source and target are the same
  • Problems with start position of search
  • Reading error if file was too big

ActorName/Nick
  • Empty string wasn't recognized

JobClass
  • Error on learning same skill multiple times

ShowPicture
  • Error on loading from very large PNG source
  • Zoomrate of height didn't receive a fitting default value

MovePicture
  • Didn't update correctly after a command that doesn't change time left

StringPicture
  • Better handling of control characters

PictureTile
  • Drawing single lower tile was incorrect
  • Problems with processing after waiting time

GameInfo
  • Execution line of interpreter didn't have the right depth


As always not sure if I did understand everything the right way, so if there's anything wrong here feel free to correct and explain.

~炬燵あ
I tried the last version, for me the only new function that can be good is draw text in windows, without need to use "Mywin" tool.
I saw in twitter tests with 16:9 in game, but I can't find nothing.
Many new features saves times to people that really knows programmation or make complex custom systems.

PD: Actually I use an old version with only support of blending. At now this can works fine with easyrpg latest version, with blending support.
The game window gets custom size (introduced in mp210519) through RPG_RT.ini by adding entries "WinW" and "WinH" for width and height respectively (best results if numbers are above default and multiples of 16).

~炬燵あ