爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 14960|回复: 25
收起左侧

[MC60-PATCH]自动答录

[复制链接]
发表于 2005-8-19 17:05:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
自动答录
;V1。0
;MC60-v07
;(T)飞飞猪&甘草
;打这个之前请先打NJ的激活录音器的补丁,否则无法听录音。并要到录音器所在的目录中把免提给关了。

;功能:对方来电自动接通,放在a:\Voice memo中的auto.vmo文件(要小于十秒),到第十秒开始录音,到50秒自动挂断,录音保存下来。或者对方挂机,一样有录音。
;开关这个功能:以时间的显示与否来开启或关掉这个功能,(菜单-9-6-5)时间日期不显示就开启录音。
;目前的问题:1。接通后开启了录音后不能对手机做任何的操作了,只能是到50秒了自动挂断或是对方挂机才可以退出。2。对方一打通就马上接通。3。MIC没有关掉。打算在下一版本再想办法吧。
;***和58秒自动挂断补丁**有冲突,要先UNDO那个补丁。(其实是因为占用了相同的入口)

81f370:E6FC0109 FA750023
0x552300: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 8840DA8B941848412D0EDA2170E2E6FD
0x552310: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D401E6FC301DE01EDA2C70e3984098C0
0x552320: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 98D0FAA1FAF39840E6FC0109FAA174F3
0x551D30: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 613A5C566F696365206D656D6F5C6175
0x551D40: FFFFFFFFFFFFFFFF 746F2E766D6F0000

0x00323C:fa9fe2de DA75501D
0x551D50: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DA9FE2DE8880D7400700F2FCDE33DA8B
0x551D60: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 941848412D1046FC0B003D04E6FC3B00
0x551D70: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DA2C06AF46FC32003D06E6FC3B00DA2C
0x551D80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1E80DA2182F39880DB00ffffffffffff


;======================================
;以下是研究用的源代码,相信我们可以慢慢完善它。
;分为 1。自动接通,放录音。2。10秒后录音,50秒挂断。
接通10秒录音
;入口和58秒自动挂断一样。
#define Control      8b1894h
#define enter_jmps   9fdee2h
#define record_vmo   2caf06h

org  551d50h

calls enter_jmps
mov [-r0],r8

extp #7,#1       ;通话时长
mov r12,33deh

calls Control     ;判断开关打开否?
cmp r4,#1
jmpr cc_z,exitint

cmp r12,#0bh        ;是十秒就开始录音
jmpr cc_nz,auto_off

mov r12,#3bh           ;这里是录音的CALLS
calls record_vmo

auto_off:              ;这里判断是否50秒了,是则挂断。
cmp r12,#32h
jmpr cc_nz,exitint

mov r12,#3bh           ;挂断功能部分。
calls 2c801eh
calls 21f283h

exitint:
mov r8,[r0+]
rets
;第二部分。
; 自动应答播放录音
#define Patch_org_addr  552300h         
#define Auto_answer  21e270h   
#define Control      8b1894h
#define play_vmo     2ce370h   

org Patch_org_addr

mov [-r0],r4
calls Control
cmp r4,#1
jmpr cc_z,exitauto
;以上是对开关的判断
calls auto_answer ;自动接通

mov r13,#1d4h   ;这里应当是这样算的R13*4000+R12就是指向的文件名
mov r12,#1d30h
mov r14,#1
calls play_vmo

mov r4,[r0+]     
mov r12,[r0+]   ;这两行不知是干什么的,也许在其它的CALLS中有保存过,所以这里弹出。
mov r13,[r0+]

jmps 0a1f3fah   ;这一行就是入口下方的
exitauto:          ;这一部分补一下入口直接回到入口的下一句
mov r4,[r0+]
mov r12,#901h

jmps 0a1f374h   ;入口下一行。

评分

参与人数 1实力分 +5 收起 理由
左楠风 + 5 补丁加分

查看全部评分

 楼主| 发表于 2005-8-19 18:58:39 | 显示全部楼层
激活录音器
NJ528
;会在菜单-7-5多出一个录音器来,可以录和放VMO文件,不过据说有BUG。
;录音时间根据内存的大小,10分钟/M的样子。足够用了。

368CDC: D60BD50B 90008F00 ;字串
368C20: 28CD25 90952c
回复 支持 反对

使用道具 举报

发表于 2005-8-19 21:13:48 | 显示全部楼层
老大的帖子 一定要顶啊

真希望自动应答能快些出   

帮老大再加把火


怎么提示强刷啊???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-19 22:15:49 | 显示全部楼层
关于auto.vmo的文件应当是,“我现在有事,请留言”之类的,可以激活录音器后用它来自己录。也可以到6688坛子上去找,据说好多。现在我定的是10秒以内(最好不要是十秒,8秒就差不多了),因为放完了录音后要调用录音器来录音。然后到了50秒挂机。这些都可以重新定义。现在得先让大家测试,我和甘草都测试通过了。
强刷,这我就不知道了,我和甘草都没有。想必是地址上的冲突,不知和哪个补丁冲突了,应当是NJ那边的补丁。
回复 支持 反对

使用道具 举报

发表于 2005-8-19 22:35:39 | 显示全部楼层
谢谢!先试试,看好用不
回复 支持 反对

使用道具 举报

发表于 2005-8-20 12:41:55 | 显示全部楼层

能否用个人菜单开关此功能?

能否用个人菜单开关此功能?
回复 支持 反对

使用道具 举报

发表于 2005-8-20 13:24:41 | 显示全部楼层
好贴 回武汉就打。。
回复 支持 反对

使用道具 举报

发表于 2005-8-20 13:51:40 | 显示全部楼层
等待机油测试,最好完善后自己添加到汇总中 ^_^
先加分支持一下~
回复 支持 反对

使用道具 举报

发表于 2005-8-20 14:04:39 | 显示全部楼层
感谢老大,绝对支持顶,可惜我的手机现在借给朋友了,拿到就打
回复 支持 反对

使用道具 举报

发表于 2005-8-20 16:21:24 | 显示全部楼层
恩,才找到大本营,顶啊
回复 支持 反对

使用道具 举报

发表于 2005-8-20 19:37:48 | 显示全部楼层
什么时间论坛搬新家的?

感觉老论坛没得人哦。飞飞猪 有没有自动答复呀!
打电话过来播放玩毕录音,自动挂机的。
回复 支持 反对

使用道具 举报

发表于 2005-8-20 19:45:28 | 显示全部楼层
我测试了  一切正常

感谢飞飞猪和甘草为我们带来这么好的补丁

有一点不好的  就是在开这个功能的时候  来短信只是嘟一声 不是以前的短信音了..
回复 支持 反对

使用道具 举报

发表于 2005-8-20 19:47:02 | 显示全部楼层
凶。 “大侠一出手便知有没有”

看样子原代码是M55的吧,分成两段做的。
是Z头给你的吗?
回复 支持 反对

使用道具 举报

发表于 2005-8-20 19:52:44 | 显示全部楼层
$Segmented
$Mod167 ;努力向3618自动应答奋斗

;一些函数
PlayVMO                        EQU        0E8B2D6h        ;r12=offset,r13=page
;SwitchMic                EQU        0EF84C6h        ;not test(录音或开始录音的时候会自动打开麦克风,所以无用)
CloseMic                EQU        0AFF58Ah        ;关闭话筒,并置FD02.1=1
RecordVMO                EQU        0E8D68Ch        ;可直接录音,不需确认,对方挂断时刻自动保存录音文件
GetTheCall                EQU        0AFB6CEh        ;接听函数
GetCallingTotleTime        EQU        8834E6h                ;得到当前通话总时间(秒)
IsCallInProgress         EQU        0xDC2A14
DrawImageByIndex        EQU        0xC3896C

;系统变量
VMONumbers                EQU        16DF6Eh                ;留言条数
CounterFlag                EQU        16DF6Ch                ; bit0:等于1表示有来电(不是去电),bit1表示计数器是否到时间,bit2控制录音
CounterTemp                EQU        16DF6Dh                ;存计数器值
CustomMenuStatus        EQU        10BEFCh                ;使用功能12

;一些地址
PatchBegin                EQU        07D7720h

;****************************************
;*      自动留言机                      *
;*        适用机型:x618                        *
;*        版本:V1正式版                        *
;*        作者:llhn                        *
;****************************************


;***************************************************************
Patch section code word AT PatchBegin
;---------------------------------
; 按下左导航建,直接进入录音器,并置零  留言个数
;breakpoint:
;6FD87C: DAEE86F6 --->        Calls        Seg(ClearVMONumbers), Sof(ClearVMONumbers)
    ClearVMONumbers proc far
            extp        #Pag(VMONumbers), #1
            mov        r4, Pof(VMONumbers)
            cmp        r4, #0
            jmpr        cc_Z, ExeOrignal
            mov        r4, #0
            extp        #Pag(VMONumbers), #1
            mov        Pof(VMONumbers), r4
            calls        0E8h, 0CAB8h                        ;进入录音菜单
            jmpr        ClearVMONumbersReturn
ExeOrignal:           
        calls        0EFh, 0BB9Ch                        ;写短信
ClearVMONumbersReturn:
        rets
    ClearVMONumbers endp
;---------------------------------
;待机显示留言提醒数目, 留言:2 ,并且始终置位CounterFlag和CounterTemp
;605-614号图片,0-9, 615号:空白,6*9; 10号:小人说话12*12
;Breakpoint
;F0416C: E6 F6 FF FF         mov     r6, #0FFFFh        -->        calls        Seg(ShowVMONumbers)
    ShowVMONumbers proc far
        calls         seg(IsCallInProgress),sof(IsCallInProgress)
        cmp         r4, #0
        jmpr         cc_NZ, ShowVMONumbersReturn                         ;通话期间不显示
       
        mov        r4, #0                                                ;待机时始终置位counterflag和countertemp
            extp        #Pag(CounterFlag), #1
            mov        Pof(CounterFlag), r4       
           
        extp        #5Bh, #1
        mov         r4, 14D2h
        jmpr         cc_Z, ShowVMONumbersReturn                        ;有号码按下,不显示(这也是引起关闭屏保无显示的bug)           
                   
        extp        #Pag(VMONumbers), #1
            mov        r4, Pof(VMONumbers)
            cmp        r4, #0
            jmpr        cc_Z, ShowVMONumbersReturn
BeginShow:
        add        r4, #604D
        mov        [-r0], r4
        extp        #Pag(RemainderPosition+0x800000), #2
        movbz        r12, Pof(RemainderPosition)
        movbz        r13, Pof(RemainderPosition+1)
        mov        r14, #9D
        mov        [-r0], r12
        mov        [-r0], r13
        calls        Seg(DrawImageByIndex), Sof(DrawImageByIndex)
        mov        r13, [r0+]
        mov        r12, [r0+]
        add        r12, #12D
        add        r13, #2D
        mov        r4, [r0+]
        mov        r14, r4
        calls        Seg(DrawImageByIndex), Sof(DrawImageByIndex)                   
ShowVMONumbersReturn:
        mov        r6, #0FFFFh                                ;补原指令
        rets
    ShowVMONumbers endp       

;---------------------------------
;来电等待时不考虑在内
;BreakPoint:若待机时来电的处理部分, 等待时间到,开始接听并放音
;F9AFDA 06 F0 08 00                add     r0, #8                -->calls        Seg(MainFunction),Sof(MainFunction)
     MainFunction proc far
        extp        #Pag(CustomMenuStatus), #1
        mov        r5, Pof(CustomMenuStatus)
        jnb        r5.11, MainFunctionReturn                                ;个人设置菜单状态, 使用功能11
        extp        #Pag(VMONumbers), #1
        mov        r5, Pof(VMONumbers)
        extp        #Pag(VMOs+0x800000), #1
        movbz        r4, Pof(VMOs)
        cmp        r5, r4                                                        ;留言条目
        jmpr        cc_UGE, MainFunctionReturn
            extp        #Pag(CounterFlag), #1
            mov        r4, Pof(CounterFlag)
            jnb        r4.0, MainFunctionReturn                                ;status.0=1?是否有来电?
            jb        r4.1, BeginGetCall                                ;计时器是否到时间?
            subb        rh4, #1
            cmpb        rh4, #0
            jmpr        cc_NZ, SetFlag1_0
            bset        r4.1
SetFlag1_0:
        bclr        r4.2
            jmpr        cc_UC,UpdateFlag
BeginGetCall:
        calls        Seg(GetTheCall), Sof(GetTheCall)
;        mov        r12, #3                                ;测试时使用的,响铃提示。
;        calls        0C7h, 55BCh
        mov        r4, #0
        bset        r4.2
UpdateFlag:
        extp        #Pag(CounterFlag), #1
        mov        Pof(CounterFlag), r4       
MainFunctionReturn:
        add        r0, #8                        ;补原指令
        rets
     MainFunction endp

;---------------------------------------------------

;---------------------------------------------------
;待机时来电,则记录当前系统计数器的值,并初始化counterflag: 有来电,计数器未到时间,录音禁能
;BreakPoint:
;AFC144 DA DC D0 28                 calls   0DCh, sub_DC28D0                ---->        calls
    StoreTheCounterValue proc far
            extp        #Pag(DelayTime+0x800000), #1
            movb        rh4, Pof(DelayTime)
            movb        rl4, #1
            extp        #Pag(CounterFlag), #1
            mov        Pof(CounterFlag), r4
            calls        0DCh, 28D0h                ;补原指令
            rets
    StoreTheCounterValue endp       

;---------------------------------------------------
;---------------------------------------------------
;通话时,到了开始录音的时候,录音
;8821EE DA DC B8 27                 calls   0DCh, sub_DC27B8
    RecordWhileCalling proc far
            extp        #Pag(CounterFlag), #1
            movb        rl4, Pof(CounterFlag)
            jnb        r4.2, RecordWhileCallingReturn
            calls        Seg(GetCallingTotleTime), Sof(GetCallingTotleTime)
            cmp        r4, #1
           jmpr        cc_Z, BeginPlayVMO
            extp        #Pag(DelayTime+1+0x800000), #1
            movbz        r5, Pof(DelayTime+1)           
            cmp        r4, r5
            jmpr        cc_Z, BeginRecordVMO                ;是否到时间开始录音?
        jmpr        cc_UC, RecordWhileCallingReturn
BeginPlayVMO:
        callr        PlayAnswerVMO
        jmpr        cc_UC, RecordWhileCallingReturn       
       
BeginRecordVMO:
            movb        rl4, #0
            extp        #Pag(CounterFlag), #1
            movb        Pof(CounterFlag), rl4                        ;更新状态寄存器
            extp        #Pag(VMONumbers), #1                        ;留言数目 加1
            mov        r4, Pof(VMONumbers)
            add        r4, #1
            extp        #Pag(VMONumbers), #1
            mov        Pof(VMONumbers), r4
            calls        Seg(CloseMic), Sof(CloseMic)
            calls        Seg(RecordVMO), Sof(RecordVMO)
RecordWhileCallingReturn:           
        calls        0DCh, 27B8h                ;补全原代码
        rets
    RecordWhileCalling endp
   
;----------------------------------------------------
;接通之后的寄存器处理,避免手动接通时仍然自行接通....
;接通之后,Flag.0=0, Flag.1=0
;ROM:AFBF74 DA C5 DC DB                 calls   0C5h, sub_C5DBDC        -->calls
;此处断点,播出接入均执行
    Access proc far
            extp        #Pag(CounterFlag), #1
            mov        r4, Pof(CounterFlag)
            bclr        r4.0
            bclr        r4.1
            extp        #Pag(CounterFlag), #1
            mov        Pof(CounterFlag), r4
            calls        0C5h, 0DBDCh                        ;补原断点
            rets
    Access endp   

;播放应答录音
    PlayAnswerVMO proc near
            calls        Seg(CloseMic), Sof(CloseMic)
        mov        r12, #Pof(AnswerFileName)
        mov        r13, #Pag(AnswerFileName+0x800000)
        calls        Seg(PlayVMO), Sof(PlayVMO)
        ret
    PlayAnswerVMO Endp

AnswerFileName:
    db        'a:\Voice memo\Answer.vmo',00,0FFh
DelayTime:                       
    db        30D                        ;接通时间               
    dB        10D                        ;自动应答文件的长度
RemainderPosition:
    db        78D                        ;x 坐标
    dB        43D                        ;y 坐标
VMOs:
    db        03D                        ;留言条目数量
;---------------------------------------------------
Patch Ends
End
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-20 22:06:14 | 显示全部楼层
哈哈,代码是M55上的那个,但并不是Z头给,这是我和甘草一起努力的结果,用SFE反汇编后再重新编好。这算是个大体上的框架吧,不过这个补丁对于我几乎没什么用,我用神州行的卡,这种补丁可不敢用。所以我不打算去做太多的工作,NJ你来做可好,甘草对它的兴趣可不小。他几乎把所用到的所有CALL都找到了,但却偏偏没搞好最简单的组织工作。哈,所以最终是我和他一起完成了。
这个补丁基本实现了自动答和录。对方打电话来,如果开关是打开的那么就会自动接通,放AUTO。VMO的文件,然后过了10秒自动录音,然后到了50秒会自动挂断。这中间我发现了两个问题,1。放录音时如果你是用手机自已录的话声音有点小了。2。50秒挂断有时不太灵,我想是因为录音器的问题。
回复 支持 反对

使用道具 举报

发表于 2005-8-21 19:27:04 | 显示全部楼层
“不过这个补丁对于我几乎没什么用,我用神州行的卡,这种补丁可不敢用。所以我不打算去做太多的工作”
我跟你看法一样,话费受不了。第二,我用3618时用过自动应答,没得人给我留过言。

M55的自动应答本生好像有问题,所以又才一分为二的。但是还是有问题吧。
这个要问Z头去了。

最近,没得事做我刷成V10版了,放弃了大部份补丁。也没法测试补丁

我最近发现西门子没有未接来电提示音,就像MOTO一样 1分钟提示一次。很想要一个这样的东东。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-21 21:28:17 | 显示全部楼层
未接提醒有的,在6688上是有的,其实原理上比较简单,只要把整点报时修改一下就行了,只要把分钟是0/5时发出声音就OK了,但问题就是这其中需要一个地址,这个地址在6688上是COOLANG找出来的,它主要是记录未接来电或短信的数量。我曾经试图去找那个地址,不过我找不到,看起来很象的地址然后用AT来跟踪它的变化,但一直没找到。
回复 支持 反对

使用道具 举报

发表于 2005-8-21 22:53:27 | 显示全部楼层
6688补丁发一下
回复 支持 反对

使用道具 举报

发表于 2005-8-22 08:16:33 | 显示全部楼层
0x363800:E6F9FFFF DABF6084
0x1F8460: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88C0886088708880D7400E00F2F7423A
0x1F8470: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9AF74E30E006D7400D00F2F7D8292D01
0x1F8480: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 7861D7400C00F2F7082D3D039AF64000
0x1F8490: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0D017862D7400D00F2F8DC25D7403400
0x1F84A0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F3FE363E3D06E017D7403400F7FE363E
0x1F84B0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0D1DD7403400F2F7343E40783D23D740
0x1F84C0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3400F3FE373E3D298AF60200E01C0D05
0x1F84D0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 8AF60210E02C0D01E03CDAB5A4D2DAB5
0x1F84E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 4AD4E11ED7403400F7FE373E06F80500
0x1F84F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46F83C008D0226F83C00D7403400F6F8
0x1F8500: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 343E0D0BE10ED7403400F7FE373E0D05
0x1F8510: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 59E0D7403400F7FE363E988098709860
0x1F8520: FFFFFFFFFFFFFFFF 98C0E6F9FFFFDB00

0x1F8473: 30 b0
;0x4500b0: B31FFEB07D9538000000000000000000 D930FE9E6DAD61D550FEA13A00000000

0x1F84D9: 2c 2c
0x1F84EE: 05 03
回复 支持 反对

使用道具 举报

发表于 2005-8-22 14:15:18 | 显示全部楼层
太厉害了,我强烈支持啊,我用mc60
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-6-11 12:14

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表