さちこ(ホームセンター大好き) Luaのサンプル あくまでもサンプルです。改善の余地があるものも含まれています。 ●「検索」 return (CPEEK4(AD) == 497) 4バイト整数で「497」を検索します。 ただし、読み取り成功したかどうかはチェックしていません。 return (CPEEK2(AD) >= 100) and (CPEEK2(AD) <= 200) 2バイト整数で「100以上200以下」を検索します。 ただし、読み取り成功したかどうかはチェックしていません。 return (CPEEK4(AD) == MPEEK4(AD)+4) 4バイト整数で、ターゲットメモリ記憶時から4増えたものを検索します。 ただし、読み取り成功したかどうかはチェックしていません。 if (bit32.band(AD,1) == 1) then return false end return (CPEEK2(AD) == 999) 奇数アドレスは除外して、2バイト整数で「999」を検索します。 ただし、読み取り成功したかどうかはチェックしていません。 v1,b1 = CPEEK4(AD) v2,b2 = CPEEK4(AD+16) return (v1 == 370) and (v2 == 400) and b1 and b2 4バイト整数で「370」かつ、その16バイト後に4バイト整数「400」があるものを検索します。 読み取り成功したかどうかもチェックしています。 return (AD >= 0x405100) and (AD < 0x405200) and (bit32.band(AD,1) == 1) 特殊な使い方です。 初回検索時に使うと、(読み書き可能な領域であれば)0x405100以降の奇数アドレス128個をアドレス一覧に表示させます。 (「Exec」タブを使ったほうが効率は良いですが、あくまでもサンプルということで。) 初回検索は普通に検索して、これを絞り込み検索時に使うと、範囲外のアドレスや偶数アドレスをアドレス一覧から削除します。 ●「実行」 RET = "" ad = 0x003ffff0 for i=0, 15 do RET = RET .. string.format("%08X : ", ad+i*16) for j=0, 15 do v,b = DPEEK1(ad+i*16+j) if b then RET = RET .. string.format("%02X ", DPEEK1(ad+i*16+j)) else RET = RET .. "-- " end end RET = RET .. "\r\n" end 簡易メモリダンプです。 RET="" address = 0x10000 while 1 do address,size,addressNext,isRW,isR = MEM_INFO(address) if (size==0) then break end if isRW then attr = "RW" elseif isR then attr="R-" else attr="--" end RET = RET .. string.format("%08X %08X %08X ", address, size, addressNext) .. attr .. "\r\n" address=addressNext if (address==0) then break end end 簡易メモリマップ表示です。 data = "3E01CD8001C9" adrs = 0x0100D000 for i=0,string.len(data)/2-1 do POKE1(adrs+i, tonumber(string.sub(data,i*2+1,i*2+2),16)) end 任意バイト数のメモリ書き込みです。