Giter VIP home page Giter VIP logo

openjazz's Issues

openjazz.000 is a blob

I know that the openjazz.000 file contains the OpenJazz logo for use in the menu. However, it is still a binary file with no sources. Since the logo is now provided in unix/OpenJazz.png it would be nice if a reproduction rule for the openjazz.000 file could be added to the Makefile(s).

Spinning in bonus levels

The spinning ground patches in the 3D bonus levels currently have no effect on the player. The player should spin around when trying to pass over them.

Improvements for the ledge animations

As per the original game. There are two problems with the current implementation of ledge animations:

  1. It shouldn't take precedence over the firing animation.
  2. It shouldn't play when Jazz it facing the opposite direction from the ledge.

man-page

Since openjazz already has quite some command line options, it would be nice if a man-page could be provided for Unix systems.

Can you please help me with SDL1.x to SDL2 transition? (palette problems)

Hi there, @carstene1ns

I have seen you are an experimented porter and, in fact, you seem to be also in charge of further OJ development.
I have (more or less) made some steps towars porting OJ from SDL1.x to SDL2, but I cant, for the love of me, figure out how to properly manage the palette changes OJ expects to do.

This is how I currently try to implement this:

  1. I set up an 8bpp paletted surface so the game puts its frames there, as if it was SDL1.x, called "screen":

https://github.com/vanfanel/openjazz/blob/65116f4254708821861100af1795973933007267/src/io/gfx/video.cpp#L210

  1. Then I use an auxiliary RGBA8888 surface, to which I will dump converted pixels from 8bit paletted mode on the screen surface. I also use an RGBA8888 texture for the rendering:

https://github.com/vanfanel/openjazz/blob/65116f4254708821861100af1795973933007267/src/io/gfx/video.cpp#L212

  1. Then, this is how I manually convert from 8bpp palette indexes on the "screen" surface to RGBA8888 on the auxiliary surface:
    https://github.com/vanfanel/openjazz/blob/65116f4254708821861100af1795973933007267/src/io/gfx/video.cpp#L613

As far as I understand, conversion is well done and, in fact, I have verified the unit32_t RGBColor variable contains the right "reconstruction" of bytes formed from the three 8bit r, g and b values.

However, colors are WAY incorrect, as if palette was not right set on the origin 8bpp surface...
Can you please build or take a look at my code? I would like to finish the SDL2 port, but there seems to be something on the game logic that escapes me...

Thanks!

port to SDL2?

Hi there,

is there any chance (or ongoing effort) of porting this game to SDL2? This would make it significantly easier to scale the framebuffer to screen, i.e. the 2x pixel doubling code could get removed.

  • Fabian

license mismatch

The licenses.txt file states the following:

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This means that the sources are licensed under GPL-2+. However, the blurbs in the sources files (all, but the ones in src/io/gfx/scale2x/) contain the following statement:

 * OpenJazz is distributed under the terms of
 * the GNU General Public License, version 2.0

This, in turn, means that the sources are licensed under GPL-2, but not GPL-2+. Please decide for one variant or the other, but keep the license statements consistent.

Stonar 2 is borderline unbeatable without the hidden invulnerability power-up because of the current spike behavior

In the original version of Jazz Jackrabbit 1, sideways-facing spikes could only hurt you if you hit the side of them that was pointed. The top of them acted as a platform. In OpenJazz, currently this behavior doesn't apply, you take damage if you touch spikes from any side. Not only is this behavior notably inconsistent with the behavior in Jazz Jackrabbit 1, but Stonar 2 actually was designed around this fact, which makes the section in this screenshot borderline impossible without finding the hidden invulnerability power-up, and mind you this is saying a lot given how hard the section was originally:
image

Now, it's easy enough to find the hidden invulnerability power-up here in OpenJazz thanks to the ability to use a larger viewing space, but the issue is nonetheless there and thus still very much worth fixing, especially since, should the invulnerability wear off before you finish the section, well... suffice to say, it's perhaps more important of a behavior to make consistent with the original than one might initially assume at a quick glance.

Firing after collecting rapid fire upgrades

In the original game when Jazz has no rapid fire upgrades and collects some of them while holding the fire button he immediately start shooting.

This is not the case in OpenJazz. To begin firing after collecting the first upgrades the fire button needs to be re-pressed.

Jazz Jackrabbit 1 - level switch segmentation fault on OpenBSD

Hi,

I am hitting a segmentation fault with openjazz using the Jazz Jackrabbit 1 files from GOG.com on OpenBSD/amd64 -current using openjazz 20171024.

This happens when:

  1. going from episode one to episode 2 by playing
  2. loading episode 2
  3. loading episode 3

I haven't yet checked if all paths lead to the exact same backtrace. I'm attaching a trace from scenario 1. I'm still trying to diagnose this myself but dropping buy with the bug report as I'm somewhat stuck and maybe someone can point me in the right direction.

(gdb) bt
#0  0x0000194eae765cc9 in Blit1to4 (info=0x7f7ffffbd280) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_blit_1.c:252
#1  0x0000194eae76317c in SDL_SoftBlit (src=0x194ed2caf780, srcrect=Variable "srcrect" is not available.
) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_blit.c:97
#2  0x0000194eae776b0b in SDL_LowerBlit (src=0x194ed2caf780, srcrect=0x7f7ffffbd360, dst=0x194f0aeee380, dstrect=0x7f7ffffbd360) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_surface.c:440
#3  0x0000194eae779f86 in SDL_Flip (screen=Variable "screen" is not available.
) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_video.c:1137
#4  0x0000194c4e80cc71 in Video::flip (this=0x194c4ea40788, mspf=15, paletteEffects=0x194f12af0640) at src/io/gfx/video.cpp:519
#5  0x0000194c4e8279b8 in loop (type=NORMAL_LOOP, paletteEffects=0x194f12af0640) at main.cpp:470
#6  0x0000194c4e826995 in Level::loop (this=0x194f44d3a000, menu=@0x7f7ffffbd87f, option=@0x7f7ffffbd878, message=@0x7f7ffffbd87e) at src/level/level.cpp:396
#7  0x0000194c4e8100d8 in JJ1BonusLevel::play (this=0x194f44d3a000) at src/jj1bonuslevel/jj1bonuslevel.cpp:768
#8  0x0000194c4e801ed0 in Game::playLevel (this=0x194e5f7d9c40, fileName=0x194e84b71c00 "BONUSMAP.000", intro=Variable "intro" is not available.
) at src/game/game.cpp:218
#9  0x0000194c4e815793 in JJ1Level::play (this=0x194e708da000) at src/jj1level/jj1level.cpp:679
#10 0x0000194c4e80200d in Game::playLevel (this=0x194e5f7d9c40, fileName=Variable "fileName" is not available.
) at src/game/game.cpp:290
#11 0x0000194c4e802280 in Game::play (this=0x194e5f7d9c40) at src/game/game.cpp:358
#12 0x0000194c4e827fb1 in GameMenu::playNewGame (this=0x194ef3cd0790, mode=M_SINGLE, firstLevel=0x194eac39e370 "LEVEL0.000") at src/menu/gamemenu.cpp:168
#13 0x0000194c4e82844d in GameMenu::newGameDifficulty (this=0x194ef3cd0790, mode=M_SINGLE, firstLevel=0x194eac39e370 "LEVEL0.000") from /usr/local/bin/openjazz
#14 0x0000194c4e828a75 in GameMenu::selectEpisode (this=0x194ef3cd0790, mode=M_SINGLE, episode=Variable "episode" is not available.
) at src/menu/gamemenu.cpp:285
#15 0x0000194c4e828cd8 in GameMenu::newGameEpisode (this=0x194ef3cd0790, mode=M_SINGLE) at src/menu/gamemenu.cpp:511
#16 0x0000194c4e829285 in GameMenu::newGame (this=0x194ef3cd0790) at src/menu/gamemenu.cpp:721
#17 0x0000194c4e829656 in MainMenu::select (this=0x194eab1c4000, option=0) at src/menu/mainmenu.cpp:167
#18 0x0000194c4e829a5f in MainMenu::main (this=0x194eab1c4000) at src/menu/mainmenu.cpp:321
#19 0x0000194c4e827881 in play () at main.cpp:408
#20 0x0000194c4e827a7c in main (argc=1, argv=0x7f7ffffbdd48) at main.cpp:566

EDIT: forgot to point out that frame 0 fails with an out of bounds write

(gdb) frame 0
#0  0x0000194eae765cc9 in Blit1to4 (info=0x7f7ffffbd280) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_blit_1.c:252
252                     DUFFS_LOOP(
(gdb) p info
$46 = (SDL_BlitInfo *) 0x7f7ffffbd280
(gdb) p info->s_pixels
$47 = (Uint8 *) 0x194ed8a93000 ""
(gdb) p info->d_pixels
$48 = (Uint8 *) 0x194f36514000 <Address 0x194f36514000 out of bounds>

EDIT 2: the pixels of the destination screen are not allocated?

(gdb) frame 2
#2  0x0000194eae776b0b in SDL_LowerBlit (src=0x194ed2caf780, srcrect=0x7f7ffffbd360, dst=0x194f0aeee380, dstrect=0x7f7ffffbd360) at /usr/local/pobj/sdl-1.2.15/SDL-1.2.15/src/video/SDL_surface.c:440
440             return(do_blit(src, srcrect, dst, dstrect));
(gdb) p dst
$1 = (SDL_Surface *) 0x194f0aeee380
(gdb) p dst->pixels
$2 = (void *) 0x0
(gdb) p src
$3 = (SDL_Surface *) 0x194ed2caf780
(gdb) p src->pixels
$4 = (void *) 0x194ed8a93000

Pausing colour animation

The colour animations should pause when gameplay is paused, either explicitly or by bringing up the menu in single-player mode.

Allow to (re)map fixed keys to gamepad

Currently, it is not possible to play with gamepad alone, because Enter and ESC are hardcoded for some menus. This does not affect our dedicated ports, because they have own controls defined.

compiler preprocessing error on src/io/flle.cpp

```depbase=echo src/io/file.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
g++ -DPACKAGE_NAME="openjazz" -DPACKAGE_TARNAME="openjazz" -DPACKAGE_VERSION="0" -DPACKAGE_STRING="openjazz\ 0" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" -DPACKAGE="openjazz" -DVERSION="0" -I. -DUSE_MODPLUG -DUSE_SOCKETS -DSCALE -I./src -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -Wall -g -O2 -MT src/io/file.o -MD -MP -MF $depbase.Tpo -c -o src/io/file.o src/io/file.cpp &&
mv -f $depbase.Tpo $depbase.Po
src/io/file.cpp:41:6: error: invalid preprocessing directive #defined; did you mean #define?
#defined LOWERCASE_FILENAMES
^~~~~~~
define
make: *** [Makefile:794: src/io/file.o] Error 1

I changed this #define and it worked, but I didn't get a chance to get look deeper to see how its used.

Issues and Report on Raspberry PI

I made this report because i compile your openjazz on PI, and it is the most updated version over the net i think. It is an excellent platform game, and if i can give it to all the RETROPIE users it can be really fantastic.

  • The game is starting fine, all is working, i can try many levels without any bug.
  • I can play with keyboard or some different joystick too.
  • It star in full screen and ALT+ENTER change nothing, it is perfect.
  • P for PAUSE working fine too.
  • But STATISTIC are always shown, i can't hide them with F9

  • I can play with joystick, users only use it on PI, but i can't map ESC key to move back in menu and quit game, it is a big problem.

  • Music don't loop, i use the CD game version, and stop at the end of track, really crappy for gamers :(

  • The bonus stage has some bugs if i remember fine.

  • Impossible to launch JazzJackRabbit 2 ... i have read maybe it can works ?

Like this is the last version over the net with recent update, will some of your team can help to upgrade it ? I can help with beta testing all you want.
Thanks

Rewrite data directory logic

Some distributions have dedicated directories for game data, these should be checked. e.g.:

  • /usr/share/openjazz/ (arch)
  • /usr/share/games/jazz-jackrabbit/ (debian)

So these should be added to some list.

Also, home directory lookup should be default, as a lot of users do not have admin access. They are forced to specify the data path or use the executable directory currently.
However, we should either use a jail directory like ~/.openjazz or use XDG spec:

  • config in $XDG_CONFIG_HOME, defaulted to ~/.config
  • data files in $XDG_DATA_HOME, defaulted to ~/.local/share

Dedicated platforms should be handled specially (like we currently do).

Pausing music

The music plays continuously, even when paused. It should pause when gameplay is explicitly paused, but not when gameplay is paused due to the menu.

Bonus level end screen jazz head graphics garbage

The animated head of jazz at the end of the bonus level does not render cleanly. Meaning the previous frames are not cleared when the next frame begins so all the previous frames are still visible.
A similar issue was occurring with the intro video some time ago, but with the latest source this is now fixed. Maybe there is some commonality and the fix can be applied to the bonus screen.
Its also worth noting im running on an ARM device, so it may not occur on x86 desktop builds.

Implement idle animation

When there is no input for a specific time, Jazz does an idle animation.
No idea if the timeout is hard-coded, at least in Holiday Hare the freezing animation starts immediately.

Replace the binary configuration format with some plaintext (maybe ini-style) file

Currently, the binary configuration format is not really flexible.
Adding new options (→ music volume, game controller buttons) will break backwards compatibility of the file with older engine versions and have funny side-effects (i.e. assigning wrong stuff).

Ideally, I would like to replace it with some easy to edit and easy to parse format,
like TOML or JSON or plain INI.

Things to do:

  • decide on format
  • find a library with good license, so we do not need to roll our own
  • implement it within OJ
  • inherit and delete old config files on the fly

You can build momentum by pressing up against a wall

You can still build momentum while pressing up against a wall. This is able to be observed by comparing Diamondus 1 in both OpenJazz and the original Jazz Jackrabbit, pushing up against the wall while bouncing up the first spring in the level, then letting go of the right key just before you reach an area that doesn't have a wall. In Jazz Jackrabbit, you'll bounce straight up, in OpenJazz you'll continue going forwards and land on the platform above.

As a side note, the running animation also continues to play when pressing up against a wall, which is probably related (in the original game it would only play the walking animation).

[3DS] Palette issues

With a few minor changes i was able to compile OpenJazz for the 3DS.
Disabled XMP and included psmplug, miniz and SDL (DevkitPRO).

Everything is working great on my New3DS. Music / scenes / gameplay at 60fps.
Old3DS is running a few frames behind.

However, the colors are way off, as shown in the screenshots below.

screen_menu
screen_gameplay

The 3DS target was added some time ago, was it working correctly at some point?

I also noticed some other issues.
At the end of the level, the countdown for the remaining time takes forever. It's really slow.
Could this indicate some timing issues, also affecting rendering?

Or doesn't SDL for 3DS handle the SDL_LOGPAL / SDL_PHYSPAL right?
As far as i understand the these flags are only available if the HWPALETTE is set. Which doesn't seem to be the case. Setting it doesn't make any difference tho.

Huge thanks to Alister for this port, and also thanks to carstene1ns for maintaining it.

Holiday Hare: Broken palette of OJ logo

In december a different palette (and menu image) is used. The normally red O is green then.
The palette contains red colors, because Jazz' santa suit is red, maybe we could patch the palette entry of the logo in this case.

Wrong spring collision in Deserto2

spring

The spring's animation changes (levelPlayer->overlap(x, y - height, width, height) is true)
The event is not triggered though (levelPlayer->overlap(drawnX + F2, drawnY + F2, width - F4, height - F4) is false).

Finding songs on case-sensitive platforms

On Mac OS X with a case-sensitive filesystem:

$ ../OpenJazz
Could not open file: song0.psm
$ ls *.PSM
BONUS.PSM   SONG0.PSM   SONG13.PSM  SONG2.PSM   SONG7.PSM
BOSS.PSM    SONG1.PSM   SONG14.PSM  SONG3.PSM   SONG8.PSM
ENDLEVEL.PSM    SONG10.PSM  SONG15.PSM  SONG4.PSM   SONG9.PSM
ENDSONG.PSM SONG11.PSM  SONG16.PSM  SONG5.PSM
MENUSNG.PSM SONG12.PSM  SONG17.PSM  SONG6.PSM

Given that these files are always coming from a DOS archive, would it make sense to upcase the filenames before attempting to open them? Alternatively, at least including fallback logic which tries this path before giving up?

Blank window on macOS (installed via homebrew)

Hi,

First of all, this project is amazing. Thank you so much for keeping Jazz Jackrabbit alive! ❤️

I have an issue playing it on macOS though. I’ve installed OpenJazz on macOS Mojave using homebrew:

$ brew installl openjazz
==> Installing dependencies for openjazz: libmodplug and sdl
==> Installing openjazz dependency: libmodplug
==> Downloading https://homebrew.bintray.com/bottles/libmodplug-0.8.9.0.mojave.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring libmodplug-0.8.9.0.mojave.bottle.1.tar.gz
🍺  /usr/local/Cellar/libmodplug/0.8.9.0: 15 files, 342.3KB
==> Installing openjazz dependency: sdl
==> Downloading https://homebrew.bintray.com/bottles/sdl-1.2.15_1.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/28/28bfde74acbd1e68c0c2600d0bef4ebe7baf089f62f957779deb2c5dc0df2dd9?__gda__=exp=1562272836~hmac=81272c279caa9410b8a8cc7b65fa7619cccf85bbc74fe186d
######################################################################## 100.0%
==> Pouring sdl-1.2.15_1.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/sdl/1.2.15_1: 225 files, 1.4MB
==> Installing openjazz
==> Downloading https://homebrew.bintray.com/bottles/openjazz-20180522.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/c0/c0f7a1ea63036f0fe37ddc60e4d161fadc549ef84de52ee1ec88c3c00516608f?__gda__=exp=1562272839~hmac=6247fe727f54ecce775d7bb129482c40b8ec9b6c981e76144
######################################################################## 100.0%
==> Pouring openjazz-20180522.mojave.bottle.tar.gz
==> Caveats
The shareware version of Jazz Jackrabbit has been installed.
You can install the full version by copying the game files to:
  /usr/local/opt/openjazz/share/openjazz
==> Summary
🍺  /usr/local/Cellar/openjazz/20180522: 87 files, 3.5MB

When running it, I see a blank window:

Screen Shot 2019-07-04 at 22 40 58

It’s worth noting that the audio works and it also reacts to keyboard input. So I can actually control it blindly and start playing.

Any idea what’s causing this?

Thanks!

Monkeys in Holidaius fly

I think this screenshot speaks for itself, honestly: image

To put it into words, however: For some odd reason, the monkeys in Holidaius float above the ground, instead of walking across it like they're supposed to. This sometimes makes the level a lot harder than it's supposed to be, since you have to jump in order to shoot at them.

Makefile probably shouldn't be version controlled

Each 'Makefile' in an autotools project should be generated by the ./configure script for the system that it is being compiled for. The 'Makefile' probably shouldn't be checked into version control (I got a bunch of build errors until I regenerated the 'Makefile' with ./configure script

Awesome port by the way

Warnings from clang

Lots of each of these:

warning: conversion from string literal to 'char *' is deprecated
warning: unused function 'scaleNN_N_def_whole'
warning: delete called on 'X' that is abstract but has non-virtual destructor
warning: private field 'targetLaps' is not used
warning: conversion from string literal to 'char *' is deprecated

Not sure if there's interest in cleaning these up, but it would be nice to have a clean build on OS X.

Homebrew availability

It's available in a tap, here:

https://github.com/mikepurvis/homebrew-openjazz

For now, it's a head-only package based on my fork of the main repo here. Ultimately, it would be great to merge this to the official homebrew-games, but a few things would need to happen:

  • Merge in the change that finds upcased filenames.
  • Deal with MSG_NOSIGNAL on OS X, either by defining it, providing an alternate implementation, or switching to USE_SDL_NET by default.
  • Create a tagged release on Github, so that Homebrew has a specific version to install.

A more ideal path forward on build system cleanup would be to switch to CMake— this would allow better discovery of SDL and libmodplug, better platform/feature detection, and a more conventional install target. This would be an easy changeover, but I don't want to bother with it unless there's interest in merging it upstream.

Deceleration is inconsistent with the original game

In the linked video, I have Jazz Jackrabbit 1 and OpenJazz running side-by-side. In the first test (first 15 seconds), the deceleration ends up being notably faster in OpenJazz compared to Jazz 1. In the second test (last 15 seconds), it ends up being much, much slower in OpenJazz compared to Jazz 1. The latter case is the more troubling of the two, since this makes the game quite a bit harder to control than it's supposed to be.

https://drive.google.com/file/d/12RVRNziJsNsZb4VEO-LCnNtPpx-XiigD/view

Wrong collision in Pezrock

There is a problem with collisions in Pezrock (right at the beginning, move right without jumping).
collision

Setting PYO_MID to -F12 instead of -F10 seems to fix this.

Incorrect fire shield rendering

When the fire shield has three gems left, the gems should be rendered 120 degrees apart, not 90.

Screenshot:
4hitshield
(Jazz / OpenJazz)

Severe lag in LAN co-op

Two Macs doing network play on Diamondus 1, and we each appeared on the other's display about 10 seconds behind— bit of a surreal experience. Note that one change I had to make to the network code to compile on OS X was defining-as-zero the MSG_NOSIGNAL constant:

mikepurvis@5883849#diff-1

I hoped this would be okay, as it's also done on Windows, but if it could be the source of the issue, let me know. There may be a better way to handle this on Mac.

Can't change weapons with number keys

In the original version of Jazz Jackrabbit 1, it was possible to change weapons using the number keys, similarly to Jazz Jackrabbit 2. In OpenJazz, this is not the case, you can only cycle through them using the weapon cycling key.

Level music not looping

When using original version of Jazz Jackrabbit from GOG.com, music in levels is not looping as it should.

Further info: tested on Arch Linux with the latest libraries and OpenJazz version from AUR.

controller sending weird outputs.

I have a logitech f710 controller and it is not mapping the analog stick correctly in the down left and right directions and when i start the game it somehow emulates keyboard outputs such as P for pause in the right direction and alt+f4 in the up direction.

I have the latest version of openJazz downloaded from your website.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.