VERSIÓ 1.0.1

- [FIX] view.clip() calculaba mal el ample i el alt de la zona clipada.
- [FIX] view.origin() funcionava al reves.
This commit is contained in:
2025-06-17 11:34:30 +02:00
parent 5e24117266
commit 2a4195c839
2 changed files with 10 additions and 7 deletions

View File

@@ -268,7 +268,10 @@ int surfh(uint8_t surface) {
void recalculate_clip() void recalculate_clip()
{ {
ds::clip[0] = ds::clp[0]; ds::clip[1] = ds::clp[1]; ds::clip[2] = ds::clp[2]-ds::clp[0]-1; ds::clip[3] = ds::clp[3]-ds::clp[1]-1; ds::clip[0] = ds::clp[0];
ds::clip[1] = ds::clp[1];
ds::clip[2] = ds::clp[2]+ds::clp[0]-1;
ds::clip[3] = ds::clp[3]+ds::clp[1]-1;
if (ds::clip[0]<0) ds::clip[0]=0; if (ds::clip[0]<0) ds::clip[0]=0;
if (ds::clip[1]<0) ds::clip[1]=0; if (ds::clip[1]<0) ds::clip[1]=0;
if (ds::clip[2]>=dest_surface->w) ds::clip[2]=dest_surface->w-1; if (ds::clip[2]>=dest_surface->w) ds::clip[2]=dest_surface->w-1;
@@ -519,7 +522,7 @@ int main(int argc,char*argv[]){
} }
void simple_pset(int x, int y, uint8_t color) { void simple_pset(int x, int y, uint8_t color) {
x -= ds::origin[0]; y -= ds::origin[1]; x += ds::origin[0]; y += ds::origin[1];
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return; if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
if (x < 0 || x >= dest_surface->w || y < 0 || y >= dest_surface->h) return; if (x < 0 || x >= dest_surface->w || y < 0 || y >= dest_surface->h) return;
DEST(x, y) = color; DEST(x, y) = color;
@@ -623,7 +626,7 @@ void palt(uint8_t col, bool t) {
*/ */
void pset(int x, int y) { void pset(int x, int y) {
x -= ds::origin[0]; y -= ds::origin[1]; x += ds::origin[0]; y += ds::origin[1];
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return; if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
do_pset(x,y); do_pset(x,y);
} }
@@ -634,7 +637,7 @@ void pset(int x, int y, uint8_t color) {
} }
uint8_t pget(int x, int y) { uint8_t pget(int x, int y) {
x -= ds::origin[0]; y -= ds::origin[1]; x += ds::origin[0]; y += ds::origin[1];
//if (x < 0 || x > (dest_surface->w-1) || y < 0 || y > (dest_surface->h-1)) return 0; //if (x < 0 || x > (dest_surface->w-1) || y < 0 || y > (dest_surface->h-1)) return 0;
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return 0; if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return 0;
return DEST(x, y); return DEST(x, y);
@@ -1073,7 +1076,7 @@ void map() { //int celx, int cely, int sx, int sy, uint8_t celw, uint8_t celh, u
int celx = 0; int celx = 0;
int cely = 0; int cely = 0;
//if (celw <= 0 || celh <= 0 || celw >= TILES_WIDTH || celh >= TILES_HEIGHT) return; //if (celw <= 0 || celh <= 0 || celw >= TILES_WIDTH || celh >= TILES_HEIGHT) return;
int sx = -ds::origin[0]; int sy = -ds::origin[1]; int sx = ds::origin[0]; int sy = ds::origin[1];
if (sx+celw*8 < ds::clip[0] || sx > ds::clip[2] || sy+celh*8 < ds::clip[1] || sy > ds::clip[3]) return; if (sx+celw*8 < ds::clip[0] || sx > ds::clip[2] || sy+celh*8 < ds::clip[1] || sy > ds::clip[3]) return;
if (sx<0) { if (sx<0) {
int diff = -sx/8; int diff = -sx/8;
@@ -1087,7 +1090,7 @@ void map() { //int celx, int cely, int sx, int sy, uint8_t celw, uint8_t celh, u
celh -= diff; celh -= diff;
sy += diff*8; sy += diff*8;
} }
sx += ds::origin[0]; sy += ds::origin[1]; sx -= ds::origin[0]; sy -= ds::origin[1];
for (int y=0; y<celh; ++y) { for (int y=0; y<celh; ++y) {
for (int x=0; x<celw; ++x) { for (int x=0; x<celw; ++x) {
spr(mget(celx+x, cely+y), sx+x*8, sy+y*8); spr(mget(celx+x, cely+y), sx+x*8, sy+y*8);

View File

@@ -1,3 +1,3 @@
#pragma once #pragma once
#define MINI_VERSION "1.0 RC4" #define MINI_VERSION "1.0.1"