Jump to content

Pac-Man Improvement


Recommended Posts

The problem with doing that is that there are only a few sprites used for the man (so Pacman will be sliding around as he does in Atari's Pacman...no vertical mouth)...


0454 |   X XX |

0455 | X XXX X|

0456 |  XX    |

0457 | XXX    |

0458 | XXXXX X|

0459 |X   X   |

045a |X    X  |

045b |        |

045c |    X X |

045d |  XXXX X|

045e |XXXX    |

045f | XXX    |

0460 | XXXXX X|

0461 | X X    |

0462 | X X    |

0463 |        |

0464 |   XX   |

0465 |   XX   |

0466 |  XXXXX |

0467 | X XX   |

0468 |  XXXXX |

0469 | XX    X|

046a |X      X|

046b |        |

046c |   XX   |

046d |   XX   |

046e |   XX   |

046f |  XXXX  |

0470 |   XXX  |

0471 |  XX X  |

0472 |  X  X  |

0473 |        |




0558 |   XXXXX|

0559 | XXX X  |

055a |  XX    |

055b | XXX X  |

055c |XX XXXXX|

055d |X   XX  |

055e |        |

055f |        |

0560 |  X XXXX|

0561 |X XX X  |

0562 |  XX    |

0563 | XXX X  |

0564 | XXX XXX|

0565 | X X    |

0566 |        |

0567 |        |

0568 |   X    |

0569 |   X  X |

056a | XXXXX  |

056b |   XX   |

056c | XX XXXX|

056d |XX     X|

056e |        |

056f |        |

0570 |   X    |

0571 |   X    |

0572 |  XXXX  |

0573 |  XXX   |

0574 |  XX X  |

0575 |  X  X  |

0576 |        |


Creating a disassembly and hacking it might be the only way to correct this problem...but be warned - Alien is really messy inside.

Link to comment
Share on other sites

Wow some of those dont look like pac-man.
Where they supposed to? Then again, they don't look much like Ripley and the Alien either. :lol:



I suppose it would be best to hack mrs. pac-man?

You mean like this? It's a thought...but you'll need a time machine to get credit for it.


Maybe Lock 'n Chase...particularly since there is no flicker :) But the kernal would need some serious modifications to be able to fit the entire maze in.


Do you need an assembly file?

Link to comment
Share on other sites

The only thing you need is to outline where the graphics and code exist. Like looking through HOM to gather the addresses. Then you put that info into a .cfg file to assist Distella.


Here's an assembly file plus the .cfg file that created it. There is a very good thing about this game...it leaves over a page of memory free to add in code of your own.


Now the bad news:

It's not very easy to change the "cop" figures. You might notice that bitmaps of them appear partway through the disassembly. These DO show up in the game. The 8-bit images will be displayed on the screen, so long as no other "cop" moves onto that scanline (when one of them will change into a 2-bit missile object...which is displayed at varying widths to give the illusion that it is also an 8-bit sprite). This swap is totally undetectable by the person playing the game...so long as the sprite image matches with how the missile will be displayed.

This also had me stumped :P

Another limitation is that the "cop" sprites are limited to 2 on the same scanline. The program makes sure that one of them won't move onto the same scanlines that 2 of them already exist.


Kudos to Thomas for the explainations :)


Link to comment
Share on other sites

Oops :) Here's the Alien.asm and .cfg...keep in mind that this file has MANY labels missing - even in the routines themselves, because the program uses indirect jumps all over the place. No doubt "intelligent" routines to deal with dot placement and sprite display.


I changed everthing that looked like the man, but it did not change in Ln'C

Right, in an assembly file you need to change the .byte value...the X's in the bitmap are just comments (everything following the ; character is ignored by the assembler).


Link to comment
Share on other sites

so if I wanted to change this

      .byte $18; |   XX   | $F464

      .byte $18; |   XX   | $F465

      .byte $3E; |  XXXXX | $F466

      .byte $58; | X XX   | $F467

      .byte $3E; |  XXXXX | $F468

      .byte $61; | XX    X| $F469

      .byte $81; |X      X| $F46A

into this: see below, what should i do?


Link to comment
Share on other sites

You can't do a 1:1 copy of it...since the man in Alien is only 7 lines high (vs. Pacman's 10). 3 lines need to be omitted...


       .byte $1C; |   XX   | $F464 

      .byte $2E; |   XX   | $F465 

      .byte $78; |  XXXXX | $F466 

      .byte $60; | X XX   | $F467 

      .byte $78; |  XXXXX | $F468 

      .byte $3E; | XX    X| $F469 

      .byte $1C; |X      X| $F46A

(remember, the bitmap X's are not even used in a disassembly...just the $ values)



This will produce...

|   XXX  |

|  X XXX |

| XXXX   |

| XX     |

| XXXX   |

|  XXXXX |

|   XXX  |


The hex $ number is divided into 2 halves...or nybbles. A nybble is 4 bits wide...a bit in the first position has a value of 8, second is 4, third is 2, and the last is 1. You just add them up to get the value of that nybble. For example...if you wanted to turn on all of the pixels, each nybble value would be 8+4+2+1. That equals the decimal value of 15. In Hex, decimal 15 equals the "digit" F (numbers higher than 9 use the letters of the alphabet). So to make a complete line, you would use F for the first nybble, and F for the second nybble...$FF.


The top line in the Pacman image above has 0+0+0+1 (1) for the first nybble...and 8+4+0+0 (12...C in hex) for the second. So the first .byte value would be $1C.

Link to comment
Share on other sites

Whoops! Some of the equates had the wrong names!

Dunno how that happened :?


Anyway, I erased the equate table at the top and just used the include vcs.h tag instead. I also updated a few of the indirect tags (the < and > symbols in some of the loading instructions...these immediate values are referencing actual addresses)...and changed the routine at $FEBF-$FEDE to a data table instead (I'm not sure if this is a table or a subroutine yet...it looks like both??). The subroutine is still in the file, just commented out...just in case I locate an instruction that is jumping there.


Sorry about that. Make sure the file VCS.H is located in your Dasm folder, and it will compile normally. I ran it to double-check.


Link to comment
Share on other sites

Also, if you wanted to...you could use binary numbers instead of hex when making bitmaps. In those, you use the character % instead of the $...and have 8 digits after it (each one either 0 or 1). The pacman image would be...


       .byte %00011100; |   XXX  | $F464 

      .byte %00101110; |  X XXX | $F465 

      .byte %01111000; | XXXX   | $F466 

      .byte %01100000; | XX     | $F467 

      .byte %01111000; | XXXX   | $F468 

      .byte %00111110; |  XXXXX | $F469 

      .byte %00011100; |   XXX  | $F46A


That saves you the trouble of converting the pixels into nybbles...just use 1's where you want pixels to be.


Sorry again about the mixup :P

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.

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.

  • Recently Browsing   0 members

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