annotate src/video/nds/SDL_ndsrender.c @ 2687:5166b19b6808 gsoc2008_nds

renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
author Darren Alton <dalton@stevens.edu>
date Thu, 14 Aug 2008 04:33:55 +0000
parents 2190b873ff00
children 71c56e900f8b
rev   line source
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
1 /*
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
3 Copyright (C) 1997-2006 Sam Lantinga
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
4
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
6 modify it under the terms of the GNU Lesser General Public
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
9
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
13 Lesser General Public License for more details.
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
14
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
15 You should have received a copy of the GNU Lesser General Public
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
16 License along with this library; if not, write to the Free Software
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
18
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
19 Sam Lantinga
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
20 slouken@libsdl.org
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
21 */
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
22
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
23 #include <stdio.h>
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
24 #include <stdlib.h>
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
25 #include <nds.h>
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
26
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
27 #include "SDL_config.h"
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
28
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
29 #include "SDL_video.h"
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
30 #include "../SDL_sysvideo.h"
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
31 #include "../SDL_yuv_sw_c.h"
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
32 #include "../SDL_renderer_sw.h"
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
33
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
34
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
35 /* SDL NDS renderer implementation */
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
36
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
37 static SDL_Renderer *NDS_CreateRenderer(SDL_Window * window, Uint32 flags);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
38 static int NDS_ActivateRenderer(SDL_Renderer * renderer);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
39 static int NDS_DisplayModeChanged(SDL_Renderer * renderer);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
40 static int NDS_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
41 static int NDS_QueryTexturePixels(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
42 SDL_Texture * texture, void **pixels,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
43 int *pitch);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
44 static int NDS_SetTexturePalette(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
45 SDL_Texture * texture,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
46 const SDL_Color * colors, int firstcolor,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
47 int ncolors);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
48 static int NDS_GetTexturePalette(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
49 SDL_Texture * texture, SDL_Color * colors,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
50 int firstcolor, int ncolors);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
51 static int NDS_SetTextureColorMod(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
52 SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
53 static int NDS_SetTextureAlphaMod(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
54 SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
55 static int NDS_SetTextureBlendMode(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
56 SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
57 static int NDS_SetTextureScaleMode(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
58 SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
59 static int NDS_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
60 const SDL_Rect * rect, const void *pixels,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
61 int pitch);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
62 static int NDS_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
63 const SDL_Rect * rect, int markDirty, void **pixels,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
64 int *pitch);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
65 static void NDS_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
66 static void NDS_DirtyTexture(SDL_Renderer * renderer,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
67 SDL_Texture * texture, int numrects,
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
68 const SDL_Rect * rects);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
69 static int NDS_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g,
2671
c3e7c0698cbb some changes to the dummy driver for debug purposes that should be reverted.
Darren Alton <dalton@stevens.edu>
parents: 2670
diff changeset
70 Uint8 b, Uint8 a, const SDL_Rect * rect);
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
71 static int NDS_RenderCopy(SDL_Renderer * renderer,
2671
c3e7c0698cbb some changes to the dummy driver for debug purposes that should be reverted.
Darren Alton <dalton@stevens.edu>
parents: 2670
diff changeset
72 SDL_Texture * texture,
c3e7c0698cbb some changes to the dummy driver for debug purposes that should be reverted.
Darren Alton <dalton@stevens.edu>
parents: 2670
diff changeset
73 const SDL_Rect * srcrect,
c3e7c0698cbb some changes to the dummy driver for debug purposes that should be reverted.
Darren Alton <dalton@stevens.edu>
parents: 2670
diff changeset
74 const SDL_Rect * dstrect);
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
75 static void NDS_RenderPresent(SDL_Renderer * renderer);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
76 static void NDS_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture);
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
77 static void NDS_DestroyRenderer(SDL_Renderer * renderer);
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
78
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
79
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
80 SDL_RenderDriver NDS_RenderDriver = {
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
81 NDS_CreateRenderer,
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
82 { "nds", /* char* name */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
83 (SDL_RENDERER_SINGLEBUFFER|SDL_RENDERER_ACCELERATED), /* u32 flags */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
84 (SDL_TEXTUREMODULATE_NONE), /* u32 mod_modes */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
85 (SDL_TEXTUREBLENDMODE_NONE), /* u32 blend_modes */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
86 (SDL_TEXTURESCALEMODE_NONE), /* u32 scale_modes */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
87 3, /* u32 num_texture_formats */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
88 {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
89 SDL_PIXELFORMAT_INDEX8,
2681
c15b6c758be5 Some small bug fixes and more work on video
Darren Alton <dalton@stevens.edu>
parents: 2680
diff changeset
90 SDL_PIXELFORMAT_ABGR1555,
c15b6c758be5 Some small bug fixes and more work on video
Darren Alton <dalton@stevens.edu>
parents: 2680
diff changeset
91 SDL_PIXELFORMAT_BGR555,
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
92 }, /* u32 texture_formats[20] */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
93 (256), /* int max_texture_width */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
94 (256), /* int max_texture_height */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
95 }
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
96 };
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
97
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
98 typedef struct
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
99 {
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
100 bg_attribute *bg;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
101 u8 bg_taken[4];
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
102 /* todo for sprites: pSpriteRotation and pSpriteEntry. pointers to OAM */
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
103 int sub;
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
104 } NDS_RenderData;
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
105
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
106 typedef struct
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
107 {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
108 enum { NDSTX_BG, NDSTX_SPR } type;
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
109 int hw_index;
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
110 struct { int hdx, hdy, vdx, vdy, pitch, bpp; } dim;
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
111 u16 *vram;
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
112 u16 *system_ram_copy;
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
113 int size;
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
114 } NDS_TextureData;
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
115
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
116
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
117 /* this is mainly hackish testing/debugging stuff to get cleaned up soon
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
118 anything named sdlds_blah shouldn't make it into the stable version
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
119 */
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
120
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
121 u16
2673
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
122 sdlds_rgb2bgr(u16 c)
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
123 {
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
124 /* hack to get the proper colors until I actually get BGR555 to work right */
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
125 u16 Rmask = 0x7C00, Bmask = 0x001F, GAmask = 0x83E0, r, b;
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
126 r = (c & Rmask) >> 10;
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
127 b = (c & Bmask) << 10;
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
128 return (c & GAmask) | r | b;
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
129 }
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
130
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
131 /* again the above shouldn't make it into the stable version */
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
132
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
133 SDL_Renderer *
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
134 NDS_CreateRenderer(SDL_Window * window, Uint32 flags)
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
135 {
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
136 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
137 SDL_DisplayMode *displayMode = &display->current_mode;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
138 SDL_Renderer *renderer;
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
139 NDS_RenderData *data;
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
140 int i, n;
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
141 int bpp = 15;
2673
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
142 Uint32 Rmask, Gmask, Bmask, Amask;
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
143 /* Uint32 Rmask = 0x7C00, Gmask = 0x03E0, Bmask = 0x001F, Amask = 0x8000;
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
144 Uint32 Rmask = 0x001F, Gmask = 0x03E0, Bmask = 0x7C00, Amask = 0x8000;
2673
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
145 */
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
146 printf("+NDS_CreateRenderer\n");
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
147
2673
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
148 /* hard coded this to BGR555 for now */
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
149 if (!SDL_PixelFormatEnumToMasks(SDL_PIXELFORMAT_BGR555, &bpp,
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
150 &Rmask, &Gmask, &Bmask, &Amask)) {
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
151 SDL_SetError("Unknown display format");
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
152 return NULL;
24a6b3588eac Cleaned up and added joypad support from 1.2.9 NDS port. Also some minor video driver bugfixes.
Darren Alton <dalton@stevens.edu>
parents: 2672
diff changeset
153 }
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
154
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
155 renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer));
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
156 if (!renderer) {
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
157 SDL_OutOfMemory();
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
158 return NULL;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
159 }
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
160
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
161 data = (NDS_RenderData *) SDL_malloc(sizeof(*data));
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
162 if (!data) {
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
163 NDS_DestroyRenderer(renderer);
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
164 SDL_OutOfMemory();
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
165 return NULL;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
166 }
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
167 SDL_zerop(data);
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
168
2677
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
169 renderer->RenderFill = NDS_RenderFill;
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
170 renderer->RenderCopy = NDS_RenderCopy;
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
171 renderer->RenderPresent = NDS_RenderPresent;
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
172 renderer->DestroyRenderer = NDS_DestroyRenderer;
6386764eb222 Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents: 2673
diff changeset
173 renderer->info.name = NDS_RenderDriver.info.name;
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
174 renderer->info.flags = 0;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
175 renderer->window = window->id;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
176 renderer->driverdata = data;
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
177 renderer->CreateTexture = NDS_CreateTexture;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
178 renderer->QueryTexturePixels = NDS_QueryTexturePixels;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
179 renderer->SetTexturePalette = NDS_SetTexturePalette;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
180 renderer->GetTexturePalette = NDS_GetTexturePalette;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
181 renderer->SetTextureColorMod = NDS_SetTextureColorMod;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
182 renderer->SetTextureAlphaMod = NDS_SetTextureAlphaMod;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
183 renderer->SetTextureBlendMode = NDS_SetTextureBlendMode;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
184 renderer->SetTextureScaleMode = NDS_SetTextureScaleMode;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
185 renderer->UpdateTexture = NDS_UpdateTexture;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
186 renderer->LockTexture = NDS_LockTexture;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
187 renderer->UnlockTexture = NDS_UnlockTexture;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
188 renderer->DirtyTexture = NDS_DirtyTexture;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
189 renderer->DestroyTexture = NDS_DestroyTexture;
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
190
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
191 renderer->info.mod_modes = NDS_RenderDriver.info.mod_modes;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
192 renderer->info.blend_modes = NDS_RenderDriver.info.blend_modes;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
193 renderer->info.scale_modes = NDS_RenderDriver.info.scale_modes;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
194 renderer->info.num_texture_formats =
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
195 NDS_RenderDriver.info.num_texture_formats;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
196 SDL_memcpy(renderer->info.texture_formats,
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
197 NDS_RenderDriver.info.texture_formats,
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
198 sizeof(renderer->info.texture_formats));;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
199 renderer->info.max_texture_width = NDS_RenderDriver.info.max_texture_width;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
200 renderer->info.max_texture_height =
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
201 NDS_RenderDriver.info.max_texture_height;
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
202
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
203 /*data->fb = (u16*)0x06020000;*/
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
204 data->bg = &BACKGROUND;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
205 data->bg_taken[2] = data->bg_taken[3] = 0;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
206 data->sub = 0;
2672
74ac057679d5 NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents: 2671
diff changeset
207
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
208 printf("-NDS_CreateRenderer\n");
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
209 return renderer;
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
210 }
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
211
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
212 static int
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
213 NDS_ActivateRenderer(SDL_Renderer * renderer)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
214 {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
215 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
216 /* stub. TODO: figure out what needs to be done, if anything. */
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
217 printf("!NDS_ActivateRenderer\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
218 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
219 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
220
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
221 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
222 NDS_DisplayModeChanged(SDL_Renderer * renderer)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
223 {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
224 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
225 /* stub. TODO: figure out what needs to be done */
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
226 printf("!NDS_DisplayModeChanged\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
227 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
228 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
229
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
230 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
231 NDS_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
232 {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
233 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
234 NDS_TextureData *txdat = NULL;
2682
f7594fc66bda Some debug work on the video driver, shows an error in the BG's vertical placement
Darren Alton <dalton@stevens.edu>
parents: 2681
diff changeset
235 int i;
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
236 printf("+NDS_CreateTexture\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
237 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
238 SDL_SetError("Unsupported texture format");
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
239 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
240 } else {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
241 int bpp;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
242 Uint32 Rmask, Gmask, Bmask, Amask;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
243
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
244 if (!SDL_PixelFormatEnumToMasks
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
245 (texture->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
246 SDL_SetError("Unknown texture format");
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
247 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
248 }
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
249 /* conditional statements on w/h to place it as bg/sprite */
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
250 /*if(texture->w <= 64 && texture->h <= 64) {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
251 sprites not implemented yet. elegant, I know.
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
252 } else*/ if(texture->w <= 256 && texture->h <= 256) {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
253 int whichbg = -1;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
254 if(!data->bg_taken[2]) {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
255 whichbg = 2;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
256 } else if(!data->bg_taken[3]) {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
257 whichbg = 3;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
258 }
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
259 if(whichbg >= 0) {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
260 data->bg->control[whichbg] = (bpp == 8) ?
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
261 BG_BMP8_256x256 : BG_BMP16_256x256;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
262 data->bg->scroll[whichbg].x = 0;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
263 data->bg->scroll[whichbg].y = 0;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
264 texture->driverdata = SDL_calloc(1, sizeof(NDS_TextureData));
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
265 txdat = (NDS_TextureData*)texture->driverdata;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
266 txdat->type = NDSTX_BG;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
267 txdat->hw_index = whichbg;
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
268 txdat->dim.hdx = 0x100; txdat->dim.hdy = 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
269 txdat->dim.vdx = 0; txdat->dim.vdy = 0x100;
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
270 txdat->dim.pitch = 256 * (bpp/8);
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
271 txdat->dim.bpp = bpp;
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
272 txdat->vram = (u16*)(data->sub ?
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
273 BG_BMP_RAM_SUB(whichbg) : BG_BMP_RAM(whichbg));
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
274 txdat->size = txdat->dim.pitch * texture->h;
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
275 txdat->system_ram_copy = SDL_malloc(txdat->size);
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
276 } else {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
277 SDL_SetError("Out of NDS backgrounds.");
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
278 printf("ran out.\n");
2679
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
279 }
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
280 } else {
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
281 SDL_SetError("Texture too big for NDS hardware.");
bc3e3e889f6d More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents: 2678
diff changeset
282 }
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
283 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
284
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
285 printf("-NDS_CreateTexture\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
286 if (!texture->driverdata) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
287 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
288 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
289 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
290 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
291
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
292 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
293 NDS_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture,
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
294 void **pixels, int *pitch)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
295 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
296 printf("+NDS_QueryTexturePixels\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
297 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
298 SDL_SetError("Unsupported texture format");
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
299 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
300 } else {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
301 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
302
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
303 *pixels = txdat->vram;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
304 *pitch = txdat->dim.pitch;
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
305 printf("-NDS_QueryTexturePixels\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
306 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
307 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
308 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
309
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
310 static int
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
311 NDS_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
312 const SDL_Rect * rect, const void *pixels, int pitch)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
313 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
314 printf("+NDS_UpdateTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
315 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
316 SDL_SetError("Unsupported texture format");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
317 return -1;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
318 } else {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
319 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
320 Uint8 *src, *dst;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
321 int row;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
322 size_t length;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
323 /* IMPORTANT! copy the new pixels into the sprite or bg. */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
324 src = (Uint8 *) pixels;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
325 dst =
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
326 (Uint8 *) txdat->system_ram_copy + rect->y * txdat->dim.pitch +
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
327 rect->x * (txdat->dim.bpp/8);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
328 length = rect->w * (txdat->dim.bpp/8);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
329 for (row = 0; row < rect->h; ++row) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
330 SDL_memcpy(dst, src, length);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
331 src += pitch;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
332 dst += txdat->dim.pitch;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
333 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
334 printf("-NDS_UpdateTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
335 return 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
336 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
337 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
338
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
339 static int
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
340 NDS_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
341 const SDL_Rect * rect, int markDirty, void **pixels,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
342 int *pitch)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
343 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
344 printf("+NDS_LockTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
345 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
346 SDL_SetError("Unsupported texture format");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
347 return -1;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
348 } else {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
349 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
350
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
351 if (markDirty) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
352 printf("wanted to mark dirty\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
353 /*SDL_AddDirtyRect(&txdat->dirty, rect);*/
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
354 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
355
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
356 *pixels = (void *) ((u8 *)txdat->system_ram_copy + rect->y
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
357 * txdat->dim.pitch + rect->x * (txdat->dim.bpp/8));
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
358 *pitch = txdat->dim.pitch;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
359 printf(" pixels = %08x\n", (u32)*pixels);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
360 printf("-NDS_LockTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
361 return 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
362 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
363 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
364
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
365 static void
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
366 NDS_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
367 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
368 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
369 SDL_SetError("Unsupported texture format");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
370 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
371 printf("+NDS_UnlockTexture\n-NDS_UnlockTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
372 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
373
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
374 static void
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
375 NDS_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
376 int numrects, const SDL_Rect * rects)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
377 { /* stub */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
378 printf("!NDS_DirtyTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
379 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
380
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
381 static int
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
382 NDS_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
383 Uint8 a, const SDL_Rect * rect)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
384 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
385 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
386 SDL_Rect real_rect = *rect;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
387 u16 color;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
388 int i, j;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
389
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
390 printf("+NDS_RenderFill\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
391 /* TODO: make a single-color sprite and stretch it.
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
392 color = RGB15(r>>3,g>>3,b>>3);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
393 for (i = real_rect.x; i < real_rect.x+real_rect.w; ++i) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
394 for (j = real_rect.y; j < real_rect.y+real_rect.h; ++j) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
395 data->fb[(j + real_rect.y) * 256 + i + real_rect.x] =
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
396 0x8000 | color;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
397 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
398 }*/
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
399 printf("-NDS_RenderFill\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
400 return 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
401 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
402
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
403 static int
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
404 NDS_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
405 const SDL_Rect * srcrect, const SDL_Rect * dstrect)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
406 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
407 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
408 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
409 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
410 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
411 int i;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
412 int bpp = SDL_BYTESPERPIXEL(texture->format);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
413 int pitch = txdat->dim.pitch;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
414 printf("+NDS_RenderCopy\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
415 if(txdat->type == NDSTX_BG) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
416 bg_rotation *tmpbg = (txdat->hw_index == 2) ?
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
417 &(data->bg->bg2_rotation) : &(data->bg->bg3_rotation);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
418 tmpbg->xdx = txdat->dim.hdx;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
419 tmpbg->xdy = txdat->dim.hdy;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
420 tmpbg->ydx = txdat->dim.vdx;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
421 tmpbg->ydy = txdat->dim.vdy;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
422 tmpbg->centerX = 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
423 tmpbg->centerY = 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
424 } else {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
425 /* sprites not implemented yet */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
426 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
427 printf(" txdat->hw_index = %d\n", txdat->hw_index);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
428 printf("-NDS_RenderCopy\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
429 return 0;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
430 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
431
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
432
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
433 static void
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
434 NDS_RenderPresent(SDL_Renderer * renderer)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
435 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
436 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
437 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
438 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
439 int i;
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
440 /* Send the data to the display TODO :
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
441 shouldn't it already be there at this point?
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
442 I guess set the BG's and sprites "visible" flags here. */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
443 printf("+NDS_RenderPresent\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
444
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
445 for(i = 0; i < 64; ++i) {
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
446 SDL_Texture * tx = display->textures[i];
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
447 NDS_TextureData * txdat = (NDS_TextureData*)tx->driverdata;
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
448 SDL_memcpy(txdat->vram, txdat->system_ram_copy, txdat->size);
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
449 }
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
450
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
451 /* vsync for NDS */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
452 if (renderer->info.flags & SDL_RENDERER_PRESENTVSYNC) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
453 swiWaitForVBlank();
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
454 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
455 printf("-NDS_RenderPresent\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
456 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
457
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
458 static void
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
459 NDS_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
460 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
461 printf("+NDS_DestroyTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
462 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
463 SDL_SetError("Unsupported texture format");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
464 } else {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
465 /* free anything else allocated for texture */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
466 NDS_TextureData *txdat = texture->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
467 /*SDL_FreeDirtyRects(&txdat->dirty);*/
2687
5166b19b6808 renderer: Added a separate copy of texture pixels in system RAM, copied into VRAM during RenderPresent. Still trying to fix rendering.
Darren Alton <dalton@stevens.edu>
parents: 2685
diff changeset
468 SDL_free(txdat->system_ram_copy);
2685
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
469 SDL_free(txdat);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
470 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
471 printf("-NDS_DestroyTexture\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
472 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
473
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
474 static void
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
475 NDS_DestroyRenderer(SDL_Renderer * renderer)
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
476 {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
477 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
478 /*SDL_Window *window = SDL_GetWindowFromID(renderer->window);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
479 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);*/
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
480 int i;
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
481
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
482 printf("+NDS_DestroyRenderer\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
483 if (data) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
484 /* TODO: free anything relevant. */
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
485 /*for (i = 0; i < SDL_arraysize(data->texture); ++i) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
486 if (data->texture[i]) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
487 DestroyTexture(data->renderer, data->texture[i]);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
488 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
489 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
490 if (data->surface.format) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
491 SDL_SetSurfacePalette(&data->surface, NULL);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
492 SDL_FreeFormat(data->surface.format);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
493 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
494 if (display->palette) {
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
495 SDL_DelPaletteWatch(display->palette, DisplayPaletteChanged,
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
496 data);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
497 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
498 SDL_FreeDirtyRects(&data->dirty);*/
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
499 SDL_free(data);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
500 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
501 SDL_free(renderer);
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
502 printf("-NDS_DestroyRenderer\n");
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
503 }
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
504
2190b873ff00 Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents: 2683
diff changeset
505 static int
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
506 NDS_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
507 const SDL_Color * colors, int firstcolor, int ncolors)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
508 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
509 printf("+NDS_SetTexturePalette\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
510 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
511 SDL_SetError("YUV textures don't have a palette");
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
512 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
513 } else {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
514 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
515 /* TODO: mess with 8-bit modes and/or 16-color palette modes */
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
516 printf("-NDS_SetTexturePalette\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
517 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
518 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
519 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
520
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
521 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
522 NDS_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture,
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
523 SDL_Color * colors, int firstcolor, int ncolors)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
524 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
525 printf("+NDS_GetTexturePalette\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
526 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
527 SDL_SetError("YUV textures don't have a palette");
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
528 return -1;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
529 } else {
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
530 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata;
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
531 printf("-NDS_GetTexturePalette\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
532 /* TODO: mess with 8-bit modes and/or 16-color palette modes */
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
533 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
534 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
535 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
536
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
537 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
538 NDS_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
539 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
540 printf("!NDS_SetTextureColorMod\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
541 /* stub. TODO: figure out what needs to be done, if anything */
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
542 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
543 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
544
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
545 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
546 NDS_SetTextureAlphaMod(SDL_Renderer * renderer, SDL_Texture * texture)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
547 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
548 printf("!NDS_SetTextureAlphaMod\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
549 /* stub. TODO: figure out what needs to be done, if anything */
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
550 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
551 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
552
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
553 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
554 NDS_SetTextureBlendMode(SDL_Renderer * renderer, SDL_Texture * texture)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
555 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
556 printf("!NDS_SetTextureBlendMode\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
557 /* stub. TODO: figure out what needs to be done, if anything */
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
558 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
559 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
560
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
561 static int
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
562 NDS_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture)
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
563 {
2680
4135aa9c5645 More work on the accelerated 2D video driver, beginnings of sprite-based rendering support. Also some initial work on an audio driver.
Darren Alton <dalton@stevens.edu>
parents: 2679
diff changeset
564 printf("!NDS_SetTextureScaleMode\n");
2678
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
565 /* stub. TODO: figure out what needs to be done.
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
566 (NDS hardware scaling is nearest neighbor.) */
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
567 return 0;
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
568 }
3895761db26a Removed old touchscreen system, starting to implement mouse-based touchscreen. Also, more work on a non-software-rendering video driver
Darren Alton <dalton@stevens.edu>
parents: 2677
diff changeset
569
2670
6e4669f4db49 Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff changeset
570 /* vi: set ts=4 sw=4 expandtab: */