Jump to content
IGNORED

Hack'em! / Hangly Man combined :)


Nukey Shay

Recommended Posts

Added some more redundancy (rather than using generic routines).

Last one for the night...getting really close now :)

 

Something changed on the second intermission. The ghost's foot now gets stuck on the front of the nail (bar, pellet, what-have-you) rather than on the back end of it. Minor but I thought that I'd point it out.

 

As for the screen jumps, it had not occurred to me that playing on the smart ghost setting would make a difference. I did get one good screen roll on it whereas the in normal game I saw only a minor stutter or two again. I'm not half as good at the game with the smart ghost on either! :roll:

Link to comment
Share on other sites

From the other thread...

 

You can take this with a grain of salt, as I have my own home made hardware.  I burnt them to eprom.  I got it going once I figured out you were starting from the second bank only.  I tried the hackem!  and intermission test.  They both rolled about the same for me with the reset button.  The intermission rolled on hackem but not the earlier intermission test.

 

I don't know if starting only from the second bank will be a problem as I've only been messing with atari's for 2 weeks now but it seems to me when you power up a flipflop the status would be undefined.

 

 

I don't know much about how bankswitching works...other than just performing an out-of-range read flips them. To curb any possibility of the game starting in bank1, I added another one to the top of that bank (that flips to bank2 and then performs a JMP to the start address). I had 60 bytes to spare in bank1, so I listed all of the indirect addresses as well...so if the binary is split and disassembled, it will seperate code from data nearly perfectly - all except the JMP to the start address (easy way to check all of the branching). Anyway, the program can now begin in bank1 or bank2. Nearly all of the in-game subroutines have been unrolled...it only JSR's now when checking the game map or initializing an energizer. I dunno what else to trim to save cycle time :(

hack_em_hanglyman.zip

Link to comment
Share on other sites

That should make it possible to burn it to a cart. A cart would most likely have a simple flipflop to store the bank number. A single FlipFlop stores 1 bit; on boot up that bit is essentially a random number. That is why most games can boot from either bank.

 

On more complicated hardware like a cuttlecart or a multicart you can define the intial state.

Link to comment
Share on other sites

Would it be still loading the start vector in bank1? Just in case it wouldn't be, I moved that bankswitch instruction right to the start of bank1...

 

;*=$D000

START1:

      LDA    $1FF9                  ;4 flip to bank2

.

.

.

.
;*=$F000

      nop                           ;2 

      nop                           ;2 

      nop                           ;2 

      jmp    START                  ;3 

 

Also, I cut out the score/maze colors being pushed to the stack...and put the score flash back in.

hack_em_hanglyman.zip

Link to comment
Share on other sites

Just one thing to note: the fruit prizes seem to vary in how long they stay onscreen, unless I'm just seeing things.  Sometimes they appear long enough for me to snag them, and sometimes they cut out too quickly.

 

I just added a seperate timer to handle fruits alone. This cut 30 bytes out of the code, and mades the fruit time consistant (a little over 8 seconds). Pausing no longer messes it up 8) The times they appear has been altered to just following 50 and 100 dots being cleared.

 

Also, I moved the routine that handles adding a bonus player to happen only on a frame where the fruit is not eaten (i.e. this saves cycle time). I haven't noticed a problem with it.

hack_em_hanglyman.zip

Link to comment
Share on other sites

Yes, if it starts in bank 1 it loads the start vector from dffc.   It will run the code at d000 and switches to bank 2 and jumps to the start.   I haven't tried it yet but that looks correct.
Has anyone tested Nukey's "Work of Art!" ( :D ) with hardware to see if it bankswitches correctly?
Link to comment
Share on other sites

...and this one has an alternate timetable when grabbing fruits in the green maze 8)

 

Anyone have a chart of the number of seconds the fruit bluetime lasts up to the 9th key?

 

How about a relative table? This is the main table. These numbers are indexes into more tables so they don't mean anything by themselves, but you can compare the pp time with the bonus time or with ms pacman values.

 


pacman plus



gs=ghost speed

os = out speed

rp = red shift point

ft = powerpellet blue time

bt= bonus blue time

lev	gs ?? os rp ft ?? bt

0	05 01 02 01 04 00 02

1	05 01 03 02 05 00 02

2	05 01 03 03 06 01 03

3	05 02 03 03 06 01 04

4	05 00 03 04 06 02 05 

5	05 01 03 04 04 02 03 

6	05 02 03 05 06 02 05 

7	05 02 03 05 07 02 05

8	05 00 03 05 07 02 06 

9	05 01 03 06 06 02 04 

a	05 02 03 06 07 02 06 

b	05 02 03 06 08 02 06 

c	05 00 03 06 08 02 06 

d	05 02 03 05 06 02 04 

e	05 01 03 06 08 02 06 

f	06 02 03 06 07 02 06 

10	06 02 03 07 08 02 06 

11	06 02 03 07 06 02 06 

12	06 02 03 07 08 02 07 

13	06 02 03 07 08 02 07 

14	06 02 03 07 08 02 08 



mspacman

     gs ?? os rp ft ??

796  defb 03 01 01 00 02 00;0

defb 04 01 02 01 03 00;1______

defb 04 01 03 02 04 01;2

defb 04 02 03 02 05 01

defb 05 00 03 02 06 02;4______

defb 05 01 03 03 03 02 

defb 05 02 03 03 06 02 ;6

defb 05 02 03 03 06 02

defb 05 00 03 04 07 02 ;8______

defb 05 01 03 04 03 02

defb 05 02 03 04 06 02;a

defb 05 02 03 05 07 02

defb 05 00 03 05 07 02;c______

defb 05 02 03 05 05 02

defb 05 01 03 06 07 02 ;e

defb 05 02 03 06 07 02

defb 05 02 03 06 08 02;10_____

defb 05 02 03 06 07 02

defb 05 02 03 07 08 02;12

defb 05 02 03 07 08 02

defb 06 02 03 07 08 02;14



Link to comment
Share on other sites

Hey...thanks again :)

Fruit bluetime matched (tho I had to remove it for the 7th and 8th keys...so that higher levels won't have any).

 

Anyone seeing screen rolls? If I can manage to save enough time, it will be possible to improve the collision detection a bit.

 

I also removed player animation when you are against a wall (so it usually stops with an open mouth).

hack_em_hanglyman.zip

Link to comment
Share on other sites

Anyone seeing screen rolls?  If I can manage to save enough time, it will be possible to improve the collision detection a bit.

 

The screen rolls are almost completely extinguished from the "normal" game. Less than once a game (and extremely brief flashes at that). They still show up in the "smart ghosts" game but are greatly lessened in both frequency and intensity there as well. I saw a couple a game and they weren't the major rolls that I was getting a couple of builds ago. What I am seeing now is similar to the "stutters" that I was describing on the normal game a week ago.

 

Collision detection is slightly off as I managed to pass through a blue ghosts a few times (all the way through a forward and reverse move).

Link to comment
Share on other sites

Good...that means that I'm on the right track to finally solving it :)

 

And yeah, the collision detection isn't all what it's supposed to be...since I'm only checking 1 monster per frame (and no hardware collision detections are being used). If I can find a spot that has cycles to spare, I'll try moving it there instead. Or perhaps switching to hardware collsion detection to notice when the in-game collision routines should be checked :idea: Hmm...That would save cycles on every frame. The way that I could do it is to kill player movement on the frame that a hardware collision is detected...and then jump to the detection routine. The monsters will still be able to move, so it might be tricky (especially considering "near-misses" - if the monster is nipping at you, it might slow you down).

 

Last build had the GO symbol missing...as I was still in the middle of rewriting it to be more faithful. Now it only appears during the tune and briefly during the game 8)

hack_em_hanglyman.zip

Link to comment
Share on other sites

Corrected the bug that kept the "Go" symbol on the screen forever in the slow game...and I also changed the collision routine to check on every frame that the player isn't moving in that version as well. Now I just need to improve it on the quick game (still checking @ 15hz) 8)

hack_em_hanglyman.zip

Link to comment
Share on other sites

Corrected the bug that kept the "Go" symbol on the screen forever in the slow game...

 

It's still hanging around too long. Maybe about four seconds or so after the game has already started, the GO is still flashing. A few more screen stutters have worked their way back in too. I would suppose that the two issues could be related.

Link to comment
Share on other sites

One thing I noticed about this game is that Pac-Man (Hack-Man?) doesnt pause when he swallows a monster as on the original arcade version. Could adding a quick pause help with the collision detection?

 

Not really, since the detection must happen while sprites are in motion (otherwise, you'd be needlessly pausing the player). In the slow version, I took advantage of every other frame that the player sprite is not updated and had it do the checking there. In the fast version, the player sprite is moving on every frame (so it's still only checking every 4th frame in the fast game).

Link to comment
Share on other sites

Corrected the bug that kept the "Go" symbol on the screen forever in the slow game...

 

It's still hanging around too long. Maybe about four seconds or so after the game has already started, the GO is still flashing. A few more screen stutters have worked their way back in too. I would suppose that the two issues could be related.

 

That is intentional :) Currently, it's being cleared when the frame counter reaches a specific value (#$80...half-full - about 5 seconds). I can lower that to any value - which wiould make it disappear quicker...or increase it.

Link to comment
Share on other sites

That question was asked regarding...um...another hack. It was the only real way that I could improve the gameplay due to the limited monster A.I. (which is already pretty easy to outwit). And if just feels too sluggish at slower framerates. With both switches on B, you should have little problem keeping a game going to see all the levels.

If you really wanted to, you could run the game in an emulator with a reduced framerate...but all it would do is make the game even easier than it already is (when running with both "B"). Having such a limited collision detection in the fast game isn't helping (BTW has anyone seen the player going through the monsters in the slow game? That should have a nil chance of happening now that I'm checking all 4 monsters on a frame).

Link to comment
Share on other sites

One thing I noticed about this game is that Pac-Man (Hack-Man?) doesnt pause when he swallows a monster as on the original arcade version.

 

This pause was added in fairly easy...when a monster is eaten, the game will pause all characters except for eyes. I ran short of bytes, so it WILL currently affect the fruit timer (need 4 bytes to correct this). It's actually not really needed, since the pause exists so that the player can see the point value for the monster. Since 5 additional sprites are impossible to add in, the pause really makes no difference. Tho it does make the game more faithful.

 

What does everyone think? Pause or no pause? Try this, and hollar back if it's too disorienting ;)

hack_em_hanglyman.zip

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...