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