Jump to content
IGNORED

Hack Idea.. Jr. Pacman - "fast edition" ?


NE146

Recommended Posts

Here's an idea.. Let's face the fact that Jr. Pacman is a GREAT port. It's such a great port that it shares the same weakness as the arcade game.. and that's, it's difficult! Not that difficult to the point of non-enjoyment. But yes, it is quite challenging. So imagine if someone was able to do a hack to make Jr. Pac go a little faster... (just like in the modded arcade game) :P

 

As lots of you know, even players who collect the actual arcade game have it modded so that ol' Jr. Pac is set to fast speed. It doesn't make the game any less challenging (by much). The game actually gets a lot more playable! It's FUN to zoom through those mazes at fast speed. It gives you half a chance and believe it or not it's still pretty challenging.

 

Put it this way, the majority of commercial Ms Pacs out there are set to fast speed right? Does that make it any easier? Not really.. it's still hard to make it past 200k.. If you can make it to 300k my hat is off to you. But the game is still lots of fun. Well, it's the SAME for Jr. Pacman! :) The fast speed really lends itself to the large mazes and other challenges such as the enlarged dots, and aggressive ghosts.

 

So yeah we all know that the fast Jr.Pac is available on Mame via cheats. But what would REALLY rock is if someone could hack the 5200 version to allow a fast Jr. Pacman. In this player's old Pac-hands I really do believe this would up the enjoyment of this particular game by a ton! :D

 

So... what do you think? Is there anyone out there capable of this? :ponder: If a hacked rom could be created, that'd be a kick ass thing for the Als to put to cart :D

Link to comment
Share on other sites

Sure...should be relatively easy to find, since routines are often handled as seperate subroutines in computer programs (via JSR's). Just scan down the list of JSR's, and NOP them out one-by-one until you locate the one that handles movement. By squeezing in another JSR, you should be able to repeat it (Jr. moving twice as fast as normal).

Link to comment
Share on other sites

Just looked at "the 5200 man's" conversion for the 800, and there are 3 places that have a string of 3 NOPs where you can squeeze in an additional JSR : $87B8, $894A, and $8957. The main program's jump table is at $8A53...so just NOP out the JSR's one-by-one and experiment.

Link to comment
Share on other sites

Found it (on the 800 version anyway)

 

600E : JSR $8094 - Jump to time check routine

6011 : BEQ +$10 - Branch if not time to move yet

 

So you can just c 6011 ea ea to remove the branch, and Jr. is super-speedy :) (like fastchip PacMan in the arcade)

 

Contents of the time check routine...

8094 : LDA $FD

8096 : BNE +$06

8098 : LDA $1094

809B : AND #$01

809D : RTS

809E : LDA $1095

80A1 : AND #$01

80A3 : RTS

 

So by searching the 5200 rom for the AND #$01/RTS combo (s 0000 ffff 29 01 60), you should be able to track down where the program is called to. It should look similar to the above. Then search for the JSR that jumps there, and NOP out the branch below it.

 

Note: the routine to check if you've collided with the fruit is not checked on every frame. So there is the slight chance that you will miss eating the fruit occasionally when moving fast :P

 

There is a similar check done to move the monsters. So if this version gets too easy, you can c 8091 a9 to change that :D

Link to comment
Share on other sites

My main complaint for any of the home versions of the pac=man games is the fact that most arcade machines were moded with double speed player chips. In fact, I don't thinK I've ever played a Pac-Man or Ms.Pac-Man arcade machine in which the hero moves the same speed as the ghost. And yet, every home version ever, has the characture move the same as the ghosts, and no option on the game to double your speed.

 

Of course, that makes it play differently from the arcade which makes them feel like two different games, so I don't know, maybe it's a good thing?

 

Anyhow, double player speed would be cool for any of the pac-man games IMO

Link to comment
Share on other sites

HOLY CRAP, NUKEY ROCKS!!!!!!!!!!!!!!!1 That's EXACTLY what I was looking for! I just popped in jrPac to the Xbox and it's 100% MORE FUN!!!

 

You friggin rule Nukey. It's this kind of simple hack that makes all the difference in my opinion.. in this case, it's one little nifty gameplay tweak. I just had a ABSOLUTE BLAST playing 5200 Jr Pac (moreso than I ever did with the regular). And it's still challenging like I said... The extra speed really just evens out the gameplay imho 8)

 

THANK U MY BRUTHA! WOOHOOOOO! :D :D

 

band.gif2003_cheers.gif

 

So Al.... would it be possible to stick this fast rom onto a SuperPac cart if I order it? I mean those things aren't pre-assembled already are they? :P

 

ok.. now to check out the MsPac version... btw.. I didn't bother with the fast ghosts yet.. yeesh! I'm scared to even try that one :lol:

Link to comment
Share on other sites

Try out this one...it lets you throttle the speed :)

I was trying to work out a scheme that would let both players throttle, but it wouldn't fit in the available space :( So player 1's trigger slows both players down to normal speed whenever it's used.

 

Program changes (original version above):

A094 : LDX #$00 ;load x with an offset

A096 : CPX $FD ;check the energizer count down timer

A098 : BEQ +$01 ;branch if not active

A09A : INX ;bump up the offset to use the "energized" speed

A09B : LDA $1094,X ;load the appropriate speed counter

A09E : ORA $C010 ;toss the joystick trigger flag in

A0A1 : AND #$01 ;check bit 1 to see if we should move

A0A3 : RTS ;return to the main program

 

As you can see, Jr.Pac has two speeds (just like the monsters). One for when an energizer is active and a different one when an energizer is not. I dunno the purpose of two speeds...perhaps somebody else does (please!)

Anyway, the program originally had seperate routines to handle each speed. I was able to save some bytes by using X as an offset and have the same routine handle both speeds. I would have liked to have been able to ORA $C010,Y...but there is no space left to squeeze in an instruction to load Y with the player number :sad: And since Atari buttons work backwards (a value of 1 when the button is NOT pressed), the throttle works in reverse as well (speed up when the button is NOT pressed).

Finally, AND #$01 will bump the accumulator down to zero if the button is pressed and it's not time to move yet. I would have also liked to have simply AND $C010,Y, but that has a nasty habit of freezing Jr. :P

Link to comment
Share on other sites

Update! I've got it straightened out (though I had to rob a bit of space from the end of the cart area). The throttle is now seperate for both players, and Jr. moves fast when the button is pressed (like normal "turbo" buttons).

 

Program changes:

* $A094

LDX#$00 ;load the offset into X as before

LDY $40 ;load the player number into Y

LDA $C010,Y ;is that player's button pressed?

BEQ+$03 ;branch ahead if so

JMP $BF80 ;...otherwise, skip to the normal routine (moved to $BF80)

LDA#$01 ;set bit 1 (always move Jr.)

RTS ;and return

NOP

 

* $BF80

CPX $FD ;check if energizer is active

BEQ+$01 ;branch ahead if not

INX ;bump up the index

LDA $1094,X ;load the appropriate timer

AND#$01 ;...and check bit 1

RTS ;then return

5200_jrpac_throttle.zip

Link to comment
Share on other sites

cool beans... Anyone ever consider fixing the maze graphics? There are a couple areas that are incorrect (too much free space) so your player (if you were fast enough with the stick) could do circles in that area.

 

I always loved the 5200/8-bit version of ms. pacman, but I hated the jerkiness of the ghosts/player in the starting levels.

Link to comment
Share on other sites

Whoah.. you mean there's more!?!?! Woot! I guess I don't really understand what the new ones are.. they at normal speed unless you press the button for fast? I'll check them out later tonight :D

 

By the way Nukey, I really dig Jr. Pacman-Fast Edition. :D Unless I spot something later on, so far it's perfect

 

I also tried out the MsPac, it's great too! But I noticed that once you get to the higher stages, the ghosts themselves get super fast as well to the point where they almost match MsPacs speed! I know in the arcade version the speed of MsPac picks up as well in relation to the ghosts.. but in the 5200 version her speed seems static. Is it just me?

Link to comment
Share on other sites

The first file has Jr. moving fast unless player1's button is pressed (because the patch I wanted to do didn't fit in the space left over after optimising the logic routine). The fixed version corrects this by moving the routine to an unused spot in memory (so it is more like turbo versions of PacMan on other consoles...moving fast when the button is pressed).

 

Nukey, you're going to port these over to the 8bit right?   ;)

No need to, I hacked the 8-bit disk version originally to look at the program code. So anybody with a disk editor can do the patch themselves (the addresses at the top of the thread are the ones used by 8-bit Jr.)

Link to comment
Share on other sites

As you can see, Jr.Pac has two speeds (just like the monsters).  One for when an energizer is active and a different one when an energizer is not.  I dunno the purpose of two speeds...perhaps somebody else does (please!)

I found out why it has two framerates (it's actually used in other games and the arcade pac's as well). The routine for handling sprites during the energizer period is slightly longer and takes up more machine cycles. So you need a seperate counter so that Pac's speed appears constant (though it's such a slight difference, you might not even notice it).

Link to comment
Share on other sites

PacMan is really messy inside...with seperate routines to handle each direction (instead of just a universal routine that these two use). One thing that I noticed in the program is that it uses bit 1 to signify NOT to move...which would make coding the speed hack a bit easier (since I can just AND the joystick trigger on...causing the accumulator to flip to zero if the trigger is pressed and not change the bit if it isn't). Just a matter of tracking down all the entry points :P

 

But here's a quick .atr of the second disk version. Why the second version? Because it included the intermissions, and had a better WockaWocka sound. Run in computer mode, and use the stick trigger to throttle.

 

Program hacks:

* $599E

JSR $73AA ;add in a jump to the speed hack routine

NOP ;...and NOP out the remaining byte

 

* $73AA (unused area of memory)

LDY $2B ;load the player number into Y

LDA $A7 ;load in the time delay that's updated EVERYWHERE! :P

AND $0284,Y ;flip it to zero if the player's button is pressed

STA $A7 ;...and resave it for later.

LDA $93 ;Now do the test that was originally../

BIT $2A ;...at location $599E

RTS ;...and return

pacman_82atari__throttle.zip

Link to comment
Share on other sites

  • 8 years later...

Pardon my necrobump (and greetings from the future) but this is fascinating! There is a Ms Pac-Man machine in Saco, ME where I used to live, and it is also quite fast. I enjoyed it thoroughly. As NE had mentioned, it is still difficult, but the increased speed really made it more fun. I have no experience with Jr Pac outside of the 2600 cart.

 

So... what became of this hack? Anything noteworthy?

Link to comment
Share on other sites

unfortunately, shortly after this thread, the hack turned to a life of drugs and was found dead amongst a pile of bible adventure games...

 

Not bad. :D

 

A lot of these old threads still contain pertinate information. I am a little curious as to whether or not writing/hacking for the 5200 is done any differently today than it was in '03. Or is all the coding still stuck in 1982, so to speak?

Link to comment
Share on other sites

  • 2 weeks later...

this would be cool to play..

 

i've been going through what few ports

of these there are (2600), pc, commodore 6400.

 

and i've played the regular 5200 versions..

all through emulators..

 

having a bug that is causing major issues though...

 

if you die, when the fruit/bonus blows up your

energizer, it becomes permanent and you can't

finish the maze... check out the upper left

weird looking sprite for the energizer

===============================================

0017d.png

 

has anybody run into this?

other than that it's a very hard version..

 

put up a decent replay over at HARP

(home action replay) 55k

==============================

http://www.homeactio...=5941&tourney=8

 

later

-1

Edited by negative1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...