projects
/
gbajam21
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added input handling
[gbajam21]
/
src
/
gamescr.c
diff --git
a/src/gamescr.c
b/src/gamescr.c
index
30ae380
..
f927cee
100644
(file)
--- a/
src/gamescr.c
+++ b/
src/gamescr.c
@@
-5,6
+5,7
@@
#include "data.h"
#include "util.h"
#include "intr.h"
#include "data.h"
#include "util.h"
#include "intr.h"
+#include "input.h"
#include "debug.h"
static void draw_tunnel(void);
#include "debug.h"
static void draw_tunnel(void);
@@
-12,6
+13,7
@@
static void draw_tunnel(void);
static int nframes, backbuf;
static uint16_t *vram[] = { (uint16_t*)VRAM_LFB_FB0_ADDR, (uint16_t*)VRAM_LFB_FB1_ADDR };
static unsigned char *tex;
static int nframes, backbuf;
static uint16_t *vram[] = { (uint16_t*)VRAM_LFB_FB0_ADDR, (uint16_t*)VRAM_LFB_FB1_ADDR };
static unsigned char *tex;
+static uint16_t bnstate;
void gamescr(void)
{
void gamescr(void)
{
@@
-36,10
+38,14
@@
void gamescr(void)
tex = iwram_sbrk(32 * 32);
memcpy(tex, tuncross_pixels, 32 * 32);
tex = iwram_sbrk(32 * 32);
memcpy(tex, tuncross_pixels, 32 * 32);
+ select_input(BN_DPAD);
+
nframes = 0;
for(;;) {
backbuf = ++nframes & 1;
nframes = 0;
for(;;) {
backbuf = ++nframes & 1;
+ bnstate = get_input();
+
draw_tunnel();
vblperf_end();
draw_tunnel();
vblperf_end();
@@
-52,22
+58,30
@@
void gamescr(void)
__attribute__((noinline, target("arm"), section(".iwram")))
static void draw_tunnel(void)
{
__attribute__((noinline, target("arm"), section(".iwram")))
static void draw_tunnel(void)
{
- int i, j, tx, ty, angle, depth, zoffs, uoffs;
+ static int uoffs;
+ int i, j, tx, ty, angle, depth, zoffs;
uint16_t pptop, ppbot;
uint16_t *top, *bot;
uint32_t tun, *tunptr;
zoffs = nframes;
uint16_t pptop, ppbot;
uint16_t *top, *bot;
uint32_t tun, *tunptr;
zoffs = nframes;
- uoffs = 0;
+
+ if(bnstate & BN_LEFT) uoffs++;
+ if(bnstate & BN_RIGHT) uoffs--;
top = vram[backbuf];
bot = vram[backbuf] + 159 * 240 / 2;
tunptr = tunmap;
for(i=0; i<80; i++) {
top = vram[backbuf];
bot = vram[backbuf] + 159 * 240 / 2;
tunptr = tunmap;
for(i=0; i<80; i++) {
+#ifdef VBLBAR
top++;
bot++;
tunptr++;
top++;
bot++;
tunptr++;
+
for(j=1; j<240/2; j++) {
for(j=1; j<240/2; j++) {
+#else
+ for(j=0; j<240/2; j++) {
+#endif
tun = *tunptr++;
angle = tun & 0xff;
tun = *tunptr++;
angle = tun & 0xff;
@@
-75,7
+89,7
@@
static void draw_tunnel(void)
tx = ((angle >> 1) + uoffs) & 0x1f;
ty = ((depth >> 1) + zoffs) & 0x1f;
pptop = tex[(ty << 5) + tx];
tx = ((angle >> 1) + uoffs) & 0x1f;
ty = ((depth >> 1) + zoffs) & 0x1f;
pptop = tex[(ty << 5) + tx];
- tx = ((angle >> 1) - uoffs) & 0x1f;
+ tx = ~((angle >> 1) - uoffs) & 0x1f;
ppbot = tex[(ty << 5) + tx];
angle = (tun >> 16) & 0xff;
ppbot = tex[(ty << 5) + tx];
angle = (tun >> 16) & 0xff;
@@
-83,7
+97,7
@@
static void draw_tunnel(void)
tx = ((angle >> 1) + uoffs) & 0x1f;
ty = ((depth >> 1) + zoffs) & 0x1f;
pptop |= (uint16_t)tex[(ty << 5) + tx] << 8;
tx = ((angle >> 1) + uoffs) & 0x1f;
ty = ((depth >> 1) + zoffs) & 0x1f;
pptop |= (uint16_t)tex[(ty << 5) + tx] << 8;
- tx = ((angle >> 1) - uoffs) & 0x1f;
+ tx = ~((angle >> 1) - uoffs) & 0x1f;
ppbot |= (uint16_t)tex[(ty << 5) + tx] << 8;
*top++ = pptop;
ppbot |= (uint16_t)tex[(ty << 5) + tx] << 8;
*top++ = pptop;