rRootage for PSP v1.5

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

rRootage for PSP v1.5

Post by mrbrown »

I've just released rRootage for PSP v1.5. Get it at http://psp.jim.sh/mrbrown/rRootage_PSP-1.5.zip.

Screenshots:
Image
Image

From README.PSP (included in the archive):
rRootage for PSP
v1.5
--

I N F O

This is a port of Kenta Cho's addictive PC shooter, rRootage (http://www.asahi-net.or.jp/~cs8k-cyu/windows/rr_e.html).


I N S T A L L

1.0 & 2.0 users: Copy the 1.5/rRootage directory to /PSP/GAME/. Copy
1.0/EBOOT.PBP to /PSP/GAME/rRootage/.
1.5 users: Copy the 1.5/rRootage and 1.5/rRootage% directories to /PSP/GAME.


P L A Y

Press Start to begin a new game. Use the analog or directional pad to steer
the ship, use X (or Triangle) to fire, and use O (or Square) to activate your
Special.

See readme_e.txt for additional information on gameplay.

Press Start or Home to pause the game.

Press Select to toggle music playback.

Press L + R to take a screenshot. Screenshots are stored at the root of the
memory stick.

Select Q (the bottommost menu item) and press Start to exit to the PSP browser.


B U G S

There are a few minor graphical differences from the PC version. The
differences should not affect gameplay.


M I S C

The full source code for rRootage lives in the pspdev Subversion repositiory at
[url]svn://svn.pspdev.org/pspware/trunk/rRootage[/url].


C H A N G E S

2005 12/14 v1.5

- Call _init() in libSDL_main's main() if it wasn't already called and make
sure that the startup constructor doesn't access kernel mode on 2.0 PSPs.
- rRootage now works on 2.0 PSPs under Fanjita's EBOOT loader.

2005 12/14 v1.4

- Fixed the Psyvariar crash that only happened to 1.50 users.
- Fixed GL_LINE_LOOP in PSPGL. Graphics are improved.
- Add the performance meter from PSPGL (commented out).

2005 12/11 v1.3

- Fixed PSPGL's GE init code to be more compatible across all PSPs. rRootage
should work on 2.0 PSPs now.

2005 12/10 v1.2

- Disable antialiasing (support appears to be missing in PSPGL). The graphics
are noticeably improved.
- Fix a problem with boxes not being drawn correctly.

2005 12/09 v1.1

- Fix screenshots for 1.0 and 1.5 users.
- Pause the game when Home is pressed.

2005 12/07 v1.0

- Initial release.

--
Port contributed by Marcus R. Brown <mrbrown@ocgnet.org>
Thanks goes to rinco for various fixes and to jimparis for hosting.
Last edited by mrbrown on Fri Dec 16, 2005 11:56 am, edited 6 times in total.
Wraggster
Posts: 121
Joined: Fri Aug 26, 2005 7:40 am
Contact:

Post by Wraggster »

wow, i thought i was seeing things but Deniska has also ported this game to the PSP and released it yesterday --> http://www.dcemu.co.uk/vbulletin/showthread.php?t=14995

Great work from both of you :)
Webmaster of http://www.dcemu.co.uk

DCEMU The Worlds Only Homebrew & Gaming Network of Sites.
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

In case folks are wondering, the following is a list of features that my release has that the deniska release doesn't have:
  • Graphics are full 32-bit RGBA (deniska's release uses 16-bit color). Compare the screenshots.
  • Pause using Start.
  • Toggle music using Select.
  • The entire screen is supported for gameplay (in deniska's release the ship can't move all the way to the edge of the playfield borders).
  • Screenshots using L+R (a bit buggy in this release).
  • Minor speed improvements that make it a bit faster overall.
User avatar
dot_blank
Posts: 498
Joined: Wed Sep 28, 2005 8:47 am
Location: Brasil

Post by dot_blank »

Wraggster wrote:wow, i thought i was seeing things but Deniska has also ported this game to the PSP and released it yesterday --> http://www.dcemu.co.uk/vbulletin/showthread.php?t=14995

Great work from both of you :)
the record should made straight as to
who is responsible for this excellent port
this is one of my all time favorite shootemups
and credit i agknowledge goes to mrbrown
for his hard work with rRootage that
anyone who has visited ps2dev.orgs
irc channel #pspdev can tell you who
is to be credited for this port to psp and the
facts have to be set straight that what you
hear is not always what you see ;)
10011011 00101010 11010111 10001001 10111010
Kojote
Posts: 9
Joined: Sat Sep 17, 2005 12:39 am
Location: Austria
Contact:

Post by Kojote »

Let me quote something from a big PSP news page regarding THIS release:
Friday, December 09, 2005
rRootage v1.0 for PSP

Deniska has updated his PSP port of Kenta Cho's shooter rRootage, version 1.0. Control your ship and avoid the barrage. Use the laser to destroy the battleship of the enemy. You can cause more damage if you fire the laser close to the enemy. When all ships are destroyed, the game is over. The ship extends 200,000 and every 500,000 points.

posted by Jeff Chen at 1:33 AM | 0 comments
I only say... EXPERTS at work! :)
Kojote
Webmaster of PDroms & Retroguru
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

rRootage for PSP v1.1: Screenshots should now work for 1.0 and 1.5 users. The Home button will pause the game.
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

rRootage for PSP v1.2: Disabled antialiasing; graphics are MUCH improved. Fixed a bug in the way boxes were being drawn.
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

rRootage for PSP v1.3: Tried to make PSPGL's initialization code more compatible with 2.0 PSPs. Hopefully this release works under 2.0. If you had previously tried it on 2.0 and it crashed, you should reinstall rRootage from the v1.3 .zip. Any feedback appreciated.
tjbrosnan
Posts: 3
Joined: Sun Dec 11, 2005 11:02 pm

Post by tjbrosnan »

Unfortunately version 1.3 didn't work for me under 2.0 using the 0.85 eboot loader. Screen just stayed blank when i tried to load the game, also the eboot loader reported that the game is kernel-mode app.
StereoMike
Posts: 5
Joined: Sun Dec 11, 2005 11:06 pm

Post by StereoMike »

Doesn't work for me either, tried loader v0.7, 0.8 and 0.85. Same problem, blank screen, as above.
bobcobb
Posts: 3
Joined: Thu Aug 25, 2005 10:11 am
Location: Midwest USA, WHY ME?!

Post by bobcobb »

Hmm, did not work for me either. It says it is a kernel mode app. Damn I really wanted to play this one too.
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

If you are a user experiencing crashes in PSY mode, I need the full text of the line that begins with "psp-addr2line" from the BSOD.
sjk1
Posts: 2
Joined: Thu Sep 08, 2005 10:23 pm

Post by sjk1 »

there you go:

psp-addr2line -e target.elf -f -C 0x8902cfc 0x1952b988 0x8904f10

hope this helps! :-)
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

sjk1 wrote:there you go:

psp-addr2line -e target.elf -f -C 0x8902cfc 0x1952b988 0x8904f10

hope this helps! :-)
Thanks. This is from v1.3, correct? I think I have an idea of what the problem could be.
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

rRootage for PSP v1.4: Fixed the Psyvariar crash bug that happened to 1.50 users. Thanks goes to ReKleSS for helping me track this down on his 1.5. Fixed the GL_LINE_LOOP primitive in immediate mode, graphics are noticeably improved. Added the performance meter used in PSPGL - it can be used for measuring performance and testing optimizations. Added TODO.PSP.

I've also found the location of the crash on 2.0 systems (in v1.3), thanks to jimparis. I don't have a fix for it yet. 2.0 users may still want to give v1.4 a shot as I couldn't find any 2.0 users to test before the release.

Keep the feedback coming.
Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

Sadly 1.4 still crashes on 2.0 using the EBOOT loader.

What line is causing the crash out of interest? If there's anything you'd like tried with the code or test binary i'm sure they'd be many people that would oblige (including myself).

-Nic
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

Nic wrote:What line is causing the crash out of interest? If there's anything you'd like tried with the code or test binary i'm sure they'd be many people that would oblige (including myself).
The crash occurs during the call to BulletMLParserTinyXML::build() made on line 44 of barragemanager.cc. It crashes when trying to parse the very first .xml file that rRootage wants to load. I thought it might be related to (lack of) memory, but according to http://forums.ps2dev.org/viewtopic.php?p=28096#28096 rRootage should have at least 16MB available to it through malloc(), and on my 1.0 rRootage only takes up 2.1MB before it's ready to enter its main loop. So I'll have to dig into libBulletML's STL nightmare to try to figure out what's happening.

Of course part of the problem in fixing it is that there's no exception handlers on 2.0, so I can't get the precise line number of where the code crashes, or know what type of exception is caused :/. jimparis helped isolate the bug when I kept feeding him binaries with tons of printf() debugging :).

Since that's the only way to go right now, and since you've volunteered :), here's a EBOOT.PBP for 2.0 that has tons of debug logging enabled. The log is written to ms0:/log.txt. If you (or any 2.0 user reading this thread) can post this file somewhere I'd appreciate it.
dem1980
Posts: 4
Joined: Thu Jan 22, 2004 10:51 pm

Post by dem1980 »

hi mrbrown

thank you very much for your work ;-)
i have a psp 2.0 with eboot loader
i have 0.7, 0.8 and 0.85
i have tested your eboot.pbp but i have a black screen again

here is the log :

Code: Select all

build &#40;66&#41;&#58; enter
init &#40;27&#41;&#58; 
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

dem1980 wrote:build (66): enter
init (27):
Thanks for testing. The log looks a bit strange - did you allow rRootage to completely crash or wait for the memory stick LED to stop flashing for at least a minute or two before grabbing the log? If not, could you please run it again and post the log? Thanks.

And I can still use logs from other 2.0 users as well :).
Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

@MrBrown: I got exactly the same log as dem1980. I let the PSP run till it turned itself off after the crash.

Might try debugging this myself. Could be fun :)

Anything else you want trying let me know,
-Nic
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

There's no way it should be crashing within the logging function, because calls to the logging function use atomic writes to log.txt - the file is closed at the end of each call. This suggests that the bigger problem could be coming from the EBOOT loader. It's already been shown that the EBOOT loader leaves the VSH and threads from previously run homebrew in an unknown state - I wonder if there's a timing issue involved from some other thread?

There's a new EBOOT at http://psp.jim.sh/mrbrown/rRootage-EBOOT.zip. This time it will delay 2.5 seconds before attempting to load each XML file. If it crashes within this time and there's nothing logged, then it's something external to rRootage that's causing it to crash.
Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

@MrBrown: Think i'm getting a caching issue or something because the eboot in the zip i'm downloading is the same as the last one. I'll try getting it through a proxy, but if you could give it a different name easily, that would help.

Just got rRootage compiling. Very nice and straightforward :)

-Nic

EDIT:
Even through a proxy I get the same .zip. Timed at 10/13/2005 10:21
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

Just tried the new zip. Still exactly the same log as posted before.

Guess it may be a problem that needs correcting in eboot loader (if possible) :(

Sorry I don't have better news,

-Nic
dem1980
Posts: 4
Joined: Thu Jan 22, 2004 10:51 pm

Post by dem1980 »

i have tested the new file too
and i have the same log :

Code: Select all

build &#40;66&#41;&#58; enter
init &#40;27&#41;&#58; 
i run the game from eboot loader, then it says :
"module attribs 00001000 suggest a kernerl-mode app"
"press x to continue"

i press x and then the memory stick flashes 2-3 times and i have a black screen for 10 seconds then the psp light off
i tunr on the psp and go into the memory stick and i have this log file
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

Yeah, it's a bit disappointing that there's no precise way to pin this down. About the kernel flags, all apps linked against libSDL_main.a will show up as kernel apps, but they don't use anything that the EBOOT loader doesn't already patch out. Other people have tested SDL-based apps using OpenGL and they've worked fine.
Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

MrBrown:
Yes very weird, I've put my own debug logging in to have a look.

in "readBulletMLFiles"
the line "new BulletMLParserTinyXML(fileName)" does return a pointer. It just crashes when trying to assign it ?

So if you do:-
ptr = new BulletMLParserTinyXML(fileName);
logging continues, it's only when you assign it to barragePattern does it crash. I've tried accessing barragePattern by name rather than by "brg[]". Makes no difference (not surprisingly). I've tried creating barragePattern on the heap rather than the stack (Makes no difference, again not surprisingly).

V. Strange...

-Nic

EDIT:
Ok, don't think it's the assignment. Think my debug log wasn't being flushed completely. Looks like it fails in build(). Which makes more sense.

EDIT2:
Ok, This time I think it's in IDPOOL::Init in bulletml
Specifically:
map_.insert(std::make_pair(BulletMLNode::bullet, KeyToID()));
What a fun bit of STL that is :(

Think i'll leave it for tonight
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

The patch I used to do debug logging in libBulletML is here (it applies in the src/ directory). It just uses PSPGL's __pspgl_log() function. You can see I had a call in IDPOOL::Init(), that should just print "enter\n".

HOLY CRAP!!!!!

I know why it's not working now. The EBOOT loader patches out the call to _init(), which is responsible for calling C++ global constructors. The std::map IDPool::map_ is never initialized, which is why map_.insert() crashes the machine.

Now the tricky thing is, SDL has a .init contructor function that sets up exception handling and does other things that would immediately break the app on 2.0. If I had a way to detect if the EBOOT loader was running, then I could fixup SDL to skip over the kernel calls and call _init() manually to initialize any other static classes.

BTW, if you comment out the call to build() in the barrage manager the game will happily load, except that the bosses become ... passive :P.
Nic
Posts: 8
Joined: Fri Jul 22, 2005 2:34 am

Post by Nic »

:) Glad you've figured out what needs doing.

You're right it loads up fine if build() is removed.

Hope you'll be able to release a 2.0 version for us. Or I can keep hacking away at it. But it's nearly midnight so i'm off to bed.

Thanks for this great port. Very much looking forward to playing it in its entirety on v2.0. :)

-Nic
ector
Posts: 195
Joined: Thu May 12, 2005 10:22 pm

Post by ector »

mrbrown wrote:If I had a way to detect if the EBOOT loader was running, then I could fixup SDL to skip over the kernel calls and call _init() manually to initialize any other static classes.
Wouldn't it be better to politely ask Fanjita if he could add a fix to the loader? :)
http://www.dtek.chalmers.se/~tronic/PSPTexTool.zip Free texture converter for PSP with source. More to come.
Post Reply