alistert / openjazz Goto Github PK
View Code? Open in Web Editor NEWOpenJazz
License: GNU General Public License v2.0
OpenJazz
License: GNU General Public License v2.0
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).
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.
Currently only palette fading is used, however for example end.0sc
uses the circle animation.
As per the original game. There are two problems with the current implementation of ledge animations:
OJ is known to have run on a lot of different platforms, partly with network support.
Also, it has recently been ported to PSVITA and will likely soon receive a Switch port.
I currently do have the source code and auxiliary stuff for the Wii port and have the necessary tools to build it. A PSP port is nowadays already included.
PSVITA is available here: https://github.com/usineur/openjazz
Further platforms: http://alister.eu/jazz/oj/download.php
Since openjazz already has quite some command line options, it would be nice if a man-page could be provided for Unix systems.
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:
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!
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.
The Debian package quality checker tool "lintian" complains about the desktop file missing a Keywords entry: https://lintian.debian.org/tags/desktop-entry-lacks-keywords-entry.html
I have added some Keywords to the desktop file which i proposed in #31 , so I suggest to add the following line to the current desktop file:
Keywords=jazz;jackrabbit;green;rabbit;bunny;jump;run;gun;platform;
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.
The hand enemies in Stonar can be shot at and killed regardless of whether or not they're currently above ground. Now, in fairness, this actually makes the level less aggravating than it originally was, but it's still probably something that should be fixed. This behavior also applies to the hand enemies in Holidaius.
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:
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.
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.
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:
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
The colour animations should pause when gameplay is paused, either explicitly or by bringing up the menu in single-player mode.
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.
```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.
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.
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
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:
$XDG_CONFIG_HOME
, defaulted to ~/.config
$XDG_DATA_HOME
, defaulted to ~/.local/share
Dedicated platforms should be handled specially (like we currently do).
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.
Is there a way to scale up the video without using texture filtering?
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.
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.
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:
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).
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.
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.
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.
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?
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:
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!
I think this screenshot speaks for itself, honestly:
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.
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
In original game, the music starts when showing the opening cutscene, in OJ when the menu is displayed.
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.
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:
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.
It seems the running shoes powerup doesn't speed up the music like it does in the original game. Hopefully this can/will be fixed.
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
The firing animation shouldn't loop when having no rapid fire upgrades and holding the fire button.
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:
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.
👍
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.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.