RPG_RT_container は、RPG Maker 2000 製ゲームの RPG_RT.exe を
disk 上で書き換えずに起動し、外部 DLL の runtime hook で互換性補助を行う
非公式ツールです。
このプロジェクトは RPG Maker 2000 / RPGツクール2000 専用です。 RPG Maker 2003、XP、VX、MV、MZ、EasyRPG Player など、他の runtime は対象外です。
Gotcha Gotcha Games Inc. の公式 runtime ではありません。
この repository のソースコードは MIT License で提供されます。 RPG Maker 2000 / RPGツクール2000 製ゲームと一緒に配布する場合の注意は RPG_RT_CONTAINER_LICENSE.txt を参照してください。
https://github.com/tsuzukima/rpg_rt_container/releases
最新版はここから入手できます。
GPT-5.5 および Opus 4.7 の補助を用いて編集されています。
- 正規の
RPG_RT.exeを suspended 起動し、rt_hook.dllを注入してから再開 - OGG を必要時に一時 WAV へ変換して
Music/Soundから読み込ませる - F1 で 描画 FPS 表示
- F2 で vintage color filter
- F3 で CRT display 風 post process を切り替え
- F4 で borderless fullscreen 風表示へ切り替え
- F5 で 1x/2x/3x/4x window size 切り替え
- F6 で window の高さを維持したまま 4:3 / 16:9 を切り替え
- F7 で
Screenshotフォルダへ PNG screenshot を保存 - F8 で System 画像由来の背景 pattern 表示を on/off
- iniを通じた任意設定で、現実の年月日時分秒を RM2K 変数へ毎秒オーバーライド
Windows の 32-bit Visual Studio toolchain が必要です。
cmake -S . -B build -A Win32
cmake --build build --config Release生成される主な成果物:
build\Release\RPG_RT_container.exebuild\Release\rt_hook.dll
正規に配布・利用できる RPG Maker 2000 / RPGツクール2000 製ゲームのフォルダに、次を置きます。
RPG_RT_container.exert_hook.dllrt_container.ini
同じフォルダに、ゲーム側の正規 RPG_RT.exe が存在する必要があります。
動作確認済みの RPG Maker 2000 / RPGツクール2000 用 RPG_RT.exe の SHA256 は
d2409dcf5a0f24197a0556b206d7a3d5fce47780f2e959fd6a689b3d9a1f1a52 です。
rt_container.ini の [compat] expected_rpg_rt_sha256 にこの値を入れると、
想定外の RPG_RT.exe では起動を止められます。
設定は rt_container.ini で行います。
Music\foo.wav / Music\foo.mp3 または Sound\foo.wav / Sound\foo.mp3 が無く、同名の .ogg が
ある場合だけ、一時 WAV に変換して RPG_RT に読ませます。
既存の WAV/MP3/MID がある場合は、互換性優先で元ファイルを使います。
..\Music\foo.wav や ../Sound/hoge のような相対 path も、ゲームフォルダ直下の
Music / Sound として試します。
System 画像 hook でも、../System/bar.png や System/bar.png はゲームフォルダ直下の
System として解決します。
Sound は RPG_RT 内部の TWaveBuffer 読み込み入口でも補助し、DirectSound buffer 作成前に
一時 WAV へ差し替えます。
既定の game-local cache:
temp\music\<pid>\Music\...
temp\sound\<pid>\Sound\...
[audio] cache_mode=session_temp を使うと、保存先は
%TEMP%\RPG_RT_container\<pid>\ になります。
F7 で Screenshot フォルダへ PNG を保存します。
[screenshot] mode=display では、CRT/color filter/FPS overlay/外側背景を描き終えた
container の論理表示領域を保存します。
通常 window では game frame だけ、wide では game frame と左右背景、borderless では monitor 本体を保存します。
mode=frame_4_3 では、従来通り 4:3 固定・ノーエフェクトで保存します。
この場合の倍率は [screenshot] scale で、1 から 4 まで指定できます。
F2 で vintage color filter を切り替えます。
warm、amber、green_phosphor、sepia、faded_print、ntsc_bleed、
cool_fade、monochrome、high_contrast を巡回します。
F3 で CRT display 風 post process を切り替えます。
処理は RPG_RT の DirectDraw surface ではなく、BitBlt / StretchBlt hook で捕まえた
最終 game frame に対して行います。
[crt] max_render_pixels=0 は自動設定です。
CPU core 数と画面サイズを見て内部処理解像度を決め、必要なら最後だけ GDI で表示サイズへ伸ばします。
重い場合は 524288 など小さめの値を指定します。
[rm2k_clock] enabled=true のとき、現実のローカル時刻を RM2K 変数へ
毎秒オーバーライドして書き込みます。
割り当ては項目ごとに指定します。
未指定または 0 の項目は書き込みません。
実験的機能であり、RPG_RT側の変数操作処理との衝突は未検証です。
src/container/launcher.cppRPG_RT.exeを suspended 起動し、rt_hook.dllを注入する入口
src/container/hook_dll.cpp- Win32 API hook、DirectDraw hook、内部関数 hook の中心
src/container/hook_audio_temp.inc- OGG overlay と一時 WAV 処理
src/container/hook_window_size.inc- window size、4:3 fitting、外側背景 fill
src/container/hook_window_ratio.inc- F6 の 4:3 / 16:9 window 切り替え
src/container/hook_fullscreen.inc- F1/F2/F3/F4/F5/F8 hotkey、borderless fullscreen 風表示、GDI 拡大
src/container/crt_effect.*- GDI で捕まえた最終 frame への CRT / color filter / FPS overlay 後処理
src/container/hook_screenshot.inc- F7 screenshot 保存
src/container/hook_system_graphic.inc- RPG_RT が読み込んだ System 画像の検知と背景 pattern
src/container/variable_override.cpp- RM2K 変数配列への clock value 書き込み
src/container/config.*rt_container.ini読み込み
src/container/paths.*- path、temp directory、CP932/Unicode 変換