-- 起動後最初に出力されるのは、起動時から後に生成される戦闘乱数です -- 乱数固定されてない場合は乱数固定時に出力されます -- その後、1F内で乱数が消費されたら、消費した戦闘乱数の数と、そこから後の戦闘乱数を表示します -- 具体的にどの乱数が消費されたかは前の行のを見てください fr1 = 0 fr2 = 0 fr3 = 0 fr4 = 0 -- 消費した乱数を数えるための領域 40で足りるかな? rnum = 40 rtbl = {} allCount = 0 -- 表示する乱数の数 nenum = 8 while true do r1 = memory.readbyte(0x7E0338) r2 = memory.readbyte(0x7E0339) r3 = memory.readbyte(0x7E033A) r4 = memory.readbyte(0x7E033B) randwrite = false userandnum = 0 if (r1 == 0 and r2 == 0 and r3 == 0 and r4 == 0) then else if (fr1 == 0 and fr2 == 0 and fr3 == 0 and fr4 == 0) then fr1 = r1 fr2 = r2 fr3 = r3 fr4 = r4 randwrite = true else for i = 0, rnum do if (r1 == rtbl[i+0] and r2 == rtbl[i+1] and r3 == rtbl[i+2] and r4 == rtbl[i+3]) then if (i > 0) then randwrite = true userandnum = i end break end end end if (randwrite) then if (userandnum > 0) then allCount = allCount + userandnum str = allCount.." "..userandnum.." [" for i = 4, math.min(4+userandnum-1,20) do str = str..rtbl[i].." " end str = str.."] next:[" for i = 4+userandnum, math.min(4+userandnum+nenum-1,rnum) do str = str..rtbl[i].." " end print(str.."]") end end rtbl[0] = r1 rtbl[1] = r2 rtbl[2] = r3 rtbl[3] = r4 for i = 4, rnum do r0 = math.floor((r2*256+r1)/13) % 256 r1 = r2 r2 = r3 r3 = r4 r4 = r0 rtbl[i] = r0 end if (randwrite) then if (userandnum == 0) then str = "s " str = str.." next:[" for i = 4, 4+nenum-1 do str = str..rtbl[i].." " end print(str.."]") end end end snes9x.frameadvance() end