wonky sweep
[gbajam21] / src / gamescr.c
index 8d5f344..aef4966 100644 (file)
@@ -78,15 +78,6 @@ void gamescr(void)
                vblperf_end();
                wait_vblank();
                present(backbuf);
-
-               tunrot = nframes;
-               bgmat[0] = (COS(tunrot) * 140) >> 8;
-               bgmat[1] = (-SIN(tunrot) * 140) >> 8;
-               bgmat[2] = (SIN(tunrot) * 140) >> 8;
-               bgmat[3] = (COS(tunrot) * 140) >> 8;
-               bgx = (120 << 8) - bgmat[0] * 120 + bgmat[1] * -80;
-               bgy = (80 << 8) - bgmat[2] * 120 + bgmat[3] * -80;
-
                vblperf_begin();
        }
 }
@@ -94,29 +85,36 @@ void gamescr(void)
 __attribute__((noinline, target("arm"), section(".iwram")))
 static void draw_tunnel(void)
 {
-       int i, j, tx, ty, angle, depth, zoffs, uoffs;
+       int i, j, tx, ty, angle, depth, zoffs, uoffs, flip;
+       int tunsweep;
        uint16_t pptop, ppbot;
        uint16_t *top, *bot;
        uint32_t tun, *tunptr;
 
+       tunsweep = (SIN(nframes) >> 2) + 64;
+       if(tunsweep > 127) tunsweep = 127;
+
+       flip = tunsweep >= 64;
+
+       tunsweep = (tunsweep & 0x3f);
+       if(tunsweep >= 32) tunsweep = 63 - tunsweep;
+
        zoffs = nframes;
 
        uoffs = tunrot >> 1;
 
-       top = vram[backbuf] + 20;
-       bot = vram[backbuf] + 159 * 240 / 2 + 20;
-       tunptr = tunmap;
+       top = vram[backbuf];
+       bot = vram[backbuf] + 159 * 240 / 2;
+       tunptr = tunmap + tunsweep * 9600;
+       if(flip) tunptr += 240/2;
        for(i=0; i<80; i++) {
-               for(j=0; j<160/2; j++) {
-#ifdef VBLBAR
-                       if(j == 160/4) {
-                               tunptr++;
-                               top++;
-                               bot++;
-                               continue;
+               for(j=0; j<240/2; j++) {
+                       if(flip) {
+                               tun = *--tunptr;
+                               tun = (tun >> 16) | (tun << 16);
+                       } else {
+                               tun = *tunptr++;
                        }
-#endif
-                       tun = *tunptr++;
 
                        angle = tun & 0xff;
                        depth = (tun >> 8) & 0xff;
@@ -137,8 +135,9 @@ static void draw_tunnel(void)
                        *top++ = pptop;
                        *bot++ = ppbot;
                }
-               top += 40;
-               bot -= 240 - 40;
+               bot -= 240;
+
+               if(flip) tunptr += 240;
        }
 }
 
@@ -149,13 +148,6 @@ static void vblank(void)
        int16_t mat[4];
        static short gate_speed;
 
-       REG_BG2PA = bgmat[0];
-       REG_BG2PB = bgmat[1];
-       REG_BG2PC = bgmat[2];
-       REG_BG2PD = bgmat[3];
-       REG_BG2X = bgx;
-       REG_BG2Y = bgy;
-
        bnstate = ~REG_KEYINPUT;
        if(bnstate & BN_DPAD) {
                if(gate_speed < 5) {