source: branches/reyalp-ptp-live/platform/a540/sub/100b/lib.c @ 1836

Revision 1836, 4.9 KB checked in by reyalp, 13 months ago (diff)

make a540 screen functions use equivalent values for _proper and regular

  • Property svn:eol-style set to native
Line 
1#include "platform.h"
2#include "keyboard.h"
3#include "stdlib.h"
4
5/*
6void *hook_raw_fptr()
7{
8    return (void*)0x34C50;
9}
10
11void *hook_raw_ret_addr()
12{
13    return (void*)0xFFCC7FF0;
14}
15*/
16
17char *hook_raw_image_addr()
18{
19    return (char*)0x105B8AC0; // OK (find on ".crw")
20   
21}
22
23long hook_raw_size()
24{
25    return 0x75A8F0; // OK (find on ".crw")
26}
27
28/*
29void *vid_get_viewport_live_fb()
30{
31    return (void*)0;
32}
33*/
34
35void *vid_get_bitmap_fb()
36{
37    return (void*)0x103C79A0; // OK (find in _CreatePhysicalVram)
38}
39
40void *vid_get_viewport_fb()
41{
42    return (void*)0x105F17A0; // OK (find on "VRAM Address  : %p")
43}
44
45void *vid_get_viewport_fb_d()
46{
47// from ewavr
48  int x=(*(int*)0x63AD0); // found in sub_FFD25770
49  return (void *)x;
50// if we start camera in PB mode with movie on display, this pointer will be NULL
51// _fb isn't valid data, but at least it doesn't crash
52//  return (void*) (x ? (void *)x : vid_get_viewport_fb()) ;
53}
54
55int vid_get_viewport_width_proper() {
56    // fake 1:1 mode
57    if((mode_get()&MODE_SHOOTING_MASK) == MODE_PORTRAIT) {
58        return 528;
59    }
60    return ((mode_get()&MODE_MASK) == MODE_PLAY)?704:*(int*)0x32C68;
61}
62int vid_get_viewport_width() {
63    return vid_get_viewport_width_proper()/2;
64}
65
66int vid_get_viewport_height_proper() {
67    // fake 16:9 mode
68    if((mode_get()&MODE_SHOOTING_MASK) == MODE_LANDSCAPE) {
69        return 180;
70    }
71    return ((mode_get()&MODE_MASK) == MODE_PLAY)?240:*(int*)(0x32C68+4);
72}
73
74long vid_get_viewport_height() {
75    return vid_get_viewport_height_proper();
76}
77
78int review_fullscreen_mode(){ //from 710 added
79 char r;
80 get_parameter_data(53, &r, 1);
81 return  r==0;
82}
83
84int postreview_fullscreen_mode(){ //from 710 added
85 char r;
86 get_parameter_data(54, &r, 1);
87 return  r==0;
88}
89
90
91static int file_size_table[3][5]={{3110,2562,1666,1057,288},
92                                  {1954,1441, 928, 608,176},
93                                  {960,  736, 480, 320,112}};  // in KB   // from 710 added
94                                       
95                                 
96long raw_shoot_avail(){ // from 710 added
97 long jpegs,size,quality;
98 jpegs=atoi((char*)0x6E8D0); // orig.0x7BD98 find -> a9999
99 get_property_case(23, (void *)&quality, 4);
100 get_property_case(24, (void *)&size, 4);
101 if ((size>4) || (quality>2)) return 0;
102 return (file_size_table[quality][size]*jpegs)/(file_size_table[quality][size]+(hook_raw_size()>>10));
103}
104
105
106int mf_slider_active() // from 710 added
107{
108 return *(long*)0x6C8B0==0x100; // orig.0x798F0  found in "ControlSwitcher.c"
109}
110
111void *vid_get_viewport_live_fb() // from 710 added
112{
113   // return (void*)0x10670ee0;
114    void **fb=(void **)0x5288;
115    unsigned char buff = *((unsigned char*)0x5298);
116    if (buff == 0) {
117        buff = 2;
118    }
119    else {
120        buff--;
121    }
122    return fb[buff];
123}
124
125
126char *camera_jpeg_count_str()
127{
128    return (char*)0x6E8D0 ; // from 700 added orig. 0x78688
129}
130
131// PTP display stuff
132int vid_get_palette_type() { return 1; }
133int vid_get_palette_size() { return 16*4; }
134
135void *vid_get_bitmap_active_palette() {
136    return (void *)0x634E0; // GetPaletteFromPhysicalScreen
137}
138
139void *vid_get_bitmap_active_buffer()
140{
141    return (void*)(*(int*)0x5ED0); // FFD23420 DisplayPhysicalScreenWithYUVPalette
142}
143
144// TODO - this should go away
145//int vid_get_viewport_max_height()               { return 528; } // in 640x480 movie mode
146
147int vid_get_viewport_logical_height() {
148    // except for stitch, always full screen
149    int m = mode_get();
150    if((m&MODE_MASK) != MODE_PLAY && ((m&MODE_SHOOTING_MASK) == MODE_STITCH || (m&MODE_SHOOTING_MASK) == MODE_LANDSCAPE)) {
151        return 240;
152    }
153    return vid_get_viewport_height_proper();
154}
155int vid_get_viewport_logical_width() {
156    // except for stitch, always full screen
157    int m = mode_get();
158    if((m&MODE_MASK) != MODE_PLAY && ((m&MODE_SHOOTING_MASK) == MODE_STITCH || (m&MODE_SHOOTING_MASK) == MODE_PORTRAIT)) {
159        return 704;
160    }
161    return vid_get_viewport_width_proper();
162}
163
164int vid_get_viewport_display_xoffset() {
165    int val=0;
166    int m = mode_get();
167    if((m&MODE_MASK) != MODE_PLAY && (m&MODE_SHOOTING_MASK) == MODE_STITCH) {
168        short dir=0;
169        short seq=0;
170        get_property_case(PROPCASE_STITCH_DIRECTION,&dir,sizeof(dir));
171        get_property_case(PROPCASE_STITCH_SEQUENCE,&seq,sizeof(seq));
172        // overall stitch window is 3/4 screen width, centered
173        // live part is 1/2, so margin is either 1/8th or 3/8th
174        if(dir==0) {
175            val = seq?132:44;
176        } else {
177            val = seq?44:132;
178        }
179    } else if((m&MODE_SHOOTING_MASK) == MODE_PORTRAIT) {
180        val = 44;
181    }
182    return val;
183}
184
185int vid_get_viewport_xoffset() {
186    if((mode_get()&MODE_SHOOTING_MASK) == MODE_PORTRAIT) {
187       return 44;
188    }
189    return 0;
190}
191
192int vid_get_viewport_display_yoffset() {
193    int m = mode_get();
194    if((m&MODE_SHOOTING_MASK) == MODE_LANDSCAPE) {
195       return 30;
196    }
197    return ((m&MODE_MASK) != MODE_PLAY && (m&MODE_SHOOTING_MASK) == MODE_STITCH)?60:0; // window is 120, centered in 240 screen
198}
199
200int vid_get_viewport_yoffset() {
201    if((mode_get()&MODE_SHOOTING_MASK) == MODE_LANDSCAPE) {
202       return 30;
203    }
204    return 0;
205}
Note: See TracBrowser for help on using the repository browser.