summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f6eb0b1)
The previous change wrongly introduced resolution into the calculation
which is unneeded because input is not pixel coordinates.
-void plat_get_psx_resolution(int *xres, int *yres)
-{
- *xres = psx_w;
- *yres = psx_h;
-}
-
void plat_trigger_vibrate(int pad, int low, int high)
{
if (!rumble_cb)
void plat_trigger_vibrate(int pad, int low, int high)
{
if (!rumble_cb)
extern void GPUupdateLace(void);
extern long GPUfreeze(uint32_t, void *);
extern void GPUvBlank(int, int);
extern void GPUupdateLace(void);
extern long GPUfreeze(uint32_t, void *);
extern void GPUvBlank(int, int);
+extern void GPUgetScreenInfo(int *y, int *base_hres);
extern void GPUrearmedCallbacks(const struct rearmed_cbs *cbs);
extern void GPUrearmedCallbacks(const struct rearmed_cbs *cbs);
DIRECT_GPU(GPUdmaChain),
DIRECT_GPU(GPUfreeze),
DIRECT_GPU(GPUvBlank),
DIRECT_GPU(GPUdmaChain),
DIRECT_GPU(GPUfreeze),
DIRECT_GPU(GPUvBlank),
+ DIRECT_GPU(GPUgetScreenInfo),
DIRECT_GPU(GPUrearmedCallbacks),
DIRECT_GPU(GPUdisplayText),
DIRECT_GPU(GPUrearmedCallbacks),
DIRECT_GPU(GPUdisplayText),
-void plat_get_psx_resolution(int *xres, int *yres)
-{
- *xres = psx_w;
- *yres = psx_h;
-}
-
#define MAX_LAG_FRAMES 3
#define tvdiff(tv, tv_old) \
#define MAX_LAG_FRAMES 3
#define tvdiff(tv, tv_old) \
GPUgetScreenPic GPU_getScreenPic;
GPUshowScreenPic GPU_showScreenPic;
GPUvBlank GPU_vBlank;
GPUgetScreenPic GPU_getScreenPic;
GPUshowScreenPic GPU_showScreenPic;
GPUvBlank GPU_vBlank;
+GPUgetScreenInfo GPU_getScreenInfo;
CDRinit CDR_init;
CDRshutdown CDR_shutdown;
CDRinit CDR_init;
CDRshutdown CDR_shutdown;
long CALLBACK GPU__getScreenPic(unsigned char *pMem) { return -1; }
long CALLBACK GPU__showScreenPic(unsigned char *pMem) { return -1; }
void CALLBACK GPU__vBlank(int val) {}
long CALLBACK GPU__getScreenPic(unsigned char *pMem) { return -1; }
long CALLBACK GPU__showScreenPic(unsigned char *pMem) { return -1; }
void CALLBACK GPU__vBlank(int val) {}
+void CALLBACK GPU__getScreenInfo(int *y, int *base_hres) {}
#define LoadGpuSym1(dest, name) \
LoadSym(GPU_##dest, GPU##dest, name, TRUE);
#define LoadGpuSym1(dest, name) \
LoadSym(GPU_##dest, GPU##dest, name, TRUE);
LoadGpuSym0(getScreenPic, "GPUgetScreenPic");
LoadGpuSym0(showScreenPic, "GPUshowScreenPic");
LoadGpuSym0(vBlank, "GPUvBlank");
LoadGpuSym0(getScreenPic, "GPUgetScreenPic");
LoadGpuSym0(showScreenPic, "GPUshowScreenPic");
LoadGpuSym0(vBlank, "GPUvBlank");
+ LoadGpuSym0(getScreenInfo, "GPUgetScreenInfo");
LoadGpuSym0(configure, "GPUconfigure");
LoadGpuSym0(test, "GPUtest");
LoadGpuSym0(about, "GPUabout");
LoadGpuSym0(configure, "GPUconfigure");
LoadGpuSym0(test, "GPUtest");
LoadGpuSym0(about, "GPUabout");
stdpar[2] = pad->buttonStatus & 0xff;
stdpar[3] = pad->buttonStatus >> 8;
stdpar[2] = pad->buttonStatus & 0xff;
stdpar[3] = pad->buttonStatus >> 8;
- int absX = pad->absoluteX;
+ int absX = pad->absoluteX; // 0-1023
int absY = pad->absoluteY;
int absY = pad->absoluteY;
- int xres = 256, yres = 240;
if (absX == 65536 || absY == 65536) {
stdpar[4] = 0x01;
if (absX == 65536 || absY == 65536) {
stdpar[4] = 0x01;
stdpar[7] = 0x00;
}
else {
stdpar[7] = 0x00;
}
else {
- plat_get_psx_resolution(&xres, &yres);
- int x = 0x5a - (xres - 256) / 3 + (((xres - 256) / 3 + 356) * absX >> 10);
- int y = 0x20 + (yres * absY >> 10);
+ int y_ofs = 0, yres = 240;
+ GPU_getScreenInfo(&y_ofs, &yres);
+ int y_top = (Config.PsxType ? 0x30 : 0x19) + y_ofs;
+ int w = Config.PsxType ? 385 : 378;
+ int x = 0x40 + (w * absX >> 10);
+ int y = y_top + (yres * absY >> 10);
+ //printf("%3d %3d %4x %4x\n", absX, absY, x, y);
stdpar[4] = x;
stdpar[5] = x >> 8;
stdpar[4] = x;
stdpar[5] = x >> 8;
typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);\r
typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);\r
typedef void (CALLBACK* GPUvBlank)(int, int);\r
typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);\r
typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);\r
typedef void (CALLBACK* GPUvBlank)(int, int);\r
+typedef void (CALLBACK* GPUgetScreenInfo)(int *, int *);\r
\r
// GPU function pointers\r
extern GPUupdateLace GPU_updateLace;\r
\r
// GPU function pointers\r
extern GPUupdateLace GPU_updateLace;\r
extern GPUgetScreenPic GPU_getScreenPic;\r
extern GPUshowScreenPic GPU_showScreenPic;\r
extern GPUvBlank GPU_vBlank;\r
extern GPUgetScreenPic GPU_getScreenPic;\r
extern GPUshowScreenPic GPU_showScreenPic;\r
extern GPUvBlank GPU_vBlank;\r
+extern GPUgetScreenInfo GPU_getScreenInfo;\r
\r
// CD-ROM Functions\r
typedef long (CALLBACK* CDRinit)(void);\r
\r
// CD-ROM Functions\r
typedef long (CALLBACK* CDRinit)(void);\r
+void GPUgetScreenInfo(int *y, int *base_hres)
+{
+ *y = gpu.screen.y;
+ *base_hres = gpu.screen.vres;
+ if (gpu.status & PSX_GPU_STATUS_DHEIGHT)
+ *base_hres >>= 1;
+}
+
#include "../../frontend/plugin_lib.h"
void GPUrearmedCallbacks(const struct rearmed_cbs *cbs)
#include "../../frontend/plugin_lib.h"
void GPUrearmedCallbacks(const struct rearmed_cbs *cbs)
long GPUopen(unsigned long *disp, char *cap, char *cfg);
long GPUclose(void);
void GPUvBlank(int is_vblank, int lcf);
long GPUopen(unsigned long *disp, char *cap, char *cfg);
long GPUclose(void);
void GPUvBlank(int is_vblank, int lcf);
+void GPUgetScreenInfo(int *y, int *base_hres);
void GPUrearmedCallbacks(const struct rearmed_cbs *cbs_);
#ifdef __cplusplus
void GPUrearmedCallbacks(const struct rearmed_cbs *cbs_);
#ifdef __cplusplus