アイテムドロップの判定に使われる乱数は以下の64bitの線形合同法です
u64 seed;
u32 rand(u32 max) {
seed = seed * 0x5d588b656c078965 + 0x0000000000269ec3;
return ((seed >> 32) * max) >> 32;
diff -up src-orig/lua-engine.cpp src/lua-engine.cpp | |
--- src-orig/lua-engine.cpp 2010-02-04 15:22:54.000000000 +0900 | |
+++ src/lua-engine.cpp 2010-06-27 15:05:54.984375000 +0900 | |
@@ -3195,6 +3195,15 @@ DEFINE_LUA_FUNCTION(gui_gdscreenshot, "[ | |
return 1; | |
} | |
+extern int ZOOM_SCREEN_SHOT_WIDTH; | |
+extern int ZOOM_SCREEN_SHOT_HEIGHT; | |
+DEFINE_LUA_FUNCTION(gui_save_3d_zoom_screenshot, "width,height") |
# 0211E6C8 - 0211E754 | |
def f1(charcodes) | |
r13_0x0 = 0 | |
r13_0x4 = 0 | |
8.times do |i| | |
charcode = charcodes[7-i] | |
if i != 0 | |
r13_0x4 = u32((r13_0x4 << 7) | (r13_0x0 >> 25)) | |
r13_0x0 = u32(r13_0x0 << 7) | |
end |
#!ruby -Ku | |
require "kconv" | |
# 0211E6C8 - 0211E754 | |
def f1(charcodes) | |
a = 0 | |
b = 0 | |
8.times do |i| | |
charcode = charcodes[7-i] | |
if i != 0 |
#!ruby -Ku | |
require "kconv" | |
# 0211E6C8 - 0211E754 | |
def f1(charcodes) | |
a = 0 | |
b = 0 | |
8.times do |i| | |
charcode = charcodes[7-i] | |
if i != 0 |
unless "".respond_to?(:getbyte) | |
class String | |
def getbyte(n) | |
self[n] | |
end | |
def setbyte(n, c) | |
self[n] = c | |
end | |
end |
loadfile("../myutil.lua")() | |
function read_filelist(path) | |
local f, e = io.open(path, "rb") | |
if not f then | |
error(e) | |
end | |
local result = {} | |
while true do | |
local line = f:read("*l") |
unless "".respond_to?(:getbyte) | |
class String | |
def getbyte(n) | |
self[n] | |
end | |
def setbyte(n, c) | |
self[n] = c | |
end | |
end |
いつものことですが間違っている可能性があります
使われる乱数は選手バインダーやアイテムドロップとは別系列の乱数です。 乱数の式と初期seed、タイトル画面で時間経過により消費されることは同じです。
商店街 | |
マッスルズ (34%) | |
メンバー: ふきいし,おおにわ,おおさか,かじわら,やわら,みえ,よしの,よこた | |
ドロップ: おにぎり(45%),ぎゅうにゅう(45%),しこふみ(6%) | |
クリアポイント: 4, 熱血: 36, 友情: 6 | |
ラフヘアーズ (33%) | |
メンバー: ユイリー,はやぼし,すなお,ふき,しわ,なつか | |
ドロップ: おにぎり(45%),ぎゅうにゅう(45%),しこふみ(6%) | |
クリアポイント: 4, 熱血: 36, 友情: 6 | |
グリニーズ (33%) |