$INCLUDE (..\macro.inc) $INCLUDE (..\library.inc) Vrezka equ 0x0424878 Patch equ Patches + 0x7300 ;--------------------------------------------------------------------------- org Patch push {r4-r7,LR} LoadReg 0, config+4 CallLib GetBuffer bne DoPatch CallReg 0, aOldSub b ex DoPatch: mov r7, r0 mov r0, #0 mov r1, #0 mov r2, #0 ldrb r3, [r7,#1] push {r2} CallLib PlaySound AdrReg 6, aHeader ldrh r0, [r6, #2] CallLib malloc mov r5, r0 mov r1, r0 add r1, #8 CallLib GetDateTime ldrb r0, [r5, #5] ;D ldrb r1, [r5, #8] ;H ldrb r2, [r5, #9] ;M ldrb r3, [r5, #10] ;S push {r0-r3} ldrh r1, [r5] ;Y mov r0, #100 CallLib dwMODdw mov r2, r1 ldrb r3, [r5, #4] ;M mov r0, r5 add r1, r7,#4 CallLib sprintf add SP, #20 mov r0, r5 mvi r1, 0x301 mov r2, #1 lsl r2, #8 mov r3, SP CallLib fopen push {r0, r5} mov r0, r5 mov r1, r6 ldrh r2, [r6, #10] CallLib memcpy mov r2, r0 CallLib RamScreenBuffer mov r1, r0 mov r0, r2 ldrh r5, [r6, #22] ;176 ldrh r4, [r6, #18] ;132 ldrh r3, [r6, #34] sub r3, r4 sub r3, r4 add r0, r3 lsl r7, r4,#2 NextRow: mov r4, r7 NextCol: ldrh r2, [r1] lsl r3, r2,#26 lsr r3, #26 lsr r2, #7 lsl r2, #6 add r2, r3 strh r2, [r0] add r1, #2 add r0, #2 sub r4, #4 bne NextCol sub r0, r7 sub r5, #1 bne NextRow pop {r0, r1} mov r4, r0 ldrh r2, [r6, #2] mov r3, SP CallLib fwrite mov r0, r4 mov r1, SP CallLib fclose mov r0, r5 CallLib mfree ex: pop {r4-r7,PC} ;--------------------------------------------------------------------------- Align16 aHeader: dw 0x4D42, 0xB5B6, 0, 0, 0, 54, 0, 40 dw 0, 132, 0, 176, 0, 1, 16, 0 dw 0, 0xB580, 0,0,0,0,0,0 dw 0,0,0, 0 aOldSub: dd 0xA032EBB7 ; --------------------------------------------------------------------------- Align16 config: dd Magic, 0xAB15, 0, 0 db "{p=ScreenShooter ver=2 cp=avkiev id=AB15}" db "{1 h Ringtone v=4C}" db "{4 s Format ml=50 v=`0:\Misc\Shots\%02u%02u%02u_%02u%02u%02u.bmp`}", 00 ;--------------------------------------------------------------------------- org Vrezka dd q1+Patch org 0x0424890 ;--------------------------------------------------------------------------- END