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から読み込ませる - 既存の
.wav/.mp3/.midがある場合は、互換性優先で元 file を使う .mid要求は横取りせず、RPG_RT 本来の MIDI 処理へ任せる- 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 変数へ毎秒オーバーライド
RPG_RT.exe以外への注入- RPG Maker 2003 / XP / VX / MV / MZ など、他の runtime への対応
- EasyRPG Player への対応
.mid要求を同名.oggに差し替えること
editor 側の OGG 対応は rpg2000_ogg_hooker を使ってください。
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 では起動を止められます。
通常起動:
上記のファイル配置を行ったあとに RPG_RT_container.exe を起動して下さい。
RPG_RT.exe へ追加の引数を渡したい場合は、container にそのまま渡せば転送されます。
container 側の test flag (--stb-only 等の decoder chain flag) は launcher 側で
消費され、RPG_RT.exe には渡されません。
通常起動でも rt_container.log を launcher folder に書き出します。
Music\foo.wav / Music\foo.mp3 または Sound\foo.wav / Sound\foo.mp3 が無く、同名の .ogg が
ある場合だけ、一時 WAV に変換して RPG_RT に読ませます。
既存の WAV/MP3/MID がある場合は、互換性優先で元 file を使います。
.mid だけがある場合は、RPG_RT 本来の MIDI 再生に任せます。
.mid 要求を同名 .ogg へ解決することはありません。
..\Music\foo.wav や ../Sound/hoge のような相対 path も、ゲームフォルダ直下の
Music / Sound として試します。
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>\ になります。
cache 合計は [audio] max_temp_mb (既定 2048 MB) を上限に、超過時は古い WAV から削除します。
正常終了時には当該 pid の cache を削除します。
異常終了で残った古い cache は、次回起動時に掃除します。
OGG overlay 以外の設定は rt_container.ini で行います。
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 など小さめの値を指定します。
System 画像 hook で、../System/bar.png や System/bar.png のような相対 path は
ゲームフォルダ直下の System として解決します。F8 で背景 pattern 表示を on/off できます。
[rm2k_clock] enabled=true のとき、現実のローカル時刻を RM2K 変数へ
毎秒オーバーライドして書き込みます。
割り当ては項目ごとに指定します。
未指定または 0 の項目は書き込みません。
実験的機能であり、RPG_RT 側の変数操作処理との衝突は未検証です。
container 起動時の log は launcher folder の rt_container.log に出ます。
追加で stage 別の挙動を切り分けたい場合は decoder chain test flag を使ってください。
よくある問題:
RPG_RT.exe was not found next to RPG_RT_container.exe- 同じフォルダに
RPG_RT.exeを置いてください。
- 同じフォルダに
rt_hook.dll was not found next to RPG_RT_container.exe- 32-bit
rt_hook.dllが同じフォルダにあるか確認してください。
- 32-bit
RPG_RT.exe sha256 mismatch; launch abortedrt_container.iniの[compat] expected_rpg_rt_sha256が想定外のRPG_RT.exeを指しています。 値を確認するか、行を消して hash check を無効化してください。
- OGG が鳴らない
rt_container.logに decoder のdecode_ms/error/messageが記録されます。- decoder chain test flag (
--stb-only等) で原因 stage を切り分けられます。
OGG decode は stb_vorbis -> Media Foundation -> ffmpeg fallback の 3 段で動きます。
依存環境テスト目的で、任意の段に絞って起動できます。flag は launcher が消費し、
RPG_RT_CONTAINER_DECODE_CHAIN env var として hook DLL に伝わります。
利用可能な test flag (/ 形式と -- 形式どちらも可):
--stb-only/--stbonly— stage 1 (stb_vorbis) のみ。Web Media Extensions も ffmpeg も 入っていない PC で OGG が鳴るかを検証する用途。--no-ffmpeg— stage 1+2 のみ (stb_vorbis + Media Foundation)。ffmpeg.exe 不在環境を再現。--mf-only/--mfonly— stage 2 (Media Foundation) のみ。Windows OS の OGG codec 同梱状況を直接確認。--ffmpeg-only/--ffmpegonly— stage 3 (ffmpeg.exe) のみ。bundle 以前の挙動を再現。--no-stb— stb_vorbis 同梱前と同じ chain (MF -> ffmpeg) に戻して比較。--no-mf— stb_vorbis + ffmpeg のみ。--decode-chain=<spec>— comma 区切りでstb/mf/ffmpegを任意に組合せ (例:--decode-chain=stb,ffmpeg)。
複数指定された場合は最後の引数が反映されます。
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/mf_ogg_decoder.*- 同梱 stb_vorbis -> Media Foundation -> ffmpeg fallback の 3 段 OGG -> WAV decode
src/container/third_party/stb_vorbis.c- public-domain Vorbis decoder (Sean Barrett v1.22)、Windows の codec 構成に依存しない primary 経路
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 変換
src/container/log.*- launcher / hook log 出力