some explicit conversions (less warnings)
better structure documentation
This commit is contained in:
parent
f8f49dea25
commit
24f6a55c4c
|
@ -1,25 +1,25 @@
|
|||
/* Copyright (C) 2006 yopyop
|
||||
yopyop156@ifrance.com
|
||||
yopyop156.ifrance.com
|
||||
yopyop156@ifrance.com
|
||||
yopyop156.ifrance.com
|
||||
|
||||
Copyright (C) 2006-2007 Theo Berkau
|
||||
Copyright (C) 2007 shash
|
||||
Copyright (C) 2006-2007 Theo Berkau
|
||||
Copyright (C) 2007 shash
|
||||
|
||||
This file is part of DeSmuME
|
||||
This file is part of DeSmuME
|
||||
|
||||
DeSmuME is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
DeSmuME is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
DeSmuME is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
DeSmuME is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with DeSmuME; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with DeSmuME; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef GPU_H
|
||||
|
@ -36,6 +36,261 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for display control,
|
||||
it holds flags for general display
|
||||
*******************************************************************************/
|
||||
|
||||
struct _DISPCNT
|
||||
{
|
||||
/*0*/ unsigned BG_Mode:3; // A+B:
|
||||
/*3*/ unsigned BG0_3D:1; // A : 0=2D, 1=3D
|
||||
/*4*/ unsigned OBJ_Tile_1D:1; // A+B: 0=2D (32KB), 1=1D (32..256KB)
|
||||
/*5*/ unsigned OBJ_BMP_2D_dim:1; // A+B: 0=128x512, 1=256x256 pixels
|
||||
/*6*/ unsigned OBJ_BMP_mapping:1; // A+B: 0=2D (128KB), 1=1D (128..256KB)
|
||||
|
||||
// 7-15 same as GBA
|
||||
/*7*/ unsigned ForceBlank:1; // A+B:
|
||||
/*8*/ unsigned BG0_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*9*/ unsigned BG1_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*10*/ unsigned BG2_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*11*/ unsigned BG3_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*12*/ unsigned OBJ_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*13*/ unsigned Win0_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*14*/ unsigned Win1_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*15*/ unsigned WinOBJ_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
|
||||
/*16*/ unsigned DisplayMode:2; // A+B: coreA(0..3) coreB(0..1) GBA(Green Swap)
|
||||
// 0=off (white screen)
|
||||
// 1=on (normal BG & OBJ layers)
|
||||
// 2=VRAM display (coreA only)
|
||||
// 3=RAM display (coreA only, DMA transfers)
|
||||
|
||||
/*18*/ unsigned VRAM_Block:2; // A : VRAM block (0..3=A..D)
|
||||
/*20*/ unsigned OBJ_Tile_1D_Bound:2; // A+B:
|
||||
/*22*/ unsigned OBJ_BMP_1D_Bound:1; // A :
|
||||
/*23*/ unsigned OBJ_HBlank_process:1; // A+B: OBJ processed during HBlank (GBA bit5)
|
||||
/*24*/ unsigned CharacBase_Block:3; // A : Character Base (64K step)
|
||||
/*27*/ unsigned ScreenBase_Block:3; // A : Screen Base (64K step)
|
||||
/*30*/ unsigned ExBGxPalette_Enable:1; // A+B: 0=disable, 1=Enable BG extended Palette
|
||||
/*31*/ unsigned ExOBJPalette_Enable:1; // A+B: 0=disable, 1=Enable OBJ extended Palette
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _DISPCNT bits;
|
||||
u32 val;
|
||||
} DISPCNT;
|
||||
#define BGxENABLED(cnt,num) ((num<8)? ((cnt.val>>8) & num):0)
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for display control of a specific layer,
|
||||
there are 4 background layers
|
||||
their priority indicate which one to draw on top of the other
|
||||
some flags indicate special drawing mode, size, FX
|
||||
*******************************************************************************/
|
||||
|
||||
struct _BGxCNT
|
||||
{
|
||||
/* 0*/ unsigned Priority:2; // 0..3=high..low
|
||||
/* 2*/ unsigned CharacBase_Block:4; // individual character base offset (n*16KB)
|
||||
/* 6*/ unsigned Mosaic_Enable:1; // 0=disable, 1=Enable mosaic
|
||||
/* 7*/ unsigned Palette_256:1; // 0=16x16, 1=1*256 palette
|
||||
/* 8*/ unsigned ScreenBase_Block:5; // individual screen base offset (text n*2KB, BMP n*16KB)
|
||||
/*13*/ unsigned PaletteSet_Wrap:1; // BG0 extended palette set 0=set0, 1=set2
|
||||
// BG1 extended palette set 0=set1, 1=set3
|
||||
// BG2 overflow area wraparound 0=off, 1=wrap
|
||||
// BG3 overflow area wraparound 0=off, 1=wrap
|
||||
/*14*/ unsigned ScreenSize:2; // text : 256x256 512x256 256x512 512x512
|
||||
// x/rot/s : 128x128 256x256 512x512 1024x1024
|
||||
// bmp : 128x128 256x256 512x256 512x512
|
||||
// large : 512x1024 1024x512 - -
|
||||
};
|
||||
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _BGxCNT bits;
|
||||
u16 val;
|
||||
} BGxCNT;
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for background offset
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
u16 BGxHOFS;
|
||||
u16 BGxVOFS;
|
||||
} BGxOFS;
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for rotoscale parameters
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
u16 BGxPA;
|
||||
u16 BGxPB;
|
||||
u16 BGxPC;
|
||||
u16 BGxPD;
|
||||
u32 BGxX;
|
||||
u32 BGxY;
|
||||
} BGxPARMS;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for windows parameters
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
u16 WIN0H;
|
||||
u16 WIN1H;
|
||||
u16 WIN0V;
|
||||
u16 WIN1V;
|
||||
u16 WININ;
|
||||
u16 WINOUT;
|
||||
} WINCNT;
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for miscellanous settings
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
u16 MOSAIC;
|
||||
u16 unused1;
|
||||
u16 BLDCNT;
|
||||
u16 BLDALPHA;
|
||||
u16 BLDY;
|
||||
u16 unused2;
|
||||
u16 unused3;
|
||||
u16 unused4;
|
||||
u16 unused5;
|
||||
u16 unused6;
|
||||
} MISCCNT;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for 3D settings
|
||||
*******************************************************************************/
|
||||
|
||||
struct _DISP3DCNT
|
||||
{
|
||||
/* 0*/ unsigned EnableTexMapping:1; //
|
||||
/* 1*/ unsigned PolygonShading:1; // 0=Toon Shading, 1=Highlight Shading
|
||||
/* 2*/ unsigned EnableAlphaTest:1; // see ALPHA_TEST_REF
|
||||
/* 3*/ unsigned EnableAlphaBlending:1; // see various Alpha values
|
||||
/* 4*/ unsigned EnableAntiAliasing:1; //
|
||||
/* 5*/ unsigned EnableEdgeMarking:1; // see EDGE_COLOR
|
||||
/* 6*/ unsigned FogOnlyAlpha:1; // 0=Alpha and Color, 1=Only Alpha (see FOG_COLOR)
|
||||
/* 7*/ unsigned EnableFog:1; // Fog Master Enable
|
||||
/* 8*/ unsigned FogShiftSHR:4; // 0..10 SHR-Divider (see FOG_OFFSET)
|
||||
/*12*/ unsigned AckColorBufferUnderflow:1; // Color Buffer RDLINES Underflow (0=None, 1=Underflow/Acknowledge)
|
||||
/*13*/ unsigned AckVertexRAMOverflow:1; // Polygon/Vertex RAM Overflow (0=None, 1=Overflow/Acknowledge)
|
||||
/*14*/ unsigned RearPlaneMode:1; // 0=Blank, 1=Bitmap
|
||||
/*15*/ unsigned :17;
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _DISP3DCNT bits;
|
||||
u32 val;
|
||||
} DISP3DCNT;
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is for capture control (core A only)
|
||||
|
||||
source:
|
||||
http://nocash.emubase.de/gbatek.htm#dsvideocaptureandmainmemorydisplaymode
|
||||
*******************************************************************************/
|
||||
|
||||
struct _DISPCAPCNT
|
||||
{
|
||||
/* 0*/ unsigned BlendFactor_A:5; // 0..16 = Blending Factor for Source A
|
||||
/* 5*/ unsigned :3; //
|
||||
/* 8*/ unsigned BlendFactor_B:5; // 0..16 = Blending Factor for Source B
|
||||
/*13*/ unsigned :3; //
|
||||
/*16*/ unsigned VRAM_Write_Block:2; // 0..3 = VRAM A..D
|
||||
/*18*/ unsigned VRAM_Write_Offset:2; // n x 0x08000
|
||||
/*20*/ unsigned Capture_Size:2; // 0=128x128, 1=256x64, 2=256x128, 3=256x192 dots
|
||||
/*22*/ unsigned :2; //
|
||||
/*24*/ unsigned Source_A:1; // 0=Graphics Screen BG+3D+OBJ, 1=3D Screen
|
||||
/*25*/ unsigned Source_B:1; // 0=VRAM, 1=Main Memory Display FIFO
|
||||
/*26*/ unsigned VRAM_Read_Offset:2; // n x 0x08000
|
||||
/*28*/ unsigned :1; //
|
||||
/*29*/ unsigned Capture_Source:2; // 0=Source A, 1=Source B, 2/3=Sources A+B blended
|
||||
/*31*/ unsigned Capture_Enable:1; // 0=Disable/Ready, 1=Enable/Busy
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _DISPCAPCNT bits;
|
||||
u32 val;
|
||||
} DISPCAPCNT;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
this structure is to represent global FX
|
||||
applied to each pixel (each color of x555 is expanded to 6 bits)
|
||||
|
||||
Lighten : New = Old + (63-Old) * Factor/16
|
||||
Darken : New = Old - Old * Factor/16
|
||||
*******************************************************************************/
|
||||
|
||||
struct _MASTER_BRIGHT
|
||||
{
|
||||
/* 0*/ unsigned Factor:4; // combine with (Factor / 16) of white/black
|
||||
/* 4*/ unsigned FactorEx:1; // if true use white or black
|
||||
/* 5*/ unsigned :9;
|
||||
/*14*/ unsigned Mode:2; // 0=off, 1=Lighten, 2=Darken, 3=?
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _MASTER_BRIGHT bits;
|
||||
u16 val;
|
||||
} MASTER_BRIGHT;
|
||||
|
||||
/*******************************************************************************
|
||||
this structure holds everything and should be mapped to
|
||||
* core A : 0x04000000
|
||||
* core B : 0x04001000
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct _reg_dispx {
|
||||
DISPCNT dispx_DISPCNT; // 0x0400x000
|
||||
u16 dispA_DISPSTAT; // 0x04000004
|
||||
u16 dispx_VCOUNT; // 0x0400x006
|
||||
BGxCNT dispx_BG0CNT; // 0x0400x008
|
||||
BGxCNT dispx_BG1CNT; // 0x0400x00A
|
||||
BGxCNT dispx_BG2CNT; // 0x0400x00C
|
||||
BGxCNT dispx_BG3CNT; // 0x0400x00E
|
||||
BGxOFS dispx_BG0OFS; // 0x0400x010
|
||||
BGxOFS dispx_BG1OFS; // 0x0400x014
|
||||
BGxOFS dispx_BG2OFS; // 0x0400x018
|
||||
BGxOFS dispx_BG3OFS; // 0x0400x01C
|
||||
BGxPARMS dispx_BG2PARMS; // 0x0400x020
|
||||
BGxPARMS dispx_BG3PARMS; // 0x0400x030
|
||||
WINCNT dispx_WINCNT; // 0x0400x040
|
||||
MISCCNT dispx_MISC; // 0x0400x04C
|
||||
DISP3DCNT dispA_DISP3DCNT; // 0x04000060
|
||||
DISPCAPCNT dispA_DISPCAPCNT; // 0x04000064
|
||||
u32 dispA_DISPMMEMFIFO; // 0x04000068
|
||||
MASTER_BRIGHT dispx_MASTERBRIGHT; // 0x0400x06C
|
||||
} REG_DISPx;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (((a)<(b))?(a):(b))
|
||||
#endif
|
||||
|
@ -54,14 +309,14 @@ void register_gl_fun(fun_gl_Begin beg,fun_gl_End end);
|
|||
#define GPU_SUB 1
|
||||
|
||||
/* human readable bitmask names */
|
||||
#define ADDRESS_STEP_512B 0x00200
|
||||
#define ADDRESS_STEP_1KB 0x00400
|
||||
#define ADDRESS_STEP_2KB 0x00800
|
||||
#define ADDRESS_STEP_4KB 0x01000
|
||||
#define ADDRESS_STEP_8KB 0x02000
|
||||
#define ADDRESS_STEP_16KB 0x04000
|
||||
#define ADDRESS_STEP_32KB 0x08000
|
||||
#define ADDRESS_STEP_64kB 0x10000
|
||||
#define ADDRESS_STEP_512B 0x00200
|
||||
#define ADDRESS_STEP_1KB 0x00400
|
||||
#define ADDRESS_STEP_2KB 0x00800
|
||||
#define ADDRESS_STEP_4KB 0x01000
|
||||
#define ADDRESS_STEP_8KB 0x02000
|
||||
#define ADDRESS_STEP_16KB 0x04000
|
||||
#define ADDRESS_STEP_32KB 0x08000
|
||||
#define ADDRESS_STEP_64kB 0x10000
|
||||
|
||||
struct _TILEENTRY
|
||||
{
|
||||
|
@ -88,83 +343,11 @@ typedef union
|
|||
s32 val;
|
||||
} ROTOCOORD;
|
||||
|
||||
/*
|
||||
this structure is for display control,
|
||||
it holds flags for general display
|
||||
*/
|
||||
|
||||
struct _DISPCNT
|
||||
{
|
||||
/*0*/ unsigned BG_Mode:3; // A+B:
|
||||
/*3*/ unsigned BG0_3D:1; // A : 0=2D, 1=3D
|
||||
/*4*/ unsigned OBJ_Tile_1D:1; // A+B: 0=2D (32KB), 1=1D (32..256KB)
|
||||
/*5*/ unsigned OBJ_BMP_2D_dim:1; // A+B: 0=128x512, 1=256x256 pixels
|
||||
/*6*/ unsigned OBJ_BMP_mapping:1; // A+B: 0=2D (128KB), 1=1D (128..256KB)
|
||||
|
||||
// 7-15 same as GBA
|
||||
/*7*/ unsigned ForceBlank:1; // A+B:
|
||||
/*8*/ unsigned BG0_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*9*/ unsigned BG1_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*10*/ unsigned BG2_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*11*/ unsigned BG3_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*12*/ unsigned OBJ_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*13*/ unsigned Win0_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*14*/ unsigned Win1_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
/*15*/ unsigned WinOBJ_Enable:1; // A+B: 0=disable, 1=Enable
|
||||
|
||||
/*16*/ unsigned DisplayMode:2; // A+B: coreA(0..3) coreB(0..1) GBA(Green Swap)
|
||||
// 0=off (white screen)
|
||||
// 1=on (normal BG & OBJ layers)
|
||||
// 2=VRAM display (coreA only)
|
||||
// 3=RAM display (coreA only, DMA transfers)
|
||||
|
||||
/*18*/ unsigned VRAM_Block:2; // A : VRAM block (0..3=A..D)
|
||||
/*20*/ unsigned OBJ_Tile_1D_Bound:2; // A+B:
|
||||
/*22*/ unsigned OBJ_BMP_1D_Bound:1; // A :
|
||||
/*23*/ unsigned OBJ_HBlank_process:1; // A+B: OBJ processed during HBlank (GBA bit5)
|
||||
/*24*/ unsigned CharacBase_Block:3; // A : Character Base (64K step)
|
||||
/*27*/ unsigned ScreenBase_Block:3; // A : Screen Base (64K step)
|
||||
/*30*/ unsigned ExBGxPalette_Enable:1; // A+B: 0=disable, 1=Enable BG extended Palette
|
||||
/*31*/ unsigned ExOBJPalette_Enable:1; // A+B: 0=disable, 1=Enable OBJ extended Palette
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _DISPCNT bits;
|
||||
u32 val;
|
||||
} DISPCNT;
|
||||
#define BGxENABLED(cnt,num) ((num<8)? ((cnt.val>>8) & num):0)
|
||||
|
||||
// source:
|
||||
// http://nocash.emubase.de/gbatek.htm#dsvideocaptureandmainmemorydisplaymode
|
||||
struct _DISPCAPCNT
|
||||
{
|
||||
/* 0*/ unsigned BlendFactor_A:5; // 0..16 = Blending Factor for Source A
|
||||
/* 5*/ unsigned :3; //
|
||||
/* 8*/ unsigned BlendFactor_B:5; // 0..16 = Blending Factor for Source B
|
||||
/*13*/ unsigned :3; //
|
||||
/*16*/ unsigned VRAM_Write_Block:2; // 0..3 = VRAM A..D
|
||||
/*18*/ unsigned VRAM_Write_Offset:2; // n x 0x08000
|
||||
/*20*/ unsigned Capture_Size:2; // 0=128x128, 1=256x64, 2=256x128, 3=256x192 dots
|
||||
/*22*/ unsigned :2; //
|
||||
/*24*/ unsigned Source_A:1; // 0=Graphics Screen BG+3D+OBJ, 1=3D Screen
|
||||
/*25*/ unsigned Source_B:1; // 0=VRAM, 1=Main Memory Display FIFO
|
||||
/*26*/ unsigned VRAM_Read_Offset:2; // n x 0x08000
|
||||
/*28*/ unsigned :1; //
|
||||
/*29*/ unsigned Capture_Source:2; // 0=Source A, 1=Source B, 2/3=Sources A+B blended
|
||||
/*31*/ unsigned Capture_Enable:1; // 0=Disable/Ready, 1=Enable/Busy
|
||||
};
|
||||
typedef union
|
||||
{
|
||||
struct _DISPCAPCNT bits;
|
||||
u32 val;
|
||||
} DISPCAPCNT;
|
||||
|
||||
|
||||
/*
|
||||
this structure is for color representation,
|
||||
it holds 5 meaningful bits per color channel (red,green,blue)
|
||||
and 1 meaningful bit for alpha representation
|
||||
and 1 meaningful bit for alpha representation
|
||||
this bit can be unused or used for special FX
|
||||
*/
|
||||
|
||||
|
@ -213,63 +396,6 @@ typedef union
|
|||
|
||||
|
||||
|
||||
/*
|
||||
this structure is for display control of a specific layer,
|
||||
there are 4 background layers
|
||||
their priority indicate which one to draw on top of the other
|
||||
some flags indicate special drawing mode, size, FX
|
||||
*/
|
||||
|
||||
|
||||
struct _BGxCNT
|
||||
{
|
||||
/*0*/ unsigned Priority:2; // 0..3=high..low
|
||||
/*2*/ unsigned CharacBase_Block:4; // individual character base offset (n*16KB)
|
||||
/*6*/ unsigned Mosaic_Enable:1; // 0=disable, 1=Enable mosaic
|
||||
/*7*/ unsigned Palette_256:1; // 0=16x16, 1=1*256 palette
|
||||
/*8*/ unsigned ScreenBase_Block:5; // individual screen base offset (text n*2KB, BMP n*16KB)
|
||||
/*13*/ unsigned PaletteSet_Wrap:1; // BG0 extended palette set 0=set0, 1=set2
|
||||
// BG1 extended palette set 0=set1, 1=set3
|
||||
// BG2 overflow area wraparound 0=off, 1=wrap
|
||||
// BG3 overflow area wraparound 0=off, 1=wrap
|
||||
/*14*/ unsigned ScreenSize:2; // text : 256x256 512x256 256x512 512x512
|
||||
// x/rot/s : 128x128 256x256 512x512 1024x1024
|
||||
// bmp : 128x128 256x256 512x256 512x512
|
||||
// large : 512x1024 1024x512 - -
|
||||
};
|
||||
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _BGxCNT bits;
|
||||
u16 val;
|
||||
} BGxCNT;
|
||||
|
||||
/*
|
||||
this structure is to represent global FX
|
||||
applied to a pixel
|
||||
|
||||
Factor (5bits values 0-16, values >16 same as 16)
|
||||
// damdoum : then the 4th bit use is questionnable ?
|
||||
|
||||
Lighten : New = Old + (63-Old) * Factor/16
|
||||
Darken : New = Old - Old * Factor/16
|
||||
*/
|
||||
|
||||
struct _MASTER_BRIGHT
|
||||
{
|
||||
/*0*/ unsigned Factor:4; // brightnessFactor = Factor | FactorEx << 4
|
||||
/*4*/ unsigned FactorEx:1; //
|
||||
/*5*/ unsigned :9;
|
||||
/*14*/ unsigned Mode:2; // 0=off, 1=Lighten, 2=Darken, 3=?
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct _MASTER_BRIGHT bits;
|
||||
u16 val;
|
||||
} MASTER_BRIGHT;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
@ -282,20 +408,20 @@ ref: http://www.bottledlight.com/ds/index.php/Video/Sprites
|
|||
typedef struct
|
||||
{
|
||||
// attr0
|
||||
/*0*/ unsigned Y:8;
|
||||
/*8*/ unsigned RotScale:2; // (00: Normal, 01: Rot/scale, 10: Disabled, 11: Double-size rot/scale)
|
||||
/*10*/ unsigned Mode:2; // (00: Normal, 01: Transparent, 10: Object window, 11: Bitmap)
|
||||
/* 0*/ unsigned Y:8;
|
||||
/* 8*/ unsigned RotScale:2; // (00: Normal, 01: Rot/scale, 10: Disabled, 11: Double-size rot/scale)
|
||||
/*10*/ unsigned Mode:2; // (00: Normal, 01: Transparent, 10: Object window, 11: Bitmap)
|
||||
/*12*/ unsigned Mosaic:1; // (1: Enabled)
|
||||
/*13*/ unsigned Depth:1; // (0: 16, 1: 256)
|
||||
/*14*/ unsigned Shape:2; // (00: Square, 01: Wide, 10: Tall, 11: Illegal)
|
||||
/*13*/ unsigned Depth:1; // (0: 16, 1: 256)
|
||||
/*14*/ unsigned Shape:2; // (00: Square, 01: Wide, 10: Tall, 11: Illegal)
|
||||
// attr1
|
||||
/*0*/ signed X:9;
|
||||
/*9*/ unsigned RotScalIndex:3; // Rot/scale matrix index
|
||||
/* 0*/ signed X:9;
|
||||
/* 9*/ unsigned RotScalIndex:3; // Rot/scale matrix index
|
||||
/*12*/ unsigned HFlip:1;
|
||||
/*13*/ unsigned VFlip:1;
|
||||
/*14*/ unsigned Size:2;
|
||||
// attr2
|
||||
/*0*/ unsigned TileIndex:10;
|
||||
/* 0*/ unsigned TileIndex:10;
|
||||
/*10*/ unsigned Priority:2;
|
||||
/*12*/ unsigned PaletteIndex:4;
|
||||
// attr3
|
||||
|
@ -304,18 +430,18 @@ typedef struct
|
|||
|
||||
typedef struct
|
||||
{
|
||||
u16 attr0;
|
||||
u16 attr1;
|
||||
u16 attr2;
|
||||
u16 attr3;
|
||||
u16 attr0;
|
||||
u16 attr1;
|
||||
u16 attr2;
|
||||
u16 attr3;
|
||||
} OAM;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
s16 x;
|
||||
s16 y;
|
||||
s16 x;
|
||||
s16 y;
|
||||
} size;
|
||||
|
||||
|
||||
|
@ -327,8 +453,8 @@ typedef struct
|
|||
screen
|
||||
|
|
||||
+-- Window0/Window1/OBJwindow/OutOfWindows
|
||||
|
|
||||
+-- BG0/BG1/BG2/BG3/OBJ
|
||||
|
|
||||
+-- BG0/BG1/BG2/BG3/OBJ
|
||||
*/
|
||||
|
||||
typedef union windowdim_t
|
||||
|
@ -492,10 +618,10 @@ extern MMU_struct MMU;
|
|||
|
||||
|
||||
|
||||
#define GFXCORE_DEFAULT -1
|
||||
#define GFXCORE_DUMMY 0
|
||||
#define GFXCORE_DEFAULT -1
|
||||
#define GFXCORE_DUMMY 0
|
||||
|
||||
#define GFXCORE_FULLSCREEN (1 << 0)
|
||||
#define GFXCORE_FULLSCREEN (1 << 0)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -529,7 +655,7 @@ void GPU_setX(GPU *, u8 num, u32 v);
|
|||
void GPU_setY(GPU *, u8 num, u32 v);
|
||||
void GPU_setPAPB(GPU *, u8 num, u32 v);
|
||||
void GPU_setPCPD(GPU *, u8 num, u32 v);
|
||||
|
||||
|
||||
void GPU_setBLDCNT(GPU *gpu, u16 v) ;
|
||||
void GPU_setBLDALPHA(GPU *gpu, u16 v) ;
|
||||
void GPU_setBLDY(GPU *gpu, u16 v) ;
|
||||
|
|
|
@ -126,12 +126,12 @@ void file_open() {
|
|||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
gtk_widget_destroy(pFileSelection);
|
||||
}
|
||||
|
||||
void on_menu_ouvrir_activate (GtkMenuItem *menuitem, gpointer user_data) { file_open();}
|
||||
void on_menu_pscreen_activate (GtkMenuItem *menuitem, gpointer user_data) { WriteBMP("./test.bmp",GPU_screen); }
|
||||
void on_menu_pscreen_activate (GtkMenuItem *menuitem, gpointer user_data) { WriteBMP("./test.bmp",(u16*)GPU_screen); }
|
||||
void on_menu_quit_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk_main_quit(); }
|
||||
|
||||
|
||||
|
@ -293,8 +293,8 @@ user_data)
|
|||
text = "Can't configure joystick while the game is running!";
|
||||
|
||||
dlg = (GtkDialog*)glade_xml_get_widget(xml, "wMainW");
|
||||
msgbox =
|
||||
gtk_message_dialog_new(dlg,
|
||||
msgbox = (GtkDialog*)
|
||||
gtk_message_dialog_new((GtkWindow*)dlg,
|
||||
GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
|
@ -367,7 +367,7 @@ void on_menu_wtoolsXX_activate (GtkMenuItem *menuitem, gpointer user_data)
|
|||
/* About dialog
|
||||
FIXME: Add proper copyright */
|
||||
void on_menu_apropos_activate (GtkMenuItem *menuitem, gpointer user_data) {
|
||||
GtkAboutDialog * wAbout = (GtkAboutDialog*)glade_xml_get_widget(xml, "wAboutDlg");
|
||||
GtkWidget * wAbout = glade_xml_get_widget(xml, "wAboutDlg");
|
||||
gtk_widget_show(wAbout);
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ static void inline dTools_display_select_attr(dTools_dsp * dsp, int index) {
|
|||
pango_layout_set_attributes(dsp->playout, dsp->curr_attr);
|
||||
}
|
||||
|
||||
static void inline dTools_display_draw_text(dTools_dsp * dsp, int x, int y, char * txt) {
|
||||
static void inline dTools_display_draw_text(dTools_dsp * dsp, int x, int y, const char * txt) {
|
||||
pango_layout_set_text(dsp->playout, txt, -1);
|
||||
gdk_draw_layout(dsp->draw, dsp->gc_fg,
|
||||
x * dsp->char_w + dsp->padding,
|
||||
|
|
|
@ -54,7 +54,7 @@ void notify_Tool (VoidFunPtr fun, gpointer func_data) {
|
|||
}
|
||||
|
||||
void notify_Tools() {
|
||||
g_list_foreach(tools_to_update, ¬ify_Tool, NULL);
|
||||
g_list_foreach(tools_to_update, (GFunc)notify_Tool, NULL);
|
||||
}
|
||||
|
||||
/* Return the glade directory.
|
||||
|
@ -149,7 +149,7 @@ void set_menuitem_label(GtkWidget * w, char * text )
|
|||
|
||||
if ( GTK_BIN(w)->child )
|
||||
{
|
||||
child = GTK_BIN(w)->child;
|
||||
child = (GtkLabel*)GTK_BIN(w)->child;
|
||||
gtk_label_set_text(child, text);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -289,4 +289,3 @@
|
|||
#define cmd_3D_VEC_TEST 0x040005C8
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue