Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$i evedit.pas}
- const
- RegHistory: procedure(a1:string;a2:integer) = pointer($59BC44);
- sub_4CBA7C: procedure(a1,a2:pointer) = pointer($4CBA7C);
- sub_4CBC48: procedure(a1:pointer;a2:integer) = pointer($4CBC48);
- sub_5CE040: procedure(a1:pointer) = pointer($5CE040);
- sub_5CE1AC: procedure(a1:pointer) = pointer($5CE1AC);
- sub_4CB8B8: function(a1:pointer;a2:integer):integer = pointer($4CB8B8);
- sub_53E0C8: function(a1,a2:integer):integer = pointer($53E0C8);
- sub_5CDFF0: procedure(a1:pointer;a2:integer) = pointer($5CDFF0);
- sub_536E1C: function(a1:pointer):integer = pointer($536E1C);
- var
- EE : ^TEventEditor;// = pointer ($5D1008);
- FLvars : ^TFLVars;
- function sub_4CB8B8d(a1:integer;a2:integer):integer;
- begin
- result := pInteger(a1 + 8)^ * a2 + pInteger(a1 + 4)^;
- end;
- function sub_4CB8B8j(a1:pointer;a2:integer):pointer;
- var v1:integer;
- begin v1:=integer(a1);
- result := pointer(pInteger(v1 + 8)^ * a2 + pInteger(v1 + 4)^);
- end;
- procedure TFruityLoopsMainForm_EEPasteMenuClick;
- type intArray = array[0..65535] of integer;
- var
- v1,v5,i,vi:integer;
- Buffer :PEEBuffer;
- DataV2,DataV3 : PEEDATA;
- begin
- FLVars := pPointer( GetDataPTR($30) )^;
- EE := FLVars.EE;
- if FLVars.Editor = EE.Editor then begin
- if (FLVars.Editor - 2) < 2 then begin
- //зарегестрировать в историю отмены (undo hostory)
- RegHistory('paste', EE.History);
- Buffer := EE.pBuffer;//Data,
- DataV2 := pointer(Buffer.v_02C4);
- // sub_5CE1AC( DataV2 );//удаление помеченых
- vi := DataV2.len-1;//pInteger(v2 + 12)^;
- if vi >= 0 then begin
- for i:= 0 to vi do begin
- v1 := integer(sub_4CB8B8j(DataV2, i));
- if (pByte(v1 + 15)^ and $80) <> 0 then pInteger(v1+4)^ := -1;
- end;
- DataV2.Proc.v_000C(DataV2);
- end;
- // sub_5CE040( DataV2 );//снять выделение
- // sub_5CE040d( v2 ); //снять выделение
- vi := DataV2.len;//pInteger(v2 + 12)^;
- if (vi - 1) >= 0 then begin
- for i:= 0 to vi do begin
- v3 := sub_4CB8B8d(integer(DataV2), i);
- pByte(v3 + 15)^ := pByte(v3 + 15)^ and $03F;
- end;
- DataV2.v_0030 := 0; //pInteger(v2 + 48)^ := 0;
- end;
- if FLVars.Editor = 3 then
- DataV3 := FLVars.PLRecChannel //v_1788
- else
- DataV3 := FLVars.NoteRecChannel;//PR_Clip;//v_1784;
- // if FLVars.Editor = 2 then
- // sub_4CBC48(DataV3, Buffer.v_0274 shr 16);
- vi := DataV3.len -1;/// pInteger(v3 + 12)^;// > 0
- if vi >= 0 then begin
- // writeln (FLVars.Editor);
- //if FLVars.Editor = 2 then sub_4CBC48(integer(DataV3), Buffer.v_0274 shr 16);
- if FLVars.Editor = 2 then begin //
- v5 := Buffer.v_0274 shr 16;
- for i:=0 to vi do begin //замена sub_4CBC48d
- v1 := integer(sub_4CB8B8j(DataV3, i));
- pWord(v1 + 6)^ := v5;
- end;
- end;
- // pInteger(a1 + 8)^ * a2 + pInteger(a1 + 4)^;
- v1 := pInteger(sub_4CB8B8(DataV3, 0))^;
- v5 := ee.ppq + ee.scpos - 1 - (ee.ppq + ee.scpos - 1) mod ee.ppq;
- //v5 := v1 mod ee.ppq + v5 - v1;
- //v5 := pr.playpos - v4;
- // sub_4CBCA0d(v3, v4 mod a039C8[$0438 div 4] + v5 - v4);
- for i:=0 to vi do begin //установка временной позиции
- v1 := sub_4CB8B8(DataV3, i);
- pInteger(v1)^ := pInteger(v1)^ + v5;
- end;
- //end;
- //sub_5CDFF0(DataV3, Buffer.v_0274); //обр. массива
- //if DataV3.len -1 >= 0 then sub_4CBA7C(DataV2, DataV3);
- for i:=0 to vi do //Добавление в PR
- DataV2.Proc.v_0004(DataV2, sub_4CB8B8j(DataV3, i));
- end;
- result := sub_536E1C(EE); //вызов класс.функций
- end;
- end;
- end;
- //{$i eeshift}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement