I have noticed that my Philips "guide" button is interpreted as "live tv" by the TiVo when I have patched ircatch.o.
In the module, I have located a translation table at .data:244, file offset 0x4864, which is used to map Philips native device codes to common "EVT_" codes:
Code:
2488: 00108880 sll s1,s0,0x2
248c: 3c020000 lui v0,0x0
248c: R_MIPS_HI16 .data
2490: 00511021 addu v0,v0,s1
2494: 8c420244 lw v0,580(v0)
2494: R_MIPS_LO16 .data
2498: 30a3000f andi v1,a1,0xf
249c: 2e040010 sltiu a0,s0,16
24a0: afa20010 sw v0,16(sp)
The table is 0x400 bytes long, taking 4 bytes for each possible input code. Judging from a quick spot check, the input codes, used as an index into the array, correspond with the "OBC" codes found in JP1 remote definition files:
Code:
OBC 0x00 (0) = 0x01 EVT_TIVO
OBC 0x01 (1) = 0x01 EVT_TIVO
OBC 0x02 (2) = 0x01 EVT_TIVO
OBC 0x03 (3) = 0x01 EVT_TIVO
OBC 0x04 (4) = 0x01 EVT_TIVO
OBC 0x05 (5) = 0x01 EVT_TIVO
OBC 0x06 (6) = 0x01 EVT_TIVO
OBC 0x07 (7) = 0x01 EVT_TIVO
OBC 0x08 (8) = 0x01 EVT_TIVO
OBC 0x09 (9) = 0x01 EVT_TIVO
OBC 0x0a (10) = 0x01 EVT_TIVO
OBC 0x0b (11) = 0x01 EVT_TIVO
OBC 0x0c (12) = 0x01 EVT_TIVO
OBC 0x0d (13) = 0x01 EVT_TIVO
OBC 0x0e (14) = 0x01 EVT_TIVO
OBC 0x0f (15) = 0x01 EVT_TIVO
OBC 0x10 (16) = 0x29 EVT_TVPOWER
OBC 0x11 (17) = 0x10 EVT_LIVETV
OBC 0x12 (18) = 0x14 EVT_MENU
OBC 0x13 (19) = 0x12 EVT_DISPLAY
OBC 0x14 (20) = 0x15 EVT_DVDMENU
OBC 0x15 (21) = 0x18 EVT_RIGHT
OBC 0x16 (22) = 0x16 EVT_DOWN
OBC 0x17 (23) = 0x17 EVT_LEFT
OBC 0x18 (24) = 0x0b EVT_THUMBSDOWN
OBC 0x19 (25) = 0x19 EVT_SELECT
OBC 0x1a (26) = 0x0a EVT_THUMBSUP
OBC 0x1b (27) = 0x28 EVT_MUTE
OBC 0x1c (28) = 0x26 EVT_VOLUMEUP
OBC 0x1d (29) = 0x27 EVT_VOLUMEDOWN
OBC 0x1e (30) = 0x0e EVT_CHANNELUP
OBC 0x1f (31) = 0x0f EVT_CHANNELDOWN
OBC 0x20 (32) = 0x02 EVT_RECORD
OBC 0x21 (33) = 0x03 EVT_PLAY
OBC 0x22 (34) = 0x05 EVT_REVERSE
OBC 0x23 (35) = 0x04 EVT_PAUSE
OBC 0x24 (36) = 0x06 EVT_FORWARD
OBC 0x25 (37) = 0x08 EVT_SLOW
OBC 0x26 (38) = 0x07 EVT_REPLAY
OBC 0x27 (39) = 0x09 EVT_ADVANCE
OBC 0x28 (40) = 0x1c EVT_NUM1
OBC 0x29 (41) = 0x1d EVT_NUM2
OBC 0x2a (42) = 0x1e EVT_NUM3
OBC 0x2b (43) = 0x1f EVT_NUM4
OBC 0x2c (44) = 0x20 EVT_NUM5
OBC 0x2d (45) = 0x21 EVT_NUM6
OBC 0x2e (46) = 0x22 EVT_NUM7
OBC 0x2f (47) = 0x23 EVT_NUM8
OBC 0x30 (48) = 0x24 EVT_NUM9
OBC 0x31 (49) = 0x1b EVT_NUM0
OBC 0x32 (50) = 0x0c EVT_CLEAR
OBC 0x33 (51) = 0x0d EVT_ENTER
OBC 0x34 (52) = 0x2a EVT_TVINPUT
OBC 0x35 (53) = 0x1a EVT_STANDBY
OBC 0x36 (54) = 0x11 EVT_GUIDE
OBC 0x44 (68) = 0x2c EVT_WINDOW
OBC 0x45 (69) = 0x2e EVT_SKIPPED_2
OBC 0x46 (70) = 0x34 EVT_DVDTOPMENU
OBC 0x47 (71) = 0x35 EVT_RETURN
OBC 0x48 (72) = 0x31 EVT_STOP
OBC 0x49 (73) = 0x3f EVT_VCRPLUS
Presumably, my remote is generating OBC 0x11 = EVT_LIVETV (0x10) instead of EVT_GUIDE (0x11). To fix this, I might change the word EVT_LIVETV (0x10) to EVT_GUIDE (0x11) at file offset 0x48a8 in ircatch.o.