Dark Byte Site Admin Reputation: 457
Joined: 09 May 2003 Posts: 25262 Location: The netherlands
|
Posted: Thu May 03, 2012 4:53 am Post subject: |
|
|
you can't. This method type isn't implemented yet and it's not even a published function.
Using the popupmenu change->script also won't work as there's no way to select a memoryrecord right now
What you could try is launching the auto assembler window using memoryview->auto assembler
then find the assemblescreen object and set the text property to the script.
Hook the execute button, and when clicked close the window and update the script
Or alternatively, just popup your own form with a memo and use that
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
GH*master Expert Cheater Reputation: 8
Joined: 10 Jan 2008 Posts: 159
|
Posted: Thu May 03, 2012 5:35 am Post subject: |
|
|
If you can, then add this function in Lua. That would be great
OpenAddressListAutoAssemblerEdit(memrec)
I share my script. Unfortunately the AA-editor did not open automatically.
AAgenerate.lua
Code: | --[[
Version 1.0
This CE Lua code generate autoassembler code on CE 6.2 Beta 5
]]--
AACodeTemplate = [[
[ENABLE]
alloc(newMem, 2048)
label(returnHere)
newMem:
->>cheatCode
->>originalCode
jmp returnHere
->>address:
jmp newMem
->>nops
returnHere:
[DISABLE]
->>address:
->>originalCode
dealloc(newMem)
]]
-------------------------
function GetInfoInjection(strAddress) -- return adressReturnHere, originalCodeString, nopsString
local sumBytes = 0
local originalCodeString = ""
local adressReturnHere = strAddress
local countBytes = 0
local isFirst = true
repeat
countBytes = getInstructionSize(adressReturnHere)
lineDissassemble = disassemble(adressReturnHere)
extrafield, opcode, bytes, adressReturnHere = splitDisassembledString(lineDissassemble)
sumBytes = sumBytes + countBytes
--adressReturnHere = string.format("%x", ("0x"..adressReturnHere) + countBytes)
adressReturnHere = adressReturnHere..'+'..countBytes
if sumBytes == 5 or isFirst then
isFirst = false
print('A')
print(sumBytes)
originalCodeString = originalCodeString..opcode
else
print('B')
print(sumBytes)
originalCodeString = originalCodeString.."\r\n"..opcode
end
until (sumBytes >= 5)
local nopsString = ""
local nopsCount = sumBytes - 5
if (nopsCount>0) then
for i = 1, nopsCount do
if i == nopsCount then
nopsString = nopsString.."nop"
else
nopsString = nopsString.."nop\r\n"
end
end
end
return adressReturnHere, originalCodeString, nopsString
end
-------------------------
function GenerateAA(strAddress)
local script = AACodeTemplate
local cheatCode = ""
local originalCode = ''
local nops = ''
local adressReturnHere = 0
adressReturnHere, originalCode, nops = GetInfoInjection(strAddress)
script = string.gsub(script,"->>cheatCode", cheatCode)
script = string.gsub(script,"->>originalCode", originalCode)
local baseAddress = getNameFromAddress(strAddress)
script = string.gsub(script,"->>address", baseAddress)
if nops=='' then
script = string.gsub(script,"->>nops\n", nops) --\r\n
else
script = string.gsub(script,"->>nops", nops)
end
return script
end
function AddAARecord(script)
local addresslist = getAddressList()
newTableEntry = addresslist_createMemoryRecord(addresslist)
memoryrecord_setDescription(newTableEntry, 'New Script')
memoryrecord_setType(newTableEntry, vtAutoAssembler)
memoryrecord_setScript(newTableEntry, script)
return newTableEntry
end
function OpenAAEditor(newTableEntry)
---???
end
------------------------------------------------------
function CreateAndShowingAA(strAddress)
local script = GenerateAA(strAddress)
local newTableEntry = AddAARecord(script)
OpenAAEditor(newTableEntry)
end
-------Add Item Menu in Disassembler------------------
function OnSelectionTracker(disassemblerview, address, address2)
dv_address1=address
dv_address2=address2
end
function AddItemMenuInMemoryViewForm(nameItemMenu, shortcut, functionItemClick, functionSelectiontracker)
local mv = getMemoryViewForm()
local dv = memoryview_getDisassemblerView(mv)
disassemblerview_onSelectionChange(dv, functionSelectiontracker)
dv_address1 = disassemblerview_getSelectedAddress(mv)
dv_address2 = dv_address1
popupmenu = control_getPopupMenu(dv)
mi = createMenuItem(popupmenu)
menuItem_setCaption(mi, nameItemMenu)
menuItem_onClick(mi, functionItemClick)
menuItem_setShortcut(mi, shortcut)
menuItem_add(menu_getItems(popupmenu), mi)
end
function OnItemMenuGenerateAAClick(sender)
local strAddress = getNameFromAddress(dv_address1) -- string.format("%x",address)
CreateAndShowingAA(strAddress)
end
-----------------------------------------------------
AddItemMenuInMemoryViewForm('* Create AA', 'Ctrl+Shift+A', OnItemMenuGenerateAAClick, OnSelectionTracker) |
|
|