爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
楼主: BingK
收起左侧

[其它] [S7Cv47][MP]SP NSG MP ——替换运营商标志为自定义字串 v1.3.1

[复制链接]
发表于 2008-10-31 09:19:31 | 显示全部楼层
%<  可是加了左右对齐的这两个中间的就不会是居中了  %>

你用没用呀???/
回复 支持 反对

使用道具 举报

发表于 2008-10-31 09:26:26 | 显示全部楼层

回复 81# 726 的帖子

不要用了!
我就用了时间,日期!
081030_224958.jpg

[ 本帖最后由 迷恋你的香水 于 2008-10-31 09:27 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-10-31 09:36:33 | 显示全部楼层
其实香水你的这位置显示...我并不喜欢.....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-31 09:41:56 | 显示全部楼层
关于居中的问题,我试了一下,在左边居左,右边居右,就不能居中。
不要想当然,我把源码传上来,你也可以试试,亦可能是鄙人实力太差了。
回复 支持 反对

使用道具 举报

发表于 2008-10-31 09:46:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-31 09:46:28 | 显示全部楼层
  1. #include "..\inc\swilib.h"

  2. #define UC_XING 0x661F //xing
  3. #define UC_QI 0x671F //qi
  4. #define UC_CHU 0x521D //chu
  5. #define UC_SHI 0x5341 //十
  6. #define UC_ERSHI 0x5EFF //廿
  7. #define UC_SANSHI 0x5345 //卅
  8. #define UC_ZHENG 0x6B63
  9. //日一二三四五六七八九十廿卅
  10. const unsigned short UC_CHARS[12]=
  11. {
  12.   0x65E5,
  13.   0x4E00,
  14.   0x4E8C,
  15.   0x4E09,
  16.   0x56DB,
  17.   0x4E94,
  18.   0x516D,
  19.   0x4E03,
  20.   0x516B,
  21.   0x4E5D,
  22.   0x5341,
  23.   0
  24.   //0x5EFF,
  25.   //0x5345
  26. };
  27. const char weekdays[7][10]=
  28. {
  29.   "Monday",
  30.   "Tuesday",
  31.   "Wednesday",
  32.   "Thursday",
  33.   "Friday",
  34.   "Saturday",
  35.   "Sunday"
  36. };

  37. const char enmonth[12][10]=
  38. {
  39.   "January",
  40.   "February",
  41.   "March",
  42.   "April",
  43.   "May",
  44.   "June",
  45.   "July",
  46.   "August",
  47.   "September",
  48.   "October",
  49.   "November",
  50.   "December"
  51. };
  52. #pragma swi_number=0x8D
  53. __swi __arm void GetProfileName(WSHDR *ws);

  54. #pragma swi_number=0x41
  55. __swi __arm void GetProvider(WSHDR *ws, int _0);

  56. //#pragma swi_number=0x80DD
  57. //__swi __arm char *RamCurrentTrack(void);

  58. #define RamTrack3 0xA892C6B0
  59. #define RamTrack2 0xA89A32F4
  60. #define RamTrack1 0xA899F2BC

  61. #define MAX_LEN 64 //UNICODE
  62. __arm void GetRepString(WSHDR *pws, const unsigned short *pformat)
  63. {
  64.   WSHDR *wst, wstn;
  65.   unsigned short wstb[32], *s2, cs;
  66.   const unsigned short *ss;
  67.   TDate date, Ldate;
  68.   TTime time;
  69.   RAMNET *net;
  70.   int z, week, LunarRet, c;
  71.   char *qp;
  72.   wst=CreateLocalWS(&wstn, wstb, 32);
  73.   GetDateTime(&date, &time);
  74.   LunarRet = GetLunarDate(&date, &Ldate);
  75.   week = GetWeek(&date);
  76.   ss=pformat;
  77.   while((ss-pformat)<MAX_LEN && (c=*ss++))
  78.   {
  79.     if(c=='%')
  80.     {
  81.       CutWSTR(wst, 0);
  82.       if((ss-pformat)>=MAX_LEN)
  83.         break;
  84.       switch((z=*ss++))
  85.       {
  86.       case 'y': //阳历二位年
  87.         wsprintf(wst, "%02d", date.year%100);
  88.         wstrcat(pws, wst);
  89.         break;
  90.       case 'Y': //阳历四位年
  91.         wsprintf(wst, "%d", date.year);
  92.         wstrcat(pws, wst);
  93.         break;
  94.       case 'M': //阳历月
  95.         wsprintf(wst, "%02d", date.month);
  96.         wstrcat(pws, wst);
  97.         break;
  98.       case 'D': //阳历日
  99.         wsprintf(wst, "%02d", date.day);
  100.         wstrcat(pws, wst);
  101.         break;
  102.       case 'N': //阴历纪年
  103.         wsprintf(wst, "%t", GetLunarYearID(Ldate.year));
  104.         wstrcat(pws, wst);
  105.         break;
  106.       case 'n': //阴历生肖
  107.         wsprintf(wst, "%t", GetLunarAnimal(Ldate.year));
  108.         wstrcat(pws, wst);
  109.         break;
  110.       case 'm': //阴历月
  111.         z=Ldate.month;
  112.         if(LunarRet != 0 )
  113.         {
  114.           if(z == (LunarRet+1))
  115.             wsAppendChar(wst, 0x95F0);
  116.           if(z >= (LunarRet+1))
  117.             --z;
  118.         }
  119.         if(z==1)
  120.           wsAppendChar(wst, UC_ZHENG);
  121.         else if(z<11)
  122.           wsAppendChar(wst, UC_CHARS[z]);
  123.         else if(z<13)
  124.         {
  125.           wsAppendChar(wst, UC_SHI);
  126.           wsAppendChar(wst, UC_CHARS[z-10]);
  127.         }
  128.         wstrcat(pws, wst);
  129.         break;
  130.       case 'd': //阴历日
  131.         z=Ldate.day;
  132.         if(z<11)
  133.         {
  134.           wsAppendChar(wst, 0x521D); //初
  135.           wsAppendChar(wst, UC_CHARS[z]);
  136.         }
  137.         else if(z<21)
  138.         {
  139.           wsAppendChar(wst, (z==20)?UC_ERSHI:UC_SHI);
  140.           wsAppendChar(wst, UC_CHARS[z-10]);
  141.         }
  142.         else if(z<31)
  143.         {
  144.           wsAppendChar(wst, (z==30)?UC_SANSHI:UC_ERSHI);
  145.           wsAppendChar(wst, UC_CHARS[z-20]);
  146.         }
  147.         wstrcat(pws, wst);
  148.         break;
  149.       case 'H': //时
  150.         wsprintf(wst, "%02d", time.hour);
  151.         wstrcat(pws, wst);
  152.         break;
  153.       case 'F': //分
  154.         wsprintf(wst, "%02d", time.min);
  155.         wstrcat(pws, wst);
  156.         break;
  157.       case 'X': //中文星期
  158.         wsAppendChar(wst, UC_XING);
  159.         wsAppendChar(wst, UC_QI);
  160.       case 'x': //简写中文星期
  161.         wsAppendChar(wst, UC_CHARS[(week>5)?0:(week+1)]);
  162.         wstrcat(pws, wst);
  163.         break;
  164.       case 'W': //完整英文星期
  165.         wsprintf(wst, weekdays[week]);
  166.         wstrcat(pws, wst);
  167.         break;
  168.       case 'w': //简写英文星期
  169.         wsprintf(wst, weekdays[week]);
  170.         CutWSTR(wst, 3);
  171.         wsAppendChar(wst, '.');
  172.         wstrcat(pws, wst);
  173.         break;
  174.       case 'U': //完整英文月份
  175.         wsprintf(wst, enmonth[date.month-1]);
  176.         wstrcat(pws, wst);
  177.         break;
  178.       case 'u': //简写英文月份
  179.         wsprintf(wst, enmonth[date.month-1]);
  180.         CutWSTR(wst, 3);
  181.         wsAppendChar(wst, '.');
  182.         wstrcat(pws, wst);
  183.         break;
  184.       case 'P': //情景模式名
  185.         GetProfileName(wst);
  186.         wstrcat(pws, wst);
  187.         break;
  188.       case 'S': //运营商名
  189.         GetProvider(wst, 0);
  190.         wstrcat(pws, wst);
  191.         break;
  192.       case 'R': //信号等级
  193.         net=RamNet();
  194.         wsprintf(wst, "%c%d", (net->ch_number>=255)?'=':'-', net->power);
  195.         wstrcat(pws, wst);
  196.         break;
  197.       case 'A': //akku 电压v
  198.         z=GetAkku(0,9);
  199.         wsprintf(wst, "%d.%d", z/1000, (z%1000)/10);
  200.         wstrcat(pws, wst);
  201.         break;
  202.       case 'a': //akku 电量 in %
  203.         wsprintf(wst, "%d", *RamCap());
  204.         wstrcat(pws, wst);
  205.         break;
  206.       case 'T': //环境温度 TEV
  207.         z = 3;
  208.         goto TempChange;
  209.       case 't': //电池温度 TBA
  210.         z = 1;
  211. TempChange:
  212.         z = (GetAkku(z,3)-0xAAA);
  213.         wsprintf(wst, "%d.%d", z/10, z%10);
  214.         wstrcat(pws, wst);
  215.         break;
  216.       case 'Q': //显示歌曲名ID3
  217.         if(GetPlayStatus())
  218.         {
  219.           qp=(char *)RamTrack1;
  220.           if(*qp==0xFB)
  221.           {
  222.             qp=(char *)RamTrack2;
  223.             if(*qp!=0xFB)
  224.             {
  225.               if(*qp<0x1F && *(qp-3)!=0xAC) qp+=0xC; //查看过属性或者UNICODE之后会有这个变化
  226.             }
  227.             else qp=(char *)RamTrack3;
  228.           }
  229.           z=qp[0x104];
  230.           if(z==0x3) //utf8
  231.             utf8_2ws(wst, qp, 32);
  232.           else if(z==0x2) //unicode
  233.           {
  234.             z=0;
  235.             s2=(unsigned short *)qp;
  236.             if(s2[0]==0xFEFF) s2++;
  237.             while(z<32 && (cs=s2[z++]))
  238.               wsAppendChar(wst, cs);
  239.           }
  240.           else
  241.             wsprintf(wst, "%t", qp);
  242.           wstrcat(pws, wst);
  243.         }
  244.         break;
  245.       case 'q': //播放器状态
  246.         if((z=GetPlayStatus()))
  247.         {
  248.           if(z==1)
  249.             wsAppendChar(pws, 0xE44F); //0xE44F pause
  250.           else if(z==2)
  251.             wsAppendChar(pws, 0xE450); //0xE44F play
  252.         }
  253.         break;
  254.       case '%':
  255.         wsAppendChar(pws, '%');
  256.         break;
  257.       case '!':
  258.         wsAppendChar(pws, '\r');
  259.         break;
  260.       case '<':
  261.         wsAppendChar(pws, 0xE01E);
  262.         break;
  263.       case '>':
  264.         wsAppendChar(pws, 0xE01D);
  265.         break;
  266.       case '=':
  267.         wsAppendChar(pws, 0xE01F);
  268.         break;
  269.       case 0:
  270.         goto EXIT_ENTRY;
  271.       default:
  272.         wsAppendChar(pws, z);
  273.         break;
  274.       }
  275.     }
  276.     else
  277.     {
  278.       wsAppendChar(pws, c);
  279.     }
  280.   }
  281. EXIT_ENTRY:
  282.   return;
  283. }

复制代码

  1. #define PATCH_ID 0x8800
  2. /*
  3. #pragma enable old_equal_ff
  4. 0061B00: 0xB1C2D3E4,0x00008800,0000000000000000,"\
  5. {p=`SP NSG MP` ver=1.0 cp=BingK id=8800}\
  6. {16 u `Provider MS` ml=64}\
  7. {144 u Subprovier ml=64}\
  8. {272 u `Provider SS` ml=64}",00
  9. #pragma disable old_equal_ff
  10. */
  11.         EXTERN        GetRepString
  12.        
  13.         RSEG        CODE
  14.         CODE32
  15. SubProvider_WS_CODE
  16.         ADD        LR, LR, #4
  17.         MOV        R0, R6
  18.         LDRB        R2, [R5,#7]
  19.         MOV        R1, #0x9
  20.         //B        GetRepString
  21. GET_REP_STR
  22.         STMFD        SP!,{R0-R7,LR}
  23.         MOV        R7, R0
  24.         MOV        R6, R1
  25.         MOV        R0, #PATCH_ID
  26.         SWI        0xC4 //void *GetBuffer(int patch_id);
  27.         CMP        R0, #0
  28.         BEQ        EXIT0
  29.         ADD        R5, R0, #0x10
  30.         CMP        R6, #0x9
  31.         ADDEQ        R1, R5, #128
  32.         BEQ        DO_REP
  33.         SWI        0x42 //int IsScreenSaver(void);
  34.         CMP        R0, #0
  35.         MOVEQ        R1, R5
  36.         ADDNE        R1, R5, #256
  37. DO_REP
  38.         MOV        R0, R7
  39.         BL        GetRepString
  40.         LDMFD        SP!,{R0-R7,PC}
  41. EXIT0
  42.         CMP        R6, #0x9
  43.         BNE        EXIT_PRI
  44.         SWI        0xB6
  45.         CMP        R0, #0
  46.         LDMEQFD        SP!,{R0-R7,PC}
  47.         MOV        R0, R7
  48.         SWI        0x8D //GetProfileName
  49.         LDMFD        SP!,{R0-R7,PC}
  50. EXIT_PRI
  51.         MOV        R0, R7
  52.         MOV        R1, #0
  53.         SWI        0x41 //void GetProvider(WSHDR *ws, int _0);
  54.         LDMFD        SP!,{R0-R7,PC}
  55.        
  56.         RSEG        Subprovider_PO_HOOK:DATA(1)
  57.         DATA
  58.         DCB        0xFF
  59.        
  60.         RSEG        Provider_WS_HOOK
  61.         DATA
  62.         DCD        GET_REP_STR
  63.        
  64.         RSEG        SubProvider_WS_HOOK
  65.         CODE16
  66.         LDR        R0, =SubProvider_WS_CODE
  67.         BLX        R0

  68.         END
复制代码
  1. -carm
  2. -Z(CODE)CODE,DATA_C,DATA_I,DATA_ID,INITTAB=A1563C00-FFFFFFFF
  3. -Z(CODE)Subprovider_PO_HOOK=A03071C4-FFFFFFFF
  4. -Z(CODE)Provider_WS_HOOK=A0423338-FFFFFFFF
  5. -Z(CODE)SubProvider_WS_HOOK=A03071DC-FFFFFFFF
复制代码

[ 本帖最后由 BingK 于 2008-10-31 09:50 编辑 ]

div.r79.txt

1.83 KB, 下载次数: 7

回复 支持 反对

使用道具 举报

发表于 2008-10-31 09:54:42 | 显示全部楼层
啊冰.......别在意.........
回复 支持 反对

使用道具 举报

发表于 2008-10-31 10:37:39 | 显示全部楼层
支持阿冰,,,,,,,,,,,,是到自己动手丰衣足食的时候了
回复 支持 反对

使用道具 举报

发表于 2008-10-31 21:50:54 | 显示全部楼层
很想了解如何把源码编译成65可以用的
回复 支持 反对

使用道具 举报

发表于 2008-10-31 23:29:28 | 显示全部楼层
如何让歌曲名过长时自动滚动?

[ 本帖最后由 Adidas630 于 2008-11-2 23:38 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-11-1 13:38:38 | 显示全部楼层

回复 82# 迷恋你的香水 的帖子

这是我用的

[ 本帖最后由 726 于 2008-11-1 13:40 编辑 ]
20081031_172400.jpg
20081031_172353.jpg
20081031_172406.jpg
20081031_172430.jpg
回复 支持 反对

使用道具 举报

发表于 2008-11-2 12:10:30 | 显示全部楼层

刚刷了MP兼容ELF后,就刷了这个补丁,不知怎么运行它啊

刚刷了MP兼容ELF后,就刷了这个补丁,不知怎么运行它啊
回复 支持 反对

使用道具 举报

发表于 2008-11-2 12:11:13 | 显示全部楼层

配置文件在哪

配置文件在哪
回复 支持 反对

使用道具 举报

发表于 2008-11-2 12:13:20 | 显示全部楼层

回复 93# yzhfei 的帖子

找去!

[ 本帖最后由 迷恋你的香水 于 2008-11-2 12:30 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-2 12:28:42 | 显示全部楼层

回复 94# 迷恋你的香水 的帖子


                               
登录/注册后可看大图
回复 支持 反对

使用道具 举报

发表于 2008-11-2 12:29:42 | 显示全部楼层

回复 95# BingK 的帖子

wap12::ii wap56::ii 凑字
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-20 13:17:09 | 显示全部楼层
V1.3 UPUP
回复 支持 反对

使用道具 举报

发表于 2008-11-20 14:09:40 | 显示全部楼层
能否显示歌曲播放时间?
回复 支持 反对

使用道具 举报

发表于 2008-11-20 14:47:38 | 显示全部楼层

回复 98# Adidas630 的帖子

不能!
使用1。3了

[ 本帖最后由 迷恋你的香水 于 2008-11-20 14:50 编辑 ]
2.jpg
回复 支持 反对

使用道具 举报

发表于 2008-11-20 16:29:42 | 显示全部楼层
撤消之,再刷之....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 23:01

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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