Skip to content

tsuzukima/rpg_rt_container

Repository files navigation

RPG_RT_container

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 ではありません。

License

この repository のソースコードは MIT License で提供されます。 RPG Maker 2000 / RPGツクール2000 製ゲームと一緒に配布する場合の注意は RPG_RT_CONTAINER_LICENSE.txt を参照してください。

Releases

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 変数へ毎秒オーバーライド

Build

Windows の 32-bit Visual Studio toolchain が必要です。

cmake -S . -B build -A Win32
cmake --build build --config Release

生成される主な成果物:

  • build\Release\RPG_RT_container.exe
  • build\Release\rt_hook.dll

ゲームフォルダへの配置

正規に配布・利用できる RPG Maker 2000 / RPGツクール2000 製ゲームのフォルダに、次を置きます。

  • RPG_RT_container.exe
  • rt_hook.dll
  • rt_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 で行います。

OGG overlay

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.pngSystem/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>\ になります。

Screenshot

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 まで指定できます。

CRT / color filter

F2 で vintage color filter を切り替えます。 warmambergreen_phosphorsepiafaded_printntsc_bleedcool_fademonochromehigh_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 variables

[rm2k_clock] enabled=true のとき、現実のローカル時刻を RM2K 変数へ 毎秒オーバーライドして書き込みます。

割り当ては項目ごとに指定します。 未指定または 0 の項目は書き込みません。

実験的機能であり、RPG_RT側の変数操作処理との衝突は未検証です。

Source Layout

  • src/container/launcher.cpp
    • RPG_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 変換

About

Unofficial runtime helper for RPG Maker 2000 games.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors