mirror of
git://projects.qi-hardware.com/openwrt-packages.git
synced 2024-08-26 08:01:29 +03:00
2615 lines
72 KiB
Diff
2615 lines
72 KiB
Diff
Only in supertux-0.1.3: aclocal.m4
|
||
diff -ur supertux-0.1.3/AUTHORS supertux-0.1.3-gp2x/AUTHORS
|
||
--- supertux-0.1.3/AUTHORS 2005-07-02 14:37:30.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/AUTHORS 2006-04-13 06:11:02.000000000 +0300
|
||
@@ -91,6 +91,12 @@
|
||
|
||
Royalty free CDROMs and FTP sites sounds
|
||
|
||
+Port to GP2X
|
||
+-----------
|
||
+ Ingo Arndt
|
||
+ scachi@gmx.de
|
||
+ http://www.bitmage.de
|
||
+
|
||
More information and contacts
|
||
=============================
|
||
|
||
Only in supertux-0.1.3: autom4te.cache
|
||
Only in supertux-0.1.3-gp2x: autoscan.log
|
||
Only in supertux-0.1.3-gp2x: COMPILE4GP2X
|
||
Only in supertux-0.1.3: config.guess
|
||
Only in supertux-0.1.3: config.log
|
||
Only in supertux-0.1.3: config.status
|
||
Only in supertux-0.1.3: config.sub
|
||
Only in supertux-0.1.3: configure
|
||
diff -ur supertux-0.1.3/configure.ac supertux-0.1.3-gp2x/configure.ac
|
||
--- supertux-0.1.3/configure.ac 2005-07-06 12:26:15.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/configure.ac 2006-04-19 22:29:05.000000000 +0300
|
||
@@ -76,13 +76,33 @@
|
||
CFLAGS="$CFLAGS $SDL_CFLAGS"
|
||
LIBS="$LIBS $SDL_LIBS"
|
||
|
||
+AM_PATH_LIBMIKMOD(,
|
||
+ :,
|
||
+ AC_MSG_ERROR([*** mikmod not found!]))
|
||
+CXXFLAGS="$CXXFLAGS $LIBMIKMOD_CFLAGS"
|
||
+CFLAGS="$CFLAGS $LIBMIKMOD_CFLAGS"
|
||
+LIBS="$LIBS $LIBMIKMOD_LIBS"
|
||
+
|
||
dnl Checks for additional libraries.
|
||
+AC_CHECK_LIB(smpeg, SMPEG_status)
|
||
+
|
||
+AC_CHECK_LIB(mikmod, MikMod_Init)
|
||
+
|
||
AC_CHECK_LIB(SDL_mixer, Mix_OpenAudio,,
|
||
AC_MSG_ERROR([SDL_mixer library required]))
|
||
|
||
+AC_CHECK_LIB(jpeg,jpeg_abort)
|
||
+
|
||
+AC_CHECK_LIB(z,compress)
|
||
+
|
||
+AC_CHECK_LIB(png,png_free)
|
||
+
|
||
AC_CHECK_LIB(SDL_image, IMG_Load,,
|
||
AC_MSG_ERROR([SDL_image library required]))
|
||
|
||
+AC_CHECK_LIB(SDL_gfx, rotozoomSurface,,
|
||
+ AC_MSG_ERROR([SDL_gfx library required]))
|
||
+
|
||
if test "x${enable_opengl}" != "xno"; then
|
||
AX_CHECK_GL
|
||
fi
|
||
@@ -95,7 +115,30 @@
|
||
LIBS="$LIBS $GL_LIBS"
|
||
fi
|
||
|
||
-AC_CHECK_LIB(z, gzopen,, AC_MSG_ERROR([*** zlib is missing]))
|
||
+# compile for the testing the 320x240 resolution
|
||
+# compile for the gp2x
|
||
+AC_ARG_ENABLE(gp2x,
|
||
+[ --enable-gp2x Build the gp2x version [default=no]],
|
||
+ , enable_gp2x=no)
|
||
+if test x$enable_gp2x = xyes; then
|
||
+ CXXFLAGS="$CXXFLAGS -DGP2X"
|
||
+fi
|
||
+
|
||
+AC_ARG_ENABLE(320x240,
|
||
+[ --enable-320x240 Test the 320x240 resolution [default=no]],
|
||
+ , enable_320x240=no)
|
||
+if test x$enable_320x240 = xyes; then
|
||
+ CXXFLAGS="$CXXFLAGS -DRES320X240"
|
||
+fi
|
||
+
|
||
+# compile static
|
||
+AC_ARG_ENABLE(static,
|
||
+[ --enable-static Build the static version [default=no]],
|
||
+ , enable_static=no)
|
||
+if test x$enable_static = xyes; then
|
||
+ CXXFLAGS="$CXXFLAGS -static"
|
||
+fi
|
||
+
|
||
|
||
CXXFLAGS="$CXXFLAGS -DDATA_PREFIX='\"$datadir/supertux\"'"
|
||
|
||
@@ -110,6 +153,9 @@
|
||
echo " Profile Mode: $enable_gprof"
|
||
echo " Debug Mode: $enable_debug"
|
||
echo " OpenGL Support: $enable_opengl"
|
||
+echo " 320x240 Resolution: $enable_320x240"
|
||
+echo " GP2X Build (+320x240): $enable_gp2x"
|
||
+echo " Static Build: $enable_static"
|
||
echo ""
|
||
|
||
# EOF #
|
||
Only in supertux-0.1.3/data: CREDITS
|
||
Only in supertux-0.1.3/data: extro-bonus2.txt
|
||
Only in supertux-0.1.3/data: extro-bonus.txt
|
||
Only in supertux-0.1.3/data: extro.txt
|
||
Only in supertux-0.1.3/data: images
|
||
Only in supertux-0.1.3/data: intro.txt
|
||
Only in supertux-0.1.3/data: levels
|
||
Only in supertux-0.1.3/data: Makefile
|
||
Only in supertux-0.1.3/data: Makefile.in
|
||
Only in supertux-0.1.3/data: music
|
||
Only in supertux-0.1.3/data: sounds
|
||
Only in supertux-0.1.3/data: supertux.strf
|
||
Only in supertux-0.1.3: depcomp
|
||
Only in supertux-0.1.3: install-sh
|
||
Only in supertux-0.1.3: m4
|
||
Only in supertux-0.1.3: Makefile
|
||
Only in supertux-0.1.3: Makefile.in
|
||
Only in supertux-0.1.3: missing
|
||
Only in supertux-0.1.3: mkinstalldirs
|
||
Only in supertux-0.1.3: patches
|
||
diff -ur supertux-0.1.3/src/badguy.cpp supertux-0.1.3-gp2x/src/badguy.cpp
|
||
--- supertux-0.1.3/src/badguy.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/badguy.cpp 2006-04-20 21:32:23.000000000 +0300
|
||
@@ -250,7 +250,11 @@
|
||
tux.kick_timer.start(KICKING_TIME);
|
||
set_sprite(img_mriceblock_flat_left, img_mriceblock_flat_right);
|
||
physic.set_velocity_x((dir == LEFT) ? -3.5 : 3.5);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_KICK],SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_KICK);
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
@@ -260,6 +264,7 @@
|
||
check_horizontal_bump();
|
||
if(mode == KICK && changed != dir)
|
||
{
|
||
+#ifndef GP2X
|
||
/* handle stereo sound (number 10 should be tweaked...)*/
|
||
if (base.x < scroll_x + screen->w/2 - 10)
|
||
play_sound(sounds[SND_RICOCHET], SOUND_LEFT_SPEAKER);
|
||
@@ -267,6 +272,9 @@
|
||
play_sound(sounds[SND_RICOCHET], SOUND_RIGHT_SPEAKER);
|
||
else
|
||
play_sound(sounds[SND_RICOCHET], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_RICOCHET);
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
@@ -455,11 +463,15 @@
|
||
|
||
/* play explosion sound */ // FIXME: is the stereo all right? maybe we should use player cordinates...
|
||
if (base.x < scroll_x + screen->w/2 - 10)
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_EXPLODE], SOUND_LEFT_SPEAKER);
|
||
else if (base.x > scroll_x + screen->w/2 + 10)
|
||
play_sound(sounds[SND_EXPLODE], SOUND_RIGHT_SPEAKER);
|
||
else
|
||
play_sound(sounds[SND_EXPLODE], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_EXPLODE);
|
||
+#endif
|
||
|
||
} else if(mode == BOMB_EXPLODE) {
|
||
remove_me();
|
||
@@ -677,13 +689,21 @@
|
||
}
|
||
|
||
// BadGuy fall below the ground
|
||
+#ifndef RES320X240
|
||
if (base.y > screen->h) {
|
||
+#else
|
||
+ if (base.y > 640) {
|
||
+#endif
|
||
remove_me();
|
||
return;
|
||
}
|
||
|
||
// Once it's on screen, it's activated!
|
||
+#ifndef RES320X240
|
||
if (base.x <= scroll_x + screen->w + OFFSCREEN_DISTANCE)
|
||
+#else
|
||
+ if (base.x <= scroll_x + 640 + OFFSCREEN_DISTANCE)
|
||
+#endif
|
||
seen = true;
|
||
|
||
if(!seen)
|
||
@@ -743,7 +763,11 @@
|
||
BadGuy::draw()
|
||
{
|
||
// Don't try to draw stuff that is outside of the screen
|
||
+#ifndef RES320X240
|
||
if(base.x <= scroll_x - base.width || base.x >= scroll_x + screen->w)
|
||
+#else
|
||
+ if(base.x <= scroll_x - base.width || base.x >= scroll_x + 640)
|
||
+#endif
|
||
return;
|
||
|
||
if(sprite_left == 0 || sprite_right == 0)
|
||
@@ -811,7 +835,11 @@
|
||
|
||
World::current()->add_score(base.x - scroll_x,
|
||
base.y, 50 * player_status.score_multiplier);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_SQUISH);
|
||
+#endif
|
||
player_status.score_multiplier++;
|
||
|
||
dying = DYING_SQUISHED;
|
||
@@ -830,7 +858,11 @@
|
||
|
||
player->jump_of_badguy(this);
|
||
World::current()->add_score(base.x - scroll_x, base.y, 50 * player_status.score_multiplier);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_SQUISH);
|
||
+#endif
|
||
player_status.score_multiplier++;
|
||
remove_me();
|
||
return;
|
||
@@ -839,7 +871,11 @@
|
||
if (mode == NORMAL || mode == KICK)
|
||
{
|
||
/* Flatten! */
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_STOMP], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_STOMP);
|
||
+#endif
|
||
mode = FLAT;
|
||
set_sprite(img_mriceblock_flat_left, img_mriceblock_flat_right);
|
||
physic.set_velocity_x(0);
|
||
@@ -847,7 +883,11 @@
|
||
timer.start(4000);
|
||
} else if (mode == FLAT) {
|
||
/* Kick! */
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_KICK], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_KICK);
|
||
+#endif
|
||
|
||
if (player->base.x < base.x + (base.width/2)) {
|
||
physic.set_velocity_x(5);
|
||
@@ -925,7 +965,11 @@
|
||
score * player_status.score_multiplier);
|
||
|
||
/* Play death sound: */
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_FALL);
|
||
+#endif
|
||
}
|
||
|
||
void BadGuy::explode(BadGuy *badguy)
|
||
@@ -1053,7 +1097,11 @@
|
||
/* Get kicked if were flat */
|
||
if (mode == FLAT && !dying)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_KICK], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_KICK);
|
||
+#endif
|
||
|
||
// Hit from left side
|
||
if (player->base.x < base.x) {
|
||
diff -ur supertux-0.1.3/src/configfile.cpp supertux-0.1.3-gp2x/src/configfile.cpp
|
||
--- supertux-0.1.3/src/configfile.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/configfile.cpp 2006-04-10 13:32:19.000000000 +0300
|
||
@@ -92,12 +92,22 @@
|
||
else
|
||
use_joystick = true;
|
||
|
||
+#ifndef GP2X
|
||
reader.read_int ("joystick-x", &joystick_keymap.x_axis);
|
||
reader.read_int ("joystick-y", &joystick_keymap.y_axis);
|
||
reader.read_int ("joystick-a", &joystick_keymap.a_button);
|
||
reader.read_int ("joystick-b", &joystick_keymap.b_button);
|
||
reader.read_int ("joystick-start", &joystick_keymap.start_button);
|
||
reader.read_int ("joystick-deadzone", &joystick_keymap.dead_zone);
|
||
+#else
|
||
+ reader.read_int ("joystick-up", &joystick_keymap.up_button);
|
||
+ reader.read_int ("joystick-down", &joystick_keymap.down_button);
|
||
+ reader.read_int ("joystick-right", &joystick_keymap.right_button);
|
||
+ reader.read_int ("joystick-left", &joystick_keymap.left_button);
|
||
+ reader.read_int ("joystick-a", &joystick_keymap.a_button);
|
||
+ reader.read_int ("joystick-b", &joystick_keymap.b_button);
|
||
+ reader.read_int ("joystick-start", &joystick_keymap.start_button);
|
||
+#endif
|
||
|
||
reader.read_int ("keyboard-jump", &keymap.jump);
|
||
reader.read_int ("keyboard-duck", &keymap.duck);
|
||
@@ -130,12 +140,22 @@
|
||
fprintf(config, "\n\t;; joystick number (-1 means no joystick):\n");
|
||
fprintf(config, "\t(joystick %d)\n", use_joystick ? joystick_num : -1);
|
||
|
||
+#ifndef GP2X
|
||
fprintf(config, "\t(joystick-x %d)\n", joystick_keymap.x_axis);
|
||
fprintf(config, "\t(joystick-y %d)\n", joystick_keymap.y_axis);
|
||
fprintf(config, "\t(joystick-a %d)\n", joystick_keymap.a_button);
|
||
fprintf(config, "\t(joystick-b %d)\n", joystick_keymap.b_button);
|
||
fprintf(config, "\t(joystick-start %d)\n", joystick_keymap.start_button);
|
||
fprintf(config, "\t(joystick-deadzone %d)\n", joystick_keymap.dead_zone);
|
||
+#else
|
||
+ fprintf(config, "\t(joystick-up %d)\n", joystick_keymap.up_button);
|
||
+ fprintf(config, "\t(joystick-down %d)\n", joystick_keymap.down_button);
|
||
+ fprintf(config, "\t(joystick-right %d)\n", joystick_keymap.right_button);
|
||
+ fprintf(config, "\t(joystick-left %d)\n", joystick_keymap.left_button);
|
||
+ fprintf(config, "\t(joystick-a %d)\n", joystick_keymap.a_button);
|
||
+ fprintf(config, "\t(joystick-b %d)\n", joystick_keymap.b_button);
|
||
+ fprintf(config, "\t(joystick-start %d)\n", joystick_keymap.start_button);
|
||
+#endif
|
||
|
||
fprintf(config, "\t(keyboard-jump %d)\n", keymap.jump);
|
||
fprintf(config, "\t(keyboard-duck %d)\n", keymap.duck);
|
||
diff -ur supertux-0.1.3/src/defines.h supertux-0.1.3-gp2x/src/defines.h
|
||
--- supertux-0.1.3/src/defines.h 2005-07-07 02:05:03.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/defines.h 2006-04-11 22:02:05.000000000 +0300
|
||
@@ -91,7 +91,11 @@
|
||
|
||
/* Scrolling text speed */
|
||
|
||
+#ifndef RES320X240
|
||
#define SCROLL_SPEED_CREDITS 1.2
|
||
+#else
|
||
+#define SCROLL_SPEED_CREDITS 2.4
|
||
+#endif
|
||
#define SCROLL_SPEED_MESSAGE 1.0
|
||
|
||
/* Debugging */
|
||
Only in supertux-0.1.3/src: .deps
|
||
diff -ur supertux-0.1.3/src/gameloop.cpp supertux-0.1.3-gp2x/src/gameloop.cpp
|
||
--- supertux-0.1.3/src/gameloop.cpp 2005-07-02 15:16:08.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/gameloop.cpp 2006-05-05 23:22:58.000000000 +0300
|
||
@@ -288,6 +288,7 @@
|
||
|
||
switch(event.type)
|
||
{
|
||
+#ifndef GP2X
|
||
case SDL_QUIT: /* Quit event - quit: */
|
||
st_abort("Received window close", "");
|
||
break;
|
||
@@ -434,22 +435,60 @@
|
||
tux.input.down = UP;
|
||
}
|
||
break;
|
||
-
|
||
+#endif
|
||
case SDL_JOYBUTTONDOWN:
|
||
+#ifndef GP2X
|
||
+ if (event.jbutton.button == joystick_keymap.a_button)
|
||
+ tux.input.up = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.b_button)
|
||
+ tux.input.fire = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.start_button)
|
||
+ on_escape_press();
|
||
+ break;
|
||
+#else
|
||
if (event.jbutton.button == joystick_keymap.a_button)
|
||
tux.input.up = DOWN;
|
||
else if (event.jbutton.button == joystick_keymap.b_button)
|
||
tux.input.fire = DOWN;
|
||
else if (event.jbutton.button == joystick_keymap.start_button)
|
||
on_escape_press();
|
||
+ else if (event.jbutton.button == joystick_keymap.up_button)
|
||
+ tux.input.up = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.down_button)
|
||
+ tux.input.down = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.right_button)
|
||
+ tux.input.right = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.left_button)
|
||
+ tux.input.left = DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.voldown_button)
|
||
+ decreaseSoundVolume();
|
||
+ else if (event.jbutton.button == joystick_keymap.volup_button)
|
||
+ increaseSoundVolume();
|
||
break;
|
||
+#endif
|
||
+
|
||
case SDL_JOYBUTTONUP:
|
||
+#ifndef GP2X
|
||
if (event.jbutton.button == joystick_keymap.a_button)
|
||
tux.input.up = UP;
|
||
else if (event.jbutton.button == joystick_keymap.b_button)
|
||
tux.input.fire = UP;
|
||
break;
|
||
-
|
||
+#else
|
||
+ if (event.jbutton.button == joystick_keymap.a_button)
|
||
+ tux.input.up = UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.b_button)
|
||
+ tux.input.fire = UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.up_button)
|
||
+ tux.input.up = UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.down_button)
|
||
+ tux.input.down = UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.right_button)
|
||
+ tux.input.right = UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.left_button)
|
||
+ tux.input.left = UP;
|
||
+ break;
|
||
+#endif
|
||
default:
|
||
break;
|
||
} /* switch */
|
||
@@ -464,7 +503,7 @@
|
||
Player* tux = world->get_tux();
|
||
|
||
/* End of level? */
|
||
- int endpos = (World::current()->get_level()->width-5) * 32;
|
||
+ int endpos = (World::current()->get_level()->width-5) * (32);
|
||
Tile* endtile = collision_goal(tux->base);
|
||
|
||
// fallback in case the other endpositions don't trigger
|
||
@@ -545,7 +584,7 @@
|
||
Menu::current()->draw();
|
||
mouse_cursor->draw();
|
||
}
|
||
-
|
||
+ //updateSound();
|
||
updatescreen();
|
||
}
|
||
|
||
@@ -599,6 +638,7 @@
|
||
|
||
while (exit_status == ES_NONE)
|
||
{
|
||
+ SDL_Delay(10);
|
||
/* Calculate the movement-factor */
|
||
double frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
|
||
|
||
@@ -686,6 +726,7 @@
|
||
fps_cnt = 0;
|
||
}
|
||
}
|
||
+ //updateSound();
|
||
}
|
||
|
||
return exit_status;
|
||
@@ -694,21 +735,32 @@
|
||
/* Bounce a brick: */
|
||
void bumpbrick(float x, float y)
|
||
{
|
||
- World::current()->add_bouncy_brick(((int)(x + 1) / 32) * 32,
|
||
- (int)(y / 32) * 32);
|
||
+ World::current()->add_bouncy_brick(((int)(x + 1) / (32)) * (32),
|
||
+ (int)(y / (32)) * (32));
|
||
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_BRICK);
|
||
+#endif
|
||
}
|
||
|
||
/* (Status): */
|
||
void
|
||
GameSession::drawstatus()
|
||
{
|
||
+ int xdiv;
|
||
+#ifdef RES320X240
|
||
+ xdiv=2;
|
||
+#else
|
||
+ xdiv=1;
|
||
+#endif
|
||
+
|
||
char str[60];
|
||
|
||
sprintf(str, "%d", player_status.score);
|
||
white_text->draw("SCORE", 0, 0, 1);
|
||
- gold_text->draw(str, 96, 0, 1);
|
||
+ gold_text->draw(str, 96/xdiv, 0, 1);
|
||
|
||
if(st_gl_mode == ST_GL_TEST)
|
||
{
|
||
@@ -716,28 +768,33 @@
|
||
}
|
||
|
||
if(!time_left.check()) {
|
||
- white_text->draw("TIME'S UP", 224, 0, 1);
|
||
+ white_text->draw("TIME'S UP", 224/xdiv, 0, 1);
|
||
} else if (time_left.get_left() > TIME_WARNING || (global_frame_counter % 10) < 5) {
|
||
sprintf(str, "%d", time_left.get_left() / 1000 );
|
||
- white_text->draw("TIME", 224, 0, 1);
|
||
- gold_text->draw(str, 304, 0, 1);
|
||
+ white_text->draw("TIME", 224/xdiv, 0, 1);
|
||
+ gold_text->draw(str, 304/xdiv, 0, 1);
|
||
}
|
||
|
||
sprintf(str, "%d", player_status.distros);
|
||
white_text->draw("COINS", screen->h, 0, 1);
|
||
- gold_text->draw(str, 608, 0, 1);
|
||
+ gold_text->draw(str, 608/xdiv, 0, 1);
|
||
|
||
- white_text->draw("LIVES", 480, 20);
|
||
+ white_text->draw("LIVES", 480/xdiv, 20);
|
||
if (player_status.lives >= 5)
|
||
{
|
||
sprintf(str, "%dx", player_status.lives);
|
||
+#ifdef RES320X240
|
||
+ gold_text->draw_align(str, 617/xdiv-5, 20, A_RIGHT, A_TOP);
|
||
+ tux_life->draw(565+(18*3)/xdiv+10, 20);
|
||
+#else
|
||
gold_text->draw_align(str, 617, 20, A_RIGHT, A_TOP);
|
||
tux_life->draw(565+(18*3), 20);
|
||
+#endif
|
||
}
|
||
else
|
||
{
|
||
for(int i= 0; i < player_status.lives; ++i)
|
||
- tux_life->draw(565+(18*i),20);
|
||
+ tux_life->draw(565+(18*i)/xdiv,20);
|
||
}
|
||
|
||
if(show_fps)
|
||
@@ -746,6 +803,7 @@
|
||
white_text->draw("FPS", screen->h, 40, 1);
|
||
gold_text->draw(str, screen->h + 60, 40, 1);
|
||
}
|
||
+// updateSound();
|
||
}
|
||
|
||
void
|
||
@@ -824,4 +882,3 @@
|
||
return tmp;
|
||
}
|
||
|
||
-
|
||
diff -ur supertux-0.1.3/src/gameobjs.cpp supertux-0.1.3-gp2x/src/gameobjs.cpp
|
||
--- supertux-0.1.3/src/gameobjs.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/gameobjs.cpp 2006-04-11 21:52:52.000000000 +0300
|
||
@@ -98,6 +98,9 @@
|
||
src.h = 16;
|
||
|
||
dest.x = (int)(base.x - scroll_x);
|
||
+#ifdef RES320X240
|
||
+ dest.x=dest.x/2;
|
||
+#endif
|
||
dest.y = (int)base.y;
|
||
dest.w = 16;
|
||
dest.h = 16;
|
||
@@ -143,8 +146,13 @@
|
||
{
|
||
SDL_Rect dest;
|
||
|
||
+#ifndef RES320X240
|
||
if (base.x >= scroll_x - 32 &&
|
||
base.x <= scroll_x + screen->w)
|
||
+#else
|
||
+ if (base.x >= scroll_x - 32 &&
|
||
+ base.x <= scroll_x + 640)
|
||
+#endif
|
||
{
|
||
dest.x = (int)(base.x - scroll_x);
|
||
dest.y = (int)base.y;
|
||
@@ -165,8 +173,14 @@
|
||
else
|
||
{
|
||
int s = ((int)scroll_x / 2)%640;
|
||
+
|
||
+#ifdef RES320X240
|
||
+ plevel->img_bkgd->draw_part(dest.x/2 + s/2, dest.y/2,
|
||
+ dest.x/2, dest.y,dest.w/2,dest.h/2);
|
||
+#else
|
||
plevel->img_bkgd->draw_part(dest.x + s, dest.y,
|
||
dest.x, dest.y,dest.w,dest.h);
|
||
+#endif
|
||
}
|
||
|
||
Tile::draw(base.x - scroll_x,
|
||
diff -ur supertux-0.1.3/src/globals.cpp supertux-0.1.3-gp2x/src/globals.cpp
|
||
--- supertux-0.1.3/src/globals.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/globals.cpp 2006-04-11 22:39:03.000000000 +0300
|
||
@@ -25,6 +25,7 @@
|
||
|
||
JoystickKeymap::JoystickKeymap()
|
||
{
|
||
+#ifndef GP2X
|
||
a_button = 0;
|
||
b_button = 1;
|
||
start_button = 2;
|
||
@@ -33,6 +34,17 @@
|
||
y_axis = 1;
|
||
|
||
dead_zone = 4096;
|
||
+#else
|
||
+ a_button = GP2X_BUTTON_A;
|
||
+ b_button = GP2X_BUTTON_X;
|
||
+ start_button = GP2X_BUTTON_START;
|
||
+ up_button = GP2X_BUTTON_UP;
|
||
+ down_button = GP2X_BUTTON_DOWN;
|
||
+ left_button = GP2X_BUTTON_LEFT;
|
||
+ right_button = GP2X_BUTTON_RIGHT;
|
||
+ volup_button = GP2X_BUTTON_VOLUP;
|
||
+ voldown_button = GP2X_BUTTON_VOLDOWN;
|
||
+#endif
|
||
}
|
||
|
||
JoystickKeymap joystick_keymap;
|
||
diff -ur supertux-0.1.3/src/globals.h supertux-0.1.3-gp2x/src/globals.h
|
||
--- supertux-0.1.3/src/globals.h 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/globals.h 2006-04-11 23:45:27.000000000 +0300
|
||
@@ -28,10 +28,33 @@
|
||
#include "menu.h"
|
||
#include "mousecursor.h"
|
||
|
||
+#ifdef GP2X
|
||
+#define GP2X_BUTTON_UP (0)
|
||
+#define GP2X_BUTTON_DOWN (4)
|
||
+#define GP2X_BUTTON_LEFT (2)
|
||
+#define GP2X_BUTTON_RIGHT (6)
|
||
+#define GP2X_BUTTON_UPLEFT (1)
|
||
+#define GP2X_BUTTON_UPRIGHT (7)
|
||
+#define GP2X_BUTTON_DOWNLEFT (3)
|
||
+#define GP2X_BUTTON_DOWNRIGHT (5)
|
||
+#define GP2X_BUTTON_CLICK (18)
|
||
+#define GP2X_BUTTON_A (12)
|
||
+#define GP2X_BUTTON_B (13)
|
||
+#define GP2X_BUTTON_X (15)
|
||
+#define GP2X_BUTTON_Y (14)
|
||
+#define GP2X_BUTTON_L (10)
|
||
+#define GP2X_BUTTON_R (11)
|
||
+#define GP2X_BUTTON_START (8)
|
||
+#define GP2X_BUTTON_SELECT (9)
|
||
+#define GP2X_BUTTON_VOLUP (16)
|
||
+#define GP2X_BUTTON_VOLDOWN (17)
|
||
+#endif
|
||
+
|
||
extern std::string datadir;
|
||
|
||
struct JoystickKeymap
|
||
{
|
||
+#ifndef GP2X
|
||
int a_button;
|
||
int b_button;
|
||
int start_button;
|
||
@@ -42,6 +65,19 @@
|
||
int dead_zone;
|
||
|
||
JoystickKeymap();
|
||
+#else
|
||
+ int a_button;
|
||
+ int b_button;
|
||
+ int start_button;
|
||
+ int up_button;
|
||
+ int down_button;
|
||
+ int left_button;
|
||
+ int right_button;
|
||
+ int volup_button;
|
||
+ int voldown_button;
|
||
+
|
||
+ JoystickKeymap();
|
||
+#endif
|
||
};
|
||
|
||
extern JoystickKeymap joystick_keymap;
|
||
diff -ur supertux-0.1.3/src/lispreader.h supertux-0.1.3-gp2x/src/lispreader.h
|
||
Only in supertux-0.1.3/src: Makefile
|
||
diff -ur supertux-0.1.3/src/Makefile.am supertux-0.1.3-gp2x/src/Makefile.am
|
||
--- supertux-0.1.3/src/Makefile.am 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/Makefile.am 2006-04-19 21:55:54.000000000 +0300
|
||
@@ -77,3 +77,5 @@
|
||
musicref.h
|
||
|
||
# EOF #
|
||
+
|
||
+#supertux_LDADD = libmikmod
|
||
Only in supertux-0.1.3/src: Makefile.in
|
||
diff -ur supertux-0.1.3/src/menu.cpp supertux-0.1.3-gp2x/src/menu.cpp
|
||
--- supertux-0.1.3/src/menu.cpp 2005-06-29 15:44:13.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/menu.cpp 2006-05-04 23:59:29.000000000 +0300
|
||
@@ -53,6 +53,8 @@
|
||
Menu* options_menu = 0;
|
||
Menu* options_keys_menu = 0;
|
||
Menu* options_joystick_menu = 0;
|
||
+Menu* options_joystick_axis_menu = 0;
|
||
+Menu* options_joystick_button_menu = 0;
|
||
Menu* highscore_menu = 0;
|
||
Menu* load_game_menu = 0;
|
||
Menu* save_game_menu = 0;
|
||
@@ -240,8 +242,10 @@
|
||
}
|
||
|
||
/* Set ControlField a key */
|
||
+//TODO: get joystick in here somehow
|
||
void Menu::get_controlfield_key_into_input(MenuItem *item)
|
||
{
|
||
+#ifndef GP2X
|
||
switch(*item->int_p)
|
||
{
|
||
case SDLK_UP:
|
||
@@ -288,6 +292,11 @@
|
||
}
|
||
break;
|
||
}
|
||
+#else
|
||
+ char tmp[64];
|
||
+ snprintf(tmp, 64, "%d", *item->int_p);
|
||
+ item->change_input(tmp);
|
||
+#endif
|
||
}
|
||
|
||
/* Free a menu and all its items */
|
||
@@ -497,8 +506,13 @@
|
||
int menu_height)
|
||
{
|
||
MenuItem& pitem = item[index];
|
||
-
|
||
+
|
||
+#ifndef RES320X240
|
||
int font_width = 16;
|
||
+#else
|
||
+ int font_width = 16/2;
|
||
+#endif
|
||
+
|
||
int effect_offset = 0;
|
||
{
|
||
int effect_time = 0;
|
||
@@ -510,7 +524,7 @@
|
||
}
|
||
|
||
int x_pos = pos_x;
|
||
- int y_pos = pos_y + 24*index - menu_height/2 + 12 + effect_offset;
|
||
+ int y_pos = pos_y + (int)(24)*index - menu_height/2 + 12 + effect_offset;
|
||
int shadow_size = 2;
|
||
int text_width = strlen(pitem.text) * font_width;
|
||
int input_width = (strlen(pitem.input)+ 1) * font_width;
|
||
@@ -518,7 +532,7 @@
|
||
Text* text_font = white_text;
|
||
|
||
if (arrange_left)
|
||
- x_pos += 24 - menu_width/2 + (text_width + input_width + list_width)/2;
|
||
+ x_pos += (int)(24) - menu_width/2 + (text_width + input_width + list_width)/2;
|
||
|
||
if(index == active_item)
|
||
{
|
||
@@ -538,7 +552,11 @@
|
||
|
||
case MN_HL:
|
||
{
|
||
+#ifndef RES320X240
|
||
int x = pos_x - menu_width/2;
|
||
+#else
|
||
+ int x = pos_x - menu_width/4;
|
||
+#endif
|
||
int y = y_pos - 12 - effect_offset;
|
||
/* Draw a horizontal line with a little 3d effect */
|
||
fillrect(x, y + 6,
|
||
@@ -551,9 +569,15 @@
|
||
}
|
||
case MN_LABEL:
|
||
{
|
||
+#ifndef RES320X240
|
||
white_big_text->draw_align(pitem.text,
|
||
x_pos, y_pos,
|
||
A_HMIDDLE, A_VMIDDLE, 2);
|
||
+#else
|
||
+ white_text->draw_align(pitem.text,
|
||
+ x_pos, y_pos,
|
||
+ A_HMIDDLE, A_VMIDDLE, 2);
|
||
+#endif
|
||
break;
|
||
}
|
||
case MN_TEXTFIELD:
|
||
@@ -570,8 +594,9 @@
|
||
input_width + font_width, 18,
|
||
0,0,0,128);
|
||
|
||
- if(pitem.kind == MN_CONTROLFIELD)
|
||
+ if(pitem.kind == MN_CONTROLFIELD) {
|
||
get_controlfield_key_into_input(&pitem);
|
||
+ }
|
||
|
||
if(pitem.kind == MN_TEXTFIELD || pitem.kind == MN_NUMFIELD)
|
||
{
|
||
@@ -663,7 +688,7 @@
|
||
menu_width += 2;
|
||
}
|
||
}
|
||
-
|
||
+
|
||
return (menu_width * 16 + 24);
|
||
}
|
||
|
||
@@ -680,10 +705,17 @@
|
||
int menu_width = get_width();
|
||
|
||
/* Draw a transparent background */
|
||
+#ifndef RES320X240
|
||
fillrect(pos_x - menu_width/2,
|
||
pos_y - 24*item.size()/2 - 10,
|
||
menu_width,menu_height + 20,
|
||
150,180,200,125);
|
||
+#else
|
||
+ fillrect(pos_x - menu_width/4,
|
||
+ pos_y - 24*item.size()/2 - 10,
|
||
+ menu_width,menu_height + 20,
|
||
+ 150,180,200,125);
|
||
+#endif
|
||
|
||
for(unsigned int i = 0; i < item.size(); ++i)
|
||
{
|
||
@@ -723,6 +755,8 @@
|
||
SDLKey key;
|
||
switch(event.type)
|
||
{
|
||
+
|
||
+#ifndef GP2X
|
||
case SDL_KEYDOWN:
|
||
key = event.key.keysym.sym;
|
||
SDLMod keymod;
|
||
@@ -754,7 +788,6 @@
|
||
return;
|
||
}
|
||
|
||
-
|
||
switch(key)
|
||
{
|
||
case SDLK_UP: /* Menu Up */
|
||
@@ -800,12 +833,14 @@
|
||
break;
|
||
}
|
||
break;
|
||
+
|
||
case SDL_JOYHATMOTION:
|
||
if(event.jhat.value == SDL_HAT_UP)
|
||
menuaction = MENU_ACTION_UP;
|
||
if(event.jhat.value == SDL_HAT_DOWN)
|
||
menuaction = MENU_ACTION_DOWN;
|
||
break;
|
||
+
|
||
case SDL_JOYAXISMOTION:
|
||
if(event.jaxis.axis == joystick_keymap.y_axis)
|
||
{
|
||
@@ -815,9 +850,88 @@
|
||
menuaction = MENU_ACTION_UP;
|
||
}
|
||
break;
|
||
+#endif
|
||
+
|
||
case SDL_JOYBUTTONDOWN:
|
||
+#ifndef GP2X
|
||
menuaction = MENU_ACTION_HIT;
|
||
break;
|
||
+#else
|
||
+
|
||
+ if(item[active_item].kind == MN_CONTROLFIELD)
|
||
+ {
|
||
+ if( event.jbutton.button == joystick_keymap.start_button )
|
||
+ {
|
||
+ Menu::pop_current();
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ static int save[8]={-1,-1,-1,-1,-1,-1,-1,-1};
|
||
+ int itemid=get_active_item_id();
|
||
+ int inputkey;
|
||
+ switch ( itemid ) {
|
||
+ case 11 : inputkey=joystick_keymap.up_button;
|
||
+ break;
|
||
+ case 12 : inputkey=joystick_keymap.down_button;
|
||
+ break;
|
||
+ case 13 : inputkey=joystick_keymap.left_button;
|
||
+ break;
|
||
+ case 14 : inputkey=joystick_keymap.right_button;
|
||
+ break;
|
||
+ case 15 : inputkey=joystick_keymap.a_button;
|
||
+ break;
|
||
+ case 16 : inputkey=joystick_keymap.b_button;
|
||
+ break;
|
||
+ default : break;
|
||
+ }
|
||
+
|
||
+ *item[active_item].int_p = event.jbutton.button;
|
||
+
|
||
+ bool okay=true;
|
||
+
|
||
+ save[itemid-11]=event.jbutton.button;
|
||
+
|
||
+ int i;
|
||
+ for ( i=0;i<itemid-11;i++ ) {
|
||
+ if ( save[i] == event.jbutton.button ) okay=false;
|
||
+ }
|
||
+ if ( okay == true ) menuaction = MENU_ACTION_DOWN;
|
||
+ else menuaction = MENU_ACTION_NONE;
|
||
+
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ if (event.jbutton.button == joystick_keymap.a_button)
|
||
+ menuaction = MENU_ACTION_HIT;
|
||
+ else if (event.jbutton.button == joystick_keymap.b_button)
|
||
+ menuaction = MENU_ACTION_HIT;
|
||
+ else if (event.jbutton.button == joystick_keymap.start_button)
|
||
+ menuaction = MENU_ACTION_HIT;
|
||
+ else if (event.jbutton.button == joystick_keymap.up_button)
|
||
+ menuaction = MENU_ACTION_UP;
|
||
+ else if (event.jbutton.button == joystick_keymap.down_button)
|
||
+ menuaction = MENU_ACTION_DOWN;
|
||
+ else if (event.jbutton.button == joystick_keymap.right_button)
|
||
+ menuaction = MENU_ACTION_RIGHT;
|
||
+ else if (event.jbutton.button == joystick_keymap.left_button)
|
||
+ menuaction = MENU_ACTION_LEFT;
|
||
+ else if (event.jbutton.button == joystick_keymap.volup_button)
|
||
+#ifdef GP2X
|
||
+ increaseSoundVolume();
|
||
+#else
|
||
+ sound_volume(2);
|
||
+#endif
|
||
+ else if (event.jbutton.button == joystick_keymap.voldown_button)
|
||
+#ifdef GP2X
|
||
+ decreaseSoundVolume();
|
||
+#else
|
||
+ sound_volume(1);
|
||
+#endif
|
||
+ break;
|
||
+
|
||
+#endif
|
||
+
|
||
+#ifndef GP2X
|
||
case SDL_MOUSEBUTTONDOWN:
|
||
x = event.motion.x;
|
||
y = event.motion.y;
|
||
@@ -847,6 +961,7 @@
|
||
break;
|
||
default:
|
||
break;
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
diff -ur supertux-0.1.3/src/menu.h supertux-0.1.3-gp2x/src/menu.h
|
||
--- supertux-0.1.3/src/menu.h 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/menu.h 2006-05-04 23:48:30.000000000 +0300
|
||
@@ -236,6 +236,8 @@
|
||
extern Menu* options_menu;
|
||
extern Menu* options_keys_menu;
|
||
extern Menu* options_joystick_menu;
|
||
+extern Menu* options_joystick_axis_menu;
|
||
+extern Menu* options_joystick_button_menu;
|
||
extern Menu* highscore_menu;
|
||
extern Menu* load_game_menu;
|
||
extern Menu* save_game_menu;
|
||
diff -ur supertux-0.1.3/src/music_manager.cpp supertux-0.1.3-gp2x/src/music_manager.cpp
|
||
--- supertux-0.1.3/src/music_manager.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/music_manager.cpp 2006-04-22 13:16:32.000000000 +0300
|
||
@@ -59,7 +59,14 @@
|
||
return true;
|
||
}
|
||
|
||
+#ifndef GP2X
|
||
Mix_Music* song = Mix_LoadMUS(file.c_str());
|
||
+#else
|
||
+ char mfile[100];
|
||
+ snprintf(mfile,sizeof(mfile),"%s",file.c_str());
|
||
+ MODULE *song=Player_Load(mfile, 64, 0);
|
||
+#endif
|
||
+
|
||
if(song == 0)
|
||
return false;
|
||
|
||
@@ -84,6 +91,8 @@
|
||
void
|
||
MusicManager::play_music(const MusicRef& musicref, int loops)
|
||
{
|
||
+// printf("loop: %d, musicref: %d\n",loops,musicref.music);
|
||
+
|
||
if(!audio_device)
|
||
return;
|
||
|
||
@@ -97,7 +106,16 @@
|
||
current_music->refcount++;
|
||
|
||
if(music_enabled)
|
||
+#ifndef GP2X
|
||
Mix_PlayMusic(current_music->music, loops);
|
||
+#else
|
||
+ {
|
||
+ if ( loops == -1 ) current_music->music->wrap=1;
|
||
+ Player_Stop();
|
||
+ Player_Start(current_music->music);
|
||
+ Player_SetPosition(0);
|
||
+ }
|
||
+#endif
|
||
}
|
||
|
||
void
|
||
@@ -106,13 +124,17 @@
|
||
if(!audio_device)
|
||
return;
|
||
|
||
+#ifndef GP2X
|
||
Mix_HaltMusic();
|
||
+#else
|
||
+ Player_Stop();
|
||
+#endif
|
||
|
||
if(current_music) {
|
||
current_music->refcount--;
|
||
if(current_music->refcount == 0)
|
||
free_music(current_music);
|
||
- current_music = 0;
|
||
+ current_music = 0;
|
||
}
|
||
}
|
||
|
||
@@ -127,9 +149,17 @@
|
||
|
||
music_enabled = enable;
|
||
if(music_enabled == false) {
|
||
+#ifndef GP2X
|
||
Mix_HaltMusic();
|
||
+#else
|
||
+ Player_Stop();
|
||
+#endif
|
||
} else {
|
||
+#ifndef GP2X
|
||
Mix_PlayMusic(current_music->music, -1);
|
||
+#else
|
||
+ Player_Start(current_music->music);
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
diff -ur supertux-0.1.3/src/music_manager.h supertux-0.1.3-gp2x/src/music_manager.h
|
||
--- supertux-0.1.3/src/music_manager.h 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/music_manager.h 2006-04-22 04:51:32.000000000 +0300
|
||
@@ -20,6 +20,10 @@
|
||
#ifndef HEADER_MUSIC_MANAGER_H
|
||
#define HEADER_MUSIC_MANAGER_H
|
||
|
||
+#ifdef GP2X
|
||
+#include "mikmod.h"
|
||
+#endif
|
||
+
|
||
#include <SDL_mixer.h>
|
||
#include <string>
|
||
#include <map>
|
||
@@ -51,7 +55,12 @@
|
||
~MusicResource();
|
||
|
||
MusicManager* manager;
|
||
+#ifndef GP2X
|
||
Mix_Music* music;
|
||
+#else
|
||
+ MODULE *music;
|
||
+#endif
|
||
+
|
||
int refcount;
|
||
};
|
||
|
||
diff -ur supertux-0.1.3/src/particlesystem.cpp supertux-0.1.3-gp2x/src/particlesystem.cpp
|
||
--- supertux-0.1.3/src/particlesystem.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/particlesystem.cpp 2006-04-12 22:20:41.000000000 +0300
|
||
@@ -28,8 +28,13 @@
|
||
|
||
ParticleSystem::ParticleSystem()
|
||
{
|
||
+#ifndef RES320X240
|
||
virtual_width = screen->w;
|
||
virtual_height = screen->h;
|
||
+#else
|
||
+ virtual_width = 640;
|
||
+ virtual_height = 480;
|
||
+#endif
|
||
}
|
||
|
||
ParticleSystem::~ParticleSystem()
|
||
@@ -57,13 +62,24 @@
|
||
float ymax = fmodf(y + particle->texture->h, virtual_height);
|
||
|
||
// particle on screen
|
||
+#ifndef RES320X240
|
||
if(x >= screen->w && xmax >= screen->w)
|
||
continue;
|
||
if(y >= screen->h && ymax >= screen->h)
|
||
continue;
|
||
-
|
||
+
|
||
if(x > screen->w) x -= virtual_width;
|
||
if(y > screen->h) y -= virtual_height;
|
||
+#else
|
||
+ if(x >= 640 && xmax >= 640)
|
||
+ continue;
|
||
+ if(y >= 480 && ymax >= 480)
|
||
+ continue;
|
||
+
|
||
+ if(x > 640) x -= virtual_width;
|
||
+ if(y > 480) y -= virtual_height;
|
||
+#endif
|
||
+
|
||
particle->texture->draw(x, y);
|
||
}
|
||
}
|
||
@@ -74,14 +90,21 @@
|
||
snowimages[1] = new Surface(datadir+"/images/shared/snow1.png", USE_ALPHA);
|
||
snowimages[2] = new Surface(datadir+"/images/shared/snow2.png", USE_ALPHA);
|
||
|
||
+#ifndef RES320X240
|
||
virtual_width = screen->w * 2;
|
||
-
|
||
+#else
|
||
+ virtual_width = 640 * 2;
|
||
+#endif
|
||
// create some random snowflakes
|
||
size_t snowflakecount = size_t(virtual_width/10.0);
|
||
for(size_t i=0; i<snowflakecount; ++i) {
|
||
SnowParticle* particle = new SnowParticle;
|
||
particle->x = rand() % int(virtual_width);
|
||
+#ifndef RES320X240
|
||
particle->y = rand() % screen->h;
|
||
+#else
|
||
+ particle->y = rand() % 480;
|
||
+#endif
|
||
particle->layer = i % 2;
|
||
int snowsize = rand() % 3;
|
||
particle->texture = snowimages[snowsize];
|
||
@@ -106,7 +129,11 @@
|
||
for(i = particles.begin(); i != particles.end(); ++i) {
|
||
SnowParticle* particle = (SnowParticle*) *i;
|
||
particle->y += particle->speed * elapsed_time;
|
||
+#ifndef RES320X240
|
||
if(particle->y > screen->h) {
|
||
+#else
|
||
+ if(particle->y > 480) {
|
||
+#endif
|
||
particle->y = fmodf(particle->y , virtual_height);
|
||
particle->x = rand() % int(virtual_width);
|
||
}
|
||
diff -ur supertux-0.1.3/src/player.cpp supertux-0.1.3-gp2x/src/player.cpp
|
||
--- supertux-0.1.3/src/player.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/player.cpp 2006-05-05 22:59:52.000000000 +0300
|
||
@@ -261,6 +261,7 @@
|
||
}
|
||
}
|
||
}
|
||
+// updateSound();
|
||
|
||
/* ---- DONE HANDLING TUX! --- */
|
||
|
||
@@ -337,7 +338,11 @@
|
||
if(on_ground() && ((vx < 0 && dirsign >0) || (vx>0 && dirsign<0))) {
|
||
if(fabs(vx)>SKID_XM && !skidding_timer.check()) {
|
||
skidding_timer.start(SKID_TIME);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_SKID], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_SKID);
|
||
+#endif
|
||
ax *= 2.5;
|
||
} else {
|
||
ax *= 2;
|
||
@@ -391,9 +396,17 @@
|
||
jumping = true;
|
||
can_jump = false;
|
||
if (size == SMALL)
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_JUMP], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_JUMP);
|
||
+#endif
|
||
else
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_BIGJUMP], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_BIGJUMP);
|
||
+#endif
|
||
}
|
||
}
|
||
// Let go of jump key
|
||
@@ -533,7 +546,11 @@
|
||
if(player_status.lives < MAX_LIVES)
|
||
++player_status.lives;
|
||
/*We want to hear the sound even, if MAX_LIVES is reached*/
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_LIFEUP], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_LIFEUP);
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
@@ -665,7 +682,11 @@
|
||
else
|
||
{
|
||
pbad_c->dying = DYING_FALLING;
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_FALL);
|
||
+#endif
|
||
World::current()->add_score(pbad_c->base.x - scroll_x,
|
||
pbad_c->base.y,
|
||
25 * player_status.score_multiplier);
|
||
@@ -696,7 +717,12 @@
|
||
void
|
||
Player::kill(HurtMode mode)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_HURT], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_HURT);
|
||
+ updateSound();
|
||
+#endif
|
||
|
||
physic.set_velocity_x(0);
|
||
|
||
@@ -734,7 +760,11 @@
|
||
|
||
bool Player::is_dead()
|
||
{
|
||
+#ifndef RES320X240
|
||
if(base.y > screen->h || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
|
||
+#else
|
||
+ if(base.y > 640 || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
|
||
+#endif
|
||
return true;
|
||
else
|
||
return false;
|
||
@@ -760,9 +790,20 @@
|
||
}
|
||
|
||
/* Keep in-bounds, vertically: */
|
||
+#ifndef RES320X240
|
||
if (base.y > screen->h)
|
||
+#else
|
||
+ if (base.y > 640)
|
||
+#endif
|
||
{
|
||
kill(KILL);
|
||
+#ifdef GP2X
|
||
+ float wait=SDL_GetTicks()+800;
|
||
+ while ( wait > SDL_GetTicks()) {
|
||
+ updateSound();
|
||
+ }
|
||
+#endif
|
||
+
|
||
}
|
||
|
||
if(base.x < scroll_x && (!back_scrolling || hor_autoscroll)) // can happen if back scrolling is disabled
|
||
@@ -777,7 +818,6 @@
|
||
if(base.x + base.width > scroll_x + screen->w)
|
||
base.x = scroll_x + screen->w - base.width;
|
||
}
|
||
-
|
||
}
|
||
|
||
// EOF //
|
||
diff -ur supertux-0.1.3/src/resources.cpp supertux-0.1.3-gp2x/src/resources.cpp
|
||
--- supertux-0.1.3/src/resources.cpp 2005-07-02 15:20:14.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/resources.cpp 2006-04-22 13:14:01.000000000 +0300
|
||
@@ -18,6 +18,7 @@
|
||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||
|
||
#include "globals.h"
|
||
+#include "sound.h"
|
||
#include "scene.h"
|
||
#include "player.h"
|
||
#include "badguy.h"
|
||
@@ -187,11 +188,13 @@
|
||
// This is also true with if (use_music)
|
||
Send a mail to me: neoneurone@users.sf.net, if you have another opinion. :)
|
||
*/
|
||
+#ifndef GP2X
|
||
for (i = 0; i < NUM_SOUNDS; i++)
|
||
sounds[i] = load_sound(datadir + soundfilenames[i]);
|
||
+#endif
|
||
|
||
/* Herring song */
|
||
- herring_song = music_manager->load_music(datadir + "/music/SALCON.MOD");
|
||
+ herring_song = music_manager->load_music(datadir + "/music/SALCON.MOD");
|
||
level_end_song = music_manager->load_music(datadir + "/music/leveldone.mod");
|
||
}
|
||
|
||
@@ -223,8 +226,10 @@
|
||
|
||
delete tux_life;
|
||
|
||
+#ifndef GP2X
|
||
for (i = 0; i < NUM_SOUNDS; i++)
|
||
free_chunk(sounds[i]);
|
||
+#endif
|
||
|
||
delete sprite_manager;
|
||
sprite_manager = 0;
|
||
diff -ur supertux-0.1.3/src/screen.cpp supertux-0.1.3-gp2x/src/screen.cpp
|
||
--- supertux-0.1.3/src/screen.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/screen.cpp 2006-04-14 18:18:47.000000000 +0300
|
||
@@ -81,7 +81,6 @@
|
||
else
|
||
{
|
||
#endif
|
||
-
|
||
for(float y = 0; y < 480; y += 2)
|
||
fillrect(0, (int)y, 640, 2,
|
||
(int)(((float)(top_clr.red-bot_clr.red)/(0-480)) * y + top_clr.red),
|
||
@@ -199,11 +198,23 @@
|
||
SDL_UnlockSurface(screen);
|
||
}
|
||
/* Update just the part of the display that we've changed */
|
||
+#ifndef RES320X240
|
||
SDL_UpdateRect(screen, x, y, 1, 1);
|
||
+#else
|
||
+ SDL_UpdateRect(screen, x/2, y/2, 1, 1);
|
||
+#endif
|
||
}
|
||
|
||
void drawline(int x1, int y1, int x2, int y2, int r, int g, int b, int a)
|
||
{
|
||
+
|
||
+#ifdef RES320X240
|
||
+ x1=x1/2;
|
||
+ x2=x2/2;
|
||
+ y1=y1/2;
|
||
+ y2=y2/2;
|
||
+#endif
|
||
+
|
||
#ifndef NOOPENGL
|
||
if(use_gl)
|
||
{
|
||
@@ -280,6 +291,13 @@
|
||
y += h;
|
||
h = -h;
|
||
}
|
||
+
|
||
+#ifdef RES320X240
|
||
+ x=x;
|
||
+ y=y/2;
|
||
+ w=w/2;
|
||
+ h=h/2;
|
||
+#endif
|
||
|
||
#ifndef NOOPENGL
|
||
if(use_gl)
|
||
@@ -367,6 +385,9 @@
|
||
void update_rect(SDL_Surface *scr, Sint32 x, Sint32 y, Sint32 w, Sint32 h)
|
||
{
|
||
if(!use_gl)
|
||
+#ifndef RES320X240
|
||
+ SDL_UpdateRect(scr, x, y, w, h);
|
||
+#else
|
||
SDL_UpdateRect(scr, x, y, w, h);
|
||
+#endif
|
||
}
|
||
-
|
||
diff -ur supertux-0.1.3/src/setup.cpp supertux-0.1.3-gp2x/src/setup.cpp
|
||
--- supertux-0.1.3/src/setup.cpp 2005-07-08 15:19:17.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/setup.cpp 2006-05-03 23:32:49.000000000 +0300
|
||
@@ -62,10 +62,19 @@
|
||
#define DATA_PREFIX "./data/"
|
||
#endif
|
||
|
||
-/* Screen proprities: */
|
||
+/* Screen properties: */
|
||
/* Don't use this to test for the actual screen sizes. Use screen->w/h instead! */
|
||
+#ifndef RES320X240
|
||
#define SCREEN_W 640
|
||
#define SCREEN_H 480
|
||
+#else
|
||
+#define SCREEN_W 320
|
||
+#define SCREEN_H 240
|
||
+#endif
|
||
+
|
||
+#ifdef GP2X
|
||
+#define DATA_PREFIX "data/"
|
||
+#endif
|
||
|
||
/* Local function prototypes: */
|
||
|
||
@@ -308,10 +317,14 @@
|
||
char str[1024];
|
||
/* Get home directory (from $HOME variable)... if we can't determine it,
|
||
use the current directory ("."): */
|
||
+#ifndef GP2X
|
||
if (getenv("HOME") != NULL)
|
||
home = getenv("HOME");
|
||
else
|
||
home = ".";
|
||
+#else
|
||
+ home = ".";
|
||
+#endif
|
||
|
||
st_dir = (char *) malloc(sizeof(char) * (strlen(home) +
|
||
strlen("/.supertux") + 1));
|
||
@@ -340,9 +353,10 @@
|
||
// User has not that a datadir, so we try some magic
|
||
if (datadir.empty())
|
||
{
|
||
-#ifndef WIN32
|
||
// Detect datadir
|
||
char exe_file[PATH_MAX];
|
||
+
|
||
+#ifndef WIN32
|
||
if (readlink("/proc/self/exe", exe_file, PATH_MAX) < 0)
|
||
{
|
||
puts("Couldn't read /proc/self/exe, using default path: " DATA_PREFIX);
|
||
@@ -358,7 +372,12 @@
|
||
datadir = exedir + "../share/supertux"; // SuperTux run from PATH
|
||
if (access(datadir.c_str(), F_OK) != 0)
|
||
{ // If all fails, fall back to compiled path
|
||
- datadir = DATA_PREFIX;
|
||
+ datadir = exedir + "./data"; // SuperTux run with data in same path as executable
|
||
+ if (access(datadir.c_str(), F_OK) != 0)
|
||
+ {
|
||
+ // If all fails, fall back to compiled path
|
||
+ datadir = DATA_PREFIX;
|
||
+ }
|
||
}
|
||
}
|
||
}
|
||
@@ -375,7 +394,8 @@
|
||
main_menu = new Menu();
|
||
options_menu = new Menu();
|
||
options_keys_menu = new Menu();
|
||
- options_joystick_menu = new Menu();
|
||
+ options_joystick_axis_menu = new Menu();
|
||
+ options_joystick_button_menu = new Menu();
|
||
load_game_menu = new Menu();
|
||
save_game_menu = new Menu();
|
||
game_menu = new Menu();
|
||
@@ -384,22 +404,27 @@
|
||
contrib_subset_menu = new Menu();
|
||
worldmap_menu = new Menu();
|
||
|
||
- main_menu->set_pos(screen->w/2, 335);
|
||
+ main_menu->set_pos(screen->w/2, (int)(335)+20);
|
||
main_menu->additem(MN_GOTO, "Start Game",0,load_game_menu, MNID_STARTGAME);
|
||
main_menu->additem(MN_GOTO, "Bonus Levels",0,contrib_menu, MNID_CONTRIB);
|
||
main_menu->additem(MN_GOTO, "Options",0,options_menu, MNID_OPTIONMENU);
|
||
+
|
||
+#ifndef GP2X
|
||
main_menu->additem(MN_ACTION,"Level Editor",0,0, MNID_LEVELEDITOR);
|
||
+#endif
|
||
main_menu->additem(MN_ACTION,"Credits",0,0, MNID_CREDITS);
|
||
main_menu->additem(MN_ACTION,"Quit",0,0, MNID_QUITMAINMENU);
|
||
|
||
options_menu->additem(MN_LABEL,"Options",0,0);
|
||
options_menu->additem(MN_HL,"",0,0);
|
||
+#ifndef GP2X
|
||
#ifndef NOOPENGL
|
||
options_menu->additem(MN_TOGGLE,"OpenGL",use_gl,0, MNID_OPENGL);
|
||
#else
|
||
options_menu->additem(MN_DEACTIVE,"OpenGL (not supported)",use_gl, 0, MNID_OPENGL);
|
||
#endif
|
||
options_menu->additem(MN_TOGGLE,"Fullscreen",use_fullscreen,0, MNID_FULLSCREEN);
|
||
+#endif
|
||
if(audio_device)
|
||
{
|
||
options_menu->additem(MN_TOGGLE,"Sound ", use_sound,0, MNID_SOUND);
|
||
@@ -411,10 +436,15 @@
|
||
options_menu->additem(MN_DEACTIVE,"Music ", false,0, MNID_MUSIC);
|
||
}
|
||
options_menu->additem(MN_TOGGLE,"Show FPS ",show_fps,0, MNID_SHOWFPS);
|
||
+#ifndef GP2X
|
||
options_menu->additem(MN_GOTO,"Keyboard Setup",0,options_keys_menu);
|
||
+#endif
|
||
|
||
//if(use_joystick)
|
||
- // options_menu->additem(MN_GOTO,"Joystick Setup",0,options_joystick_menu);
|
||
+#ifdef GP2X
|
||
+ options_menu->additem(MN_GOTO,"Joystick Move Setup",0,options_joystick_axis_menu);
|
||
+ options_menu->additem(MN_GOTO,"Joystick Action Setup",0,options_joystick_button_menu);
|
||
+#endif
|
||
|
||
options_menu->additem(MN_HL,"",0,0);
|
||
options_menu->additem(MN_BACK,"Back",0,0);
|
||
@@ -429,6 +459,7 @@
|
||
options_keys_menu->additem(MN_HL,"",0,0);
|
||
options_keys_menu->additem(MN_BACK,"Back",0,0);
|
||
|
||
+#ifndef GP2X
|
||
if(use_joystick)
|
||
{
|
||
options_joystick_menu->additem(MN_LABEL,"Joystick Setup",0,0);
|
||
@@ -442,6 +473,20 @@
|
||
options_joystick_menu->additem(MN_HL,"",0,0);
|
||
options_joystick_menu->additem(MN_BACK,"Back",0,0);
|
||
}
|
||
+#else
|
||
+ options_joystick_axis_menu->additem(MN_LABEL,"Joystick Move Setup",0,0);
|
||
+ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Up", 0,0, 11,&joystick_keymap.up_button);
|
||
+ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Down", 0,0, 12,&joystick_keymap.down_button);
|
||
+ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Left", 0,0, 13,&joystick_keymap.left_button);
|
||
+ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Right", 0,0, 14,&joystick_keymap.right_button);
|
||
+ options_joystick_axis_menu->additem(MN_BACK,"Back",0,0);
|
||
+
|
||
+ options_joystick_button_menu->additem(MN_LABEL,"Joystick Action Setup",0,0);
|
||
+ options_joystick_button_menu->additem(MN_CONTROLFIELD,"Jump", 0,0, 15,&joystick_keymap.a_button);
|
||
+ options_joystick_button_menu->additem(MN_CONTROLFIELD,"Shoot/Run", 0,0, 16,&joystick_keymap.b_button);
|
||
+ options_joystick_button_menu->additem(MN_BACK,"Back",0,0);
|
||
+#endif
|
||
+
|
||
|
||
load_game_menu->additem(MN_LABEL,"Start Game",0,0);
|
||
load_game_menu->additem(MN_HL,"",0,0);
|
||
@@ -576,9 +621,10 @@
|
||
|
||
srand(SDL_GetTicks());
|
||
|
||
+#ifndef GP2X
|
||
/* Set icon image: */
|
||
-
|
||
seticon();
|
||
+#endif
|
||
|
||
/* Unicode needed for input handling: */
|
||
|
||
@@ -586,13 +632,32 @@
|
||
|
||
/* Load global images: */
|
||
|
||
+#ifndef RES320X240
|
||
+ white_text = new Text(datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18);
|
||
+#else
|
||
+ white_text = new Text(datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9);
|
||
+ fadeout();
|
||
+#endif
|
||
+
|
||
+
|
||
+#ifndef RES320X240
|
||
black_text = new Text(datadir + "/images/status/letters-black.png", TEXT_TEXT, 16,18);
|
||
+#else
|
||
+ black_text = new Text(datadir + "/images/status/letters-black.png", TEXT_TEXT, 8,9);
|
||
+#endif
|
||
+#ifndef RES320X240
|
||
gold_text = new Text(datadir + "/images/status/letters-gold.png", TEXT_TEXT, 16,18);
|
||
+#else
|
||
+ gold_text = new Text(datadir + "/images/status/letters-gold.png", TEXT_TEXT, 8,9);
|
||
+#endif
|
||
silver_text = new Text(datadir + "/images/status/letters-silver.png", TEXT_TEXT, 16,18);
|
||
+#ifndef RES320X240
|
||
blue_text = new Text(datadir + "/images/status/letters-blue.png", TEXT_TEXT, 16,18);
|
||
+#else
|
||
+ blue_text = new Text(datadir + "/images/status/letters-blue.png", TEXT_TEXT, 8,9);
|
||
+#endif
|
||
red_text = new Text(datadir + "/images/status/letters-red.png", TEXT_TEXT, 16,18);
|
||
green_text = new Text(datadir + "/images/status/letters-green.png", TEXT_TEXT, 16,18);
|
||
- white_text = new Text(datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18);
|
||
white_small_text = new Text(datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9);
|
||
white_big_text = new Text(datadir + "/images/status/letters-white-big.png", TEXT_TEXT, 20,22);
|
||
yellow_nums = new Text(datadir + "/images/status/numbers.png", TEXT_NUM, 32,32);
|
||
@@ -665,14 +736,22 @@
|
||
Surface::reload_all();
|
||
|
||
/* Set window manager stuff: */
|
||
+#ifndef GP2X_VERSION
|
||
SDL_WM_SetCaption("SuperTux " VERSION, "SuperTux");
|
||
+#endif
|
||
}
|
||
|
||
void st_video_setup_sdl(void)
|
||
{
|
||
if (use_fullscreen)
|
||
{
|
||
+#ifndef GP2X
|
||
screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, SDL_FULLSCREEN ) ; /* | SDL_HWSURFACE); */
|
||
+#else
|
||
+// screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_HWSURFACE | SDL_DOUBLEBUF ) ; /* GP2X */
|
||
+ printf("screen width: %d, height: %d\n",SCREEN_W, SCREEN_H);
|
||
+ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE ) ; /* GP2X */
|
||
+#endif
|
||
if (screen == NULL)
|
||
{
|
||
fprintf(stderr,
|
||
@@ -685,14 +764,22 @@
|
||
}
|
||
else
|
||
{
|
||
+#ifndef GP2X
|
||
screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, SDL_HWSURFACE | SDL_DOUBLEBUF );
|
||
-
|
||
+#else
|
||
+// screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_HWSURFACE | SDL_DOUBLEBUF ) ; /* GP2X */
|
||
+ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE ) ; /* GP2X */
|
||
+#endif
|
||
if (screen == NULL)
|
||
{
|
||
fprintf(stderr,
|
||
"\nError: I could not set up video for 640x480 mode.\n"
|
||
"The Simple DirectMedia error that occured was:\n"
|
||
"%s\n\n", SDL_GetError());
|
||
+#ifdef GP2X_VERSION
|
||
+ chdir("/usr/gp2x");
|
||
+ execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
|
||
+#endif
|
||
exit(1);
|
||
}
|
||
}
|
||
@@ -790,6 +877,7 @@
|
||
|
||
use_joystick = false;
|
||
}
|
||
+#ifndef GP2X
|
||
else
|
||
{
|
||
if (SDL_JoystickNumAxes(js) < 2)
|
||
@@ -811,6 +899,7 @@
|
||
}
|
||
}
|
||
}
|
||
+#endif
|
||
}
|
||
}
|
||
}
|
||
@@ -844,12 +933,17 @@
|
||
}
|
||
}
|
||
|
||
-
|
||
+ audio_device = true;
|
||
+
|
||
/* Open sound silently regarless the value of "use_sound": */
|
||
|
||
if (audio_device)
|
||
{
|
||
+#ifndef GP2X
|
||
if (open_audio(44100, AUDIO_S16, 2, 2048) < 0)
|
||
+#else
|
||
+ if (open_audio(44100, AUDIO_S16, 1, 1024) < 0)
|
||
+#endif
|
||
{
|
||
/* only print out message if sound or music
|
||
was not disabled at command-line
|
||
@@ -878,6 +972,12 @@
|
||
close_audio();
|
||
SDL_Quit();
|
||
saveconfig();
|
||
+
|
||
+#ifdef GP2X
|
||
+ chdir("/usr/gp2x");
|
||
+ execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
|
||
+#endif
|
||
+
|
||
}
|
||
|
||
/* --- ABORT! --- */
|
||
@@ -893,6 +993,7 @@
|
||
|
||
void seticon(void)
|
||
{
|
||
+#ifndef GP2X
|
||
// int masklen;
|
||
// Uint8 * mask;
|
||
SDL_Surface * icon;
|
||
@@ -927,6 +1028,7 @@
|
||
|
||
// free(mask);
|
||
SDL_FreeSurface(icon);
|
||
+#endif
|
||
}
|
||
|
||
|
||
@@ -956,6 +1058,7 @@
|
||
}
|
||
else if (strcmp(argv[i], "--joymap") == 0)
|
||
{
|
||
+#ifndef GP2X
|
||
assert(i+1 < argc);
|
||
if (sscanf(argv[++i],
|
||
"%d:%d:%d:%d:%d",
|
||
@@ -976,6 +1079,7 @@
|
||
<< " B-Button: " << joystick_keymap.b_button << "\n"
|
||
<< " Start-Button: " << joystick_keymap.start_button << std::endl;
|
||
}
|
||
+#endif
|
||
}
|
||
else if (strcmp(argv[i], "--leveleditor") == 0)
|
||
{
|
||
diff -ur supertux-0.1.3/src/sound.cpp supertux-0.1.3-gp2x/src/sound.cpp
|
||
--- supertux-0.1.3/src/sound.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/sound.cpp 2006-04-22 02:07:57.000000000 +0300
|
||
@@ -22,6 +22,9 @@
|
||
#include "globals.h"
|
||
#include "sound.h"
|
||
#include "setup.h"
|
||
+#ifdef GP2X
|
||
+#include <string.h>
|
||
+#endif
|
||
|
||
/*global variable*/
|
||
bool use_sound = true; /* handle sound on/off menu and command-line option */
|
||
@@ -54,12 +57,21 @@
|
||
|
||
#include <SDL_mixer.h>
|
||
|
||
+#ifndef GP2X
|
||
Mix_Chunk * sounds[NUM_SOUNDS];
|
||
+#else
|
||
|
||
-/* --- OPEN THE AUDIO DEVICE --- */
|
||
+#include <mikmod.h>
|
||
+static MODULE *music=NULL;
|
||
+static SAMPLE *chunk[NUM_SOUNDS];
|
||
+static int chunkFlag[NUM_SOUNDS];
|
||
+#endif
|
||
|
||
+/* --- OPEN THE AUDIO DEVICE --- */
|
||
int open_audio (int frequency, Uint16 format, int channels, int chunksize)
|
||
{
|
||
+// close_audio();
|
||
+#ifndef GP2X
|
||
if (Mix_OpenAudio( frequency, format, channels, chunksize ) < 0)
|
||
return -1;
|
||
|
||
@@ -74,20 +86,93 @@
|
||
/* prepare the spanning effects */
|
||
Mix_SetPanning( SOUND_LEFT_SPEAKER, 230, 24 );
|
||
Mix_SetPanning( SOUND_RIGHT_SPEAKER, 24, 230 );
|
||
+#else
|
||
+ if (drv_oss.Name) // Valid OSS driver
|
||
+ {
|
||
+ if (drv_oss.CommandLine) // Valid Commandline
|
||
+ {
|
||
+ drv_oss.CommandLine("buffer=14,count=2");
|
||
+ }
|
||
+ MikMod_RegisterDriver(&drv_oss);
|
||
+ }
|
||
+ if (drv_alsa.Name) // Valid ALSA driver
|
||
+ {
|
||
+ if (drv_alsa.CommandLine) // Valid Commandline
|
||
+ {
|
||
+ drv_alsa.CommandLine("buffer=14");
|
||
+ }
|
||
+ MikMod_RegisterDriver(&drv_alsa);
|
||
+ }
|
||
+ MikMod_RegisterDriver(&drv_nos);
|
||
+
|
||
+ // register standard tracker
|
||
+ MikMod_RegisterAllLoaders();
|
||
+
|
||
+ // Note, the md_mode flags are already set by default
|
||
+ md_mode |= DMODE_SOFT_SNDFX | DMODE_SOFT_MUSIC;
|
||
+
|
||
+ if (MikMod_Init("")) // Command paramenters are ignored as all drivers are registered
|
||
+ {
|
||
+ printf("mikmod init war f<>rn arsch\n");
|
||
+ return 1;
|
||
+ }
|
||
+
|
||
+ load_sounds();
|
||
+
|
||
+ // get ready to play
|
||
+ MikMod_EnableOutput();
|
||
+ md_volume =64;
|
||
+ md_sndfxvolume = 64;
|
||
+ //md_musicvolume = md_sndfxvolume = 64;
|
||
+
|
||
+ use_sound = true;
|
||
+ audio_device=true;
|
||
+
|
||
+#endif
|
||
return 0;
|
||
-}
|
||
|
||
+}
|
||
|
||
/* --- CLOSE THE AUDIO DEVICE --- */
|
||
|
||
void close_audio( void )
|
||
{
|
||
+#ifndef GP2X
|
||
if (audio_device) {
|
||
Mix_UnregisterAllEffects( SOUND_LEFT_SPEAKER );
|
||
Mix_UnregisterAllEffects( SOUND_RIGHT_SPEAKER );
|
||
Mix_CloseAudio();
|
||
}
|
||
+#else
|
||
+ int i;
|
||
+ if (! audio_device) return;
|
||
+
|
||
+ MikMod_DisableOutput();
|
||
+ Player_Stop();
|
||
+ MikMod_Update();
|
||
+
|
||
+ if (music) {
|
||
+ Player_Free(music);
|
||
+ music = NULL;
|
||
+ }
|
||
+
|
||
+ for ( i=0 ; i<NUM_SOUNDS ; i++ ) {
|
||
+ if ( chunk[i] ) {
|
||
+ Sample_Free(chunk[i]);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ MikMod_Update();
|
||
+ MikMod_Exit();
|
||
+#endif
|
||
+}
|
||
+
|
||
+#ifdef GP2X
|
||
+void updateSound ( void ) {
|
||
+ if (! audio_device) return;
|
||
+ MikMod_Update();
|
||
}
|
||
+#endif
|
||
|
||
|
||
/* --- LOAD A SOUND --- */
|
||
@@ -105,6 +190,30 @@
|
||
return(snd);
|
||
}
|
||
|
||
+#ifdef GP2X
|
||
+static void load_sounds() {
|
||
+ int i;
|
||
+ std::string name;
|
||
+ char file[100];
|
||
+
|
||
+ for ( i=0 ; i<NUM_SOUNDS ; i++ ) {
|
||
+ name = datadir + soundfilenames[i];
|
||
+ printf("loading: %s\n",name.c_str());
|
||
+ snprintf(file,sizeof(file),"%s",name.c_str());
|
||
+ if ( NULL == (chunk[i] = Sample_Load(file)) ) {
|
||
+ fprintf(stderr, "Couldn't load: %s\n", file);
|
||
+ use_sound = 0;
|
||
+ return;
|
||
+ }
|
||
+ chunkFlag[i] = 0;
|
||
+ }
|
||
+
|
||
+ // reserve voices for sound effects
|
||
+ MikMod_SetNumVoices(-1, 4);
|
||
+}
|
||
+#endif
|
||
+
|
||
+
|
||
/* --- PLAY A SOUND ON LEFT OR RIGHT OR CENTER SPEAKER --- */
|
||
|
||
void play_sound(Mix_Chunk * snd, enum Sound_Speaker whichSpeaker)
|
||
@@ -130,8 +239,45 @@
|
||
}
|
||
}
|
||
|
||
+
|
||
+#ifdef GP2X
|
||
+void play_chunk(int idx)
|
||
+{
|
||
+ int cid;
|
||
+// if (use_sound) return;
|
||
+ cid = Sample_Play (chunk[idx], 0, 0);
|
||
+ Voice_SetPanning(cid, PAN_CENTER);
|
||
+ Voice_SetVolume(cid, 1000);
|
||
+}
|
||
+#endif
|
||
+
|
||
+
|
||
void free_chunk(Mix_Chunk *chunk)
|
||
{
|
||
Mix_FreeChunk( chunk );
|
||
}
|
||
|
||
+void sound_volume ( int vol )
|
||
+{
|
||
+#ifndef GP2X
|
||
+ static int volume = 10;
|
||
+
|
||
+ if ( vol == 1 ) volume-=5;
|
||
+ else if ( vol == 2 ) volume+=5;
|
||
+ Mix_Volume(-1,volume);
|
||
+#endif
|
||
+}
|
||
+
|
||
+#ifdef GP2X
|
||
+void increaseSoundVolume(void)
|
||
+{
|
||
+ if (md_volume > (256 - 13)) md_volume = 256;
|
||
+ else md_volume += 13;
|
||
+}
|
||
+
|
||
+void decreaseSoundVolume(void)
|
||
+{
|
||
+ if (md_volume < 13) md_volume = 0;
|
||
+ else md_volume -= 13;
|
||
+}
|
||
+#endif
|
||
diff -ur supertux-0.1.3/src/sound.h supertux-0.1.3-gp2x/src/sound.h
|
||
--- supertux-0.1.3/src/sound.h 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/sound.h 2006-04-21 00:17:09.000000000 +0300
|
||
@@ -75,14 +75,27 @@
|
||
#include <SDL_mixer.h>
|
||
|
||
/* variables for stocking the sound and music */
|
||
+#ifndef GP2X
|
||
extern Mix_Chunk* sounds[NUM_SOUNDS];
|
||
+#endif
|
||
|
||
/* functions handling the sound and music */
|
||
int open_audio(int frequency, Uint16 format, int channels, int chunksize);
|
||
void close_audio( void );
|
||
|
||
+#ifndef GP2X
|
||
Mix_Chunk * load_sound(const std::string& file);
|
||
+#endif
|
||
void free_chunk(Mix_Chunk*chunk);
|
||
void play_sound(Mix_Chunk * snd, enum Sound_Speaker whichSpeaker);
|
||
+void sound_volume ( int vol );
|
||
|
||
#endif /*SUPERTUX_SOUND_H*/
|
||
+
|
||
+#ifdef GP2X
|
||
+void play_chunk(int idx);
|
||
+static void load_sounds();
|
||
+void updateSound ( void );
|
||
+void increaseSoundVolume(void);
|
||
+void decreaseSoundVolume(void);
|
||
+#endif
|
||
diff -ur supertux-0.1.3/src/special.cpp supertux-0.1.3-gp2x/src/special.cpp
|
||
--- supertux-0.1.3/src/special.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/special.cpp 2006-04-20 21:39:41.000000000 +0300
|
||
@@ -105,12 +105,21 @@
|
||
|
||
base.ym = base.ym + 0.5 * frame_ratio;
|
||
|
||
+#ifndef RES320X240
|
||
if (base.x < scroll_x ||
|
||
base.x > scroll_x + screen->w ||
|
||
base.y > screen->h ||
|
||
issolid(base.x + 4, base.y + 2) ||
|
||
issolid(base.x, base.y + 2) ||
|
||
life_count <= 0)
|
||
+#else
|
||
+ if (base.x < scroll_x ||
|
||
+ base.x > scroll_x + 640 ||
|
||
+ base.y > 480 ||
|
||
+ issolid(base.x + 4, base.y + 2) ||
|
||
+ issolid(base.x, base.y + 2) ||
|
||
+ life_count <= 0)
|
||
+#endif
|
||
{
|
||
remove_me();
|
||
}
|
||
@@ -120,8 +129,13 @@
|
||
void
|
||
Bullet::draw()
|
||
{
|
||
+#ifndef RES320X240
|
||
if (base.x >= scroll_x - base.width &&
|
||
base.x <= scroll_x + screen->w)
|
||
+#else
|
||
+ if (base.x >= scroll_x - base.width &&
|
||
+ base.x <= scroll_x + 640)
|
||
+#endif
|
||
{
|
||
img_bullet->draw(base.x - scroll_x, base.y);
|
||
}
|
||
@@ -140,7 +154,7 @@
|
||
{
|
||
kind = kind_;
|
||
dir = dir_;
|
||
-
|
||
+
|
||
base.width = 32;
|
||
base.height = 0;
|
||
base.x = x_;
|
||
@@ -197,7 +211,11 @@
|
||
remove_me();
|
||
return;
|
||
}
|
||
+#ifndef RES320X240
|
||
if(base.y > screen->h) {
|
||
+#else
|
||
+ if(base.y > 640) {
|
||
+#endif
|
||
remove_me();
|
||
return;
|
||
}
|
||
@@ -252,7 +270,12 @@
|
||
{
|
||
/* Rising up... */
|
||
|
||
+
|
||
+#ifndef RES320X240
|
||
dest.x = (int)(base.x - scroll_x);
|
||
+#else
|
||
+ dest.x = (int)(base.x - scroll_x)/2;
|
||
+#endif
|
||
dest.y = (int)(base.y + 32 - base.height);
|
||
dest.w = 32;
|
||
dest.h = (int)base.height;
|
||
@@ -297,7 +320,11 @@
|
||
if(kind != UPGRADE_GROWUP)
|
||
return;
|
||
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_BUMP_UPGRADE], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_BUMP_UPGRADE);
|
||
+#endif
|
||
|
||
// do a little jump and change direction
|
||
physic.set_velocity(-physic.get_velocity_x(), 3);
|
||
@@ -329,18 +356,30 @@
|
||
|
||
if (kind == UPGRADE_GROWUP)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_EXCELLENT], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_EXCELLENT);
|
||
+#endif
|
||
pplayer->grow();
|
||
}
|
||
else if (kind == UPGRADE_ICEFLOWER)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_COFFEE);
|
||
+#endif
|
||
pplayer->grow();
|
||
pplayer->got_coffee = true;
|
||
}
|
||
else if (kind == UPGRADE_HERRING)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_HERRING], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_HERRING);
|
||
+#endif
|
||
pplayer->invincible_timer.start(TUX_INVINCIBLE_TIME);
|
||
World::current()->play_music(HERRING_MUSIC);
|
||
}
|
||
@@ -348,7 +387,11 @@
|
||
{
|
||
if(player_status.lives < MAX_LIVES) {
|
||
player_status.lives++;
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_LIFEUP], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_LIFEUP);
|
||
+#endif
|
||
}
|
||
}
|
||
|
||
diff -ur supertux-0.1.3/src/text.cpp supertux-0.1.3-gp2x/src/text.cpp
|
||
--- supertux-0.1.3/src/text.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/text.cpp 2006-04-22 01:59:36.000000000 +0300
|
||
@@ -24,6 +24,7 @@
|
||
#include "defines.h"
|
||
#include "screen.h"
|
||
#include "text.h"
|
||
+#include "sound.h"
|
||
|
||
Text::Text(const std::string& file, int kind_, int w_, int h_)
|
||
{
|
||
@@ -79,6 +80,7 @@
|
||
void
|
||
Text::draw(const char* text, int x, int y, int shadowsize, int update)
|
||
{
|
||
+
|
||
if(text != NULL)
|
||
{
|
||
if(shadowsize != 0)
|
||
@@ -116,6 +118,9 @@
|
||
else if ( text[i] == '\n')
|
||
{
|
||
y += h + 2;
|
||
+#ifdef RES320X240
|
||
+ y+=6;
|
||
+#endif
|
||
j = 0;
|
||
}
|
||
}
|
||
@@ -129,6 +134,9 @@
|
||
else if ( text[i] == '\n')
|
||
{
|
||
y += h + 2;
|
||
+#ifdef RES320X240
|
||
+ y+=6;
|
||
+#endif
|
||
j = 0;
|
||
}
|
||
}
|
||
@@ -306,6 +314,24 @@
|
||
break;
|
||
}
|
||
break;
|
||
+
|
||
+#ifdef GP2X
|
||
+ case SDL_JOYBUTTONDOWN:
|
||
+ if ( event.jbutton.button == joystick_keymap.down_button ) {
|
||
+ speed += SPEED_INC;
|
||
+ }
|
||
+ if ( event.jbutton.button == joystick_keymap.up_button ) {
|
||
+ speed -= SPEED_INC;
|
||
+ }
|
||
+ if ( event.jbutton.button == joystick_keymap.b_button ) {
|
||
+ done = 1;
|
||
+ }
|
||
+ if ( event.jbutton.button == joystick_keymap.a_button ) {
|
||
+ scroll += SCROLL;
|
||
+ }
|
||
+ break;
|
||
+#endif
|
||
+
|
||
case SDL_QUIT:
|
||
done = 1;
|
||
break;
|
||
@@ -330,21 +356,36 @@
|
||
white_small_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
|
||
A_HMIDDLE, A_TOP, 1);
|
||
y += white_small_text->h+ITEMS_SPACE;
|
||
+#ifdef RES320X240
|
||
+ y += 6;
|
||
+#endif
|
||
break;
|
||
case ' ':
|
||
white_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
|
||
A_HMIDDLE, A_TOP, 1);
|
||
y += white_text->h+ITEMS_SPACE;
|
||
+#ifdef RES320X240
|
||
+ y += 6;
|
||
+#endif
|
||
break;
|
||
case '-':
|
||
- white_big_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
|
||
- A_HMIDDLE, A_TOP, 3);
|
||
+#ifdef RES320X240
|
||
+ white_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll), A_HMIDDLE, A_TOP, 3);
|
||
+#else
|
||
+ white_big_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll), A_HMIDDLE, A_TOP, 3);
|
||
+#endif
|
||
y += white_big_text->h+ITEMS_SPACE;
|
||
+#ifdef RES320X240
|
||
+ y += 6;
|
||
+#endif
|
||
break;
|
||
default:
|
||
blue_text->drawf(names.item[i], 0, screen->h+y-int(scroll),
|
||
A_HMIDDLE, A_TOP, 1);
|
||
y += blue_text->h+ITEMS_SPACE;
|
||
+#ifdef RES320X240
|
||
+ y += 6;
|
||
+#endif
|
||
break;
|
||
}
|
||
}
|
||
@@ -360,7 +401,13 @@
|
||
if(scroll < 0)
|
||
scroll = 0;
|
||
|
||
- SDL_Delay(10);
|
||
+#ifndef GP2X
|
||
+ SDL_Delay(10);
|
||
+#else
|
||
+ SDL_Delay(2);
|
||
+ updateSound();
|
||
+#endif
|
||
+
|
||
}
|
||
string_list_free(&names);
|
||
|
||
diff -ur supertux-0.1.3/src/texture.cpp supertux-0.1.3-gp2x/src/texture.cpp
|
||
--- supertux-0.1.3/src/texture.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/texture.cpp 2006-04-10 14:29:03.000000000 +0300
|
||
@@ -211,7 +211,8 @@
|
||
{
|
||
if (impl)
|
||
{
|
||
- if (impl->draw(x, y, alpha, update) == -2)
|
||
+// if (impl->draw(x, y, alpha, update) == -2)
|
||
+ if (impl->draw(x/2, y/2, alpha, update) == -2)
|
||
reload();
|
||
}
|
||
}
|
||
@@ -231,7 +232,8 @@
|
||
{
|
||
if (impl)
|
||
{
|
||
- if (impl->draw_part(sx, sy, x, y, w, h, alpha, update) == -2)
|
||
+// if (impl->draw_part(sx, sy, x, y, w, h, alpha, update) == -2)
|
||
+ if (impl->draw_part(sx, sy, x, y/2, w, h, alpha, update) == -2)
|
||
reload();
|
||
}
|
||
}
|
||
@@ -241,7 +243,8 @@
|
||
{
|
||
if (impl)
|
||
{
|
||
- if (impl->draw_stretched(x, y, w, h, alpha, update) == -2)
|
||
+// if (impl->draw_stretched(x, y, w, h, alpha, update) == -2)
|
||
+ if (impl->draw_stretched(x/2, y/2, w, h, alpha, update) == -2)
|
||
reload();
|
||
}
|
||
}
|
||
diff -ur supertux-0.1.3/src/title.cpp supertux-0.1.3-gp2x/src/title.cpp
|
||
--- supertux-0.1.3/src/title.cpp 2005-07-08 15:19:17.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/title.cpp 2006-04-22 01:29:08.000000000 +0300
|
||
@@ -51,6 +51,7 @@
|
||
#include "tile.h"
|
||
#include "resources.h"
|
||
#include "worldmap.h"
|
||
+#include "sound.h"
|
||
|
||
static Surface* bkg_title;
|
||
static Surface* logo;
|
||
@@ -80,6 +81,10 @@
|
||
|
||
void generate_contrib_menu()
|
||
{
|
||
+#ifdef RES320X240
|
||
+ fadeout();
|
||
+#endif
|
||
+
|
||
string_list_type level_subsets = dsubdirs("/levels", "info");
|
||
|
||
free_contrib_menu();
|
||
@@ -208,7 +213,7 @@
|
||
}
|
||
|
||
// Wrap around at the end of the level back to the beginnig
|
||
- if(plevel->width * 32 - 320 < tux->base.x)
|
||
+ if((plevel->width * 32) - 320 < tux->base.x)
|
||
{
|
||
tux->level_begin();
|
||
scroll_x = 0;
|
||
@@ -226,7 +231,6 @@
|
||
{
|
||
walking = false;
|
||
}
|
||
-
|
||
world->draw();
|
||
}
|
||
|
||
@@ -301,13 +305,26 @@
|
||
|
||
if (Menu::current() == main_menu)
|
||
logo->draw( 160, 30);
|
||
-
|
||
+
|
||
+#ifndef RES320X240
|
||
white_small_text->draw(" SuperTux " VERSION "\n"
|
||
"Copyright (c) 2003 SuperTux Devel Team\n"
|
||
"This game comes with ABSOLUTELY NO WARRANTY. This is free software, and you\n"
|
||
"are welcome to redistribute it under certain conditions; see the file COPYING\n"
|
||
"for details.\n",
|
||
0, 420, 0);
|
||
+#else
|
||
+ white_small_text->draw(" SuperTux " VERSION "\n"
|
||
+ "Copyright (c) 2003 SuperTux Devel Team\n"
|
||
+ "This game comes with ABSOLUTELY NO \n"
|
||
+ "WARRANTY. This is free software, and\n"
|
||
+ "you are welcome to redistribute it\n"
|
||
+ "under certain conditions; see the file\n"
|
||
+ "COPYING for details.\n",
|
||
+ 0, 360, 0);
|
||
+#endif
|
||
+
|
||
+ //updateSound();
|
||
|
||
/* Don't draw menu, if quit is true */
|
||
Menu* menu = Menu::current();
|
||
@@ -337,10 +354,10 @@
|
||
break;
|
||
case MNID_CREDITS:
|
||
music_manager = new MusicManager();
|
||
- menu_song = music_manager->load_music(datadir + "/music/credits.ogg");
|
||
+ menu_song = music_manager->load_music(datadir + "/music/credits.mod");
|
||
music_manager->halt_music();
|
||
music_manager->play_music(menu_song,0);
|
||
- display_text_file("CREDITS", bkg_title, SCROLL_SPEED_CREDITS);
|
||
+ display_text_file("CREDITS", bkg_title, SCROLL_SPEED_CREDITS);
|
||
music_manager->halt_music();
|
||
menu_song = music_manager->load_music(datadir + "/music/theme.mod");
|
||
music_manager->play_music(menu_song);
|
||
diff -ur supertux-0.1.3/src/world.cpp supertux-0.1.3-gp2x/src/world.cpp
|
||
--- supertux-0.1.3/src/world.cpp 2005-06-22 00:16:07.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/world.cpp 2006-05-05 23:16:47.000000000 +0300
|
||
@@ -206,6 +206,7 @@
|
||
}
|
||
}
|
||
|
||
+
|
||
/* Draw interactive tiles: */
|
||
for (y = 0; y < 15; ++y)
|
||
{
|
||
@@ -255,6 +256,8 @@
|
||
{
|
||
(*p)->draw(scroll_x, 0, 1);
|
||
}
|
||
+
|
||
+ //updateSound();
|
||
}
|
||
|
||
void
|
||
@@ -312,7 +315,12 @@
|
||
|
||
// the space that it takes for the screen to start scrolling, regarding
|
||
// screen bounds (in pixels)
|
||
+#ifndef RES320X240
|
||
#define X_SPACE (400-16)
|
||
+#else
|
||
+#define X_SPACE (80-16)
|
||
+#endif
|
||
+
|
||
// the time it takes to move the camera (in ms)
|
||
#define CHANGE_DIR_SCROLL_SPEED 2000
|
||
|
||
@@ -388,8 +396,13 @@
|
||
// this code prevent the screen to scroll before the start or after the level's end
|
||
if(scroll_x < 0)
|
||
scroll_x = 0;
|
||
+#ifndef RES320X240
|
||
if(scroll_x > level->width * 32 - screen->w)
|
||
scroll_x = level->width * 32 - screen->w;
|
||
+#else
|
||
+ if(scroll_x > level->width * 32 - 640)
|
||
+ scroll_x = level->width * 32 - 640;
|
||
+#endif
|
||
}
|
||
|
||
void
|
||
@@ -481,6 +494,10 @@
|
||
void
|
||
World::add_score(float x, float y, int s)
|
||
{
|
||
+#ifdef RES320X240
|
||
+ x=x/2;
|
||
+#endif
|
||
+
|
||
player_status.score += s;
|
||
|
||
FloatingScore* new_floating_score = new FloatingScore();
|
||
@@ -547,8 +564,11 @@
|
||
Bullet new_bullet;
|
||
new_bullet.init(x,y,xm,dir);
|
||
bullets.push_back(new_bullet);
|
||
-
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_SHOOT], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_SHOOT);
|
||
+#endif
|
||
}
|
||
|
||
void
|
||
@@ -608,8 +628,11 @@
|
||
counting_distros = false;
|
||
plevel->change(x, y, TM_IA, tile->next_tile);
|
||
}
|
||
-
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_DISTRO);
|
||
+#endif
|
||
player_status.score = player_status.score + SCORE_DISTRO;
|
||
player_status.distros++;
|
||
}
|
||
@@ -622,9 +645,13 @@
|
||
add_broken_brick(tile,
|
||
((int)(x + 1) / 32) * 32,
|
||
(int)(y / 32) * 32);
|
||
-
|
||
+
|
||
/* Get some score: */
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_BRICK);
|
||
+#endif
|
||
player_status.score = player_status.score + SCORE_BRICK;
|
||
}
|
||
}
|
||
@@ -652,7 +679,11 @@
|
||
{
|
||
case 1: // Box with a distro!
|
||
add_bouncy_distro(posx, posy);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_DISTRO);
|
||
+#endif
|
||
player_status.score = player_status.score + SCORE_DISTRO;
|
||
player_status.distros++;
|
||
break;
|
||
@@ -662,7 +693,11 @@
|
||
add_upgrade(posx, posy, col_side, UPGRADE_GROWUP);
|
||
else /* Tux is big, add an iceflower: */
|
||
add_upgrade(posx, posy, col_side, UPGRADE_ICEFLOWER);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_UPGRADE], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_UPGRADE);
|
||
+#endif
|
||
break;
|
||
|
||
case 3: // Add a golden herring
|
||
@@ -688,7 +723,11 @@
|
||
if (tile && tile->distro)
|
||
{
|
||
level->change(x, y, TM_IA, tile->next_tile);
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_DISTRO);
|
||
+#endif
|
||
|
||
if (bounciness == BOUNCE)
|
||
{
|
||
diff -ur supertux-0.1.3/src/worldmap.cpp supertux-0.1.3-gp2x/src/worldmap.cpp
|
||
--- supertux-0.1.3/src/worldmap.cpp 2005-07-08 15:19:17.000000000 +0300
|
||
+++ supertux-0.1.3-gp2x/src/worldmap.cpp 2006-05-05 22:54:04.000000000 +0300
|
||
@@ -376,11 +376,11 @@
|
||
{
|
||
tile_manager = new TileManager();
|
||
|
||
- width = 20;
|
||
- height = 15;
|
||
+ width = (int)(20);
|
||
+ height = (int)(15);
|
||
|
||
- start_x = 4;
|
||
- start_y = 5;
|
||
+ start_x = int(4);
|
||
+ start_y = int(5);
|
||
|
||
passive_message_timer.init(true);
|
||
|
||
@@ -395,7 +395,7 @@
|
||
enter_level = false;
|
||
|
||
name = "<no file>";
|
||
- music = "SALCON.MOD";
|
||
+ music = "salcon.mod";
|
||
}
|
||
|
||
WorldMap::~WorldMap()
|
||
@@ -589,7 +589,8 @@
|
||
break;
|
||
}
|
||
break;
|
||
-
|
||
+
|
||
+#ifndef GP2X
|
||
case SDL_JOYAXISMOTION:
|
||
if (event.jaxis.axis == joystick_keymap.x_axis)
|
||
{
|
||
@@ -617,13 +618,29 @@
|
||
if (event.jhat.value == SDL_HAT_RIGHT)
|
||
input_direction = D_EAST;
|
||
break;
|
||
-
|
||
+#endif
|
||
case SDL_JOYBUTTONDOWN:
|
||
+#ifndef GP2X
|
||
if (event.jbutton.button == joystick_keymap.b_button)
|
||
enter_level = true;
|
||
else if (event.jbutton.button == joystick_keymap.start_button)
|
||
on_escape_press();
|
||
break;
|
||
+#else
|
||
+ if (event.jbutton.button == joystick_keymap.a_button)
|
||
+ enter_level = true;
|
||
+ else if (event.jbutton.button == joystick_keymap.start_button)
|
||
+ on_escape_press();
|
||
+ else if (event.jbutton.button == joystick_keymap.up_button)
|
||
+ input_direction = D_NORTH;
|
||
+ else if (event.jbutton.button == joystick_keymap.down_button)
|
||
+ input_direction = D_SOUTH;
|
||
+ else if (event.jbutton.button == joystick_keymap.right_button)
|
||
+ input_direction = D_EAST;
|
||
+ else if (event.jbutton.button == joystick_keymap.left_button)
|
||
+ input_direction = D_WEST;
|
||
+ break;
|
||
+#endif
|
||
|
||
default:
|
||
break;
|
||
@@ -769,13 +786,13 @@
|
||
{
|
||
MusicRef theme =
|
||
music_manager->load_music(datadir + "/music/theme.mod");
|
||
- MusicRef credits = music_manager->load_music(datadir + "/music/credits.ogg");
|
||
+ MusicRef credits = music_manager->load_music(datadir + "/music/credits.xm");
|
||
music_manager->play_music(theme);
|
||
// Display final credits and go back to the main menu
|
||
display_text_file(level->extro_filename,
|
||
"/images/background/extro.jpg", SCROLL_SPEED_MESSAGE);
|
||
music_manager->play_music(credits,0);
|
||
- display_text_file("CREDITS",
|
||
+ display_text_file("CREDITS",
|
||
"/images/background/oiltux.jpg", SCROLL_SPEED_CREDITS);
|
||
music_manager->play_music(theme);
|
||
quit = true;
|
||
@@ -812,7 +829,12 @@
|
||
if (level->x == tux->get_tile_pos().x &&
|
||
level->y == tux->get_tile_pos().y)
|
||
{
|
||
+#ifndef GP2X
|
||
play_sound(sounds[SND_TELEPORT], SOUND_CENTER_SPEAKER);
|
||
+#else
|
||
+ play_chunk(SND_TELEPORT);
|
||
+ updateSound();
|
||
+#endif
|
||
tux->back_direction = D_NONE;
|
||
tux->set_tile_pos(Point(level->teleport_dest_x, level->teleport_dest_y));
|
||
SDL_Delay(1000);
|
||
@@ -914,26 +936,39 @@
|
||
void
|
||
WorldMap::draw_status()
|
||
{
|
||
+ int xdiv;
|
||
+
|
||
+#ifdef RES320X240
|
||
+ xdiv=2;
|
||
+#else
|
||
+ xdiv=1;
|
||
+#endif
|
||
+
|
||
char str[80];
|
||
sprintf(str, "%d", player_status.score);
|
||
white_text->draw("SCORE", 0, 0);
|
||
- gold_text->draw(str, 96, 0);
|
||
+ gold_text->draw(str, (int)(96)/xdiv, 0);
|
||
|
||
sprintf(str, "%d", player_status.distros);
|
||
- white_text->draw_align("COINS", 320-64, 0, A_LEFT, A_TOP);
|
||
- gold_text->draw_align(str, 320+64, 0, A_RIGHT, A_TOP);
|
||
+ white_text->draw_align("COINS", (int)(320-64)/xdiv, 0, A_LEFT, A_TOP);
|
||
+ gold_text->draw_align(str, (int)(320+64)/xdiv, 0, A_RIGHT, A_TOP);
|
||
|
||
- white_text->draw("LIVES", 480, 0);
|
||
+ white_text->draw("LIVES", (int)(480)/xdiv, 0);
|
||
if (player_status.lives >= 5)
|
||
{
|
||
sprintf(str, "%dx", player_status.lives);
|
||
- gold_text->draw_align(str, 617, 0, A_RIGHT, A_TOP);
|
||
- tux_life->draw(565+(18*3), 0);
|
||
+#ifdef RES320X240
|
||
+ gold_text->draw_align(str, (int)(617)/xdiv-5, 0, A_RIGHT, A_TOP);
|
||
+ tux_life->draw((int)((565-12+(18*3))), 0);
|
||
+#else
|
||
+ gold_text->draw_align(str, (int)(617), 0, A_RIGHT, A_TOP);
|
||
+ tux_life->draw((int)((565+(18*3))), 0);
|
||
+#endif
|
||
}
|
||
else
|
||
{
|
||
for(int i= 0; i < player_status.lives; ++i)
|
||
- tux_life->draw(565+(18*i),0);
|
||
+ tux_life->draw((565+(18/xdiv*i)),0);
|
||
}
|
||
|
||
if (!tux->is_moving())
|
||
@@ -945,7 +980,11 @@
|
||
{
|
||
if(!i->name.empty())
|
||
{
|
||
+#ifndef RES320X240
|
||
white_text->draw_align(i->title.c_str(), screen->w/2, screen->h, A_HMIDDLE, A_BOTTOM);
|
||
+#else
|
||
+ white_text->draw_align(i->title.c_str(), screen->w/2, 470, A_HMIDDLE, A_BOTTOM);
|
||
+#endif
|
||
}
|
||
else if (i->teleport_dest_x != -1) {
|
||
if(!i->teleport_message.empty())
|
||
@@ -955,7 +994,7 @@
|
||
/* Display a message in the map, if any as been selected */
|
||
if(!i->display_map_message.empty() && !i->passive_message)
|
||
gold_text->draw_align(i->display_map_message.c_str(),
|
||
- screen->w/2, screen->h - 30,A_HMIDDLE, A_BOTTOM);
|
||
+ screen->w/2, screen->h - (int)(30),A_HMIDDLE, A_BOTTOM);
|
||
break;
|
||
}
|
||
}
|
||
@@ -964,7 +1003,7 @@
|
||
/* Display a passive message in the map, if needed */
|
||
if(passive_message_timer.check())
|
||
gold_text->draw_align(passive_message.c_str(),
|
||
- screen->w/2, screen->h - 30,A_HMIDDLE, A_BOTTOM);
|
||
+ screen->w/2, screen->h - (int)(30),A_HMIDDLE, A_BOTTOM);
|
||
}
|
||
|
||
void
|
||
@@ -997,6 +1036,7 @@
|
||
Point tux_pos = tux->get_pos();
|
||
if (1)
|
||
{
|
||
+#ifndef GP2X
|
||
offset.x = -tux_pos.x + screen->w/2;
|
||
offset.y = -tux_pos.y + screen->h/2;
|
||
|
||
@@ -1005,6 +1045,16 @@
|
||
|
||
if (offset.x < screen->w - width*32) offset.x = screen->w - width*32;
|
||
if (offset.y < screen->h - height*32) offset.y = screen->h - height*32;
|
||
+#else
|
||
+ offset.x = -tux_pos.x + 640/2;
|
||
+ offset.y = -tux_pos.y + 480/2;
|
||
+
|
||
+ if (offset.x > 0) offset.x = 0;
|
||
+ if (offset.y > 0) offset.y = 0;
|
||
+
|
||
+ if (offset.x < 640 - width*32) offset.x = 640 - width*32;
|
||
+ if (offset.y < 480 - height*32) offset.y = 480 - height*32;
|
||
+#endif
|
||
}
|
||
|
||
draw(offset);
|