How to save into SRAM of Game Master 2?

Page 1/2
| 2

By gdx

Enlighted (6104)

gdx's picture

15-10-2022, 10:14

Hi,

I looking for the method to save and load a file in the SRAM of Game Master 2. I'm surprised to find nothing on the subject. It looks like access to SRAM is through some sort of Game Master 2 Bios. I would try to add this function in games.

Login or register to post comments

By Manuel

Ascended (19298)

Manuel's picture

15-10-2022, 12:20

You can look at the emulation and use that info to program it. See e.g. https://github.com/openMSX/openMSX/blob/master/src/memory/Ro...

By gdx

Enlighted (6104)

gdx's picture

15-10-2022, 12:40

No, because the SRAM of the Game Master 2 is used same as a disk. So there is probably routines in ROM like a BIOS. It is the description of these routines that I am looking for.

By mars2000you

Enlighted (6430)

mars2000you's picture

15-10-2022, 12:46

Maybe it would be easier to use the SRAM of a PAC or FM-PAC... I think we know better how this SRAM works.

By gdx

Enlighted (6104)

gdx's picture

15-10-2022, 13:03

Maybe, but I'd like to check that out for the thing I'm working on.

By st1mpy

Paladin (902)

st1mpy's picture

15-10-2022, 15:41

Some info here, there are 3 pages (links at the top of the page)
http://www.ucatv.ne.jp/~kmizuo/ryori/msx2.html

And may be this tool which saves to the sram (ESE-10.LZH)
http://niga2.sytes.net/msx/free.html

By gdx

Enlighted (6104)

gdx's picture

15-10-2022, 16:02

The first link doesn't work. The second is the work i am talking about. I am translating it. I tested with several game it seems work fine. And it is because the SRAM of the ESE-RAM does not work the same that I suspect that the Game Master 2 does not directly access the SRAM to make saves. It is possible to even more files with the modified version for ESE-RAM. Four times more !

By mars2000you

Enlighted (6430)

mars2000you's picture

15-10-2022, 16:23

First link works for me.

I will copy/paste the text here.

There are 3 parts.

By mars2000you

Enlighted (6430)

mars2000you's picture

15-10-2022, 16:18

コナミの新10倍カートリッジの解析その(1)
     その(2)  その(3)
私、このソフト好きなんです。
はじめに出会ったのは「コナミのゲームを10倍たのしむカートリッジ」でしたが、
このソフトを知らなければ解析の世界には入らなかったかも知れません。
私にとってはすっごく不思議で魅力的なソフトです、今でも。

新10倍にはゲーマーを支援するための様々な機能が入っていますが、その中で
「プレイヤー数・ステージ番号の変更」はとても不思議な事に思えました。
これ、どんな仕組みかわかります? 私は最近になってやっと謎が解けました。

新10倍の機能を使うためにはゲームROMより前のスロットに差して、新10倍
を先に起動します。プレイヤー数や開始ステージの変更後、ゲームが始まると設定
が変わっているというわけです。
普通にゲームを起動すると、プログラムの中のプレイヤー数・ステージ番号初期値
をワークエリアに転送しますから、それを書き替えなければステージ変更はできま
せん。

ゲーム側にプレイヤー数・ステージ変更のフラグをチェックして、ワークエリアを
書き替えるルーチンがあるのかな? 
ゲームの方にはそれらしきルーチンは存在しません。ではどうやって?

コナミゲームの4010h~には意味不明なデータが書いてありますね。
これが謎を解く鍵です。

前置きが長くなりましたが、今月の料理はこのデータの意味からはじめます。

材料
新10倍カートリッジ
似非SCC  (切り離しスイッチ付きが便利)
コナミゲームのファイル  (シューティングなら最高)
RAM96k以上のMSX

隠し味にこのファイルが必要
作り方
1 似非SCCにSLTEMUパッチをあてた新10倍をインストールします。

2 続いて用意したコナミゲームをKNM-INSTします。
  拡張スロット番号は1にして下さい。

3 MSXをリセットして新10倍を起動します。
  MODIFYを選んでプレイヤー数・ステージ番号を変更してみましょう。
  終わったらゲームスタートして下さい。

4 うまく変更できていたらF1キー、ポーズキー等でゲームを止め、
  似非SCCのRAMを切り離した状態でリセットします。

5 SHEM等のモニターを起動します。メモリマッパを切り替えてセグメント5を
  表示させて下さい。ここはゲームのページ3に使っていました。
  ゲームワークのF280hに対応するメモリを見てみましょう。
見本は沙羅曼陀ですが、ウシャス以前に発売されたゲームの場合はF280hとは限りま
せん。
F280h(4012h)  07h 58h  ゲームの製品番号

F284h(4015h)  00h,E2h  実行するプログラムの順番?を保存するアドレス
(00=デモ 05=ゲーム中とか)

F206h(4021h)  02h,E2h  よくわからないけど、ここのbit6が1ならプレイ
ヤーアウトみたい。
              C8hをC9hにすると無敵になったり、やられ判定
のフラグ?

F288h(401Bh)  00h,E3h  プレイヤー数のワークアドレス

F28Ah(4018h)  01h,E3h  ステージ番号のワークアドレス

F292h(4017h)  04h     E200=04の時にMODIFYで入力した数値をワークに
上書きする。04はゲームスタート直前なのでは。

F293h(401Ah)  06h     MAXステージ番号。MODIFYで8と入力すると2面
              になるでしょ。サラグラはここを07hに書き替えて、
              いきなりベノム艦技ができます。

F298h        07h   bit0=1 プレイヤー数変更可
               bit1=1 ステージ数変更可
               bit2=1 プレイヤー2変更可?

F299h            入力したプレイヤー数(16進数)

F29Ah              〃       (10進数)

F29Bh            入力したステージ番号(16進数)

F29Ch              〃       (10進数)

コナミゲームの意味不明なデータは新10倍のためにあったのです。
でもE200hが04hかどうかのチェックはどうやってするのでしょうね。
チェックルーチンは新10倍に入っているのです。
この続きはまたね

次回は「E200h=04hのチェックはいつするの?」をやる予定

By mars2000you

Enlighted (6430)

mars2000you's picture

15-10-2022, 16:20

コナミの新10倍カートリッジ解析その(2)
  その(1)  その(3)
前月のあらすじ

 1.コナミゲームの4010h~には意味不明なデータが書いてあるが、それは新10倍が
   使うらしい。

 2.4015hにはプログラムを分岐される番号を保存するアドレスが書いてあるようだ。

 3.4017hのデータの意味は、MODIFYで入力した数値をゲームのワークに上書きする時
   の分岐番号だと思う。

 4.沙羅曼陀の例ではE200h=04hのときにMODIFYで入力した数値をワークに書いている
   ようだ。
   E200h=04hのチェックはゲーム起動中に新10倍が行うようだが、どのように?

今月は「E200h=04のチェックはいつするの」です。

 新10倍対応のゲームって、どれもこんな感じになってますよね。

    LD A,C3h
    LD (FD9Ah),A
    LD HL,ADDRESS
    LD (FD9Bh),HL
    LD SP,F0F0h

 新10倍からゲームを起動すると、そのゲームに使う割り込みのフックを新10倍が
 乗っ取るのです。LD HL,ADDRESS と LD SP,F0F0h の間に細工をして乗っ取るので、
 このように同じ組み方にする必要があるのです。
 といっても、ROMを書き替えることは出来ないので、ゲームのスタートアドレスから
 このあたりまでをRAMに転送して書き替えます。
 ゲームはRAMに転送した部分からスタートし、ROMの LD  SP,F0F0hへジャンプします。
 これで乗っ取り完了、ゲームに新10倍の機能が付加されます。

 STOPキーを押すとゲームが止まり、CTRLキーを押すと画面の下部にメニューが表示さ
 れます。E200h=04hの判定も、拡張された割り込みルーチンの中でやっています。
 わかってしまえば、「そんなことか」なんですけどね。 割り込み乗っ取りの方法を
 詳しく知りたい方は、是非解析して下さい。

 ソリッドスネークでは割り込みのアドレスセットがダブっていますが、新10倍から
 起動したときに割り込みを乗っ取られるので、それを乗っ取り返すためだと思います。
LD  HL,C200h
LD  (FD9Bh),HL   ;ここは新10倍に乗っ取られるので
LD  HL,C200h    ;ここでもう一度乗っ取り
LD  (FD9Bh),HL
この割り込み乗っ取り技を使えば、NSLOADのように市販ゲームにセーブ・ロード機能を
付けることもできます。 新10倍は乗っ取りの手口があまりにも巧妙で、解析しながら
感動の連続でしたが、 皆さんから見れば当たり前のテクニックなのかも知れませんね。
私にとって新10倍はまだまだ不思議なソフトです。

By mars2000you

Enlighted (6430)

mars2000you's picture

15-10-2022, 16:22

コナミの新10倍解析その(3)
  その(1)  その(2)

ROMのバックアップと言えば、恐怖?の後差しが必要ですね。
でも、似非RAM・似非SCCカートリッジがあれば、
ゲームROMを差したままでDOS(2)起動できます。
今月の料理は新10倍の応用技をご紹介します。

1.材料

似非RAMまたは似非SCCカートリッジ
バックアップするROMゲーム  
味付けにこのファイル
2.作り方 
イ.似非RAM・SCCはDOSBOOTで下味を付けておきます。
  やり方はMSXに似非を差してDOS(2)を起動し、DOSBOOT.COMを実行するだ
  けです。
  スロット1に似非を差したときはこんな感じです。

     A>DOSBOOT /s1

  下味が付いたら準備完了です。
ロ.早速ROMカートリッジのバックアップを取ってみましょう。
  番号の小さいスロットに下味を付けた似非を、他のスロットにROMカート
  リッジを差します。DOSBOOTな似非を立ち上げると、番号の小さいスロットに
  あるディスクROMをひとつだけ初期化してDOS(2)を起動します。
  なので、対応するドライブにDOS(2)のシステムディスクをセットして、MSX
  の電源を入れて下さいね。
  うまくDOS(2)が起動しましたか。後は普段お使いのROMバックアップ
  ツールで好きなように料理して下さい。
3.下味の仕組み
  ROMカートリッジからの起動でディスクも使えるようにする方法は、テク
  ハンに書かれていますが、全てのカートリッジの初期化ルーチンを実行する
  ので後ろに差したROMゲームが起動してしまいます。
  でも新10倍なら起動時に初期化されるのは、小さい番号のスロットにある
  ディスクROMだけなので、ゲームが起動することはありません。
  新10倍方式ではDISK BASICを起動しますが、ROMのバックアップには
  DOS(2)起動の方が便利なので、CALL SYSTEMしてみました。
  種をあかせばとっても簡単ですね。
  
  MEGA-SCSIを使っていて内蔵ドライブが邪魔だというかた、これを使えば 
  内蔵ドライブを切り離せます。
  でも、似非とスロットを消費するのでやる人はいないと思いますが。

Page 1/2
| 2