Commit 7cb1543f authored by alistert's avatar alistert

Updated Makefiles, merged createFullscreen() and createWindow(), moved scaling...

Updated Makefiles, merged createFullscreen() and createWindow(), moved scaling to a separate sub-menu.
parent 91791324
...@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \ ...@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \ src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \ src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \ src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \ src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
OpenJazz: $(objects) OpenJazz: $(objects)
......
...@@ -19,7 +19,7 @@ TARGET = arm-open2x-linux- ...@@ -19,7 +19,7 @@ TARGET = arm-open2x-linux-
else # default linux else # default linux
PROGRAM = OpenJazz PROGRAM = OpenJazz
PREFIX = /usr PREFIX = /usr
TARGET = TARGET =
endif endif
endif endif
endif endif
...@@ -38,8 +38,9 @@ OBJS = src/bonus/bonus.o \ ...@@ -38,8 +38,9 @@ OBJS = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \ src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \ src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \ src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \ src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
CXX = $(PREFIX)/bin/$(TARGET)g++ CXX = $(PREFIX)/bin/$(TARGET)g++
...@@ -50,7 +51,7 @@ else ...@@ -50,7 +51,7 @@ else
ifeq ($(BUILDTYPE),WIZ) ifeq ($(BUILDTYPE),WIZ)
OBJS += src/platforms/wiz.o OBJS += src/platforms/wiz.o
CXXFLAGS += -DWIZ -DFULLSCREEN_ONLY CXXFLAGS += -DWIZ -DFULLSCREEN_ONLY
LDFLAGS += LDFLAGS +=
else else
ifeq ($(BUILDTYPE),GP2X) ifeq ($(BUILDTYPE),GP2X)
OBJS += src/platforms/wiz.o OBJS += src/platforms/wiz.o
......
...@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \ ...@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \ src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \ src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \ src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \ src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
CXXFLAGS += -g -Wall -O2 -DUSE_SOCKETS -DSCALE CXXFLAGS += -g -Wall -O2 -DUSE_SOCKETS -DSCALE
......
...@@ -63,7 +63,7 @@ SDL_Surface * createSurface (unsigned char * pixels, int width, int height) { ...@@ -63,7 +63,7 @@ SDL_Surface * createSurface (unsigned char * pixels, int width, int height) {
} }
void createFullscreen () { void createScreen () {
#ifdef SCALE #ifdef SCALE
if (canvas != screen) SDL_FreeSurface(canvas); if (canvas != screen) SDL_FreeSurface(canvas);
...@@ -72,7 +72,11 @@ void createFullscreen () { ...@@ -72,7 +72,11 @@ void createFullscreen () {
#if defined(WIZ) || defined(GP2X) #if defined(WIZ) || defined(GP2X)
screen = SDL_SetVideoMode(320, 240, 8, V_FULLSCREEN); screen = SDL_SetVideoMode(320, 240, 8, V_FULLSCREEN);
#else #else
screen = SDL_SetVideoMode(screenW, screenH, 8, V_FULLSCREEN); #ifdef FULLSCREEN_ONLY
screen = SDL_SetVideoMode(screenW, screenH, 8, V_FULLSCREEN);
#else
screen = SDL_SetVideoMode(screenW, screenH, 8, fullscreen? V_FULLSCREEN: V_WINDOWED);
#endif
#endif #endif
#ifdef SCALE #ifdef SCALE
...@@ -112,48 +116,7 @@ void createFullscreen () { ...@@ -112,48 +116,7 @@ void createFullscreen () {
return; return;
} }
#ifndef FULLSCREEN_ONLY
void createWindow () {
#ifdef SCALE
if (canvas != screen) SDL_FreeSurface(canvas);
#endif
screen = SDL_SetVideoMode(screenW, screenH, 8, V_WINDOWED);
#ifdef SCALE
if (scaleFactor > 1) {
canvasW = screenW / scaleFactor;
canvasH = screenH / scaleFactor;
canvas = createSurface(NULL, canvasW, canvasH);
} else {
#endif
canvasW = screenW;
canvasH = screenH;
canvas = screen;
#ifdef SCALE
}
#endif
SDL_SetPalette(screen, SDL_LOGPAL, logicalPalette, 0, 256);
SDL_SetPalette(screen, SDL_PHYSPAL, currentPalette, 0, 256);
/* Assume that in windowed mode the palette is being emulated.
This is extremely likely. */
// TODO: Find a better way
fakePalette = true;
return;
}
#endif
void usePalette (SDL_Color *palette) { void usePalette (SDL_Color *palette) {
......
...@@ -38,6 +38,11 @@ ...@@ -38,6 +38,11 @@
#else #else
#define V_FULLSCREEN (SDL_FULLSCREEN | SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE) #define V_FULLSCREEN (SDL_FULLSCREEN | SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE)
#endif #endif
#ifdef SCALE
#define MIN_SCALE 1
#define MAX_SCALE 4
#endif
// Black palette index // Black palette index
#define BLACK 31 #define BLACK 31
...@@ -68,10 +73,7 @@ EXTERN SDL_Surface *panelAmmo[5]; ...@@ -68,10 +73,7 @@ EXTERN SDL_Surface *panelAmmo[5];
EXTERN SDL_Surface * createSurface (unsigned char *pixels, int width, EXTERN SDL_Surface * createSurface (unsigned char *pixels, int width,
int height); int height);
EXTERN void createFullscreen (); EXTERN void createScreen ();
#ifndef FULLSCREEN_ONLY
EXTERN void createWindow ();
#endif
EXTERN void usePalette (SDL_Color *palette); EXTERN void usePalette (SDL_Color *palette);
EXTERN void restorePalette (SDL_Surface *surface); EXTERN void restorePalette (SDL_Surface *surface);
EXTERN void clearScreen (int index); EXTERN void clearScreen (int index);
......
...@@ -266,16 +266,11 @@ int loadMain (int argc, char *argv[]) { ...@@ -266,16 +266,11 @@ int loadMain (int argc, char *argv[]) {
canvas = screen = NULL; canvas = screen = NULL;
#ifndef FULLSCREEN_ONLY #ifndef FULLSCREEN_ONLY
if (!fullscreen) createWindow(); if (fullscreen)
else {
#endif #endif
SDL_ShowCursor(SDL_DISABLE); SDL_ShowCursor(SDL_DISABLE);
createFullscreen();
createScreen();
#ifndef FULLSCREEN_ONLY
}
#endif
if (!screen) { if (!screen) {
...@@ -556,6 +551,9 @@ void freeMain () { ...@@ -556,6 +551,9 @@ void freeMain () {
delete firstPath; delete firstPath;
SDL_Quit();
return; return;
...@@ -600,17 +598,8 @@ int loop (int type) { ...@@ -600,17 +598,8 @@ int loop (int type) {
fullscreen = !fullscreen; fullscreen = !fullscreen;
if (fullscreen) { SDL_ShowCursor(fullscreen? SDL_DISABLE: SDL_ENABLE);
createScreen();
SDL_ShowCursor(SDL_DISABLE);
createFullscreen();
} else {
createWindow();
SDL_ShowCursor(SDL_ENABLE);
}
} }
#endif #endif
...@@ -650,7 +639,7 @@ int loop (int type) { ...@@ -650,7 +639,7 @@ int loop (int type) {
screenW = event.resize.w; screenW = event.resize.w;
screenH = event.resize.h; screenH = event.resize.h;
createWindow(); createScreen();
break; break;
...@@ -709,14 +698,12 @@ int loop (int type) { ...@@ -709,14 +698,12 @@ int loop (int type) {
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
Scene *scene = NULL; Scene *scene = NULL;
int scene_result = E_NONE;
// Initialise SDL // Initialise SDL
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_TIMER) < 0) {
SDL_INIT_TIMER) < 0) {
logError("Could not start SDL", SDL_GetError()); logError("Could not start SDL", SDL_GetError());
...@@ -745,63 +732,63 @@ int main(int argc, char *argv[]) { ...@@ -745,63 +732,63 @@ int main(int argc, char *argv[]) {
} catch (int e) { } catch (int e) {
freeMain(); freeMain();
SDL_Quit();
return e; return e;
} }
scene_result = scene->play(); if (scene->play() == E_QUIT) {
delete scene;
scene = NULL;*/ delete scene;
freeMain();
if (scene_result != E_QUIT) {
// Load the menu return 0;
try {
}
menu = new Menu();
delete scene;*/
} catch (int e) {
// Load the menu
try {
freeMain(); menu = new Menu();
SDL_Quit();
return e; } catch (int e) {
} freeMain();
// Run the main menu return e;
if (menu->main() == E_NONE) {
// Show the ending cutscene }
try { // Run the main menu
if (menu->main() == E_NONE) {
scene = new Scene(F_END_0SC); // Show the ending cutscene
} catch (int e) { try {
delete menu; scene = new Scene(F_END_0SC);
freeMain();
SDL_Quit();
return e; } catch (int e) {
} delete menu;
freeMain();
scene->play(); return e;
delete scene; }
scene->play();
} delete scene;
delete menu;
} }
delete menu;
freeMain(); freeMain();
SDL_Quit();
return 0; return 0;
......
...@@ -54,6 +54,9 @@ class Menu { ...@@ -54,6 +54,9 @@ class Menu {
int setupKeyboard (); int setupKeyboard ();
int setupJoystick (); int setupJoystick ();
int setupResolution (); int setupResolution ();
#ifdef SCALE
int setupScaling ();
#endif
public: public:
SDL_Color palettes[4][256]; SDL_Color palettes[4][256];
......
...@@ -259,21 +259,11 @@ int Menu::setupResolution () { ...@@ -259,21 +259,11 @@ int Menu::setupResolution () {
1280, 1440, 1600, 1920}; 1280, 1440, 1600, 1920};
int heightOptions[] = {200, 240, 300, 384, 400, 480, 576, 600, 720, 768, int heightOptions[] = {200, 240, 300, 384, 400, 480, 576, 600, 720, 768,
800, 864, 900, 960, 1024, 1080, 1200}; 800, 864, 900, 960, 1024, 1080, 1200};
SDL_Rect **resolutions; SDL_Rect **resolutions;
int dimension, count, maxW, maxH; int count, maxW, maxH;
bool dimension;
#ifdef SCALE dimension = false;
#define DIMENSIONS 3
#define minS 1
#define maxS 4
if ( scaleFactor < minS || scaleFactor > maxS )
scaleFactor = 1;
#else
#define DIMENSIONS 2
#endif
dimension = 0;
#ifndef FULLSCREEN_ONLY #ifndef FULLSCREEN_ONLY
if (!fullscreen) if (!fullscreen)
...@@ -325,41 +315,32 @@ int Menu::setupResolution () { ...@@ -325,41 +315,32 @@ int Menu::setupResolution () {
drawRect(0, canvasH - 32, 32, 32, 79); drawRect(0, canvasH - 32, 32, 32, 79);
// X
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
if (!dimension) fontmn2->mapPalette(240, 8, 114, 16);
// Width // Width
if (dimension == 0) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(screenW, (canvasW >> 2) + 32, canvasH >> 1); fontmn2->showNumber(screenW, (canvasW >> 2) + 32, canvasH >> 1);
if (dimension == 0) fontmn2->restorePalette();
if (!dimension) fontmn2->restorePalette();
// X else fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
// Height // Height
if (dimension == 1) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(screenH, (canvasW >> 2) + 104, canvasH >> 1); fontmn2->showNumber(screenH, (canvasW >> 2) + 104, canvasH >> 1);
if (dimension == 1) fontmn2->restorePalette();
if (dimension) fontmn2->restorePalette();
#ifdef SCALE
// X 2
fontmn2->showString("x", (canvasW >> 2) + 112, canvasH >> 1);
// Scale
if (dimension == 2) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(scaleFactor, (canvasW >> 2) + 150, canvasH >> 1);
if (dimension == 2) fontmn2->restorePalette();
#endif
count = 0; count = 0;
if (controls.release(C_LEFT)) if (controls.release(C_LEFT)) dimension = !dimension;
dimension = (dimension + DIMENSIONS - 1) % DIMENSIONS;
if (controls.release(C_RIGHT)) if (controls.release(C_RIGHT)) dimension = !dimension;
dimension = (dimension + 1) % DIMENSIONS;
if (controls.release(C_UP)) { if (controls.release(C_UP)) {
if ((dimension == 0) && (screenW < maxW)) { if ((!dimension) && (screenW < maxW)) {
while (screenW >= widthOptions[count]) count++; while (screenW >= widthOptions[count]) count++;
...@@ -367,7 +348,7 @@ int Menu::setupResolution () { ...@@ -367,7 +348,7 @@ int Menu::setupResolution () {
} }
if ((dimension == 1) && (screenH < maxH)) { if (dimension && (screenH < maxH)) {
while (screenH >= heightOptions[count]) count++; while (screenH >= heightOptions[count]) count++;
...@@ -375,22 +356,11 @@ int Menu::setupResolution () { ...@@ -375,22 +356,11 @@ int Menu::setupResolution () {
} }
#ifdef SCALE
if ((dimension == 2) && (scaleFactor < maxS)) {
if ( canvasH*(scaleFactor+1) <= maxH && canvasW*(scaleFactor+1) <= maxW )
{
scaleFactor++;
count = 1;
}
}
#endif
} }
if (controls.release(C_DOWN)) { if (controls.release(C_DOWN)) {
if ((dimension == 0) && (screenW > 320)) { if ((!dimension) && (screenW > 320)) {
count = 13; count = 13;
...@@ -401,7 +371,7 @@ int Menu::setupResolution () { ...@@ -401,7 +371,7 @@ int Menu::setupResolution () {
} }
if ((dimension == 1) && (screenH > 200)) { if (dimension && (screenH > 200)) {
count = 16; count = 16;
...@@ -412,27 +382,13 @@ int Menu::setupResolution () { ...@@ -412,27 +382,13 @@ int Menu::setupResolution () {
} }
#ifdef SCALE
if ((dimension == 2) && (scaleFactor > minS)) {
scaleFactor--;
count = 1;
}
#endif
} }
// Check for a resolution change // Check for a resolution change
if (count) { if (count) {
playSound(S_ORB); playSound(S_ORB);
createScreen();
#ifndef FULLSCREEN_ONLY
if (!fullscreen) createWindow();
else
#endif
createFullscreen();
} }
...@@ -443,9 +399,71 @@ int Menu::setupResolution () { ...@@ -443,9 +399,71 @@ int Menu::setupResolution () {
} }
#ifdef SCALE
int Menu::setupScaling () {
int oldScaleFactor;
if ( scaleFactor < MIN_SCALE || scaleFactor > MAX_SCALE )
scaleFactor = 1;
while (true) {
if (loop(NORMAL_LOOP) == E_QUIT) return E_QUIT;
if (controls.release(C_ESCAPE)) return E_NONE;
if (controls.release(C_ENTER)) return E_NONE;
SDL_Delay(T_FRAME);
clearScreen(0);
// Show screen corners
drawRect(0, 0, 32, 32, 79);
drawRect(canvasW - 32, 0, 32, 32, 79);
drawRect(canvasW - 32, canvasH - 32, 32, 32, 79);
drawRect(0, canvasH - 32, 32, 32, 79);
fontmn2->mapPalette(240, 8, 114, 16);
// Scale
fontmn2->showNumber(scaleFactor, (canvasW >> 2) + 32, canvasH >> 1);
// X
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
fontmn2->restorePalette();
oldScaleFactor = scaleFactor;
if ((controls.release(C_DOWN) || controls.release(C_LEFT)) && (scaleFactor > MIN_SCALE)) scaleFactor--;
if ((controls.release(C_UP) || controls.release(C_RIGHT)) && (scaleFactor < MAX_SCALE)) scaleFactor++;
// Check for a scaling change
if (scaleFactor != oldScaleFactor) {
playSound(S_ORB);
createScreen();
}
}
return E_NONE;
}
#endif
int Menu::setup () { int Menu::setup () {
const char *setupOptions[4] = {"character", "keyboard", "joystick", "resolution"}; const char *setupOptions[5] = {"character", "keyboard", "joystick", "resolution", "scaling"};
const char *setupCharacterOptions[5] = {"name", "fur", "bandana", "gun", "wristband"}; const char *setupCharacterOptions[5] = {"name", "fur", "bandana", "gun", "wristband"};
const char *setupCharacterColOptions[8] = {"white", "red", "orange", "yellow", "green", "blue", "animation 1", "animation 2"}; const char *setupCharacterColOptions[8] = {"white", "red", "orange", "yellow", "green", "blue", "animation 1", "animation 2"};
const unsigned char setupCharacterCols[8] = {PC_WHITE, PC_RED, PC_ORANGE, const unsigned char setupCharacterCols[8] = {PC_WHITE, PC_RED, PC_ORANGE,
...@@ -457,7 +475,7 @@ int Menu::setup () { ...@@ -457,7 +475,7 @@ int Menu::setup () {
while (true) { while (true) {
ret = generic(setupOptions, 4, &option); ret = generic(setupOptions, 5, &option);
if (ret == E_UNUSED) return E_NONE; if (ret == E_UNUSED) return E_NONE;
if (ret < 0) return ret; if (ret < 0) return ret;
...@@ -504,9 +522,13 @@ int Menu::setup () { ...@@ -504,9 +522,13 @@ int Menu::setup () {
break; break;
case 1: case 1:
#if !defined(WIZ) && !defined(GP2X) #if !defined(WIZ) && !defined(GP2X)
setupKeyboard(); setupKeyboard();
#else
message("FEATURE NOT AVAILABLE");
#endif #endif
break; break;
case 2: case 2:
...@@ -520,7 +542,17 @@ int Menu::setup () { ...@@ -520,7 +542,17 @@ int Menu::setup () {
setupResolution(); setupResolution();
break; break;
case 4:
#ifdef SCALE
setupScaling();
#else
message("FEATURE NOT AVAILABLE");
#endif
break;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment