Last active
January 2, 2020 01:02
-
-
Save satgo1546/d2074ff6b977b8089d1f40546f3a5b17 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- av81033843 | |
-- 用于BizHawk,逆转裁判2(CGP汉化组汉化版),在mGBA核心上测试过。 | |
-- 在汉化组logo处,确认本脚本加载完毕后再按任意键。在此之后,本脚本会完全控制控制器。 | |
-- 免责声明:本脚本仅供参考。 | |
-- [帧] = <新消息编号 | 内存写入表 | 一个按键名> | |
local timelines = { | |
{ | |
[968] = 0x2122, | |
[970] = 0x2122, | |
[972] = 0x2122, | |
[974] = 0x2122, | |
[976] = 0x2122, | |
[978] = 0x2122, | |
[980] = 0x2122, | |
[982] = 0x2122, | |
[984] = 0x2122, | |
[986] = 0x2122, | |
[988] = 0x2122, | |
[990] = 0x2122, | |
[992] = 0x2122, | |
[994] = 0x2122, | |
[996] = 0x2122, | |
[998] = 0x2122, | |
[1000] = 0x2122, | |
[1002] = 0x2122, | |
[1004] = 0x2122, | |
[1006] = 0x2122, | |
[1172] = 0x2122, | |
[1680] = 0x2122, | |
[1850] = 0x21e2, | |
[2050] = 0x2122, | |
[2140] = 0x2236, | |
[2648] = 0x2122, | |
[2890] = 0x22ea, | |
[3370] = 0x006c6f4e, | |
[3560] = 0xc46ecac8, | |
[4366] = 0x187f80e1, | |
[4450] = 0x187f80ea, | |
[6272] = 0x187f8ac2, | |
[7018] = 0x187f8e8c, | |
[7150] = 0x187f8f0e, | |
[7587] = {[0x384a] = 0x00}, | |
[7588] = 0x42368fd0, | |
[7774] = 0x3694, | |
[8468] = {[0x384a] = 0x01}, | |
[8470] = {[0x384a] = 0x02}, | |
[8472] = {[0x384a] = 0x03}, | |
[8474] = {[0x384a] = 0x04}, | |
[8476] = {[0x384a] = 0x05}, | |
[8478] = {[0x384a] = 0x06}, | |
[8480] = {[0x384a] = 0x07}, | |
[8482] = {[0x384a] = 0x08}, | |
[8484] = {[0x384a] = 0x09}, | |
[8486] = {[0x384a] = 0x0a}, | |
[8488] = {[0x384a] = 0x0b}, | |
[8490] = {[0x384a] = 0x0c}, | |
[8492] = {[0x384a] = 0x0d}, | |
[8494] = {[0x384a] = 0x0e}, | |
[8496] = {[0x384a] = 0x0f}, | |
[8498] = {[0x384a] = 0x10}, | |
[8500] = {[0x384a] = 0x11}, | |
[8502] = {[0x384a] = 0x12}, | |
[8504] = {[0x384a] = 0x13}, | |
[8506] = {[0x384a] = 0x14}, | |
[8508] = {[0x384a] = 0x15}, | |
[8510] = {[0x384a] = 0x16}, | |
[8512] = {[0x384a] = 0x17}, | |
[8514] = {[0x384a] = 0x18}, | |
[8516] = {[0x384a] = 0x19}, | |
[8518] = {[0x384a] = 0x1a}, | |
[8520] = {[0x384a] = 0x1b}, | |
[8522] = {[0x384a] = 0x1c}, | |
[8524] = {[0x384a] = 0x1d}, | |
[8526] = {[0x384a] = 0x1e}, | |
[8528] = {[0x384a] = 0x1f}, | |
[8530] = {[0x384a] = 0x20}, | |
[8532] = {[0x384a] = 0x21}, | |
[8534] = {[0x384a] = 0x22}, | |
[8536] = {[0x384a] = 0x23}, | |
[8538] = {[0x384a] = 0x24}, | |
[8540] = {[0x384a] = 0x25}, | |
[8542] = {[0x384a] = 0x26}, | |
[8544] = {[0x384a] = 0x27}, | |
[8546] = {[0x384a] = 0x28}, | |
[8548] = {[0x384a] = 0x29}, | |
[8550] = {[0x384a] = 0x2a}, | |
[8552] = {[0x384a] = 0x2b}, | |
[8554] = {[0x384a] = 0x2c}, | |
[8556] = {[0x384a] = 0x2d}, | |
[8558] = {[0x384a] = 0x2e}, | |
[8560] = {[0x384a] = 0x2f}, | |
[8562] = {[0x384a] = 0x30}, | |
[8564] = {[0x384a] = 0x31}, | |
[8566] = {[0x384a] = 0x32}, | |
[8568] = {[0x384a] = 0x33}, | |
[8570] = {[0x384a] = 0x34}, | |
[8572] = {[0x384a] = 0x35}, | |
[8574] = {[0x384a] = 0x36}, | |
[8576] = {[0x384a] = 0x37}, | |
[8578] = {[0x384a] = 0x38}, | |
[8580] = {[0x384a] = 0x39}, | |
[8582] = {[0x384a] = 0x3a}, | |
[8584] = {[0x384a] = 0x3b}, | |
[8586] = {[0x384a] = 0x3c}, | |
[8588] = {[0x384a] = 0x3d}, | |
[8590] = {[0x384a] = 0x3e}, | |
[8592] = {[0x384a] = 0x3f}, | |
[8594] = {[0x384a] = 0x40}, | |
[8596] = {[0x384a] = 0x41}, | |
[8598] = {[0x384a] = 0x42}, | |
[8600] = {[0x384a] = 0x43}, | |
[8602] = {[0x384a] = 0x44}, | |
[8604] = {[0x384a] = 0x45}, | |
[8606] = {[0x384a] = 0x46}, | |
[8608] = {[0x384a] = 0x47}, | |
[8610] = {[0x384a] = 0x48}, | |
[8612] = {[0x384a] = 0x49}, | |
[8614] = {[0x384a] = 0x4a}, | |
[8616] = {[0x384a] = 0x4b}, | |
[8618] = {[0x384a] = 0x4c}, | |
[8620] = {[0x384a] = 0x4d}, | |
[8622] = {[0x384a] = 0x4e}, | |
[8624] = {[0x384a] = 0x4f}, | |
[8626] = {[0x384a] = 0x50}, | |
[9012] = {[0x384c] = 0x50}, | |
[9014] = {[0x3848] = 0x28}, | |
[9068] = {[0x384a] = 0x28}, | |
[9217] = 0x5012, | |
[9240] = "Down", | |
[9270] = "Down", | |
[10150] = {[0x3848] = 0x28}, | |
[10158] = {[0x384a] = 0x28}, | |
[10160] = {[0x3848] = 0x20}, | |
[10168] = {[0x384a] = 0x20}, | |
[10170] = {[0x3848] = 0x18}, | |
[10178] = {[0x384a] = 0x18}, | |
[10180] = {[0x3848] = 0x10}, | |
[10188] = {[0x384a] = 0x10}, | |
[10190] = {[0x3848] = 0x08}, | |
[10198] = {[0x384a] = 0x08}, | |
[10200] = {[0x3848] = 0x00}, | |
[10400] = 0x7f187f3e, | |
[10401] = {[0x3848] = 0x01}, | |
[11418] = 0xc46ed47c, | |
[11466] = 0x7f18820a, | |
[11628] = 0x7f1887ec, | |
[11718] = {[0x3a71] = 0x22, [0x3a72] = 0x22, [0x3a73] = 0x22, [0x3a74] = 0x22}, | |
[12010] = 0xc46ed006, | |
[14130] = 0xdac0dbd4, | |
[14545] = {[0x3a71] = 0x00, [0x3a72] = 0x00, [0x3a73] = 0x00}, | |
[14645] = {[0x3a71] = 0x12, [0x3a72] = 0x33, [0x3a73] = 0x44}, | |
}, | |
{ | |
[24] = "Up", | |
[48] = "A", | |
[400] = 0xc46ed9dc, | |
[1190] = "Right", | |
[1210] = "Left", | |
[1230] = "Right", | |
[1250] = "Left", | |
[1270] = "Right", | |
[1290] = "A", | |
[1478] = 0x213a, | |
[1490] = 0x212c, | |
[1556] = 0x2136, | |
[1560] = 0x2136, | |
[1576] = 0x2136, | |
[1872] = 0x2298, | |
[1896] = 0x2344, | |
[1962] = 0x260c, | |
[2184] = 0x2854, | |
[2290] = 0x30dc, | |
[2550] = 0x3836, | |
[2808] = 0x3b06, | |
[3154] = 0x3b6a, | |
[3164] = 0x3b66, | |
[3184] = 0x3b64, | |
[3198] = 0x3b6a, | |
[3300] = 0x3b76, | |
[3304] = 0x3b82, | |
[3720] = 0x51625212, | |
[4090] = 0x50a85094, | |
[4100] = 0x62686274, | |
[4228] = 0x62686370, | |
[4580] = 0x67ec6b9a, | |
[4816] = 0x72147818, | |
[5202] = 0x6c046c2c, | |
[5284] = "Right", | |
[5348] = 0x6c90, | |
[5470] = 0x6e5a, | |
[5728] = 0x72147b6a, | |
[5980] = 0x7bc8, | |
[6024] = 0x7bda, | |
[6526] = 0x7c92, | |
[6780] = 0x7d0e, | |
[6790] = 0x7cf6, | |
[6796] = 0x7d1e, | |
[7152] = 0x7d7e, | |
[7412] = 0x7e34, | |
[7678] = 0x7ef4, | |
[7928] = 0x7f3c, | |
[8654] = 0xa122a140, | |
[8803] = 0x6c606cae, | |
[8814] = 0xa122a1aa, | |
[8871] = "R", | |
[8917] = "Left", | |
[9059] = 0x6c606ce2, | |
[9127] = 0x721473d2, | |
[9658] = 0x7526, | |
[9678] = 0x7526, | |
[9688] = 0x7526, | |
[9698] = 0x7526, | |
[9708] = 0x7526, | |
[9728] = 0x7526, | |
[9748] = 0x7526, | |
[9768] = 0x7526, | |
[9966] = 0x75b8, | |
[9968] = 0x75b4, | |
[9972] = 0x75b4, | |
[9974] = 0x75ba, | |
[10066] = 0x7804, | |
[10402] = 0x78da, | |
[10424] = 0x78da, | |
[10446] = 0x78da, | |
[10468] = 0x78da, | |
[10490] = 0x78da, | |
[10512] = 0x78da, | |
[10562] = 0x8bfa8db6, | |
[10672] = {[0x384a] = 0x30}, | |
[10683] = {[0x384a] = 0x20}, | |
[10696] = {[0x384a] = 0x30}, | |
[10710] = {[0x384a] = 0x10}, | |
[10722] = {[0x384a] = 0x20}, | |
[10736] = {[0x384a] = 0x10}, | |
[10757] = {[0x384a] = 0x20}, | |
[10768] = {[0x384a] = 0x10}, | |
[10786] = {[0x384a] = 0x20}, | |
[10800] = {[0x384a] = 0x30}, | |
[10814] = {[0x384a] = 0x20}, | |
[10832] = {[0x384a] = 0x10}, | |
[10847] = {[0x384a] = 0x20}, | |
[10864] = {[0x384a] = 0x30}, | |
[10879] = {[0x384a] = 0x20}, | |
[10882] = {[0x384a] = 0x30}, | |
[10892] = 0x721475b4, | |
[10896] = {[0x384a] = 0x20}, | |
[10905] = 0x8bfa8eaa, | |
[10910] = {[0x384a] = 0x30}, | |
[10926] = {[0x384a] = 0x10}, | |
[10940] = {[0x384a] = 0x30}, | |
[10954] = {[0x384a] = 0x10}, | |
[10967] = {[0x384a] = 0x30}, | |
[10984] = {[0x384a] = 0x20}, | |
[11000] = {[0x384a] = 0x10}, | |
[11015] = {[0x384a] = 0x20}, | |
[11031] = {[0x384a] = 0x10}, | |
[11045] = {[0x384a] = 0x20}, | |
[11060] = {[0x384a] = 0x30}, | |
[11076] = {[0x384a] = 0x10}, | |
[11089] = {[0x384a] = 0x20}, | |
[11103] = {[0x384a] = 0x10}, | |
[11108] = {[0x384a] = 0x30}, | |
[11123] = {[0x384a] = 0x20}, | |
[11139] = {[0x384a] = 0x10}, | |
[11154] = {[0x384a] = 0x20}, | |
[11170] = {[0x384a] = 0x10}, | |
[11187] = {[0x384a] = 0x30}, | |
[11200] = {[0x384a] = 0x10}, | |
[11214] = {[0x384a] = 0x30}, | |
[11229] = {[0x384a] = 0x10}, | |
[11244] = {[0x384a] = 0x20}, | |
[11259] = {[0x384a] = 0x30}, | |
[11275] = {[0x384a] = 0x10}, | |
[11280] = {[0x384a] = 0x20}, | |
[11282] = 0x928e, | |
[11295] = {[0x384a] = 0x30}, | |
[11300] = 0xacb2ae02, | |
[11310] = {[0x384a] = 0x20}, | |
[11324] = {[0x384a] = 0x10}, | |
[11340] = {[0x384a] = 0x30}, | |
[11346] = 0xb608b70e, | |
[11354] = {[0x384a] = 0x20}, | |
[11368] = {[0x384a] = 0x10}, | |
[11382] = {[0x384a] = 0x20}, | |
[11390] = {[0x384a] = 0x30}, | |
[11404] = {[0x384a] = 0x20}, | |
[11418] = {[0x384a] = 0x10}, | |
[11434] = {[0x384a] = 0x30}, | |
[11447] = {[0x384a] = 0x10}, | |
[11466] = {[0x384a] = 0x30}, | |
[11478] = {[0x384a] = 0x20}, | |
[11493] = {[0x384a] = 0x10}, | |
[11510] = {[0x384a] = 0x30}, | |
[11525] = {[0x384a] = 0x10}, | |
[11542] = {[0x384a] = 0x30}, | |
[11548] = 0xb974, | |
[11556] = {[0x384a] = 0x20}, | |
[11571] = {[0x384a] = 0x10}, | |
[11572] = 0xbc9a, | |
[11586] = {[0x384a] = 0x20}, | |
[11597] = {[0x384a] = 0x10}, | |
[11611] = {[0x384a] = 0x30}, | |
[11624] = {[0x384a] = 0x20}, | |
[11632] = {[0x384a] = 0x30}, | |
[11647] = {[0x384a] = 0x20}, | |
[11651] = {[0x384a] = 0x30}, | |
[11654] = {[0x384a] = 0x10}, | |
[11662] = {[0x384a] = 0x20}, | |
[11670] = {[0x384a] = 0x30}, | |
[11744] = {[0x384a] = 0x50}, | |
[11954] = 0xc47e, | |
[11992] = 0xbdca, | |
[12278] = 0xce6ed0f4, | |
[12424] = 0xb608bf6a, | |
[12761] = 0xc17c, | |
[12763] = 0xc216, | |
[13410] = 0xc440, | |
[13573] = 0xdb9cdc12, | |
[13784] = 0xea5aed00, | |
[14247] = 0xf492, | |
[14413] = 0xedee, | |
[14419] = 0xf4c8, | |
[14464] = 0xf690, | |
[14537] = 0xf73af818, | |
[14538] = {[0x384c] = 0x21}, | |
[14778] = 0xf89a, | |
[15010] = 0xfa4efd2a, | |
[15013] = 0xfd76, | |
[15015] = 0xfd7c, | |
[15109] = 0xfdc6, | |
[15407] = 0xff4c, | |
[15418] = 0xfe60, | |
[16167] = 0x0080, | |
[16552] = 0x0cd81b2c, | |
[16553] = {[0x3c4a] = 0x02}, -- 剧情进程进位 | |
[16744] = 0x1da21ff0, | |
[17018] = 0x2eae3928, | |
[17760] = 0x30b8, | |
[17777] = 0x39c4, | |
[17882] = 0x3c86, | |
[18601] = 0x3d623d88, | |
[18789] = 0x3dca, | |
[19037] = 0x4d64, | |
[19260] = 0x4dda, | |
[20164] = 0x53b8, | |
[20800] = "Right", | |
}, | |
} | |
-- 选择实行的时间线编号 | |
local timeline = timelines[1] | |
-- 若只需要OSD则可设此为假 | |
local control_joypad = true | |
-- OSD显示当前帧数? | |
local osd_frame_count = true | |
local prev_message_start_frame = mainmemory.read_u32_le(0x37b0) | |
local prev_message = -1 | |
event.onframestart(function() | |
local keys = { | |
A = false, B = false, L = false, R = false, | |
Up = false, Down = false, Left = false, Right = false, | |
} | |
local frame_count = mainmemory.read_u32_le(0x37b0) | |
local message = mainmemory.read_u16_le(0x3c44) | |
local message_head = mainmemory.read_u16_le(0x3c48) | |
local osd = "" | |
if osd_frame_count then | |
osd = osd .. string.format("%9d | ", frame_count) | |
end | |
osd = osd .. string.format("%04X %04X", message_head, message) | |
gui.drawText(0, 0, osd) | |
if message == prev_message then | |
if frame_count - prev_message_start_frame > 40 then | |
keys.A = true | |
end | |
else | |
prev_message_start_frame = frame_count | |
end | |
prev_message = message | |
local m = timeline[frame_count] | |
if m then | |
if type(m) == "table" then | |
for k, v in pairs(m) do | |
mainmemory.write_u8(k, v) | |
end | |
elseif type(m) == "string" then | |
keys.A = false | |
keys[m] = true | |
prev_message_start_frame = frame_count | |
elseif type(m) == "function" then | |
m(frame_count) | |
else | |
local mh = bit.rshift(m, 16) | |
mainmemory.write_u16_le(0x3c44, m) | |
if mh ~= 0 then | |
mainmemory.write_u16_le(0x3c48, mh) | |
end | |
end | |
end | |
if control_joypad then | |
joypad.set(keys) | |
end | |
end) | |
event.onframeend(function() | |
end) | |
while true do | |
emu.frameadvance() | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment