PAlib: Fichier source de PA_Mode7.h

Page principale | Modules | Liste des fichiers | Portée globale | Rechercher

# PA_Mode7.h

    00001 #ifndef PA_MODE7
    00002 #define PA_MODE7
    00003
    00004
    00005
    00006 #include "PA_Tile.h"
    00007
    00008
    00009 // Mode 7 functions !!
    00010
    00011 void hbl_mode7(void);
    00012
    00013 extern const s32 DIV[160];
    00014
    00015
    00016 #define M7_D_SH        7 // focal shift
    00017 #define M7O_NORM       1 // object renormalization shift (by /2)
    00018
    00019 // view frustrum limits
    00020 #define M7_NEAR     16
    00021 #define M7_FAR     384
    00022 #define M7_LEFT   -120
    00023 #define M7_RIGHT   120
    00024 #define M7_TOP      80
    00025 #define M7_BOTTOM  -80
    00026
    00027 // the background uses a different far-plane than objects
    00028 #define M7_FAR_BG  512
    00029
    00030
    00031 typedef struct{
    00032        s32 x, y, z;
    00033 }VECTOR;
    00034
    00035 typedef struct tagM7CAM
    00036 {
    00037     VECTOR pos;
    00038     int phi;        // yaw
    00039     int theta;      // pitch
    00040     VECTOR u;       // local x-axis (right)
    00041     VECTOR v;       // local y-axis (up)
    00042     VECTOR w;       // local z-axis (back)
    00043 } M7CAM;
    00044
    00045
    00046 typedef struct {
    00047        s16 pa, pb, pc, pd; s32 dx, dy;
    00048 } BGAFF_EX;
    00049
    00050 /*#define PA_BGXX(screen, bg) _REG32(0x4000008 + (0x1000 * screen) + (bg << 4))
    00051 #define PA_BGXY(screen, bg) _REG32(0x400000C + (0x1000 * screen) + (bg << 4))
    00052 #define PA_BGXPA(screen, bg) _REG16(0x4000000 + (0x1000 * screen) + (bg << 4))
    00053 #define PA_BGXPB(screen, bg) _REG16(0x4000002 + (0x1000 * screen) + (bg << 4))
    00054 #define PA_BGXPC(screen, bg) _REG16(0x4000004 + (0x1000 * screen) + (bg << 4))
    00055 #define PA_BGXPD(screen, bg) _REG16(0x4000006 + (0x1000 * screen) + (bg << 4))
    00056 */
    00057
    00058
    00059
    00060 // in mode7.c
    00061 extern M7CAM _m7_cam;
    00062 extern int _m7_horizon;
    00063 extern BGAFF_EX _m7_bgaff_ex[192];  // affine parameters for each line
    00064
    00065
    00066
    00067
    00068
    00069 #define X0    256<<8
    00070 #define Y0     32<<8  // Default camera height -> 8192
    00071 #define Z0    256<<8
    00072
    00073 // DRV
    00074 extern u8 PA_currentmode;
    00075
    00076
    00077
    00078
    00079 // === GLOBALS ========================================================
    00080 // DRV
    00081 extern s32 mode7cam_x, mode7cam_y, mode7cam_z, mode7alpha;
    00082 // DRV
    00083 extern s32 mode7cos, mode7sin;     // temporaries for cos and sin alpha
    00084 // DRV
    00085 extern s16 mode7_distance;
    00086
    00087
    00088
    00103 void PA_InitMode7(u8 bg_select);
    00104
    00110 extern inline void PA_DeInitMode7(void) {
    00111
    00112 PA_StopInt(INT_HBLANK);
    00113
    00114 }
    00115
    00116
    00126 extern inline void PA_Mode7Angle(s16 angle){
    00127     mode7alpha = angle&511;
    00128        mode7cos = PA_Cos(mode7alpha);
    00129        mode7sin = PA_Sin(mode7alpha);
    00130 }
    00131
    00132
    00133
    00143 extern inline void PA_Mode7MoveLeftRight(s16 x_deplac){
    00144               mode7cam_x += x_deplac*mode7cos;
    00145               mode7cam_z += x_deplac*mode7sin;
    00146 }
    00147
    00148
    00158 extern inline void PA_Mode7MoveForwardBack(s16 z_deplac){
    00159               mode7cam_x += z_deplac*mode7sin;
    00160               mode7cam_z -= z_deplac*mode7cos;
    00161 }
    00162
    00163
    00164
    00174 extern inline void PA_Mode7X(s16 mode7x){
    00175               mode7cam_x = mode7x;
    00176 }
    00177
    00178
    00188 extern inline void PA_Mode7Z(s16 mode7z){
    00189               mode7cam_z = mode7z;
    00190 }
    00191
    00192
    00193
    00205 extern inline void PA_Mode7SetPointXZ(s16 mode7x, s16 mode7z){
    00206               mode7cam_x = mode7x;
    00207               mode7cam_z = mode7z;
    00208 }
    00209
    00210
    00220 extern inline void PA_Mode7Height(s16 mode7y){
    00221               mode7cam_y = mode7y;
    00222 }
    00223
    00224
    00225
    00226
    00227
    00228
    00229  // end of Mode7
    00231
    00232
    00233
    00234 void m7_aff_calc(void);
    00235 void m7_hbl_flr(void);
    00236 void m7_horz_calc(void);
    00237
    00238 #endif
    00239
    00240