Jump to content
IGNORED

The AB Project: Pac-Man


The Usotsuki

Recommended Posts

The 9938/58 may need additional initialization. Also, remember that the register address is different from the 9918 if you're trying to run it strictly back-compatible - write C0n3 instead of C0n1. I chose to follow MSX2+ order instead of making it strictly compatible.

Link to comment
Share on other sites

So I found some information here about setting the palettes, which I figured was what I didn't "get"...

------------------------------------------------------------------
| Palette |    Colour	  | Brightness | Brightness | Brightness |
| number  |		  |  of red    |   of blue  |  of green  |
|---------+---------------+------------+------------+------------|
|    0	  | transparent   |	0      |     0	    |	  0	 |
|    1	  | black	  |	0      |     0	    |	  0	 |
|    2	  | bright green  |	1      |     1	    |	  6	 |
|    3	  | light green   |	3      |     3	    |	  7	 |
|    4	  | deep blue	  |	1      |     7	    |	  1	 |
|    5	  | bright blue   |	2      |     7	    |	  3	 |
|    6	  | deep red	  |	5      |     1	    |	  1	 |
|    7	  | light blue	  |	2      |     7	    |	  6	 |
|    8	  | bright red	  |	7      |     1	    |	  1	 |
|    9	  | light red	  |	7      |     3	    |	  3	 |
|   10	  | bright yellow |	6      |     1	    |	  6	 |
|   11	  | pale yellow   |	6      |     3	    |	  6	 |
|   12	  | deep green	  |	1      |     1	    |	  4	 |
|   13	  | purple	  |	6      |     5	    |	  2	 |
|   14	  | grey	  |	5      |     5	    |	  5	 |
|   15	  | white	  |	7      |     7	    |	  7	 |
------------------------------------------------------------------

Alright. So the same page says you write the color number, followed by $90, to the MSX2's Z80's port $99, and then write the palette values first R<<4|B, then G, to port $9A. I interpreted that thusly:

 10  DATA  0,0,0,0,0,0,1,1,6,3,3,7,1,7,1,2,7,3,5,1,1,2,7,6,7,1,1,7,3,3,6,1,6,6,3,6,1,1,4,6,5,2,5,5,5,7,7,7
 20  FOR I = 0 TO 15
 30  READ R,G,B
 40  POKE 49346,I: POKE 49346,144
 50  POKE 49347,(R * 16) + B: POKE 49347,G
 60  NEXT 

And assuming that the i/o addresses (for slot 4) are C0C0 for read/write data and C0C3 for write register control.

I'm still not getting something here.

Edited by The Usotsuki
Link to comment
Share on other sites

  • 2 weeks later...

The disk images for the SuperSprite board have been posted here: (from apple2 facebook group)

https://www.dropbox.com/s/cnpd7w10dspijbr/StarSprite-SuperSprite-Programs.zip?dl=0

 

I tried the demo, and it works with the ezcgi card io mapping. One thing is that this card seem like it would have overlayed the video from the sprite card over the normal apple2 video.

Arbee, is this possible with to do with mess?

 

/Rob

Link to comment
Share on other sites

I just remembered that the manual for the SuperSprite was also posted in the facebook group, this looks like it details the hardware ports for the card. Perhaps a specific Supersprite card emulation could be added to Mess?

 

https://dl.dropboxusercontent.com/u/391444/Vintage/apple/ii-peripherals/synetix/supersprite/synetix-supersprite-owners-manual-cs.pdf

 

/Rob

Link to comment
Share on other sites

Regarding 9938, do you also have access to said expansion card in hardware, or are you just dabbling in emulated environment for a setup that anyhow very few in the end would be able to replicate in real life?

 

Anyway, $C0C0 = 49344, not 49346 as in your code example. $C0C3 = 49347 is "mathematically" correct though.

Link to comment
Share on other sites

  • 2 weeks later...

The idea is that if it works out in emulation, it's a relatively easy step to e.g. a Carte Blanche II if one appears (I don't think they sell 99x8 chips anymore).

 

The SuperSprite manual is quite useful, and the overlay feature is fairly advanced for the time. It should be possible in MESS, but that will require some thinking. Until then it's certainly possible to emulate the full capabilities (9918 + 8912 + the Echo II-compatible speech) minus the overlay.

Edited by Arbee
  • Like 1
Link to comment
Share on other sites

The idea is that if it works out in emulation, it's a relatively easy step to e.g. a Carte Blanche II if one appears (I don't think they sell 99x8 chips anymore).

 

The SuperSprite manual is quite useful, and the overlay feature is fairly advanced for the time. It should be possible in MESS, but that will require some thinking. Until then it's certainly possible to emulate the full capabilities (9918 + 8912 + the Echo II-compatible speech) minus the overlay.

You can purchase 9938 and 9958 chips out of China off of ebay all the time and there are places you can buy them in quantity.

How many chips actually remain I don't know.

 

Something like the Carte Blanche can be reprogrammed to be just about any hardware but I think a custom card would be cheaper.

A smaller FPGA would probably hold a 9938 and AY sound chip, maybe even a Mockingboard but I just don't see there being much of a market for it without software.

Link to comment
Share on other sites

Well, that's the trick.

 

I just wish I were better at programming. So far I have a rough demo in BASIC with Pac-Man moving around but no ghosts and no eating pellets, and no collision detection, which I haven't, I don't think, uploaded...

Would you like some suggestions as to how to implement this?

Link to comment
Share on other sites

I thought "Sure, why not" was an answer. :P

Totally missed it... too much internet. I've started selectively skimming what I read.

 

Build a 2 dimensional array to represent a copy of the maze in regular RAM. Use a value to represent walls, a value to represent pills and a value to represent dots.

Exact positions of ghosts, Pacman and fruits are calculated and you use the hardware to detect those collisions, but you translate each sprite position to a position in the maze to detect whether or not you can travel in a direction, whether you eat a dot or pill, etc...

The ghosts use the same array to calculate where to travel.

Pass throughs and the exit to the central box are special cases that use unique values to trigger their own logic.

Match the maze to the dots.

I hope I got this maze right, you'll have to double check it.

 

XXXXXXXXXXXXXXXXXXXXXXXXXXXX
X............XX............X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
XPXXXX.XXXXX.XX.XXXXX.XXXXPX
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X..........................X
X.XXXX.XX.XXXXXXXX.XX.XXXX.X
X.XXXX.XX.XXXXXXXX.XX.XXXX.X
X......XX....XX....XX......X
XXXXXX.XXXXX XX XXXXX.XXXXXX
XXXXXX.XXXXX XX XXXXX.XXXXXX
XXXXXX.XX          XX.XXXXXX
XXXXXX.XX XXX^^XXX XX.XXXXXX
XXXXXX.XX XX    XX XX.XXXXXX
      .   XX    XX   .      
XXXXXX.XX XX    XX XX.XXXXXX
XXXXXX.XX XXXXXXXX XX.XXXXXX
XXXXXX.XX          XX.XXXXXX
XXXXXX.XX XXXXXXXX XX.XXXXXX
XXXXXX.XX XXXXXXXX XX.XXXXXX
X............XX............X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
XP..XX.......  .......XX..PX
XXX.XX.XX.XXXXXXXX.XX.XX.XXX
XXX.XX.XX.XXXXXXXX.XX.XX.XXX
X......XX....XX....XX......X
X.XXXXXXXXXX.XX.XXXXXXXXXX.X
X.XXXXXXXXXX.XX.XXXXXXXXXX.X
X..........................X
XXXXXXXXXXXXXXXXXXXXXXXXXXXX

Study ghost behavior here:

http://gameinternals.com/post/2072558330/understanding-pac-man-ghost-behavior

Edited by JamesD
  • Like 1
Link to comment
Share on other sites

Nod. Game maze I'm using's a bit smaller, because I was using the MSX version as a base (since it's easier to use what's already there):

#####################
#.........#.........#
#*###.###.#.###.###*#
#.###.###.#.###.###.#
#...................#
#.###.#.#####.#.###.#
#.###.#...#...#.###.#
#.....### # ###.....#
#####.#       #.#####
    #.# #===# #.#    
#####.# #   # #.#####
     .  #   #  .     
#####.# ##### #.#####
    #.#       #.#    
#####.# ##### #.#####
#.........#.........#
#.###.###.#.###.###.#
#*..#.....C.....#..*#
###.#.#.#####.#.#.###
#.....#...#...#.....#
#.#######.#.#######.#
#.#######.#.#######.#
#...................#
#####################

I think it looks something like that. 21x24 grid. Characters for the maze and dots, sprites for Pac and the ghosts.

  • Like 1
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...