Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
ffe479aa
Commit
ffe479aa
authored
Mar 27, 2011
by
Sam Lantinga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Temporarily removing sprite and sprite2 at Frank's request
parent
3b72fdef
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
0 additions
and
2876 deletions
+0
-2876
Makefile
test/nds-test-progs/sprite/Makefile
+0
-132
common.c
test/nds-test-progs/sprite/source/common.c
+0
-965
common.h
test/nds-test-progs/sprite/source/common.h
+0
-48
testsprite.c
test/nds-test-progs/sprite/source/testsprite.c
+0
-316
Makefile
test/nds-test-progs/sprite2/Makefile
+0
-132
icon.bmp
test/nds-test-progs/sprite2/icon.bmp
+0
-0
common.c
test/nds-test-progs/sprite2/source/common.c
+0
-965
common.h
test/nds-test-progs/sprite2/source/common.h
+0
-48
testsprite2.c
test/nds-test-progs/sprite2/source/testsprite2.c
+0
-270
No files found.
test/nds-test-progs/sprite/Makefile
deleted
100755 → 0
View file @
3b72fdef
#---------------------------------------------------------------------------------
.SUFFIXES
:
#---------------------------------------------------------------------------------
ifeq
($(strip
$(DEVKITARM)),)
$(error
"Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM"
)
endif
include
$(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET
:=
$(
shell
basename
$(CURDIR))
BUILD
:=
build
SOURCES
:=
source
DATA
:=
data
INCLUDES
:=
include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH
:=
-mthumb
-mthumb-interwork
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS
:=
-save-temps
-g
-Wall
-O0
\
-mcpu
=
arm9tdmi
-mtune
=
arm9tdmi
\
$(ARCH)
CFLAGS
+=
$(INCLUDE)
-DARM9
-D__NDS__
CXXFLAGS
:=
$(CFLAGS)
-fno-rtti
-fno-exceptions
-fno-exceptions
-fno-rtti
ASFLAGS
:=
-g
$(ARCH)
LDFLAGS
=
-specs
=
ds_arm9.specs
-g
$(ARCH)
-mno-fpu
-Wl
,-Map,
$
(
notdir
$*
.map
)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS
:=
-lSDL
-lfat
-lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS
:=
$(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq
($(BUILD),$(notdir
$(CURDIR)))
#---------------------------------------------------------------------------------
export
OUTPUT
:=
$(CURDIR)
/
$(TARGET)
export
VPATH
:=
$
(
foreach
dir
,
$(SOURCES)
,
$(CURDIR)
/
$(dir)
)
\
$
(
foreach
dir
,
$(DATA)
,
$(CURDIR)
/
$(dir)
)
export
DEPSDIR
:=
$(CURDIR)
/
$(BUILD)
CFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.c
)))
CPPFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.cpp
)))
SFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.s
)))
BINFILES
:=
$
(
foreach
dir
,
$(DATA)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.
*
)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq
($(strip
$(CPPFILES)),)
#---------------------------------------------------------------------------------
export
LD
:=
$(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export
LD
:=
$(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export
OFILES
:=
$
(
addsuffix .o,
$(BINFILES)
)
\
$
(
CPPFILES:.cpp
=
.o
)
$
(
CFILES:.c
=
.o
)
$
(
SFILES:.s
=
.o
)
export
INCLUDE
:=
$
(
foreach
dir
,
$(INCLUDES)
,-I
$(CURDIR)
/
$(dir)
)
\
$
(
foreach
dir
,
$(LIBDIRS)
,-I
$(dir)
/include
)
\
$
(
foreach
dir
,
$(LIBDIRS)
,-I
$(dir)
/include
)
\
-I
$(CURDIR)
/
$(BUILD)
export
LIBPATHS
:=
$
(
foreach
dir
,
$(LIBDIRS)
,-L
$(dir)
/lib
)
.PHONY
:
$(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD)
:
@
[
-d
$@
]
||
mkdir
-p
$@
@
make
--no-print-directory
-C
$(BUILD)
-f
$(CURDIR)
/Makefile
#---------------------------------------------------------------------------------
clean
:
@
echo
clean ...
@
rm
-fr
$(BUILD)
$(TARGET)
.elf
$(TARGET)
.nds
$(TARGET)
.arm9
$(TARGET)
.ds.gba
#---------------------------------------------------------------------------------
else
DEPENDS
:=
$
(
OFILES:.o
=
.d
)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba
:
$(OUTPUT).nds
$(OUTPUT).nds
:
$(OUTPUT).arm9
$(OUTPUT).arm9
:
$(OUTPUT).elf
$(OUTPUT).elf
:
$(OFILES)
#---------------------------------------------------------------------------------
%.pcx.o
:
%.pcx
#---------------------------------------------------------------------------------
@echo
$(notdir
$<)
@$(bin2o)
-include
$(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
test/nds-test-progs/sprite/source/common.c
deleted
100755 → 0
View file @
3b72fdef
This diff is collapsed.
Click to expand it.
test/nds-test-progs/sprite/source/common.h
deleted
100755 → 0
View file @
3b72fdef
/* A simple test program framework */
#include <SDL/SDL.h>
#define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004
#define VERBOSE_EVENT 0x00000008
#define VERBOSE_AUDIO 0x00000010
typedef
struct
{
/* SDL init flags */
char
**
argv
;
Uint32
flags
;
Uint32
verbose
;
/* Video info */
const
char
*
videodriver
;
int
display
;
const
char
*
window_title
;
Uint32
window_flags
;
int
window_x
;
int
window_y
;
int
window_w
;
int
window_h
;
int
depth
;
int
refresh_rate
;
int
num_windows
;
SDL_WindowID
*
windows
;
/* Renderer info */
const
char
*
renderdriver
;
Uint32
render_flags
;
SDL_bool
skip_renderer
;
/* Audio info */
const
char
*
audiodriver
;
SDL_AudioSpec
audiospec
;
}
CommonState
;
extern
CommonState
*
CommonCreateState
(
char
**
argv
,
Uint32
flags
);
extern
int
CommonArg
(
CommonState
*
state
,
int
index
);
extern
const
char
*
CommonUsage
(
CommonState
*
state
);
extern
SDL_bool
CommonInit
(
CommonState
*
state
);
extern
void
CommonEvent
(
CommonState
*
state
,
SDL_Event
*
event
,
int
*
done
);
extern
void
CommonQuit
(
CommonState
*
state
);
test/nds-test-progs/sprite/source/testsprite.c
deleted
100755 → 0
View file @
3b72fdef
/* Simple program: Move N sprites around on the screen as fast as possible */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <fat.h>
#include <SDL/SDL.h>
#define NUM_SPRITES 10
#define MAX_SPEED 1
SDL_Surface
*
sprite
;
int
numsprites
;
SDL_Rect
*
sprite_rects
;
SDL_Rect
*
positions
;
SDL_Rect
*
velocities
;
int
sprites_visible
;
int
debug_flip
;
Uint16
sprite_w
,
sprite_h
;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static
void
quit
(
int
rc
)
{
SDL_Quit
();
exit
(
rc
);
}
int
LoadSprite
(
char
*
file
)
{
SDL_Surface
*
temp
;
/* Load the sprite image */
sprite
=
SDL_LoadBMP
(
file
);
if
(
sprite
==
NULL
)
{
fprintf
(
stderr
,
"Couldn't load %s: %s"
,
file
,
SDL_GetError
());
return
(
-
1
);
}
/* Set transparent pixel as the pixel at (0,0) */
if
(
sprite
->
format
->
palette
)
{
SDL_SetColorKey
(
sprite
,
(
SDL_SRCCOLORKEY
|
SDL_RLEACCEL
),
*
(
Uint8
*
)
sprite
->
pixels
);
}
/* Convert sprite to video format */
temp
=
SDL_DisplayFormat
(
sprite
);
SDL_FreeSurface
(
sprite
);
if
(
temp
==
NULL
)
{
fprintf
(
stderr
,
"Couldn't convert background: %s
\n
"
,
SDL_GetError
());
return
(
-
1
);
}
sprite
=
temp
;
/* We're ready to roll. :) */
return
(
0
);
}
void
MoveSprites
(
SDL_Surface
*
screen
,
Uint32
background
)
{
int
i
,
nupdates
;
SDL_Rect
area
,
*
position
,
*
velocity
;
nupdates
=
0
;
/* Erase all the sprites if necessary */
if
(
sprites_visible
)
{
SDL_FillRect
(
screen
,
NULL
,
background
);
}
/* Move the sprite, bounce at the wall, and draw */
for
(
i
=
0
;
i
<
numsprites
;
++
i
)
{
position
=
&
positions
[
i
];
velocity
=
&
velocities
[
i
];
position
->
x
+=
velocity
->
x
;
if
((
position
->
x
<
0
)
||
(
position
->
x
>=
(
screen
->
w
-
sprite_w
)))
{
velocity
->
x
=
-
velocity
->
x
;
position
->
x
+=
velocity
->
x
;
}
position
->
y
+=
velocity
->
y
;
if
((
position
->
y
<
0
)
||
(
position
->
y
>=
(
screen
->
h
-
sprite_w
)))
{
velocity
->
y
=
-
velocity
->
y
;
position
->
y
+=
velocity
->
y
;
}
/* Blit the sprite onto the screen */
area
=
*
position
;
SDL_BlitSurface
(
sprite
,
NULL
,
screen
,
&
area
);
sprite_rects
[
nupdates
++
]
=
area
;
}
if
(
debug_flip
)
{
if
((
screen
->
flags
&
SDL_DOUBLEBUF
)
==
SDL_DOUBLEBUF
)
{
static
int
t
=
0
;
Uint32
color
=
SDL_MapRGB
(
screen
->
format
,
255
,
0
,
0
);
SDL_Rect
r
;
r
.
x
=
t
;
/* (sin((float) t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w - 20); */
r
.
y
=
0
;
r
.
w
=
20
;
r
.
h
=
screen
->
h
;
SDL_FillRect
(
screen
,
&
r
,
color
);
t
+=
2
;
}
}
/* Update the screen! */
if
((
screen
->
flags
&
SDL_DOUBLEBUF
)
==
SDL_DOUBLEBUF
)
{
SDL_Flip
(
screen
);
}
else
{
SDL_UpdateRects
(
screen
,
nupdates
,
sprite_rects
);
}
sprites_visible
=
1
;
}
/* This is a way of telling whether or not to use hardware surfaces */
Uint32
FastestFlags
(
Uint32
flags
,
int
width
,
int
height
,
int
bpp
)
{
const
SDL_VideoInfo
*
info
;
/* Hardware acceleration is only used in fullscreen mode */
flags
|=
SDL_FULLSCREEN
;
/* Check for various video capabilities */
info
=
SDL_GetVideoInfo
();
if
(
info
->
blit_hw_CC
&&
info
->
blit_fill
)
{
/* We use accelerated colorkeying and color filling */
flags
|=
SDL_HWSURFACE
;
}
/* If we have enough video memory, and will use accelerated
blits directly to it, then use page flipping.
*/
if
((
flags
&
SDL_HWSURFACE
)
==
SDL_HWSURFACE
)
{
/* Direct hardware blitting without double-buffering
causes really bad flickering.
*/
if
(
info
->
video_mem
*
1024
>
(
height
*
width
*
bpp
/
8
))
{
flags
|=
SDL_DOUBLEBUF
;
}
else
{
flags
&=
~
SDL_HWSURFACE
;
}
}
/* Return the flags */
return
(
flags
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
SDL_Surface
*
screen
;
Uint8
*
mem
;
int
width
,
height
;
Uint8
video_bpp
;
Uint32
videoflags
;
Uint32
background
;
int
i
,
done
;
SDL_Event
event
;
Uint32
then
,
now
,
frames
;
consoleDemoInit
();
puts
(
"Hello world! Initializing FAT..."
);
fatInitDefault
();
/* Initialize SDL */
if
(
SDL_Init
(
SDL_INIT_VIDEO
)
<
0
)
{
fprintf
(
stderr
,
"Couldn't initialize SDL: %s
\n
"
,
SDL_GetError
());
return
(
1
);
}
puts
(
"* initialized SDL"
);
numsprites
=
NUM_SPRITES
;
videoflags
=
SDL_SWSURFACE
/*| SDL_ANYFORMAT */
;
width
=
256
;
height
=
192
;
video_bpp
=
15
;
debug_flip
=
0
;
while
(
argc
>
1
)
{
--
argc
;
if
(
strcmp
(
argv
[
argc
-
1
],
"-width"
)
==
0
)
{
width
=
atoi
(
argv
[
argc
]);
--
argc
;
}
else
if
(
strcmp
(
argv
[
argc
-
1
],
"-height"
)
==
0
)
{
height
=
atoi
(
argv
[
argc
]);
--
argc
;
}
else
if
(
strcmp
(
argv
[
argc
-
1
],
"-bpp"
)
==
0
)
{
video_bpp
=
atoi
(
argv
[
argc
]);
videoflags
&=
~
SDL_ANYFORMAT
;
--
argc
;
}
else
if
(
strcmp
(
argv
[
argc
],
"-fast"
)
==
0
)
{
videoflags
=
FastestFlags
(
videoflags
,
width
,
height
,
video_bpp
);
}
else
if
(
strcmp
(
argv
[
argc
],
"-hw"
)
==
0
)
{
videoflags
^=
SDL_HWSURFACE
;
}
else
if
(
strcmp
(
argv
[
argc
],
"-flip"
)
==
0
)
{
videoflags
^=
SDL_DOUBLEBUF
;
}
else
if
(
strcmp
(
argv
[
argc
],
"-debugflip"
)
==
0
)
{
debug_flip
^=
1
;
}
else
if
(
strcmp
(
argv
[
argc
],
"-fullscreen"
)
==
0
)
{
videoflags
^=
SDL_FULLSCREEN
;
}
else
if
(
isdigit
(
argv
[
argc
][
0
]))
{
numsprites
=
atoi
(
argv
[
argc
]);
}
else
{
fprintf
(
stderr
,
"Usage: %s [-bpp N] [-hw] [-flip] [-fast] [-fullscreen] [numsprites]
\n
"
,
argv
[
0
]);
quit
(
1
);
}
}
/* Set video mode */
screen
=
SDL_SetVideoMode
(
width
,
height
,
video_bpp
,
videoflags
);
if
(
!
screen
)
{
fprintf
(
stderr
,
"Couldn't set %dx%d video mode: %s
\n
"
,
width
,
height
,
SDL_GetError
());
quit
(
2
);
}
screen
->
flags
&=
~
SDL_PREALLOC
;
puts
(
"* set video mode"
);
/* Load the sprite */
if
(
LoadSprite
(
"icon.bmp"
)
<
0
)
{
quit
(
1
);
}
puts
(
"* loaded sprite"
);
/* Allocate memory for the sprite info */
mem
=
(
Uint8
*
)
malloc
(
4
*
sizeof
(
SDL_Rect
)
*
numsprites
);
if
(
mem
==
NULL
)
{
SDL_FreeSurface
(
sprite
);
fprintf
(
stderr
,
"Out of memory!
\n
"
);
quit
(
2
);
}
sprite_rects
=
(
SDL_Rect
*
)
mem
;
positions
=
sprite_rects
;
sprite_rects
+=
numsprites
;
velocities
=
sprite_rects
;
sprite_rects
+=
numsprites
;
sprite_w
=
sprite
->
w
;
sprite_h
=
sprite
->
h
;
srand
(
time
(
NULL
));
for
(
i
=
0
;
i
<
numsprites
;
++
i
)
{
positions
[
i
].
x
=
rand
()
%
(
screen
->
w
-
sprite_w
);
positions
[
i
].
y
=
rand
()
%
(
screen
->
h
-
sprite_h
);
positions
[
i
].
w
=
sprite
->
w
;
positions
[
i
].
h
=
sprite
->
h
;
velocities
[
i
].
x
=
0
;
velocities
[
i
].
y
=
0
;
while
(
!
velocities
[
i
].
x
&&
!
velocities
[
i
].
y
)
{
velocities
[
i
].
x
=
(
rand
()
%
(
MAX_SPEED
*
2
+
1
))
-
MAX_SPEED
;
velocities
[
i
].
y
=
(
rand
()
%
(
MAX_SPEED
*
2
+
1
))
-
MAX_SPEED
;
}
}
background
=
SDL_MapRGB
(
screen
->
format
,
0x00
,
0x00
,
0x00
);
/* Print out information about our surfaces */
printf
(
"Screen is at %d bits per pixel
\n
"
,
screen
->
format
->
BitsPerPixel
);
if
((
screen
->
flags
&
SDL_HWSURFACE
)
==
SDL_HWSURFACE
)
{
printf
(
"Screen is in video memory
\n
"
);
}
else
{
printf
(
"Screen is in system memory
\n
"
);
}
if
((
screen
->
flags
&
SDL_DOUBLEBUF
)
==
SDL_DOUBLEBUF
)
{
printf
(
"Screen has double-buffering enabled
\n
"
);
}
if
((
sprite
->
flags
&
SDL_HWSURFACE
)
==
SDL_HWSURFACE
)
{
printf
(
"Sprite is in video memory
\n
"
);
}
else
{
printf
(
"Sprite is in system memory
\n
"
);
}
/* Run a sample blit to trigger blit acceleration */
{
SDL_Rect
dst
;
dst
.
x
=
0
;
dst
.
y
=
0
;
dst
.
w
=
sprite
->
w
;
dst
.
h
=
sprite
->
h
;
SDL_BlitSurface
(
sprite
,
NULL
,
screen
,
&
dst
);
SDL_FillRect
(
screen
,
&
dst
,
background
);
}
if
((
sprite
->
flags
&
SDL_HWACCEL
)
==
SDL_HWACCEL
)
{
printf
(
"Sprite blit uses hardware acceleration
\n
"
);
}
if
((
sprite
->
flags
&
SDL_RLEACCEL
)
==
SDL_RLEACCEL
)
{
printf
(
"Sprite blit uses RLE acceleration
\n
"
);
}
/* Loop, blitting sprites and waiting for a keystroke */
frames
=
0
;
then
=
SDL_GetTicks
();
done
=
0
;
sprites_visible
=
0
;
puts
(
"hello!"
);
while
(
!
done
)
{
/* Check for events */
++
frames
;
printf
(
"."
);
swiWaitForVBlank
();
MoveSprites
(
screen
,
background
);
}
puts
(
"goodbye!"
);
SDL_FreeSurface
(
sprite
);
free
(
mem
);
/* Print out some timing information */
now
=
SDL_GetTicks
();
if
(
now
>
then
)
{
printf
(
"%2.2f frames per second
\n
"
,
((
double
)
frames
*
1000
)
/
(
now
-
then
));
}
SDL_Quit
();
return
(
0
);
}
test/nds-test-progs/sprite2/Makefile
deleted
100755 → 0
View file @
3b72fdef
#---------------------------------------------------------------------------------
.SUFFIXES
:
#---------------------------------------------------------------------------------
ifeq
($(strip
$(DEVKITARM)),)
$(error
"Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM"
)
endif
include
$(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET
:=
$(
shell
basename
$(CURDIR))
BUILD
:=
build
SOURCES
:=
source
DATA
:=
data
INCLUDES
:=
include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH
:=
-mthumb
-mthumb-interwork
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS
:=
-save-temps
-g
-Wall
-O0
\
-mcpu
=
arm9tdmi
-mtune
=
arm9tdmi
\
$(ARCH)
CFLAGS
+=
$(INCLUDE)
-DARM9
-D__NDS__
CXXFLAGS
:=
$(CFLAGS)
-fno-rtti
-fno-exceptions
-fno-exceptions
-fno-rtti
ASFLAGS
:=
-g
$(ARCH)
LDFLAGS
=
-specs
=
ds_arm9.specs
-g
$(ARCH)
-mno-fpu
-Wl
,-Map,
$
(
notdir
$*
.map
)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS
:=
-lSDL
-lfat
-lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS
:=
$(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq
($(BUILD),$(notdir
$(CURDIR)))
#---------------------------------------------------------------------------------
export
OUTPUT
:=
$(CURDIR)
/
$(TARGET)
export
VPATH
:=
$
(
foreach
dir
,
$(SOURCES)
,
$(CURDIR)
/
$(dir)
)
\
$
(
foreach
dir
,
$(DATA)
,
$(CURDIR)
/
$(dir)
)
export
DEPSDIR
:=
$(CURDIR)
/
$(BUILD)
CFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.c
)))
CPPFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.cpp
)))
SFILES
:=
$
(
foreach
dir
,
$(SOURCES)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.s
)))
BINFILES
:=
$
(
foreach
dir
,
$(DATA)
,
$
(
notdir
$
(
wildcard
$(dir)
/
*
.
*
)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq
($(strip
$(CPPFILES)),)
#---------------------------------------------------------------------------------
export
LD
:=
$(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export
LD
:=
$(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export
OFILES
:=
$
(
addsuffix .o,
$(BINFILES)
)
\
$
(
CPPFILES:.cpp
=
.o
)
$
(
CFILES:.c
=
.o
)
$
(
SFILES:.s
=
.o
)
export
INCLUDE
:=
$
(
foreach
dir
,
$(INCLUDES)
,-I
$(CURDIR)
/
$(dir)
)
\
$
(
foreach
dir
,
$(LIBDIRS)
,-I
$(dir)
/include
)
\
$
(
foreach
dir
,
$(LIBDIRS)
,-I
$(dir)
/include
)
\
-I
$(CURDIR)
/
$(BUILD)
export
LIBPATHS
:=
$
(
foreach
dir
,
$(LIBDIRS)
,-L
$(dir)
/lib
)
.PHONY
:
$(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD)
:
@
[
-d
$@
]
||
mkdir
-p
$@
@
make
--no-print-directory
-C
$(BUILD)
-f
$(CURDIR)
/Makefile
#---------------------------------------------------------------------------------
clean
:
@
echo
clean ...
@
rm
-fr
$(BUILD)
$(TARGET)
.elf
$(TARGET)
.nds
$(TARGET)
.arm9
$(TARGET)
.ds.gba
#---------------------------------------------------------------------------------
else
DEPENDS
:=
$
(
OFILES:.o
=
.d
)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba
:
$(OUTPUT).nds
$(OUTPUT).nds
:
$(OUTPUT).arm9
$(OUTPUT).arm9
:
$(OUTPUT).elf
$(OUTPUT).elf
:
$(OFILES)
#---------------------------------------------------------------------------------
%.bin.o
:
%.bin
#---------------------------------------------------------------------------------
@echo
$(notdir
$<)
@$(bin2o)
-include
$(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
test/nds-test-progs/sprite2/icon.bmp
deleted
100644 → 0
View file @
3b72fdef
578 Bytes
test/nds-test-progs/sprite2/source/common.c
deleted
100755 → 0
View file @
3b72fdef
This diff is collapsed.
Click to expand it.
test/nds-test-progs/sprite2/source/common.h
deleted
100755 → 0
View file @
3b72fdef
/* A simple test program framework */
#include <SDL/SDL.h>
#define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004
#define VERBOSE_EVENT 0x00000008
#define VERBOSE_AUDIO 0x00000010
typedef
struct
{
/* SDL init flags */
char
**
argv
;
Uint32
flags
;
Uint32
verbose
;
/* Video info */
const
char
*
videodriver
;
int
display
;
const
char
*
window_title
;
Uint32
window_flags
;
int
window_x
;
int
window_y
;
int
window_w
;
int
window_h
;
int
depth
;
int
refresh_rate
;
int
num_windows
;
SDL_WindowID
*
windows
;
/* Renderer info */
const
char
*
renderdriver
;
Uint32
render_flags
;
SDL_bool
skip_renderer
;
/* Audio info */
const
char
*
audiodriver
;
SDL_AudioSpec
audiospec
;
}
CommonState
;
extern
CommonState
*
CommonCreateState
(
char
**
argv
,
Uint32
flags
);
extern
int
CommonArg
(
CommonState
*
state
,
int
index
);
extern
const
char
*
CommonUsage
(
CommonState
*
state
);
extern
SDL_bool
CommonInit
(
CommonState
*
state
);
extern
void
CommonEvent
(
CommonState
*
state
,
SDL_Event
*
event
,
int
*
done
);
extern
void
CommonQuit
(
CommonState
*
state
);
test/nds-test-progs/sprite2/source/testsprite2.c
deleted
100755 → 0
View file @
3b72fdef
/* Simple program: Move N sprites around on the screen as fast as possible */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <nds.h>
#include <fat.h>
#include "common.h"
#define NUM_SPRITES 10
#define MAX_SPEED 1
static
CommonState
*
state
;
static
int
num_sprites
;
static
SDL_TextureID
*
sprites
;
static
SDL_bool
cycle_color
;
static
SDL_bool
cycle_alpha
;
static
int
cycle_direction
=
1
;
static
int
current_alpha
=
0
;
static
int
current_color
=
0
;
static
SDL_Rect
*
positions
;
static
SDL_Rect
*
velocities
;
static
int
sprite_w
,
sprite_h
;
static
SDL_BlendMode
blendMode
=
SDL_BLENDMODE_MASK
;
static
SDL_TextureScaleMode
scaleMode
=
SDL_TEXTURESCALEMODE_NONE
;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static
void
quit
(
int
rc
)
{
if
(
sprites
)
{
SDL_free
(
sprites
);
}
if
(
positions
)
{
SDL_free
(
positions
);
}
if
(
velocities
)
{
SDL_free
(
velocities
);
}
CommonQuit
(
state
);
exit
(
rc
);
}
int
LoadSprite
(
char
*
file
)
{
int
i
;
SDL_Surface
*
temp
;
/* Load the sprite image */
temp
=
SDL_LoadBMP
(
file
);
if
(
temp
==
NULL
)
{
fprintf
(
stderr
,
"Couldn't load %s: %s"
,
file
,
SDL_GetError
());
return
(
-
1
);
}
sprite_w
=
temp
->
w
;
sprite_h
=
temp
->
h
;
/* Set transparent pixel as the pixel at (0,0) */
if
(
temp
->
format
->
palette
)
{
SDL_SetColorKey
(
temp
,
SDL_SRCCOLORKEY
,
*
(
Uint8
*
)
temp
->
pixels
);
}
/* Create textures from the image */
for
(
i
=
0
;
i
<
state
->
num_windows
;
++
i
)
{
SDL_SelectRenderer
(
state
->
windows
[
i
]);
sprites
[
i
]
=
SDL_CreateTextureFromSurface
(
0
,
temp
);
if
(
!
sprites
[
i
])
{
fprintf
(
stderr
,
"Couldn't create texture: %s
\n
"
,
SDL_GetError
());
SDL_FreeSurface
(
temp
);
return
(
-
1
);
}
SDL_SetTextureBlendMode
(
sprites
[
i
],
blendMode
);
SDL_SetTextureScaleMode
(
sprites
[
i
],
scaleMode
);
}
SDL_FreeSurface
(
temp
);
/* We're ready to roll. :) */
return
(
0
);
}
int
LoadSprite2
(
const
u8
*
ptr
,
int
size
)
{
int
i
;
SDL_Rect
r
=
{
0
,
0
,
32
,
32
};
for
(
i
=
0
;
i
<
state
->
num_windows
;
++
i
)
{
SDL_SelectRenderer
(
state
->
windows
[
i
]);
sprites
[
i
]
=
SDL_CreateTexture
(
SDL_PIXELFORMAT_ABGR1555
,
SDL_TEXTUREACCESS_STATIC
,
r
.
w
,
r
.
h
);
if
(
!
sprites
[
i
])
{
fprintf
(
stderr
,
"Couldn't create texture: %s
\n
"
,
SDL_GetError
());
return
-
1
;
}
SDL_UpdateTexture
(
sprites
[
i
],
&
r
,
ptr
,
r
.
w
*
2
);
SDL_SetTextureBlendMode
(
sprites
[
i
],
blendMode
);
SDL_SetTextureScaleMode
(
sprites
[
i
],
scaleMode
);
}
return
0
;
}
void
MoveSprites
(
SDL_WindowID
window
,
SDL_TextureID
sprite
)
{
int
i
,
n
;
int
window_w
,
window_h
;
SDL_Rect
area
,
*
position
,
*
velocity
;
SDL_SelectRenderer
(
window
);
/* Query the sizes */
SDL_GetWindowSize
(
window
,
&
window_w
,
&
window_h
);
/* Cycle the color and alpha, if desired */
if
(
cycle_color
)
{
current_color
+=
cycle_direction
;
if
(
current_color
<
0
)
{
current_color
=
0
;
cycle_direction
=
-
cycle_direction
;
}
if
(
current_color
>
255
)
{
current_color
=
255
;
cycle_direction
=
-
cycle_direction
;
}
SDL_SetTextureColorMod
(
sprite
,
255
,
(
Uint8
)
current_color
,
(
Uint8
)
current_color
);
}
if
(
cycle_alpha
)
{
current_alpha
+=
cycle_direction
;
if
(
current_alpha
<
0
)
{
current_alpha
=
0
;
cycle_direction
=
-
cycle_direction
;
}
if
(
current_alpha
>
255
)
{
current_alpha
=
255
;
cycle_direction
=
-
cycle_direction
;
}
SDL_SetTextureAlphaMod
(
sprite
,
(
Uint8
)
current_alpha
);
}
/* Move the sprite, bounce at the wall, and draw */
n
=
0
;
SDL_RenderFill
(
0xA0
,
0xA0
,
0xA0
,
0xFF
,
NULL
);
for
(
i
=
0
;
i
<
num_sprites
;
++
i
)
{
position
=
&
positions
[
i
];
velocity
=
&
velocities
[
i
];
position
->
x
+=
velocity
->
x
;
if
((
position
->
x
<
0
)
||
(
position
->
x
>=
(
window_w
-
sprite_w
)))
{
velocity
->
x
=
-
velocity
->
x
;
position
->
x
+=
velocity
->
x
;
}
position
->
y
+=
velocity
->
y
;
if
((
position
->
y
<
0
)
||
(
position
->
y
>=
(
window_h
-
sprite_w
)))
{
velocity
->
y
=
-
velocity
->
y
;
position
->
y
+=
velocity
->
y
;
}
/* Blit the sprite onto the screen */
SDL_RenderCopy
(
sprite
,
NULL
,
position
);
}
/* Update the screen! */
SDL_RenderPresent
();
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
done
;
SDL_Event
event
;
Uint32
then
,
now
,
frames
;
consoleDemoInit
();
puts
(
"Hello world! Initializing FAT..."
);
fatInitDefault
();
/* Initialize parameters */
num_sprites
=
NUM_SPRITES
;
/* Initialize test framework */
state
=
CommonCreateState
(
argv
,
SDL_INIT_VIDEO
);
if
(
!
state
)
{
return
1
;
}
if
(
!
CommonInit
(
state
))
{
quit
(
2
);
}
/* Create the windows, initialize the renderers, and load the textures */
sprites
=
(
SDL_TextureID
*
)
SDL_malloc
(
state
->
num_windows
*
sizeof
(
*
sprites
));
if
(
!
sprites
)
{
fprintf
(
stderr
,
"Out of memory!
\n
"
);
quit
(
2
);
}
for
(
i
=
0
;
i
<
state
->
num_windows
;
++
i
)
{
SDL_SelectRenderer
(
state
->
windows
[
i
]);
SDL_RenderFill
(
0xA0
,
0xA0
,
0xA0
,
0xFF
,
NULL
);
}
if
(
LoadSprite
(
"icon.bmp"
)
<
0
)
{
printf
(
"
\n
errored.
\n
"
);
while
(
1
);
quit
(
2
);
}
/* Allocate memory for the sprite info */
positions
=
(
SDL_Rect
*
)
SDL_malloc
(
num_sprites
*
sizeof
(
SDL_Rect
));
velocities
=
(
SDL_Rect
*
)
SDL_malloc
(
num_sprites
*
sizeof
(
SDL_Rect
));
if
(
!
positions
||
!
velocities
)
{
fprintf
(
stderr
,
"Out of memory!
\n
"
);
quit
(
2
);
}
srand
(
time
(
NULL
));
if
(
scaleMode
!=
SDL_TEXTURESCALEMODE_NONE
)
{
sprite_w
+=
sprite_w
/
2
;
sprite_h
+=
sprite_h
/
2
;
}
for
(
i
=
0
;
i
<
num_sprites
;
++
i
)
{
positions
[
i
].
x
=
rand
()
%
(
state
->
window_w
-
sprite_w
);
positions
[
i
].
y
=
rand
()
%
(
state
->
window_h
-
sprite_h
);
positions
[
i
].
w
=
sprite_w
;
positions
[
i
].
h
=
sprite_h
;
velocities
[
i
].
x
=
0
;
velocities
[
i
].
y
=
0
;
while
(
!
velocities
[
i
].
x
&&
!
velocities
[
i
].
y
)
{
velocities
[
i
].
x
=
(
rand
()
%
(
MAX_SPEED
*
2
+
1
))
-
MAX_SPEED
;
velocities
[
i
].
y
=
(
rand
()
%
(
MAX_SPEED
*
2
+
1
))
-
MAX_SPEED
;
}
}
/* Main render loop */
frames
=
0
;
then
=
SDL_GetTicks
();
done
=
0
;
while
(
!
done
)
{
/* Check for events */
++
frames
;
while
(
SDL_PollEvent
(
&
event
))
{
CommonEvent
(
state
,
&
event
,
&
done
);
switch
(
event
.
type
)
{
case
SDL_WINDOWEVENT
:
switch
(
event
.
window
.
event
)
{
case
SDL_WINDOWEVENT_EXPOSED
:
SDL_SelectRenderer
(
event
.
window
.
windowID
);
SDL_RenderFill
(
0xA0
,
0xA0
,
0xA0
,
0xFF
,
NULL
);
break
;
}
break
;
default:
break
;
}
}
for
(
i
=
0
;
i
<
state
->
num_windows
;
++
i
)
{
MoveSprites
(
state
->
windows
[
i
],
sprites
[
i
]);
}
}
/* Print out some timing information */
now
=
SDL_GetTicks
();
if
(
now
>
then
)
{
printf
(
"%2.2f frames per second
\n
"
,
((
double
)
frames
*
1000
)
/
(
now
-
then
));
}
quit
(
0
);
return
0
;
}
/* vi: set ts=4 sw=4 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment