66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
#ifndef _LIBGCCVB_WORLD_H
|
|
#define _LIBGCCVB_WORLD_H
|
|
|
|
|
|
#include "types.h"
|
|
#include "video.h"
|
|
|
|
|
|
typedef struct WORLD
|
|
{
|
|
u16 head;
|
|
u16 gx;
|
|
s16 gp;
|
|
u16 gy;
|
|
u16 mx;
|
|
s16 mp;
|
|
u16 my;
|
|
u16 w;
|
|
u16 h;
|
|
u16 param;
|
|
u16 ovr;
|
|
u16 spacer[5];
|
|
} WORLD;
|
|
|
|
extern WORLD* const WA;
|
|
|
|
/* "vbSetWorld" header flags */
|
|
/* (OR these together to build a World Header) */
|
|
|
|
#define WRLD_ON 0xC000 // There_are_two_screens!__USE_THEM!!!
|
|
#define WRLD_LON 0x8000
|
|
#define WRLD_RON 0x4000
|
|
#define WRLD_OBJ 0x3000
|
|
#define WRLD_AFFINE 0x2000
|
|
#define WRLD_HBIAS 0x1000
|
|
#define WRLD_BGMAP 0x0000
|
|
|
|
#define WRLD_1x1 0x0000
|
|
#define WRLD_1x2 0x0100
|
|
#define WRLD_1x4 0x0200
|
|
#define WRLD_1x8 0x0300
|
|
#define WRLD_2x1 0x0400
|
|
#define WRLD_2x2 0x0500
|
|
#define WRLD_2x4 0x0600
|
|
#define WRLD_4x2 0x0900
|
|
#define WRLD_4x1 0x0800
|
|
#define WRLD_8x1 0x0C00
|
|
|
|
#define WRLD_OVR 0x0080
|
|
#define WRLD_END 0x0040
|
|
|
|
/* Macros for world manipulation */
|
|
// (Obsoleted by the WA array of WORLD structures...)
|
|
#define WORLD_HEAD(n,head) WAM[(n << 4)] = head
|
|
#define WORLD_GSET(n,gx,gp,gy) WAM[(n << 4) + 1] = gx; WAM[(n << 4) + 2] = gp; WAM[(n << 4) + 3] = gy
|
|
#define WORLD_MSET(n,mx,mp,my) WAM[(n << 4) + 4] = mx; WAM[(n << 4) + 5] = mp; WAM[(n << 4) + 6] = my
|
|
#define WORLD_SIZE(n,w,h) WAM[(n << 4) + 7] = w; WAM[(n << 4) + 8] = h
|
|
#define WORLD_PARAM(n,p) WAM[(n << 4) + 9] = ((p - 0x20000) >> 1) & 0xFFF0
|
|
#define WORLD_OVER(n,o) WAM[(n << 4) + 10] = o
|
|
|
|
/***** World Functions *****/
|
|
// (Obsoleted by the WORLD_* macros...)
|
|
void vbSetWorld (s16 nw, u16 header, u16 gx, s16 gp, u16 gy, u16 mx, s16 mp, u16 my, u16 width, u16 height);
|
|
|
|
|
|
#endif |