Mercurial > sdl-ios-xcode
annotate src/video/nds/SDL_ndsrender.c @ 2698:e1da92da346c gsoc2008_nds
Clean up.
author | Darren Alton <dalton@stevens.edu> |
---|---|
date | Wed, 27 Aug 2008 04:23:38 +0000 |
parents | 0b395a60deff |
children |
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> |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
26 #include <nds/arm9/video.h> |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
27 #include <nds/arm9/sprite.h> |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
28 #include <nds/arm9/trig_lut.h> |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
29 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
30 #include "SDL_config.h" |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
31 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
32 #include "SDL_video.h" |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
33 #include "../SDL_sysvideo.h" |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
34 #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
|
35 #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
|
36 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
37 /* NDS sprite-related functions */ |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
38 #define SPRITE_DMA_CHANNEL 3 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
39 #define SPRITE_ANGLE_MASK 0x01FF |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
40 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
41 void |
2698 | 42 NDS_OAM_Update(tOAM * oam, int sub) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
43 { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
44 DC_FlushAll(); |
2698 | 45 dmaCopyHalfWords(SPRITE_DMA_CHANNEL, oam->spriteBuffer, |
46 sub ? OAM_SUB : OAM, SPRITE_COUNT * sizeof(SpriteEntry)); | |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
47 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
48 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
49 void |
2698 | 50 NDS_OAM_RotateSprite(SpriteRotation * spriteRotation, u16 angle) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
51 { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
52 s16 s = SIN[angle & SPRITE_ANGLE_MASK] >> 4; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
53 s16 c = COS[angle & SPRITE_ANGLE_MASK] >> 4; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
54 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
55 spriteRotation->hdx = c; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
56 spriteRotation->hdy = s; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
57 spriteRotation->vdx = -s; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
58 spriteRotation->vdy = c; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
59 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
60 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
61 void |
2698 | 62 NDS_OAM_Init(tOAM * oam, int sub) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
63 { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
64 int i; |
2698 | 65 for (i = 0; i < SPRITE_COUNT; i++) { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
66 oam->spriteBuffer[i].attribute[0] = ATTR0_DISABLED; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
67 oam->spriteBuffer[i].attribute[1] = 0; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
68 oam->spriteBuffer[i].attribute[2] = 0; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
69 } |
2698 | 70 for (i = 0; i < MATRIX_COUNT; i++) { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
71 NDS_OAM_RotateSprite(&(oam->matrixBuffer[i]), 0); |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
72 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
73 swiWaitForVBlank(); |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
74 NDS_OAM_Update(oam, sub); |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
75 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
76 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
77 void |
2698 | 78 NDS_OAM_HideSprite(SpriteEntry * spriteEntry) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
79 { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
80 spriteEntry->isRotoscale = 0; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
81 spriteEntry->isHidden = 1; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
82 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
83 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
84 void |
2698 | 85 NDS_OAM_ShowSprite(SpriteEntry * spriteEntry, int affine, int double_bound) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
86 { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
87 if (affine) { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
88 spriteEntry->isRotoscale = 1; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
89 spriteEntry->rsDouble = double_bound; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
90 } else { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
91 spriteEntry->isHidden = 0; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
92 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
93 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
94 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
95 |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
96 /* 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
|
97 |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
98 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
|
99 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
|
100 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
|
101 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
|
102 static int NDS_QueryTexturePixels(SDL_Renderer * renderer, |
2698 | 103 SDL_Texture * texture, void **pixels, |
104 int *pitch); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
105 static int NDS_SetTexturePalette(SDL_Renderer * renderer, |
2698 | 106 SDL_Texture * texture, |
107 const SDL_Color * colors, int firstcolor, | |
108 int ncolors); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
109 static int NDS_GetTexturePalette(SDL_Renderer * renderer, |
2698 | 110 SDL_Texture * texture, SDL_Color * colors, |
111 int firstcolor, int ncolors); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
112 static int NDS_SetTextureColorMod(SDL_Renderer * renderer, |
2698 | 113 SDL_Texture * texture); |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
114 static int NDS_SetTextureAlphaMod(SDL_Renderer * renderer, |
2698 | 115 SDL_Texture * texture); |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
116 static int NDS_SetTextureBlendMode(SDL_Renderer * renderer, |
2698 | 117 SDL_Texture * texture); |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
118 static int NDS_SetTextureScaleMode(SDL_Renderer * renderer, |
2698 | 119 SDL_Texture * texture); |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
120 static int NDS_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 121 const SDL_Rect * rect, const void *pixels, |
122 int pitch); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
123 static int NDS_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 124 const SDL_Rect * rect, int markDirty, |
125 void **pixels, int *pitch); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
126 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
|
127 static void NDS_DirtyTexture(SDL_Renderer * renderer, |
2698 | 128 SDL_Texture * texture, int numrects, |
129 const SDL_Rect * rects); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
130 static int NDS_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, |
2698 | 131 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
|
132 static int NDS_RenderCopy(SDL_Renderer * renderer, |
2698 | 133 SDL_Texture * texture, |
134 const SDL_Rect * srcrect, const SDL_Rect * dstrect); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
135 static void NDS_RenderPresent(SDL_Renderer * renderer); |
2698 | 136 static void NDS_DestroyTexture(SDL_Renderer * renderer, |
137 SDL_Texture * texture); | |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
138 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
|
139 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
140 |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
141 SDL_RenderDriver NDS_RenderDriver = { |
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
142 NDS_CreateRenderer, |
2698 | 143 {"nds", /* char* name */ |
144 (SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTDISCARD | SDL_RENDERER_PRESENTVSYNC), /* u32 flags */ | |
145 (SDL_TEXTUREMODULATE_NONE), /* u32 mod_modes */ | |
146 (SDL_TEXTUREBLENDMODE_MASK), /* u32 blend_modes */ | |
147 (SDL_TEXTURESCALEMODE_FAST), /* u32 scale_modes */ | |
148 3, /* u32 num_texture_formats */ | |
149 { | |
150 SDL_PIXELFORMAT_INDEX8, | |
151 SDL_PIXELFORMAT_ABGR1555, | |
152 SDL_PIXELFORMAT_BGR555, | |
153 }, /* u32 texture_formats[20] */ | |
154 (256), /* int max_texture_width */ | |
155 (256), /* int max_texture_height */ | |
156 } | |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
157 }; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
158 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
159 typedef struct |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
160 { |
2698 | 161 bg_attribute *bg; /* backgrounds */ |
162 tOAM oam_copy; /* sprites */ | |
2679
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
163 u8 bg_taken[4]; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
164 int sub; |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
165 } NDS_RenderData; |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
166 |
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
|
167 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
|
168 { |
2698 | 169 enum |
170 { NDSTX_BG, NDSTX_SPR } type; /* represented in a bg or sprite. */ | |
171 int hw_index; /* sprite: index in the OAM. / bg: 2 or 3. */ | |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
172 struct |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
173 { |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
174 int hdx, hdy, vdx, vdy; /* affine transformation, used for scaling. */ |
2698 | 175 int pitch, bpp; /* some useful info */ |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
176 } dim; |
2698 | 177 u16 *vram_pixels; /* where the pixel data is stored (a pointer into VRAM) */ |
178 u16 *vram_palette; /* where the palette data is stored if it's indexed. */ | |
179 /*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
|
180 } NDS_TextureData; |
2672
74ac057679d5
NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents:
2671
diff
changeset
|
181 |
74ac057679d5
NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents:
2671
diff
changeset
|
182 |
74ac057679d5
NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents:
2671
diff
changeset
|
183 |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
184 SDL_Renderer * |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
185 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
|
186 { |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
187 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
|
188 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
|
189 SDL_Renderer *renderer; |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
190 NDS_RenderData *data; |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
191 int i, n; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
192 int bpp; |
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
|
193 Uint32 Rmask, Gmask, Bmask, Amask; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
194 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
195 if (!SDL_PixelFormatEnumToMasks(displayMode->format, &bpp, |
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
|
196 &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
|
197 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
|
198 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
|
199 } |
2698 | 200 switch (displayMode->format) { |
201 case SDL_PIXELFORMAT_INDEX8: | |
202 case SDL_PIXELFORMAT_ABGR1555: | |
203 case SDL_PIXELFORMAT_BGR555: | |
204 /* okay */ | |
205 break; | |
206 case SDL_PIXELFORMAT_RGB555: | |
207 case SDL_PIXELFORMAT_RGB565: | |
208 case SDL_PIXELFORMAT_ARGB1555: | |
209 /* we'll take these too for now */ | |
210 break; | |
211 default: | |
212 SDL_SetError("Warning: wrong display format for NDS!\n"); | |
213 break; | |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
214 } |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
215 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
216 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
|
217 if (!renderer) { |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
218 SDL_OutOfMemory(); |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
219 return NULL; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
220 } |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
221 |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
222 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
|
223 if (!data) { |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
224 NDS_DestroyRenderer(renderer); |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
225 SDL_OutOfMemory(); |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
226 return NULL; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
227 } |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
228 SDL_zerop(data); |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
229 |
2677
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
230 renderer->RenderFill = NDS_RenderFill; |
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
231 renderer->RenderCopy = NDS_RenderCopy; |
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
232 renderer->RenderPresent = NDS_RenderPresent; |
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
233 renderer->DestroyRenderer = NDS_DestroyRenderer; |
6386764eb222
Starting to work on a more complete video driver.
Darren Alton <dalton@stevens.edu>
parents:
2673
diff
changeset
|
234 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
|
235 renderer->info.flags = 0; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
236 renderer->window = window->id; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
237 renderer->driverdata = data; |
2679
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
238 renderer->CreateTexture = NDS_CreateTexture; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
239 renderer->QueryTexturePixels = NDS_QueryTexturePixels; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
240 renderer->SetTexturePalette = NDS_SetTexturePalette; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
241 renderer->GetTexturePalette = NDS_GetTexturePalette; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
242 renderer->SetTextureColorMod = NDS_SetTextureColorMod; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
243 renderer->SetTextureAlphaMod = NDS_SetTextureAlphaMod; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
244 renderer->SetTextureBlendMode = NDS_SetTextureBlendMode; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
245 renderer->SetTextureScaleMode = NDS_SetTextureScaleMode; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
246 renderer->UpdateTexture = NDS_UpdateTexture; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
247 renderer->LockTexture = NDS_LockTexture; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
248 renderer->UnlockTexture = NDS_UnlockTexture; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
249 renderer->DirtyTexture = NDS_DirtyTexture; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
250 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
|
251 |
2679
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
252 renderer->info.mod_modes = NDS_RenderDriver.info.mod_modes; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
253 renderer->info.blend_modes = NDS_RenderDriver.info.blend_modes; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
254 renderer->info.scale_modes = NDS_RenderDriver.info.scale_modes; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
255 renderer->info.num_texture_formats = |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
256 NDS_RenderDriver.info.num_texture_formats; |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
257 SDL_memcpy(renderer->info.texture_formats, |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
258 NDS_RenderDriver.info.texture_formats, |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
259 sizeof(renderer->info.texture_formats)); |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
260 renderer->info.max_texture_width = |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
261 NDS_RenderDriver.info.max_texture_width; |
2679
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
262 renderer->info.max_texture_height = |
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
263 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
|
264 |
2698 | 265 data->sub = 0; /* TODO: this is hard-coded to the "main" screen. |
266 figure out how to detect whether to set it to | |
267 "sub" screen. window->id, perhaps? */ | |
268 if (!data->sub) { | |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
269 data->bg = &BACKGROUND; |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
270 } else { |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
271 data->bg = &BACKGROUND_SUB; |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
272 } |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
273 data->bg_taken[2] = data->bg_taken[3] = 0; |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
274 |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
275 NDS_OAM_Init(&(data->oam_copy), data->sub); /* init sprites. */ |
2672
74ac057679d5
NDS video driver is now functional, using software rendering and framebuffer.
Darren Alton <dalton@stevens.edu>
parents:
2671
diff
changeset
|
276 |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
277 return renderer; |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
278 } |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
279 |
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
280 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
|
281 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
|
282 { |
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 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2698 | 284 |
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
|
285 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
|
286 } |
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 |
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 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
|
289 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
|
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 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2698 | 292 |
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
|
293 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
|
294 } |
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 |
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
|
296 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
|
297 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
|
298 { |
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 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2679
bc3e3e889f6d
More NDS video driver work.
Darren Alton <dalton@stevens.edu>
parents:
2678
diff
changeset
|
300 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
|
301 int i; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
302 int bpp; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
303 Uint32 Rmask, Gmask, Bmask, Amask; |
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
|
304 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
305 if (!SDL_PixelFormatEnumToMasks |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
306 (texture->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
307 SDL_SetError("Unknown texture format"); |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
308 return -1; |
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
|
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 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
311 /* conditional statements on w/h to place it as bg/sprite |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
312 depending on which one it fits. */ |
2698 | 313 if (texture->w <= 64 && texture->h <= 64) { |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
314 int whichspr = -1; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
315 printf("Tried to make a sprite.\n"); |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
316 txdat->type = NDSTX_SPR; |
2698 | 317 for (i = 0; i < SPRITE_COUNT; ++i) { |
318 if (data->oam_copy.spriteBuffer[i].attribute[0] & ATTR0_DISABLED) { | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
319 whichspr = i; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
320 break; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
321 } |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
322 } |
2698 | 323 if (whichspr >= 0) { |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
324 SpriteEntry *sprent = &(data->oam_copy.spriteBuffer[whichspr]); |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
325 int maxside = texture->w > texture->h ? texture->w : texture->h; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
326 int pitch; |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
327 |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
328 texture->driverdata = SDL_calloc(1, sizeof(NDS_TextureData)); |
2698 | 329 txdat = (NDS_TextureData *) texture->driverdata; |
330 if (!txdat) { | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
331 SDL_OutOfMemory(); |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
332 return -1; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
333 } |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
334 |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
335 sprent->objMode = OBJMODE_BITMAP; |
2698 | 336 sprent->posX = 0; |
337 sprent->posY = 0; | |
338 sprent->colMode = OBJCOLOR_16; /* OBJCOLOR_256 for INDEX8 */ | |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
339 |
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
340 /* the first 32 sprites get transformation matrices. |
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
341 first come, first served */ |
2698 | 342 if (whichspr < MATRIX_COUNT) { |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
343 sprent->isRotoscale = 1; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
344 sprent->rsMatrixIdx = whichspr; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
345 } |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
346 |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
347 /* containing shape (square or 2:1 rectangles) */ |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
348 sprent->objShape = OBJSHAPE_SQUARE; |
2698 | 349 if (texture->w / 2 >= texture->h) { |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
350 sprent->objShape = OBJSHAPE_WIDE; |
2698 | 351 } else if (texture->h / 2 >= texture->w) { |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
352 sprent->objShape = OBJSHAPE_TALL; |
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
353 } |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
354 |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
355 /* size in pixels */ |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
356 /* FIXME: "pitch" is hardcoded for 2bytes per pixel. */ |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
357 sprent->objSize = OBJSIZE_64; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
358 pitch = 128; |
2698 | 359 if (maxside <= 8) { |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
360 sprent->objSize = OBJSIZE_8; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
361 pitch = 16; |
2698 | 362 } else if (maxside <= 16) { |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
363 sprent->objSize = OBJSIZE_16; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
364 pitch = 32; |
2698 | 365 } else if (maxside <= 32) { |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
366 sprent->objSize = OBJSIZE_32; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
367 pitch = 64; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
368 } |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
369 |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
370 /* FIXME: this is hard-coded and will obviously only work for one |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
371 sprite-texture. tells it to look at the beginning of SPRITE_GFX |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
372 for its pixels. */ |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
373 sprent->tileIdx = 0; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
374 |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
375 /* now for the texture data */ |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
376 txdat->type = NDSTX_SPR; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
377 txdat->hw_index = whichspr; |
2698 | 378 txdat->dim.hdx = 0x100; |
379 txdat->dim.hdy = 0; | |
380 txdat->dim.vdx = 0; | |
381 txdat->dim.vdy = 0x100; | |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
382 txdat->dim.pitch = pitch; |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
383 txdat->dim.bpp = bpp; |
2698 | 384 txdat->vram_pixels = (u16 *) (data->sub ? SPRITE_GFX_SUB : SPRITE_GFX); /* FIXME: use tileIdx*boundary |
385 to point to proper location */ | |
2694
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
386 } else { |
c1c7cb1b5a47
More sprite-work in the render driver, and some updates to the nds-test-progs.
Darren Alton <dalton@stevens.edu>
parents:
2693
diff
changeset
|
387 SDL_SetError("Out of NDS sprites."); |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
388 } |
2698 | 389 } else if (texture->w <= 256 && texture->h <= 256) { |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
390 int whichbg = -1, base = 0; |
2698 | 391 if (!data->bg_taken[2]) { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
392 whichbg = 2; |
2698 | 393 } else if (!data->bg_taken[3]) { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
394 whichbg = 3; |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
395 base = 4; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
396 } |
2698 | 397 if (whichbg >= 0) { |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
398 texture->driverdata = SDL_calloc(1, sizeof(NDS_TextureData)); |
2698 | 399 txdat = (NDS_TextureData *) texture->driverdata; |
400 if (!txdat) { | |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
401 SDL_OutOfMemory(); |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
402 return -1; |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
403 } |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
404 |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
405 /* this is hard-coded to being 256x256 ABGR1555 for now. */ |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
406 data->bg->control[whichbg] = (bpp == 8) ? |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
407 BG_BMP8_256x256 : BG_BMP16_256x256; |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
408 |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
409 data->bg->control[whichbg] |= BG_BMP_BASE(base); |
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
410 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
411 data->bg->scroll[whichbg].x = 0; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
412 data->bg->scroll[whichbg].y = 0; |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
413 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
414 txdat->type = NDSTX_BG; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
415 txdat->hw_index = whichbg; |
2698 | 416 txdat->dim.hdx = 0x100; |
417 txdat->dim.hdy = 0; | |
418 txdat->dim.vdx = 0; | |
419 txdat->dim.vdy = 0x100; | |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
420 txdat->dim.pitch = 512; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
421 txdat->dim.bpp = bpp; |
2698 | 422 txdat->vram_pixels = (u16 *) (data->sub ? |
423 BG_BMP_RAM_SUB(base) : | |
424 BG_BMP_RAM(base)); | |
2691
87cfb5fde5db
Rendering now partially works! (Some BIZARRE bug that I inadvertently fixed.)
Darren Alton <dalton@stevens.edu>
parents:
2690
diff
changeset
|
425 |
2698 | 426 /*txdat->size = txdat->dim.pitch * texture->h; */ |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
427 } else { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
428 SDL_SetError("Out of NDS backgrounds."); |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
429 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
430 } else { |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
431 SDL_SetError("Texture too big for NDS hardware."); |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
432 } |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
433 |
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
|
434 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
|
435 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
|
436 } |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
437 |
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
|
438 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
|
439 } |
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
|
440 |
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
|
441 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
|
442 NDS_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 443 void **pixels, int *pitch) |
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
|
444 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
445 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata; |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
446 *pixels = txdat->vram_pixels; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
447 *pitch = txdat->dim.pitch; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
448 return 0; |
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
|
449 } |
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
|
450 |
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
|
451 static int |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
452 NDS_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 453 const SDL_Rect * rect, const void *pixels, int pitch) |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
454 { |
2691
87cfb5fde5db
Rendering now partially works! (Some BIZARRE bug that I inadvertently fixed.)
Darren Alton <dalton@stevens.edu>
parents:
2690
diff
changeset
|
455 NDS_TextureData *txdat; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
456 Uint8 *src, *dst; |
2698 | 457 int row; |
458 size_t length; | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
459 |
2691
87cfb5fde5db
Rendering now partially works! (Some BIZARRE bug that I inadvertently fixed.)
Darren Alton <dalton@stevens.edu>
parents:
2690
diff
changeset
|
460 txdat = (NDS_TextureData *) texture->driverdata; |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
461 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
462 src = (Uint8 *) pixels; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
463 dst = |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
464 (Uint8 *) txdat->vram_pixels + rect->y * txdat->dim.pitch + |
2698 | 465 rect->x * ((txdat->dim.bpp + 1) / 8); |
466 length = rect->w * ((txdat->dim.bpp + 1) / 8); | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
467 |
2698 | 468 if (rect->w == texture->w) { |
469 dmaCopy(src, dst, length * rect->h); | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
470 } else { |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
471 for (row = 0; row < rect->h; ++row) { |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
472 dmaCopy(src, dst, length); |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
473 src += pitch; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
474 dst += txdat->dim.pitch; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
475 } |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
476 } |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
477 |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
478 return 0; |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
479 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
480 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
481 static int |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
482 NDS_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 483 const SDL_Rect * rect, int markDirty, void **pixels, |
484 int *pitch) | |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
485 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
486 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata; |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
487 |
2698 | 488 *pixels = (void *) ((u8 *) txdat->vram_pixels + rect->y |
489 * txdat->dim.pitch + | |
490 rect->x * ((txdat->dim.bpp + 1) / 8)); | |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
491 *pitch = txdat->dim.pitch; |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
492 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
493 return 0; |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
494 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
495 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
496 static void |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
497 NDS_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
498 { |
2698 | 499 /* stub! */ |
2685
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 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
502 static void |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
503 NDS_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 504 int numrects, const SDL_Rect * rects) |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
505 { |
2698 | 506 /* stub! */ |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
507 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
508 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
509 static int |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
510 NDS_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, |
2698 | 511 Uint8 a, const SDL_Rect * rect) |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
512 { |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
513 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
514 SDL_Rect real_rect = *rect; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
515 u16 color; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
516 int i, j; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
517 |
2698 | 518 color = RGB8(r, g, b); /* <-- macro in libnds that makes an ARGB1555 pixel */ |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
519 /* TODO: make a single-color sprite and stretch it. |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
520 calculate the "HDX" width modifier of the sprite by: |
2698 | 521 let S be the actual sprite's width (like, 32 pixels for example) |
522 let R be the rectangle's width (maybe 50 pixels) | |
523 HDX = (R<<8) / S; | |
524 (it's fixed point, hence the bit shift. same goes for vertical. | |
525 be sure to use 32-bit int's for the bit shift before the division!) | |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
526 */ |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
527 |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
528 return 0; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
529 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
530 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
531 static int |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
532 NDS_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 533 const SDL_Rect * srcrect, const SDL_Rect * dstrect) |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
534 { |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
535 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
536 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
|
537 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
|
538 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
539 int i; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
540 int bpp = SDL_BYTESPERPIXEL(texture->format); |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
541 int pitch = txdat->dim.pitch; |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
542 |
2698 | 543 if (txdat->type == NDSTX_BG) { |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
544 bg_rotation *bgrot = (txdat->hw_index == 2) ? |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
545 &(data->bg->bg2_rotation) : &(data->bg->bg3_rotation); |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
546 bgrot->xdx = txdat->dim.hdx; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
547 bgrot->xdy = txdat->dim.hdy; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
548 bgrot->ydx = txdat->dim.vdx; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
549 bgrot->ydy = txdat->dim.vdy; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
550 bgrot->centerX = 0; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
551 bgrot->centerY = 0; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
552 |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
553 data->bg->scroll[txdat->hw_index].x = dstrect->x; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
554 data->bg->scroll[txdat->hw_index].y = dstrect->y; |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
555 } else { |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
556 /* sprites not fully implemented yet */ |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
557 SpriteEntry *spr = &(data->oam_copy.spriteBuffer[txdat->hw_index]); |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
558 spr->posX = dstrect->x; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
559 spr->posY = dstrect->y; |
2698 | 560 if (txdat->hw_index < MATRIX_COUNT && spr->isRotoscale) { |
561 SpriteRotation *sprot = | |
562 &(data->oam_copy.matrixBuffer[txdat->hw_index]); | |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
563 sprot->hdx = txdat->dim.hdx; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
564 sprot->hdy = txdat->dim.hdy; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
565 sprot->vdx = txdat->dim.vdx; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
566 sprot->vdy = txdat->dim.vdy; |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
567 } |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
568 } |
2690
ca01c20274c0
More work and some bugfixes on the graphics driver.
Darren Alton <dalton@stevens.edu>
parents:
2688
diff
changeset
|
569 |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
570 return 0; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
571 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
572 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
573 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
574 static void |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
575 NDS_RenderPresent(SDL_Renderer * renderer) |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
576 { |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
577 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
|
578 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
|
579 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
580 |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
581 /* update sprites */ |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
582 NDS_OAM_Update(&(data->oam_copy), data->sub); |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
583 /* vsync for NDS */ |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
584 if (renderer->info.flags & SDL_RENDERER_PRESENTVSYNC) { |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
585 swiWaitForVBlank(); |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
586 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
587 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
588 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
589 static void |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
590 NDS_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
591 { |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
592 NDS_TextureData *txdat = texture->driverdata; |
2693
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
593 /* free anything else allocated for texture */ |
bae97b6ac32b
Beginnings of sprite support.
Darren Alton <dalton@stevens.edu>
parents:
2692
diff
changeset
|
594 SDL_free(txdat); |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
595 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
596 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
597 static void |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
598 NDS_DestroyRenderer(SDL_Renderer * renderer) |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
599 { |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
600 NDS_RenderData *data = (NDS_RenderData *) renderer->driverdata; |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
601 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
602 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
603 int i; |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
604 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
605 if (data) { |
2698 | 606 /* free anything else relevant if anything else is allocated. */ |
2685
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
607 SDL_free(data); |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
608 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
609 SDL_free(renderer); |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
610 } |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
611 |
2190b873ff00
Making room for test prog's
Darren Alton <dalton@stevens.edu>
parents:
2683
diff
changeset
|
612 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
|
613 NDS_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 614 const SDL_Color * colors, int firstcolor, int ncolors) |
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
|
615 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
616 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata; |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
617 /* set 8-bit modes in the background control registers |
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
618 for backgrounds, BGn_CR |= BG_256_COLOR */ |
2698 | 619 |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
620 return 0; |
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
|
621 } |
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
|
622 |
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
|
623 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
|
624 NDS_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
2698 | 625 SDL_Color * colors, int firstcolor, int ncolors) |
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
|
626 { |
2695
c04a266c277a
More sprite-driven texture work in the render/video drivers.
Darren Alton <dalton@stevens.edu>
parents:
2694
diff
changeset
|
627 NDS_TextureData *txdat = (NDS_TextureData *) texture->driverdata; |
2698 | 628 /* stub! */ |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
629 return 0; |
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
|
630 } |
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
|
631 |
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
|
632 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
|
633 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
|
634 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
635 /* stub! */ |
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
|
636 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
|
637 } |
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
|
638 |
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
|
639 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
|
640 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
|
641 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
642 /* stub! */ |
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
|
643 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
|
644 } |
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
|
645 |
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
|
646 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
|
647 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
|
648 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
649 /* stub! */ |
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
|
650 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
|
651 } |
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
|
652 |
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
|
653 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
|
654 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
|
655 { |
2688
71c56e900f8b
Cleaning up the renderer code to hopefully squish any problems. Starting to incorporate sprites, as well
Darren Alton <dalton@stevens.edu>
parents:
2687
diff
changeset
|
656 /* stub! (note: NDS hardware scaling is nearest neighbor.) */ |
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
|
657 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
|
658 } |
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
|
659 |
2670
6e4669f4db49
Fix for the previous commit: actually 'svn add'ed some files.
Darren Alton <dalton@stevens.edu>
parents:
diff
changeset
|
660 /* vi: set ts=4 sw=4 expandtab: */ |