jayfoxrox / pro-pinball-super-ultra Goto Github PK
View Code? Open in Web Editor NEWUnofficial modification / patch for the Barnstorm Games game Pro Pinball Ultra (2016)
License: MIT License
Unofficial modification / patch for the Barnstorm Games game Pro Pinball Ultra (2016)
License: MIT License
On many real pinball machines which have 2 flippers per side, you can control them individually by half-pressing buttons.
This depends on #5.
Timeshock in Pro Pinball Ultra does not have this feature. I'm not sure if this was working in the original game.
Because this might give players an advantage, it could affect scoring, so it should be optional.
Analogous to #5 , but this issue is specifically about analog nudging.
The game code does handle this, but it's currently not being used.
The interesting bits are in set_digital_nudge_acceleration_multipliers(float x, float y);
.
I wasn't sure how to deal with game-relative paths because I'm new to macOS. I hardcoded an absolute path for #1 in:
Pro-Pinball-Super-Ultra/main.c
Line 75 in 89eb20a
I'm not sure if this is a real bug or just a user-error, but it has been reported here: https://www.pro-pinball.com/forum/viewtopic.php?f=19&t=214772
If this is specific to Linux, it depends on #11.
I have interest in working on this, but don't have access to the Linux version of the game. I'll work on it when a Linux release pops up on https://github.com/JayFoxRox/Pro-Pinball-Super-Ultra/wiki/DRM-Free-download
During development, but also if you only get shortly interrupted by someone, the countdown is too slow and annoying.
There should be an option to make it faster.
There should be support for some form of achievements to give extra-challenges to players
There should be an option to download all the GFX packs whenever the user wants.
I ran into an issue where I wanted to play while I wasn't connected to the internet, and I was unable to play at my native resolution.
With the text rendering fix for #1 we can already replace some of the text. This could be used for localization.
As this project develops into a more complete hook, we could also do more advanced replacements elsewhere, too.
There could also be a language-neutral menu which uses pictograms instead of text.
There should be an option to force the Midnight Madness mode somehow.
See https://www.pro-pinball.com/forum/viewtopic.php?f=18&t=760 for more information.
I have very limited interest in working on this, but it should be trivial.
Patches by others would be welcome.
There is no force-feedback on gamecontrollers.
This does affect macOS, but potentially also other platforms if the README is to be believed.
Not having controller support in menus is very annoying.
To implement this, I'd suggest to simply replace the entire original menu.
We also have trouble with it for #9 and configuration for features like #20 or #17.
We also needed to hotfix the original menu for #1, so getting rid of the menu might be a good option.
I'm not even sure which platforms eventually got a release and how they shipped or what the platforms restrict.
If there are DRM-Free builds for those platforms floating around, they should be added to https://github.com/JayFoxRox/Pro-Pinball-Super-Ultra/wiki/DRM-Free-download
Otherwise I will probably not work on them to avoid generating traffic to piracy sites.
Regardless, iOS support would have to be handled by someone else.
I could potentially work on Android though.
Xbox 360 was supposed to have a release, but I'm not sure if it ever came out. I might be able and willing to work on that.
At least on macOS, the game doesn't recognize my Xbox 360 controller (which does work fine with SDL2 and Enjoyable).
While I can use Enjoyable to remap controller input to buttons, I have very limited deadzone control for the flipper-buttons.
There should be a button for adding virtual coins into the virtual game.
It's really annoying to have to play a couple of setup games if you only care about buy-in high-scores or progressing through the entire story with buy-ins.
I experienced an issue with text-rendering on macOS 10.15.7 and the base-game 1.2.3:
Before / After fix:
This function creates a buggy OpenGL texture:
https://github.com/cocos2d/cocos2d-x/tree/cocos2d-x-2.2.6 [probably]
Process 1052 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 3.2
frame #0: 0x000000010015f660 Pro Pinball`cocos2d::CCTexture2D::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment)
Pro Pinball`cocos2d::CCTexture2D::initWithString:
-> 0x10015f660 <+0>: pushq %rbp
0x10015f661 <+1>: movq %rsp, %rbp
0x10015f664 <+4>: pushq %r15
0x10015f666 <+6>: pushq %r14
Target 0: (Pro Pinball) stopped.
(lldb) print (char*)$r15
(char *) $68 = 0x0000000100cccd01 "SIGN IN"
Relevant stack:
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x00007fff39b83186 libGL.dylib`glTexImage2D
frame #1: 0x000000010015ee18 Pro Pinball`cocos2d::CCTexture2D::initWithData(void const*, cocos2d::CCTexture2DPixelFormat, unsigned int, unsigned int, cocos2d::CCSize const&) + 418
frame #2: 0x000000010015f581 Pro Pinball`cocos2d::CCTexture2D::initPremultipliedATextureWithImage(cocos2d::CCImage*, unsigned int, unsigned int) + 627
frame #3: 0x000000010015f2d4 Pro Pinball`cocos2d::CCTexture2D::initWithImage(cocos2d::CCImage*) + 90
frame #4: 0x000000010015f743 Pro Pinball`cocos2d::CCTexture2D::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 227
frame #5: 0x000000010011df85 Pro Pinball`cocos2d::CCLabelTTF::updateTexture() + 253
* frame #6: 0x000000010011dbfc Pro Pinball`cocos2d::CCLabelTTF::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 248
frame #7: 0x000000010011dab7 Pro Pinball`cocos2d::CCLabelTTF::create(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 85
frame #8: 0x00000001000771de Pro Pinball`UI_BUTTON::setLabel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float, char const*) + 52
frame #9: 0x000000010007bbb1 Pro Pinball`UI_SCENE::add_button_with_label(char const*, ANCHOR::TYPE, float, float, float, float, cocos2d::CCObject*, void (cocos2d::CCObject::*)(cocos2d::CCObject*), std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float) + 61
frame #10: 0x0000000100083bc2 Pro Pinball`WELCOME_SCENE::init() + 354
frame #11: 0x000000010008427b Pro Pinball`WELCOME_SCENE::create() + 159
This issue is what inspired this project. I also wasn't the first one to experience this issue.
There should be a training mode which:
While working on #8 I had some fun with only using the hold-coils for a much weaker shot strength. It could be interesting to simulate machine faults to challenge players in new ways.
There should be some form of statistics. For example, a counter how often you made each shot (and from which side).
A heatmap could be used to visualize where the player is most likely to lose the ball.
Ideally, there'd be a replay mode.
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.