動作してるので問題なさそうですが、あえて言うならゲーム内の変数を加算してチェックサムを作成している所が気になります。
配列SAVE[]に対して計算してやるようにすれば他のゲームでも使えるサブルーチンになりますよ。
'チェックサム作成
'N:セーブデータの個数 ARRAY:計算する配列 RANDKEY:ランダム数値
DEF GET_CHECKSUM(N, ARRAY, RANDKEY)
VAR I
VAR SUM=0
FOR I=0 TO N-1
INC SUM,ARRAY[I]
NEXT
SUM=SUM*RANDKEY
RETURN SUM
END
@SAVE
--SAVE[]にデータ格納
OO=RND(10000)
S=GET_CHECKSUM(4,SAVE,OO)
SAVE[5]=S
SAVE[6]=OO
@LOAD
--SAVE[]にデータが読み込まれた
S=GET_CHECKSUM(4,SAVE,SAVE[6])
IF S!=SAVE[6] THEN @DAME