Source: noiz2sa Version: 0.51a-13 Followup-For: Bug #1038520 X-Debbugs-Cc: debian-devel-ga...@lists.debian.org
Hi, Here's a fix to help update its packaging and it should close at least #1038520 and #1045358. A few points: - The current Debian VCS repository[1] does not match the structure of the upstream source zip downloaded here[2]. A reason for this? - The SDL2 port comes from [3] but its repository seems broken to me concerning binary files (in images, ogg and sounds). - The build will no longer use the internal copy of bulletml but libbulletml- dev. And so it doesn't need libboost-dev and bison. A d/patch address bulletml, I didn't delete it. I could be in this context. Greetings, Patrice [1] https://salsa.debian.org/games-team/noiz2sa [2] https://www.asahi-net.or.jp/~cs8k-cyu/windows/noiz2sa_e.html [3] https://github.com/IoriBranford/noiz2sdl2 -- System Information: Debian Release: trixie/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.11.6-amd64 (SMP w/12 CPU threads; PREEMPT) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff --git a/debian/changelog b/debian/changelog index 5ee77ba..10a5ca5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +noiz2sa (0.51a-13.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add patch to use SDL2. (Closes: #1038520) + * Build using libbulletml-dev in place of inner copy. (Closes: #1045358) + + -- Patrice Duroux <patrice.dur...@gmail.com> Sat, 09 Nov 2024 21:09:41 +0100 + noiz2sa (0.51a-13) unstable; urgency=medium * Add noiz2sa.maintscript: Handle symlink to directory conversion. diff --git a/debian/control b/debian/control index ccc470d..279323d 100644 --- a/debian/control +++ b/debian/control @@ -5,12 +5,12 @@ Maintainer: Debian Games Team <pkg-games-de...@lists.alioth.debian.org> Uploaders: Markus Koschany <a...@debian.org> Build-Depends: - bison, debhelper-compat (= 13), - libboost-dev, - libsdl-mixer1.2-dev, - libsdl1.2-dev -Standards-Version: 4.6.0 + libbulletml-dev, + libsdl2-mixer-dev, + libsdl2-dev +Standards-Version: 4.7.0 +Rules-Requires-Root: no Homepage: http://www.asahi-net.or.jp/~cs8k-cyu/windows/noiz2sa_e.html Vcs-Git: https://salsa.debian.org/games-team/noiz2sa.git Vcs-Browser: https://salsa.debian.org/games-team/noiz2sa diff --git a/debian/patches/build.patch b/debian/patches/build.patch index 0703664..b2221ad 100644 --- a/debian/patches/build.patch +++ b/debian/patches/build.patch @@ -28,9 +28,10 @@ index 1bc9344..d533473 100644 -PROG = $(NAME).exe +PROG = $(NAME) - DEFAULT_CFLAGS = `sdl-config --cflags` +-DEFAULT_CFLAGS = `sdl-config --cflags` -LDFLAGS = `sdl-config --libs` -L. -lmingw32 -lmingwex -lSDL_mixer -lbulletml -mwindows -lstdc++ -+LDFLAGS = `sdl-config --libs` -lSDL_mixer -Lbulletml \ ++DEFAULT_CFLAGS = `sdl2-config --cflags` ++LDFLAGS = `sdl2-config --libs` -lSDL2_mixer -lbulletml \ + -lbulletml -lstdc++ -lm -MORE_CFLAGS = -O3 diff --git a/debian/patches/bulletml.patch b/debian/patches/bulletml.patch new file mode 100644 index 0000000..b34ffb3 --- /dev/null +++ b/debian/patches/bulletml.patch @@ -0,0 +1,51 @@ +diff --git a/src/foe.h b/src/foe.h +index 567a88f..1edba64 100644 +--- a/src/foe.h ++++ b/src/foe.h +@@ -12,9 +12,9 @@ + #ifndef FOE_H_ + #define FOE_H_ + +-#include "bulletml/bulletmlparser.h" +-#include "bulletml/bulletmlparser-tinyxml.h" +-#include "bulletml/bulletmlrunner.h" ++#include <bulletml/bulletmlparser.h> ++#include <bulletml/bulletmlparser-tinyxml.h> ++#include <bulletml/bulletmlrunner.h> + #include "foecommand.h" + #include "barragemanager.h" + +diff --git a/src/foecommand.cc b/src/foecommand.cc +index 847d410..2427593 100644 +--- a/src/foecommand.cc ++++ b/src/foecommand.cc +@@ -9,9 +9,9 @@ + * + * @version $Revision: 1.2 $ + */ +-#include "bulletml/bulletmlparser.h" +-#include "bulletml/bulletmlparser-tinyxml.h" +-#include "bulletml/bulletmlrunner.h" ++#include <bulletml/bulletmlparser.h> ++#include <bulletml/bulletmlparser-tinyxml.h> ++#include <bulletml/bulletmlrunner.h> + #include "foe.h" + + extern "C" { +diff --git a/src/foecommand.h b/src/foecommand.h +index 61c8b97..5869b54 100644 +--- a/src/foecommand.h ++++ b/src/foecommand.h +@@ -12,9 +12,9 @@ + #ifndef FOECOMMAND_H_ + #define FOECOMMAND_H_ + +-#include "bulletml/bulletmlparser.h" +-#include "bulletml/bulletmlparser-tinyxml.h" +-#include "bulletml/bulletmlrunner.h" ++#include <bulletml/bulletmlparser.h> ++#include <bulletml/bulletmlparser-tinyxml.h> ++#include <bulletml/bulletmlrunner.h> + #include "foe.h" + + class FoeCommand : public BulletMLRunner { diff --git a/debian/patches/sdl2.patch b/debian/patches/sdl2.patch new file mode 100644 index 0000000..50b01de --- /dev/null +++ b/debian/patches/sdl2.patch @@ -0,0 +1,283 @@ +diff --git a/src/noiz2sa.c b/src/noiz2sa.c +index 1fde242..0130c07 100644 +--- a/src/noiz2sa.c ++++ b/src/noiz2sa.c +@@ -236,6 +236,10 @@ static void parseArgs(int argc, char *argv[]) { + noSound = 1; + } else if ( strcmp(argv[i], "-window") == 0 ) { + windowMode = 1; ++ } else if ( strcmp(argv[i], "-scalelinear") == 0 ) { ++ scaleLinear = 1; ++ } else if ( strcmp(argv[i], "-scaleinteger") == 0 ) { ++ scaleInteger = 1; + } else if ( strcmp(argv[i], "-reverse") == 0 ) { + buttonReversed = 1; + } else if ( (strcmp(argv[i], "-brightness") == 0) && argv[i+1] ) { +@@ -271,16 +275,16 @@ int main(int argc, char *argv[]) { + parseArgs(argc, argv); + + initDegutil(); +- initSDL(windowMode); ++ initSDL(windowMode, scaleLinear, scaleInteger); + if ( !noSound ) initSound(); + initFirst(); + initTitle(); + + while ( !done ) { + SDL_PollEvent(&event); +- keys = SDL_GetKeyState(NULL); +- if ( keys[SDLK_ESCAPE] == SDL_PRESSED || event.type == SDL_QUIT ) done = 1; +- if ( keys[SDLK_p] == SDL_PRESSED ) { ++ keys = SDL_GetKeyboardState(NULL); ++ if ( keys[SDL_SCANCODE_ESCAPE] == SDL_PRESSED || event.type == SDL_QUIT ) done = 1; ++ if ( keys[SDL_SCANCODE_P] == SDL_PRESSED ) { + if ( !pPrsd ) { + if ( status == IN_GAME ) { + status = PAUSE; +@@ -318,4 +322,5 @@ int main(int argc, char *argv[]) { + flipScreen(); + } + quitLast(); ++ return 0; + } +diff --git a/src/screen.c b/src/screen.c +index d57938f..f51d761 100644 +--- a/src/screen.c ++++ b/src/screen.c +@@ -24,9 +24,14 @@ + #include "attractmanager.h" + + int windowMode = 0; ++int scaleLinear = 0; ++int scaleInteger = 0; + int brightness = DEFAULT_BRIGHTNESS; +-int joystickMode = 1; + ++static SDL_Window *window; ++static SDL_Renderer *renderer; ++static SDL_Texture *videoTexture; ++static Uint32 textureFormat = SDL_PIXELFORMAT_UNKNOWN; + static SDL_Surface *video, *layer, *lpanel, *rpanel; + static LayerBit **smokeBuf; + static LayerBit *pbuf; +@@ -47,7 +52,7 @@ static char *spriteFile[SPRITE_NUM] = { + "title_s.bmp", "title_a.bmp", + }; + +-Uint8 *keys; ++const Uint8 *keys; + SDL_Joystick *stick = NULL; + + static void loadSprites() { +@@ -55,7 +60,7 @@ static void loadSprites() { + int i; + char name[56]; + color[0].r = 100; color[0].g = 0; color[0].b = 0; +- SDL_SetColors(video, color, 0, 1); ++ SDL_SetPaletteColors(video->format->palette, color, 0, 1); + for ( i=0 ; i<SPRITE_NUM ; i++ ) { + strcpy(name, SHARE_LOC); + strcat(name, "images/"); +@@ -68,11 +73,11 @@ static void loadSprites() { + } + sprite[i] = SDL_ConvertSurface(img, + video->format, +- SDL_HWSURFACE | SDL_SRCCOLORKEY); +- SDL_SetColorKey(sprite[i], SDL_SRCCOLORKEY | SDL_RLEACCEL, 0); ++ 0); ++ SDL_SetColorKey(sprite[i], SDL_TRUE, 0); + } + color[0].r = color[0].g = color[0].b = 255; +- SDL_SetColors(video, color, 0, 1); ++ SDL_SetPaletteColors(video->format->palette, color, 0, 1); + } + + void drawSprite(int n, int x, int y) { +@@ -89,10 +94,10 @@ static void initPalette() { + color[i].g = color[i].g*brightness/256; + color[i].b = color[i].b*brightness/256; + } +- SDL_SetColors(video, color, 0, 256); +- SDL_SetColors(layer, color, 0, 256); +- SDL_SetColors(lpanel, color, 0, 256); +- SDL_SetColors(rpanel, color, 0, 256); ++ SDL_SetPaletteColors(video->format->palette, color, 0, 256); ++ SDL_SetPaletteColors(layer->format->palette, color, 0, 256); ++ SDL_SetPaletteColors(lpanel->format->palette, color, 0, 256); ++ SDL_SetPaletteColors(rpanel->format->palette, color, 0, 256); + } + + static int lyrSize; +@@ -124,42 +129,63 @@ static void makeSmokeBuf() { + } + } + +-void initSDL(int window) { ++void initSDL(int windowed, int linear, int integer) { + Uint8 videoBpp; + Uint32 videoFlags; + SDL_PixelFormat *pfrm; + +- if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { ++ if ( SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0 ) { + fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError()); + exit(1); + } + atexit(SDL_Quit); +- if ( SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0 ) { +- printf( "Unable to initialize SDL_JOYSTICK: %s\n", SDL_GetError()); +- joystickMode = 0; +- } + + videoBpp = BPP; +- videoFlags = SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE; +- if ( !window ) videoFlags |= SDL_FULLSCREEN; ++ videoFlags = 0; ++ if ( !windowed ) videoFlags |= SDL_WINDOW_FULLSCREEN_DESKTOP; + +- if ( (video = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, videoBpp, videoFlags)) == NULL ) { +- fprintf(stderr, "Unable to create SDL screen: %s\n", SDL_GetError()); ++ if ( (SDL_CreateWindowAndRenderer(SCREEN_WIDTH, SCREEN_HEIGHT, videoFlags, &window, &renderer)) != 0 ) { ++ fprintf(stderr, "Unable to create SDL window: %s\n", SDL_GetError()); + SDL_Quit(); + exit(1); + } ++ SDL_RenderSetLogicalSize(renderer, SCREEN_WIDTH, SCREEN_HEIGHT); ++ if (linear) SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"); ++ if (integer) SDL_RenderSetIntegerScale(renderer, SDL_TRUE); + screenRect.x = screenRect.y = 0; + screenRect.w = SCREEN_WIDTH; screenRect.h = SCREEN_HEIGHT; +- pfrm = video->format; +- if ( NULL == ( layer = SDL_CreateRGBSurface +- (SDL_SWSURFACE, LAYER_WIDTH, LAYER_HEIGHT, videoBpp, +- pfrm->Rmask, pfrm->Gmask, pfrm->Bmask, pfrm->Amask)) || ++ SDL_RendererInfo rendererInfo; ++ SDL_GetRendererInfo(renderer, &rendererInfo); ++ for (Uint32 i = 0; i < rendererInfo.num_texture_formats; ++i) { ++ int fmt = rendererInfo.texture_formats[i]; ++ if (SDL_BITSPERPIXEL(fmt) == 32) { ++ textureFormat = fmt; ++ break; ++ } ++ } ++ if (SDL_PIXELFORMAT_UNKNOWN == textureFormat) { ++ fprintf(stderr, "No 32-bit texture format"); ++ SDL_Quit(); ++ exit(1); ++ } ++ if ( NULL == ( videoTexture = SDL_CreateTexture ++ (renderer, textureFormat, SDL_TEXTUREACCESS_STREAMING, ++ SCREEN_WIDTH, SCREEN_HEIGHT)) ) { ++ fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); ++ exit(1); ++ } ++ if ( NULL == ( video = SDL_CreateRGBSurface ++ (0, SCREEN_WIDTH, SCREEN_HEIGHT, videoBpp, ++ 0, 0, 0, 0)) || ++ NULL == ( layer = SDL_CreateRGBSurface ++ (0, LAYER_WIDTH, LAYER_HEIGHT, videoBpp, ++ 0, 0, 0, 0)) || + NULL == ( lpanel = SDL_CreateRGBSurface +- (SDL_SWSURFACE, PANEL_WIDTH, PANEL_HEIGHT, videoBpp, +- pfrm->Rmask, pfrm->Gmask, pfrm->Bmask, pfrm->Amask)) || ++ (0, PANEL_WIDTH, PANEL_HEIGHT, videoBpp, ++ 0, 0, 0, 0)) || + NULL == ( rpanel = SDL_CreateRGBSurface +- (SDL_SWSURFACE, PANEL_WIDTH, PANEL_HEIGHT, videoBpp, +- pfrm->Rmask, pfrm->Gmask, pfrm->Bmask, pfrm->Amask)) ) { ++ (0, PANEL_WIDTH, PANEL_HEIGHT, videoBpp, ++ 0, 0, 0, 0)) ) { + fprintf(stderr, "Couldn't create surface: %s\n", SDL_GetError()); + exit(1); + } +@@ -192,11 +218,10 @@ void initSDL(int window) { + clearRPanel(); + + loadSprites(); +- if (joystickMode == 1) { +- stick = SDL_JoystickOpen(0); +- } + +- SDL_WM_SetCaption(CAPTION, NULL); ++ stick = SDL_JoystickOpen(0); ++ ++ SDL_SetWindowTitle(window, CAPTION); + SDL_ShowCursor(SDL_DISABLE); + //SDL_WM_GrabInput(SDL_GRAB_ON); + } +@@ -219,7 +244,12 @@ void flipScreen() { + if ( status == TITLE ) { + drawTitle(); + } +- SDL_Flip(video); ++ SDL_Surface *video32 = SDL_ConvertSurfaceFormat(video, textureFormat, 0); ++ SDL_UpdateTexture(videoTexture, NULL, video32->pixels, video32->pitch); ++ SDL_FreeSurface(video32); ++ SDL_RenderClear(renderer); ++ SDL_RenderCopy(renderer, videoTexture, NULL, NULL); ++ SDL_RenderPresent(renderer); + } + + void clearScreen() { +@@ -536,16 +566,16 @@ int getPadState() { + x = SDL_JoystickGetAxis(stick, 0); + y = SDL_JoystickGetAxis(stick, 1); + } +- if ( keys[SDLK_RIGHT] == SDL_PRESSED || keys[SDLK_KP6] == SDL_PRESSED || x > JOYSTICK_AXIS ) { ++ if ( keys[SDL_SCANCODE_RIGHT] == SDL_PRESSED || keys[SDL_SCANCODE_KP_6] == SDL_PRESSED || x > JOYSTICK_AXIS ) { + pad |= PAD_RIGHT; + } +- if ( keys[SDLK_LEFT] == SDL_PRESSED || keys[SDLK_KP4] == SDL_PRESSED || x < -JOYSTICK_AXIS ) { ++ if ( keys[SDL_SCANCODE_LEFT] == SDL_PRESSED || keys[SDL_SCANCODE_KP_4] == SDL_PRESSED || x < -JOYSTICK_AXIS ) { + pad |= PAD_LEFT; + } +- if ( keys[SDLK_DOWN] == SDL_PRESSED || keys[SDLK_KP2] == SDL_PRESSED || y > JOYSTICK_AXIS ) { ++ if ( keys[SDL_SCANCODE_DOWN] == SDL_PRESSED || keys[SDL_SCANCODE_KP_2] == SDL_PRESSED || y > JOYSTICK_AXIS ) { + pad |= PAD_DOWN; + } +- if ( keys[SDLK_UP] == SDL_PRESSED || keys[SDLK_KP8] == SDL_PRESSED || y < -JOYSTICK_AXIS ) { ++ if ( keys[SDL_SCANCODE_UP] == SDL_PRESSED || keys[SDL_SCANCODE_KP_8] == SDL_PRESSED || y < -JOYSTICK_AXIS ) { + pad |= PAD_UP; + } + return pad; +@@ -562,14 +592,14 @@ int getButtonState() { + btn3 = SDL_JoystickGetButton(stick, 2); + btn4 = SDL_JoystickGetButton(stick, 3); + } +- if ( keys[SDLK_z] == SDL_PRESSED || btn1 || btn4 ) { ++ if ( keys[SDL_SCANCODE_Z] == SDL_PRESSED || btn1 || btn4 ) { + if ( !buttonReversed ) { + btn |= PAD_BUTTON1; + } else { + btn |= PAD_BUTTON2; + } + } +- if ( keys[SDLK_x] == SDL_PRESSED || btn2 || btn3 ) { ++ if ( keys[SDL_SCANCODE_X] == SDL_PRESSED || btn2 || btn3 ) { + if ( !buttonReversed ) { + btn |= PAD_BUTTON2; + } else { +diff --git a/src/screen.h b/src/screen.h +index 78a3c3a..b543b7b 100644 +--- a/src/screen.h ++++ b/src/screen.h +@@ -37,15 +37,17 @@ + #define DEFAULT_BRIGHTNESS 224 + + extern int windowMode; ++extern int scaleLinear; ++extern int scaleInteger; + extern LayerBit *l1buf, *l2buf; + extern LayerBit *buf; + extern LayerBit *lpbuf, *rpbuf; +-extern Uint8 *keys; ++extern const Uint8 *keys; + extern SDL_Joystick *stick; + extern int buttonReversed; + extern int brightness; + +-void initSDL(int window); ++void initSDL(int windowed, int linear, int integer); + void closeSDL(); + void blendScreen(); + void flipScreen(); diff --git a/debian/patches/series b/debian/patches/series index 55ab77c..8da8627 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,5 @@ build.patch reproducible-build.patch deg-out-of-range.patch +sdl2.patch +bulletml.patch diff --git a/debian/rules b/debian/rules index 6e5fa3e..9515f0d 100755 --- a/debian/rules +++ b/debian/rules @@ -4,12 +4,14 @@ dh $@ override_dh_auto_build: - RELEASE_CFLAGS="$(CFLAGS)" dh_auto_build --sourcedirectory=src/bulletml/tinyxml -- 'LD=$$(CXX)' - CXXFLAGS="$(CXXFLAGS)" dh_auto_build --sourcedirectory=src/bulletml + mv src/bulletml src/bulletml.copy + #RELEASE_CFLAGS="$(CFLAGS)" dh_auto_build --sourcedirectory=src/bulletml/tinyxml -- 'LD=$$(CXX)' + #CXXFLAGS="$(CXXFLAGS)" dh_auto_build --sourcedirectory=src/bulletml CXXFLAGS="$(CXXFLAGS)" MORE_CFLAGS="$(LDFLAGS)" dh_auto_build --sourcedirectory=src + mv src/bulletml.copy src/bulletml override_dh_auto_clean: - dh_auto_clean --sourcedirectory=src/bulletml/tinyxml clean - dh_auto_clean --sourcedirectory=src/bulletml clean + #dh_auto_clean --sourcedirectory=src/bulletml/tinyxml clean + #dh_auto_clean --sourcedirectory=src/bulletml clean dh_auto_clean --sourcedirectory=src clean