Jump to content

PacManPlus

Members
  • Content Count

    5,653
  • Joined

  • Days Won

    28

Posts posted by PacManPlus


  1.  

    Thanks guys :)

    (Just as a side note, I did try the 'pupil' thing - but without the white - at first.  The screen shots in the very first post show this; it made them look 'zombie-like'.  Defender_2600 had the great idea to do that with the white, and between the two, I think this looks better.  The white would have to be done the same way regardless).  I use the A7800 emulator with the 'screen' settings (like Trebor uses in his video as well as the ones I posted) and you hardly notice it.

     

    Thank you so much guys - @Trebor thank you (as always) for the comprehensive video.  I like the screen transitions!  Also, I fixed the graphic bug that you noted with the vertical tunnel.

     

    I promise; no more Pac-Man after this is done.  There is a game I started a while back that I want to continue on...

    • Like 3
    • Thanks 1

  2. Yep - due to the limitation of the way the 7800 handles the third color with transparency on, that had to be done.  In that mode, I only have two palettes with three colors each to work with.  two of the colors (the white) have to have a different color next to them in order to show up (i.e. not the same color and not transparent).  So I really had 2 colors in 2 palettes to freely work with, and one color in each palette that was restricted.

    • Like 2
    • Thanks 1

  3. Thanks guys :)

     

    @sramirez2008 - You know that those are TIA sounds (not Pokey), right?

    @TrekMD - I know what that is.  It's the special joystick combinations I put in for the Flashback Joysticks.  Left+Right = Select (which takes you back to the menu), Up+Down+Left = Reset, and there's another combination for Pause that I can't remember right now.  A7800 must not let you press 'invalid' joystick directions at the same time, whereas ProSystem does.

    • Like 1

  4. Hey Guys:

     

    After a LOT of work (especially with the 'Random Mazes' function).  I am posting my WIP of Pac-Man Collection XM.  It is a 128K game (so far) but the Yamaha sound might push me to have to make it 144K.  I'm trying to avoid that so I'm not there yet.

     

    Just in time for the 40th anniversary!

     

    This is what I have left:

    - Yamaha sound implementation (working on that now)

    - 'Largest Pac-Man' (at the moment it plays regular Pac-Man)  There will be two differences though:

      * The maze will not change color like the arcade, as it affects Inky and the 'Blue Monsters'.

      * There will be no two player simultaneous option. Believe me, this was a hard one to let go of.  I don't have the sprites available, as there started to be 'disappearing acts'

    - Possibly adjusting 'scatter times'.

     

    Hopefully there won't be any bugs with this, but if there are, let me know.

    Special thanks to @RevEng who taught me how to use the debugger in A7800.  It's awesome!

    @Trebor...  You know what to do ;)

     

    Thanks, guys!

    0009.png.4cd1dcc53d5a219565bbc0883874f0dc.png

     

     

    EDIT - BTW, this game is compatible with the Flashback joysticks (i.e. start, etc.)... at least it should be... :ponder:

     

    PMC_XM.A78 PMC_XM.BIN

    • Like 16
    • Thanks 3

  5. It's the 'Hyperspace' function.  Pulling down on the joystick (or the down arrow on the keyboard) 'Hyperspaces' your ship to a different part of the screen.  There was supposed to be a sound effect as well, but I forgot :ponder: 

     

    • Like 1
    • Thanks 1

  6. Thank you so much again!

     

    I'm sorry about all of the questions, but...

     

    If I increment 'frameskip' at the start of a loop, and decrement it at the beginning of the end-of-screen interrupt: if the iteration of the loop takes too long (it's supposed to only happen once per frame), the interrupt will happen and decrement the 'frameskip' before the iteration of the loop is finished.  After the interrupt PC comes back to whatever part of the loop it hadn't finished.  Once the iteration of the loop is finished it waits for vbl (where the end-of-screen interrupt happens).  Doesn't that mean that 'frameskip' will actually be -1 once the interrupt hits again?


  7. Thank you RevEng - although this one seems to be worse; it crashes *every* time, and looking at the trace (and the memory locations) it seems to return all variations of %XXXXXX00 when ANDed with $03 (in this case).

     

    I think I need to somehow put some sort of safety in there when this happens.

    What it's doing in this section is randomly choosing a maze shape, and seeing if the 'cells' are free to place this shape.  i.e. it's looking at row3, column4 and seeing if a left-down elbow ┐ will fit.  So it checks the 'cell' to the left and the 'cell' below.  If it won't fit, it goes back to the routine and randomly chooses another shape.

     

    Each 'column' has it's own set of shapes to choose from, depending on the 'row' it's on as well (that 5x9 one from above).

     

    EDIT: Update - so I did an 'ADC RTLOCAL+1' (the frame counter) and then a 'CLC' in between 'NOEOR' and 'STA RAND' above and it seems to work so far.

    After all this I don't trust that completely though.  I'll still need to figure out some sort of safety net when doing this.

     

    EDIT2: Been running for about an hour... so far so good! 


  8. Wow, this is VERY odd.

     

    So, it's looking like my Pseudo Random Number Generator is skewed.  I've used that same random number generator in every single game and this is the first time I've had an issue with it.

    Every single time it's picking either a variation of 3 or 7 (I do an AND #$07), both of which are invalid numbers.  Very strange to watch happen.

     

    To be exact, it's picking these numbers in this order:

    $83,$AB,$2F,$DB,$0B,$E7,$F3,$DB,$CF,$AB,$7B,$27,$A3,$CB... and so on.

    If you look at the second nybble, you can see that it gives the pattern 3, 3, 7, 3, 3, 7, 3, 3, 7, etc.  when ANDed with $07.

     

    This is my PRNG:

    ;	RANDOM NUMBER GENERATOR - BOTH MAKES A NEW ONE AND LEAVES IT IN A
    ;	INPUT: NONE
    ;	OUTPUT: NEW RANDOM NUMBER IN A AND IN NEWRAND
    ;	USES: A, OLDRAND, NEWRAND
    RAND
    	LDA OLDRAND									;PREVIOUS RANDOM NUMBER OF PREVIOUS RANDOM NUMBER
    	ADC RTLOCAL+1								;FRAME COUNTER
    	ADC NEWRAND									;PREVIOUS RANDOM NUMBER
    	PHA
    	LDA NEWRAND									;PUT PREVIOUS RANDOM NUMBER INTO PREVIOUS PREVIOUS RANDOM NUMBER
    	STA OLDRAND
    	PLA
    	STA NEWRAND									;NEW VALUE - LEFT IN A, AND STORED AS PREVIOUS RANDOM NUMBER
    	RTS

    It looks like I'll need a better random number algorithm.


  9. Hey Guys!

     

    Ok, I have the random maze part completed.  I actually had to manually create the side tunnels, and there are some rare instances where there aren't any!  (It's ok, though, the fruit comes through the wall for Ms. Pac-Man)

     

    Anyway, I have a STRANGE issue that I'm dealing with: I turn off the screen when generating a maze (as to not display garbage on the screen while doing so).  I use this routine (from GCC themselves):

    ;	TURN THE SCREEN OFF WITHOUT ZEROING THE SCREEN
    SCREENNO
    	JSR WAITVBL									;WAIT TILL VBLANK STARTED
    	LDA #$7F									;TURN GRAPHICS OFF
    	STA CTRL
    	LDA #$00
    	STA SCRNSTAT								;ZERO SOME STATE
    	RTS

     

    I'm finding that sometimes (I would say 1 out of every 100 times) the game crashes while creating a maze (while the screen is off).  In troubleshooting this, I turned the screen back on to show some display statements.  However, when I turn the screen back on, the issue *NEVER* happens.  I've left it on for hours and it's fine.

     

    As soon as I take the call to turn on the screen out, it happens after a few runs (like I said, about 1 out of every 100 times it has to create a maze).

    This is the routine to turn on the screen:

    ;	TURN THE SCREEN ON
    SCREENON
    	LDA SCRNSTAT								;SEE IF SCREEN WAS EVEN OFF
    	BNE SOOUT
    	JSR LOADER									;INITIALIZE KERNAL STATE
    	JSR WAITVBL
    	INC SCRNSTAT								;SAY THE SCREEN IS ON
    	LDA #KGRAPHON
    	STA CTRL									;TURN GRAPHICS ON
    SOOUT
    	RTS

    Now, I've tried just calling 'loader' and 'waitvbl' while the screen is still off, but that doesn't help.

    I have not tried this on the real thing yet... and I'm using A7800 to test with.

     

    WTH is going on?

     

    Thanks, Bob


  10.  

    I got the random mazes finally.  Now it's just adding side tunnels (if needed) and dots:

     

    0000.png.1f24930fd34875d3b395eb028a2054bb.png 0001.png.a663115a03e90f4c25dc1de965efbe57.png 0002.png.7f772549ed160b72e0cb81318b5c11d6.png 0003.png.d4bab5822702115ece6bc154f38e9b0f.png

     

    0004.png.64b4331036ce2c79eac14f8bf1b902d3.png 0005.png.a0a26ec13015ac55b7fd985845867313.png 0006.png.a3a322ba99b69bb2ce3fa7b4621dc56f.png 0007.png.57222ffd208c6b66f1022c0fb4cfcc46.png

     

    Took me two weeks (including a PTO day from work) to do this. ugh.

     

    Notes:

    - After this, the next step is adding the incredible sounds/music done by @tep392 - you guys are going to be blown away!

    - 'The Largest Pac-Man' is not going to be a 1:1 port.  Namely:

      * No two player simultaneous play (alternate will still be there).  I don't have enough sprites for that - we would start to get 'disappearing' acts.

      * No maze cycling color.  It interferes with Inky's color, and the 'Blue monster' color as well.

      * I do want to keep the ever changing / bouncing fruit, the bonus screen at the end of the level, and the 'random' direction the monsters take when coming out of the pen...  and as much of the other aspects of the game that I can.

     

    Then there's only:

    - Adjust scatter times

    - Rewrite monster 'destination tile' algorithm

    - Keep an eye on player moving through the monsters... it doesn't seem to happen as much now.

     

    It's almost time for a ROM.

     

    Bob

     

    EDIT...  Maybe a ROM earlier than I thought.  I'm going to need debug help with this one.  There's *ONE* instance where the random maze fails.  When it does, the screen goes black (because the maze piece picking routine is in an endless loop trying to fit specific pieces in the maze.  I'm going to put some display debug statements in, as this is going to be VERY difficult to catch.  growl.  All I'll need is the numbers you will see on the screen.

    • Like 10
    • Thanks 1

  11. Here we go again...

     

    Ok with this as a starting point:

    image.png.e85660ccfd890bc4ed1381f09371986b.png

     

     

    I believe I now have the 'Simple Model' Done.  It's not quite as elegant as his, but it works:

    image.png.cc229b1820d24c23c1ada8da24a42a1c.png image.png.687472adcf68bb426e849fcb52fd1256.png image.png.2783d5d57a66477d632005dba4f95f2d.png image.png.ffb141f772c82ed45b35b56af1df29b1.png image.png.49a01674199932f19fc9decbd4671c78.png 

     

    No empty cells.

    LEGEND:

    A = T FACING RIGHT: ├

    B = T FACING DOWN: ┬

    C = T FACING LEFT: ┤

    D = T FACING UP: ┴

    E = L FACING RIGHT: └

    F = L FACING DOWN: ⌐

    G = L FACING LEFT: ┐

    H = L FACING UP: _|

    I = PLUS SIGN: ┼

    J = BOX: █

    K = 2 CELL HORIZONTAL LINE: -

    L = 2 CELL VERTICAL LINE: |

    M = OUTER MAZE EXTENSIONS INWARD (TOP AND BOTTOM)

    N = OUTER MAZE EXTENSIONS INWARD (LEFT AND RIGHT)

    O = SINGLE CELL WALL (LIKE THE 6 CIRCLES IN HANGLY-MAN)

     

    I'm ready to take this to the next step.

     

    • Like 6

  12. Ok, with regard to this step-by-step picture:

    image.thumb.png.456a9f717242063f54f92c3a0ac2569e.png

     

    I am almost complete with the 'Simple Model'.  I am generating the following:

    image.png.27d97c5e31c830f13f3a73e5df78fd12.png image.png.bd9c8c059bf35ac78f45dd98e4d2f3a9.png image.png.08159f5ac1b4a39d9d851f5e1093a488.png image.png.e77af040cc070d67ad6a3b38b56e2218.png  

     

    NOTE: I am using the left side instead of the right side of the maze as that is how my mazes are stored in the game.

    Legend:

    (C) = Blank Cell

    Filled In Location = Monster Pen

    A = T FACING RIGHT: ├

    B = T FACING DOWN: ┬

    C = T FACING LEFT: ┤

    D = T FACING UP: ┴

    E = L FACING RIGHT: └

    F = L FACING DOWN: ⌐

    G = L FACING LEFT: ┐

    H = L FACING UP: _|

    M = PLUS SIGN: ┼

    N = BOX: █

    O = HORIZONTAL BAR: -

    P = VERTICAL BAR: |

     

    The (C) characters at the top-most, left-most, and bottom-most cells I can extend the outer maze wall into.  It's the ones in the other areas I will have to pick a surrounding cell to extend into.  OR, I could just use a single cell wall like they do in some bootlegs.

     

    Also, I am probably only going to use the 30 rows so I don't have to worry about extending one of the tiles downward and just keep what I've got.  The columns I'll obviously have to reduce by one, so I'll need to figure that out.

     

     

     

     

    Side Note, @RevEng  Do you know how long it took me to realize that your avatar changes color?  I had this screen up on my other monitor while I worked on PMC_XM on the main one.  Out of the side of my eye I kept seeing *something* change on the other screen.  Couldn't figure out what it was until I just had enough and stared at this page until I saw your avatar change colors.  Very cool. and sneaky.

     

     

    • Like 1

  13. Thanks guys...

     

    I'm looking...  BTW, RevEng, I understand where he gets the 5x9 grid - the outside paths are also valid, which means out outermost walls (even though they aren't accounted for in the 5x9) are there also.  So you get the 27 + another 'cell' of 3 for the outsize walls to = 30.  Then we need the 'expansion' of one cell to be '4' tiles and then we have 31.

     

    BTW, did you know that the Pac-Man maze actually allows for 32 rows but only uses 31?  You can see this in Hangly-Man, where the 'empty' maze has the exit at the top.  This is the only time that the top row is used.  For two lousy maze pieces.

    • Like 2

  14. Hi guys.

     

    I actually spent the entire day today (I took a PTO day from work) to try and work on this and I haven't been able to get anywhere.

    Here is a Pac-Man maze generator written in JavaScript: https://shaunlebron.github.io/pacman-mazegen/

     

    He did an excellent job with this; he talks about how he only uses certain pieces ('T', '|', '+', and 'L') rotated to fit (like 'Tetris'), but I noticed that some pieces have longer ends than others, and that's just one of the things I'm not understanding about this.  How does he decide which pieces get a longer edge?  Which edge?  If you right-click and choose 'view source' you can see the JavaScript source code used to do this.

     

    I've decided that it would be better to understand the steps involved to do this and write my own 'version' of the maze generator rather than try and convert Java Script to 6502.  Trouble is, I don't follow some of the steps involved (like what I mentioned above).

    Can anyone look at this and put this into steps so I can try and get this going?

    Thanks, guys

    Bob


  15. I'm ok, thanks for checking in.

     

    Updated Video:

     

    What I have left:

    - Implement Yamaha Audio from Perry

    - Adjust Scatter Times (to be closer to the arcade)

    - Largest Pac-Man

    - Random Maze Generator (this is the one I am most concerned with, only because I am converting from Java code to MOS6502)  I've started looking at it twice, only to get intimidated and put it aside again.

    - A few slowdowns here and there...

    - I'd like to rewrite the Monster 'Destination Tile' algorithm.  I think I can get it closer to the arcade.

    - The 'move through monster' bug happens a little too often.

     

    NOTE: I've already fixed the sound issue that happens toward the end of the video.

     

    • Like 21

  16. 2 hours ago, TailChao said:

    Nope, that's NTSC. I investigated a little more this morning and found the game would run properly if all RAM (both in the cartridge and console) was initialized to zero.

    That's weird, as I have a routine that I put in every game that zeros out RAM before I even do anything else....

     

    EDIT - I just realized that I put the DL & DLL in the $6000 area RAM in this game only...  which doesn't get zeroed out... makes sense now.


  17. I actually stopped working on Ms. Pac-Man Twin because there was no more information about it.  It's a very rare arcade game and it hasn't been dumped yet.  The work I did was just from the videos and pictures that I've seen.  Once there is more info on it (like a rom dump or more complete information about game play), I can then finish it.

    • Like 4
×
×
  • Create New...